[Oberon] Conditional compilation using IF const THEN
andreas_pirklbauer at yahoo.com
Sun Aug 12 08:15:10 CEST 2018
> That's correct. The release notes of the Single-pass compiler and
> the sources of the original 4-pass ETH Lilith compiler and the
> MacMeth 68K single-pass compiler are on my Modula-2 webpage:
Thanks for the link!! Very nice summary (I didn’t have the 1984 release
notes). Feels like time travel and compels me to make a page like that
with the AlgolW, Pascal .. sources from the 60s or 70s. For a rainy day..
> That was what I started to do a couple of weeks ago. The executable
> of the single-pass M2 Lilith compiler (M2SP say) exists on the EmuLith
> disk images and as a proof of concept it worked.
Thx also for the link to EmuLink in an earlier post. This is a fantastic
piece of software indeed..
> After only working on the M2SP system for a few days I got more
> insight into what motivated the evolution of Modula-2 to Oberon just
> a couple of years later.
That’s right. Modula’s import/export mechanism was initially
inspired by the language Mesa (1977) and was continuously
simplified throughout the years. For example, the 1984 single
pass M2 compiler release notes on your web site contains one
of the first steps along the way (“Definition modules do not contain
export lists”, eliminating the need for the EXPORT statement).
Even the first Oberon compiler in 1987/88 still had separate
definition and implementation modules, until the two files
were eventually merged. THAT last step caused a LOT of
discussion at the institute as you can imagine: you no longer
define the interface first, and hand them to subteams etc, but the
definition and the implementation are typically created together,
and the definition is now extracted with a browser tool (which
I never use ;-)
> Conditional compilation using 'IF const THEN' was just
> one of the ideas that came out of this exercise. Another
> was Lilith’s post-mortem debug facility which would be a
> useful addition to Project Oberon.
Yes, the Lilith M2 compiler created an additional file (ref file)
for post-mortem debugging purposes. But that would be a
project for a rainy week...
More information about the Oberon