
Show HN: Oberon to LuaJIT bytecode compiler and IDE with source level debugger - Rochus
https://github.com/rochus-keller/Oberon
======
Rochus
Author here: I just released an Oberon IDE with a validating Oberon-07 to
LuaJIT bytecode compiler and source level debugger. Here are two screenshots:
[http://software.rochus-
keller.info/screenshot_oberon_system_...](http://software.rochus-
keller.info/screenshot_oberon_system_in_debugger.png) and
[http://software.rochus-
keller.info/screenshot_oberon_ide_0.5...](http://software.rochus-
keller.info/screenshot_oberon_ide_0.5.1.png). You can download a complete
Windows binary from here: [http://software.rochus-
keller.info/OberonIDE_win32.zip](http://software.rochus-
keller.info/OberonIDE_win32.zip).

As you might know from my previous posts I'm interested in re-using LuaJIT
(see [http://luajit.org/](http://luajit.org/) ) as a runtime environment for
strictly/statically typed languages (and later as a HDL simulation engine). As
proof-of-concept I have written a validating Oberon-07 compiler that directly
generates LuaJIT bytecode (before that I had already written a transpiler that
generates Lua source code). Oberon has proved to be very suitable for this
project because it is not a complex language but still powerful enough to
demonstrate the feasibility.

As a test case for the compiler I have created a version of the Oberon System
(see
[https://en.wikipedia.org/wiki/Oberon_(operating_system)](https://en.wikipedia.org/wiki/Oberon_\(operating_system\))
) which runs stand-alone on the LuaJIT VM using a Qt based backend instead of
the original Oberon System inner modules. Note that this is a prototype and
still work in progress. I developed the IDE for this purpose, but it should
also be suitable for other projects (but don't expect all features of a full
fledged IDE like MS VisualStudio). The IDE and compiler are implemented in C++
using Qt.

See [https://github.com/rochus-keller/Oberon](https://github.com/rochus-
keller/Oberon), [https://github.com/rochus-
keller/LjTools](https://github.com/rochus-keller/LjTools) and
[https://github.com/rochus-keller/OberonSystem](https://github.com/rochus-
keller/OberonSystem) for more information.

