cwal: the Scripting Engine Without a Language

Project source code repository: https://fossil.wanderinghorse.net/r/cwal
See also: s2

In mid-2012 i started work on a so-called "scripting engine" library for the C programming language. i had been kicking around an idea for a unique(?) type of garbage collector since 6 or 8 years and finally found the inspiration to try it out (knowing in advance that it would be a non-trivial amount of effort, potentially requiring years of coding to fully realize). This library was (and still is) called the Scripting Engine Without a Language, or "cwal" (the 'C' comes from it being implemented in C (and it sounds like "sewal" would be pronounced)). Though it has always been independent of any given scripting language, it is also intended to be used for languages with "a certain shape". i.e. its design imposes certain expectations and limits on any language built on top of it. That said, the library is also usable independently of a scripting language, as a sort-of garbage-collection system for C code. (That's not really what it's intended for, but it can be done.)

In 2013 Google v8's JavaScript engine (my script engine of choice at the time) underwent a subtle, but major, API change which invalidated many hundreds, perhaps even several thousands, of hours of my work with that library, frustrating me to no end (see also...) and putting me in the market for a scripting engine which wouldn't get pulled out from under me at someone else's whim. And thus work began in earnest on a scripting language built on top of cwal.

After one throwaway prototype and one somewhat-ill-conceived TCL-like language, the majority of cwal's development is (since mid-2014) focused on the s2 scripting language... (this is the part where you click that link to continue).