Luwa's end goal is to JIT to WASM. Right now it's a bit of a learning environment for me as I've never written a language implementation that required real parsing
I'll try avoid my usual stream of consciousness here, instead that's at my devlog
main.js
is nodejs entrypoint
WASM runtime is in rt/
. rt/make.lua
is luwa-agnostic macro-assembler logic. mkrt.lua
produces an rt.wasm
which rt.js
interfaces
GC is a LISP2 compacting GC. GC performance is a low priority given WASM GC RFC. See rt/gc.lua
VM needs to be reentrant. Currently running coroutine is oluastack. Builtins which call functions work by returning after setting up a necessary callstack. See rt/vm.lua
rt/prelude.lua
implements builtins which do not require hand written wasm