Date: Mon, 11 May 1998 11:10:03 -0400
From: Wojtek Skulski <skulski@chemistry.nsrl.rochester.edu>
To: info@eklektix.com
Subject: WWW: Oberon resources for Linux, ver. 1.0
Followup-To: comp.lang.oberon
Oberon resources for Linux users and developers
===============================================
This post summarizes Oberon resources available to Linux users and developers.
My intention is to make Linux community aware of very useful Oberon compilers
and integrated development environments, which are freely available on the Web.
New in this summary:
1. added two Oberon/Modula-2 compilers (XDS and Gardens Point).
2. added a section on portability.
3. several small changes and clarifications.
What is Oberon?
===============
Oberon is a modern version of Pascal. It was designed by Niklaus Wirth
and Juerg Gutknecht at ETH Zurich starting in 1986. (Niklaus Wirth designed
both Pascal and Modula-2.) Oberon language supports modules with separate
compilation, strong type checking, module interface checking, and
object-orientation. Language definition is very concise and clean.
Oberon is much easier to master than C++ and every bit as powerful and
efficient. It is much safer than C++ since it makes programming errors
easily visible, it promotes type-safe programming, and mandates garbage
collection as a language feature. Oberon is perfectly suitable both
for mission-critical programming (including system-level programming) and
for computer science education. The current version of the language
is Oberon-2.
There are several Oberon programming environments available, both free and
commercial. They support garbage collection, dynamic module loading with
version checking, a variety of tools for program development, text and
graphics processing, internet connectivity, database access, etc.
Several Oberon compilers and IDEs are available with full source code via
ftp, including implementations for Linux, Native Intel PC, Win 3.11/95/NT,
Unix (SparcStation, DECstation, RS6000, HP workstations, Silicon Graphics),
MacOS, BeOS, OS/2, DOS, and Amiga.
Two standalone Native Oberon Operating Systems are available: one personal
productivity OS for Native Intel PCs, and one real time OS for VME-based
industrial-strength control systems.
Portability
===========
Oberon promotes portability with architecture-neutral definition of it base
types (integer and floating point) and platform-independent storage format.
Applications written in Oberon are portable by recompilation among ports
of the same Oberon compiler/environment on different machines.
Recently, the portability of Oberon applications was given a new dimension
with Slim Binaries supported by Oberon System-3 (see below). System-3
applications are portable among different System-3 implementations both
before and *after* being compiled to the Slim Binaries format. This is
similar to Java, except that during loading Slim Binaries are compiled
on-the-fly to a native machine code (not to byte codes) by the System-3
compiling loader. Slim Binaries applications run at full CPU speed under
Linux i386, Windows, MacOS, and Native PC Oberon System-3.
Slim Binaries are the foundation of Juice: a new technology from UC Irvine
for distributing executable content across the World Wide Web.
Since Juice is compiled on-the-fly to native code by the Slim Binaries
compiling loader, Juice outperforms Java in many "downloadable Applets"
applications, especially if applets are large. See below for more details
on Juice.
Oberon compilers and integrated environments for Linux
======================================================
Optimizing Oberon-2 Compiler
----------------------------
OOC consists of a target architecture independent front end, a target
independent optimization phase, plus a number of back-ends to generate code
for different platforms. An Oberon-2 to ANSI-C Translator OO2C is the first
working OOC compiler. Many libraries for OOC were developed as a part of
the OOC project. OOC is highly recommended for mixed-language projects,
such as using C programs from within Oberon or vice versa, calling Oberon
programs from C.
Platforms: OOC should run on any 32 bit Unix system with an ANSI-C compiler
(including Linux, HP-UX, SunOS, and Solaris). BeOS version is available.
URL: http://www.uni-kl.de/OOC/
Status: GPL, supported.
Source: yes.
Documentation: http://www.uni-kl.de/OOC/OOCref/OOCref_toc.html
Visual Oberon (VO), a GUI library for the OOC compiler.
-------------------------------------------------------
VO is a collection of classes written in Oberon-2, with the goal to easily
build graphical user interfaces for programs written in Oberon-2.
VO uses OOC as the development tool, but VO by its design is not limited
to that compiler. It fully bases on the language defined by the official
language report and thus should be easily adaptable to other compilers.
Platforms: X-windows.
URL: http://ping.de/sites/edge/VisualOberon.html
Status: GPL, supported.
Source: yes.
Documentation: included with the package.
Volunteers needed: Both OOC and VO are open "bazaar style" projects.
Please consider volunteering your effort/resources/help
to support these projects.
Oberon-to-C translator Ofront
-----------------------------
Ofront features a standalone command line compiler, as well as integrated
V4 and System-3 IDEs. Oberon modules (or whole collections of modules) can be
translated to ANSI-C or K&R C and then converted to dynamically loaded
libraries. Ofront is highly recommended for mixed-language projects, such as
using C programs from within Oberon or vice versa, calling Oberon programs
from C.
Platforms: Linux ELF i386, DECStation, HP700, IBM RS/6000, SPARCstation,
SiliconGraphics.
URL: ftp://ftp.inf.ethz.ch/pub/Oberon/Ofront/
Status: commercial, but free for educational users.
Source: no.
Documentation: included with the system.
Gardens Point Modula-2/Oberon-2 compilers.
----------------------------------------
GPM contains ISO Modula-2 compiler and Oberon-2 compiler.
Under GPM it is easy to mix Modula-2 and Oberon-2 modules in one
project, as well as to call C functions and libraries from both
Oberon-2 and Modula-2. In addition to the Oakwood Oberon-2 library,
the complete ISO Modula-2 library is also available.
URL: http://www.fit.qut.edu.au/CompSci/PLAS/GPM/
Status: free for Linux and DOS/Windows
Source: no
XDS-x86 ISO Modula-2 and Oberon-2 compilers
--------------------------------------------------
Highly optimizing standalone Modula-2 and Oberon-2 compilers.
Compile to native code (no C-translation step involved).
Support for Oakwood Oberon-2 extensions (complex types, x**n etc.).
Platforms: Windows NT, Windows 95, OS/2, Linux
URL: http://www.xds.ru/xds/
http://www.dct.com/~johnm/xds.html (US mirror)
Status: commercial.
Educational low-price CD is forthcoming.
Source: no
Documentation: http://www.xds.ru/xds/xdscover.html
Trial versions are available from the above URLs.
XDS-C ISO Modula-2 and Oberon-2 translators to ANSI C / K&R C.
--------------------------------------------------------------
Platforms: IBM PC (Windows NT, Windows 95, OS/2, Linux), SPARC
(Solaris), HP-PA (HP-UX). On user request can be ported to any Unix
and almost any other system for which an ANSI C compiler is available.
URL: http://www.xds.ru/xds/
http://www.dct.com/~johnm/xds.html (US mirror)
Status: commercial.
Source: no
Documentation: http://www.xds.ru/xds/xdscover.html
Trial versions are available from the above URLs.
Oberon System 3 (ETH Zurich, the original Oberon site)
------------------------------------------------------
System 3 is an evolution of the original Oberon with the Gadgets component
framework. The system shows some similarities with commercial componentware
systems such as Java. Rumors have it that Java owes a lot of its ideas to
System-3 component architecture. If you know what JavaBeans and JVM are in
relation to Java, then Gadgets and Juice/OMEGA are the same in relation to
Oberon System-3, with one important difference: Juice applets are compiled
on the fly to the native CPU code, not to JVM bytecodes. Juice applets are
thus much more CPU efficient than Java. Juice plugins exist both for
Netscape and for Internet Explorer (currently MS Windows and MacOS versions
of these).
Oberon System 3 includes Juice Development Environment, Gadgets component
framework, a class browser, development libraries, network programming
(TCP/IP, WWW, a complete web browser), database connectivity, much more.
Note: contrary to the numbering scheme, System-3 is not a predecessor of V4
described later. Even though S3 and V4 share certain architectural features,
the two systems are implemented quite differently.
Platforms: Linux ELF i386, Windows/Windows95/WindowsNT, MacIntosh,
PC Native Operating System (running on bare PC hardware).
HP/UX is forthcoming.
System-3 URL: http://www.oberon.ethz.ch/oberon/system3/
Juice URL: http://www.ics.uci.edu/~juice/
Native PC URL: http://www.oberon.ethz.ch/native/
Status: free, supported.
Source: yes.
Documentation: included with the system.
On-line manuals: http://www.oberon.ethz.ch/oberon/system3/tutorial/
Oberon System V4 (Johannes Kepler University Linz)
--------------------------------------------------
A complete IDE including compiler, debugger, class browser, development
libraries, network programming (TCP/IP, WWW, a complete web browser),
database connectivity, much more. The hallmark of this system is a large
collection of "active text elements" implementing fine-grained GUI elements
such as popup menus, hypertext folds, time stamping, buttons, sliders,
GIF viewers, much more. These GUI elements can be freely edited "in situ".
Extremely rapid development of open-ended applications is thus possible.
After assembly, complete GUIs can be transported among different V4
implementations.
Note: contrary to the numbering scheme, System-3 is not a predecessor of V4.
Even though S3 and V4 share certain architectural features, the two systems
are implemented quite differently.
Platforms: Linux ELF i386, Power Macintosh, Windows 95/NT i386.
URLs: http://www.ssw.uni-linz.ac.at/Oberon.html (general)
http://sport1.uibk.ac.at/tanis/oberon.linux.html (Linux)
Status: Free, supported.
Source: yes.
Documentation: included with the system.
Oberon System V4 (ETH Zurich, the original Oberon site)
--------------------------------------------------------
This is an older version of the V4 environment, with much less sophisticated
text element collection than the one offerred with Linz V4.
Platforms: Amiga, Linux i386 a.out, DECStation, HP700, Macintosh, IBM RS/6000,
SPARCstation, SiliconGraphics, Windows 3.11/95/NT i386.
OS/2 version exists as shareware.
URL: http://www.oberon.ethz.ch/oberon/
Upgraded ETH V4 for Linux i386 is available from:
ftp://nuchem.nsrl.rochester.edu/pub/Oberon/Linux.aout
Status: free, no more supported. OS/2 version is supported.
Source code: yes (most implementations including Linux).
Documentation: included with the system.
JACOB (Just A Compiler for OBeron-2)
------------------------------------
Jacob is a stand-alone Oberon-2 compiler under Linux.
Platforms: Linux i386 ELF.
Status: free, does not seem to be supported. Current release is 0.1.1
Source: ?
URL: http://user.cs.tu-berlin.de/~sepp/jacob/00wurzel.html
Guy Laden Oberon Reference Site
===============================
Many other freeware and commercial Oberon compilers are in existence. The
most up to date information can be obtained from the Guy Laden Oberon
Reference Site. In addition to compilers, it also covers Oberon-related
literature, research papers, ongoing development efforts, etc. This site is
one of the most important Oberon resources on the Web.
Oberon Reference Site, general:
http://www.math.tau.ac.il/~guy/Oberon/
Bibliography with links to on-line articles:
http://www.math.tau.ac.il/~guy/Oberon/publications.html
Documentation, books:
http://www.math.tau.ac.il/~guy/Oberon/documentation.html
Source code and applications:
http://www.math.tau.ac.il/~guy/Oberon/sources.html
Compilers and systems:
http://www.math.tau.ac.il/~guy/Oberon/compilers.html
http://www.math.tau.ac.il/~guy/Oberon/systems.html
Oberon books and online information
===================================
Several Oberon textbooks and programming tutorials are available. The
following URL lists the most important books with their ISBNs and ordering
information. Selected URLs of Oberon online articles are also given at
this URL.
URL: http://nuchem.nsrl.rochester.edu/~skulski/Obooks.html
Many research articles, complete applications, and programming case studies
are available. Examples include Oberon compilers themselves (all were
written in Oberon), the original Oberon Operating System (fully documented
in the book by Wirth and Gutknecht; now evolved into the new Native PC
Oberon Operating System), the Gadgets component framework (offers power
comparable to other windowing systems at a small fraction of their size),
and a complete CAD environment for FPGA synthesis.
URLs can be found at Guy Laden Oberon Reference Site.
Oberon Webring
==============
The Oberon Webring has been created as a means to promote Oberon language
among the Net citizenship. Please visit the Webring at
http://www.factorial.com/hosted/webrings/oberon/
The Usenet newsgroup comp.lang.oberon is devoted to discussing Oberon
language, implementations, and environments.
Acknowledgements
================
The following persons contributed comments and pointed out omissions
in the previous version(s) of the summary:
Dave Daniels, Peter Froehlich, Andrey G. Grozin, Dmitry V. Leskov,
Pieter Muller
All remaining mistakes are solely due to myself. Please feel free
to write me a comment. However, technical questions should best be directed
to respective developers.
Assembled on May/05/1998 by
Wojtek Skulski, skulski@nsrl.rochester.edu
Nuclear Structure Research Lab, Univ. of Rochester
271 East River Rd, Rochester, NY 14627.
phone (716) 275 2524 fax (716) 473 5384
World Wide Web: http://nuchem.nsrl.rochester.edu/~skulski