Early this year, we reported that the alpha versions of REBOL 3 ran on Syllable Server, based on the unmodified Linux version. Now we have followup news. R3 has been split into its planned core interpreter library and an open source host environment for integration with as many systems as possible. Kaj de Vos has got this version to work on Syllable Desktop (screenshot). This is the first time that a version of REBOL can run there (besides emulating a complete other operating system on Syllable Desktop), so this is a major step towards the project’s REBOL cross-platform strategy.
It is now possible to run the same REBOL3 programs on both Syllable Desktop and Syllable Server. Further, REBOL is a messaging language, so this creates a semantic standard that allows the two systems to communicate efficiently over networks. This also extends to other systems where REBOL3 will run, and partly to legacy REBOL2 systems.
Interestingly, this R3 version is not fully native to Syllable yet and is not fully ported. The open host environment has been compiled on Syllable, but is using the binary Linux version of the core interpreter library. Normally, this is impossible, but it works in this case through a trick. This was first done several years ago by Arno Klenke with a binary Linux multimedia codec. Both Linux and Syllable use the GNU GLibC C library, but the porting layer and the internal library versions are different. Providing symlinks from the Linux library versions to the Syllable Desktop versions makes this work. This is exceptional and is a testament both to Syllable’s compatibility with Linux and to the excellent isolation the host environment achieves between REBOL3 and the host platform.
Usually, systems need large emulation layers to run unchanged binaries from other platforms. Even when the CPU and machine architectures are the same, so that the code can be executed at full speed without machine emulation, large software infrastructures are necessary for operating system emulation. For example, running selected Windows programs on Linux requires WINE. FreeBSD can also run selected Linux binaries, based on similarity between their kernels, but it requires all the binary base libraries of a Linux system to be installed. In contrast, Syllable Desktop uses its own native libraries and unmodified kernel to run the REBOL language interpreter. Of course, more complicated examples wouldn’t work, but this shows the clean implementation of REBOL3.
So far, the separated REBOL3 host/library architecture has been ported to Windows, Linux, Syllable and FreeBSD. The port to Mac OS X is currently causing headaches and postponed. Again, those major platforms have major differences that require a lot of porting effort. However, although the R3 host environment was recompiled on Syllable Desktop, it can hardly be called porting: so far, it could use the source code of the Linux port unchanged.