Programming Languages and Runtimes
Over the years I’ve built innumerable little languages and runtimes. In high school, I was inspired by a friend’s HP RPL calculator to build a similar language interpreter using pascal, and that quickly led to a friend, Nigel Bree, pointing me in the direction of Scheme, and a number of subsequent Scheme-like language interpreters (generally inspired by Aubrey Jaffer’s SCM) were the result.
- The first language I ever wrote: slang-r1-orig
- An example program in it; a number-guessing game: slang-r1-guess.sla
- A later iteration: slang-r5
- An example program in it; cooperative multitasking using continuations: slang-r5-mtl.sla (note the strong Scheme influence!)
- Moof, a Scheme-like language: moof-0.2.2.tar.gz, a snapshot from 1998
OOM
On the road to 3-MOVE I built a few earlier programmable text-based virtual-reality systems, each with their own programming language, culminating in OOM, a system for DOS which accepted connections over dial-up modem and via the local console, using a cooperative threading library for the system’s concurrency.
- A snapshot of OOM from around 1994: oom-1994ish.zip
aLan
A precursor to gAlan, aLan was a text-based audio
pipeline construction language, inspired by Haskell and Haskore. It
was syntactically very close to Haskell, though without the
indentation rules. Semantically it was much closer to Scheme: eager
and unityped. Special operators were provided for combining audio
streams—for example, ||
mixed two streams together—but most
audio manipulation was done by built-in primitives returning
“generator” objects.
I haven’t cleaned up the code for release yet; if you’re interested, please contact me to hurry the process along.
- an example aLan program.
- another example, with drums and a bassline.
Recent years
Latterly, though—basically, ever since I got a job—the experiments have gotten fewer and further between. Besides my contributions1 to the Highwire project2, I’ve been tinkering with Newmoon, an R5RS scheme compiler, for a few years; and in 2007, after discovering Richard Jones’s FORTH system, Jonesforth, I implemented the assembly-language part of the system in PowerPC assembly, thereby learning both PPC assembly and a little something about FORTH at the same time.
I’ve also contributed a few things to other people’s projects: a green-threads and socket library for Slate (way back in 2005—I’m not sure any of that code survives today); a port of the Chicken Scheme compiler and runtime to Sparc and PA-RISC architectures, along with a few bugfixes and, eventually, libraries for a few systems-programming-type tasks.
Ongoing Experiments
These days, most of my language-related experimentation is happening over here.
-
which are probably still under commercial NDA, otherwise I’d love to write about some of it here! ↩
-
A Microsoft incubation project from 2002–2004 that LShift was retained to work on; there used to be a project description at http://www.lshift.net/case.mshighwire.html, but it seems to have vanished recently. Fortunately, the WayBack Machine has a copy. ↩