I'm pretty excited by some recent and ongoing changes, which make Wat even smaller and turn it into more of a VM than a full language. Wat will provide (just) the following features:
- delimited continuations and delimited dynamic binding (higher-order control); these will be used to build cooperative multithreading with thread-local bindings
- try/catch/finally (first-order control) integrated with the JS stack, but suspendable by continuation capture
- fexprs as well as in-source self-modifying-code memoizing macros (which are hygienic, as they're built on Kernel)
- a native JS interface
And I gave up on quasiquotation and Scheme-style hygienic macros again. I just cannot get them to work in a satisfying manner.
Exempli gratia, here's some initial Wat VM "microcode" for bootstrapping a vaporlanguage.