Installing OBC release 3.3
Release 3.3, compared with release 3.1:
- adds support (with
--enable-segmem) for a software virtual addressing scheme, making it possible to build a (slightly slow) bytecode interpreter that runs on 64-bit systems and uses only
mallocfor storage allocation. I haven't done any timing studies, but the scheme works well enough to be usable in the intended application.
- adds support for outputting a linked bytecode program as a set of array declarations in C syntax that can then be compiled and linked with the runtime system.
- changes to using an internal or external copy of lablgtk3 in place of lablgtk2 to implement the GUI for the debugger.
- changes to the interface of the procedures in the Out and Files modules for printing values of type REAL or LONGREAL. Previously these routines lacked the width argument that is standard in other Oberon implementations. It should be easy enough to add the parameter in client programs, but source modules OldOut and OldFiles are also provided that can be substituted by writing import Files := OldFiles, etc.
The first two of these changes were implemented as part of the project to make XML2PMX available as part of the TeX live distribution. XML2PMX is a program (implemented in Oberon) that is able to translate the file format output by musical score editors such as Sibelius so that they can be typeset using a system based on TeX. These changes were present in release 3.2, which was not widely distributed.
This release marks a point where I must cease to offer binaries for Windows or Mac OS. The same techniques used to create these binaries in the past should continue to work, and the adaptations of the JIT runtime to the different calling conventions of Windows will remain in place, but I simply don't have the time to continue building the GTK-based debugger application on these platforms. Binary packages for other platforms will remain: both x86_64 and arm32 under Linux, with packages for Debian.
The change to using GTK3 and specifically gtksourceview3.0 will future-proof the software to a large extent, and I am intending for these to be just about the last public changes to OBC. I have learned a lot by writing and supporting it, and I hope taught a lot of young people through the medium of Oberon to think clearly about the design of programs. But things have moved on, and we no longer use Oberon for teaching in Oxford, preferring Scala for reasons that I have never fully understood. The time when I used the Keiko machine to teach our students about compilers is also past, and I have handed that pleasurable task over to others. If I do more work on implementations of Pascal-like languages, it will very likely to be in the area of embedded applications that run on ARM-based microcontrollers, where a language supporting concurrent processes along the lines of Modula(–1) has potential.