Okay, I'm ready to say a little bit about what's next in the pipeline. Probably most of you are expecting Chapter 2, and at some point I will write that as obviously it fills the gap between Chapter 1 and Chapter 3 :) Right now though I'm cooking up the code for a chapter on implementing the Forth programming language.
Why Forth? Well, it was the first language I learned after BASIC back when I was a teenager, and I've a tradition of porting a ropey spaghetti BASIC interpreter for Forth whenever I want to learn a new dialect of BASIC.
Currently I'm playing with the beta of AGK 2.0 which provides a particularly primitive (but enjoyable) BASIC as its dev language for writing cross-platform apps. Initially I bought a license just to help fund development and didn't expect to do much with it, but you know how these things go!
Anyway, I'm half-way through porting my spaghetti code Forth to AGK's BASIC (not having touched the previous VB5 version in at least 12 years) and in the process the whole design is really starting to clean up. Seems when I was last messing with this codebase I'd added primitive support for multi-tasking and I'm now wondering how that would look translated into separate goroutines.
This leaves me two options I'll be playing with over the next couple of months. One is to implement a simplistic version of Go's concurrency model for Forth, the other is to port the BASIC codebase to Go.
It's possible I may write a short eBook on AGK, just to show what's possible outside its usual 2D/3D game setting. Of more importance though is that I'll add a Chapter to the Notebook that will explore the design and implementation of a language interpreter for Forth in as much depth as I can (i.e. it'll be in similar vein to Chapter 1).
As Forth is a mix of a simple stack-based virtual machine with a more traditional token interpreter this should provide a good intro to writing more complex language runtimes. As an added bonus there'll definitely be concurrency and possibly general memory management as well.
The current implementation is an amalgam of the Forth 79 and 83 vocabularies but I'm not wedded to that. I may instead aim for a subset of the ANS-92 standard or ColorForth (which is relevant to modern hardware like the GreenArrays multi-core Forth systems).