OBNC is a compiler for Niklaus Wirth’s programming language Oberon. It implements the latest version of the language from 2016. OBNC translates source code written in Oberon to the lower-level programming language C. The translated code is then compiled and linked with the C compiler and linker of the host operating system. The build command obnc performs all these tasks and keeps track of which files need to be compiled or recompiled.

OBNC is released under the GNU General Public License.

See the changelog for latest updates.

Main Package

The source package obnc contains the compiler with a build tool, a documentation generator and a small basic library of seven modules defined in The Oakwood Guidelines for Oberon-2 Compiler Developers.


Obnc is implemented in C and should compile on any POSIX compatible operating system. To build obnc you also need the Boehm-Demers-Weiser garbage collector GC. Further instructions are included in the README file in the root directory of the package.

Note: Output files generated by OBNC version 0.7 or earlier are not compatible with OBNC 0.8. If you have used a previous version you need to recompile your modules (simply delete the generated .obnc directory in your module directories before compilation).

Standard Library

The package obnc-libstd complements the basic library with modules for accessing command line arguments and environment variables, printing to the standard error stream and converting numbers to strings and vice versa.


Getting Started

Here is a short guide:

Getting started with Oberon and OBNC