Home

Awesome

Build

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