A resource page for Revised Oberon

Revised Oberon 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.

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

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

END ProgramPattern. 


Revised Oberon 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 Revised Oberon Report was published in 2007 and revised in 2011, 2013, and in February and March of 2014. The current (Revised) Oberon Report (PDF) was published as a PDF in March 2014. (The February 2014 Report was mislabeled as the October 2013 Report.)

Revised Oberon 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 2004 in an electronic PDF edition, but the revision was incomplete, containing code fragments and text left over from the Modula-2 print edition (1986). In 2009 a translation into Russian provided fixes and additions, and Wirth posted a revision related to that translation in 2012.

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.

Project Oberon was published in 1992, 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.


I'm aware of the following Revised Oberon compilers available for systems other than Oberon:

The following are classic Oberon compilers that may be useful:

The following are unmaintained, but perhaps useful for older systems:


There is now a chat room at chat.freenode.net, #oberon, that discusses all things related to Oberon. Also, see Usenet: comp.lang.oberon.