A resource page for Oberon

Oberon-07 is influenced by two generations of languages. The first generation is that of Algol and Pascal. The second generation is that of Modula-2 and Oberon. See www.inf.ethz.ch/person/wirth/projects.html for a brief history of Wirth's work.

Pascal and Modula-2 have been standardized by the ISO/IEC. Oberon was, or perhaps purposely was not, standardized through the "Oakwood Guidelines for Oberon-2 Compiler Developers", which defined a minimal standard library, and extensions for Oberon implementations.

Project Oberon continues N. E. Wirth's art of simplicity, providing a simple and elegant system that can be constructed by a single individual. See http://www.paddedcell.com/projectoberon/RISC-Instructions.txt on how to build your own Oberon system.

MODULE ProgramPattern;
  IMPORT Texts, Oberon;
  VAR
    W: Text.Writer; (* global writer *)
  
  PROCEDURE copy(VAR R: Texts.Reader);
  VAR
    ch: CHAR;
  BEGIN Texts.Read(R, ch);
    WHILE ~R.eot DO
      Texts.Write(W, ch);
      Texts.Read(R, ch)
    END
  END copy

  PROCEDURE SomeCommand*;
  VAR
    R: Texts.Reader; (*local reader*)
  BEGIN Texts.OpenReader(R, Oberon.This.text,
                         Oberon.Par.pos);
    copy(R, W);
    Texts.Append(Oberon.Log, W.buf)
  END SomeCommand;

BEGIN
  Texts.OpenWriter(W)
END ProgramPattern. 

Oberon-07

Oberon-07 is a series of revisions to the Oberon language by Niklaus Wirth after his retirement from ETH Zürich. It follows the experience with the Oberon SA language, a subset of Oberon with some unique extensions.

The Oberon Report was first published in September 1987 (ETH Zürich) as a revision of the Modula-2 Report. A follow up was published in July 1988, with corrections in January 1989, and revised in September 1989 (ETH Zürich Report 111), November 1990 (Report 143), and a final polished version in 1992 with the publication of Programming in Oberon: Steps Beyond Pascal with Martin Reiser. The Oberon-2 Report was first published in 1991, with the current revision from 1995. The first Oberon-07 Report was finished in 2007 (published in 2008), and revised in 2011, 2013, and in February, March, and June of 2014. (The February 2014 Report was mislabeled as the October 2013 Report.) The current Oberon Report (PDF) was published as a PDF 16 June 2014, but it is still labeled as 10 March 2014.

Oberon-07 Textbooks by Prof. Wirth

Programming in Oberon (PDF) is a revision of Programming in Modula-2 Edition 4 (printed in 1988), published as a PDF in 2004, and revised in 2011, and twice (thrice if you count a correction) in 2014.

Algorithms and Data Structures (PDF) was updated for Oberon in a 2004 edition, shortly after the 2004 Oberon PIO, in PDF format. In 2009 a translation into Russian provided corrections. These corrections, along with images missing from the 2004 edition, and references to the ADen Blackbox Component Builder (Cpc edition) subsystem, were incorporated in Wirth's English version with a new layout. This was posted in 2012 and revised a week later. The current revision is from 2014. The revised 2012 edition was posted by Wirth to his ETH site.

Compiler Construction, originally split from Algorithms and Data Structures, was updated for Oberon-0 (from the PL/0 second edition) and published in 1996. A revision was posted in PDF electronic format in 2005, 2011, 2013, and 2014.

The original Oberon system was completed in 1990, which ran on the Ceres-3 (NS 32GX32). It is documented in the original Project Oberon, published in 1992. This was updated in 2005 as a PDF, and updated again in 2013 and 2014 describing a new implementation of the Oberon system with Wirth's designed Xilinx FPGA board.

Compilers

I'm aware of the following Oberon-07 compilers:

The following are classic Oberon and Component Pascal compilers that may be useful:

The following are dormant or unsupported, but may still be useful:

Community

There is a chat room at chat.freenode.net, #oberon, that discusses all things related to Oberon. Also, see Usenet: comp.lang.oberon. Finally, the ETH Oberon mailing list: https://lists.inf.ethz.ch/mailman/listinfo/oberon.