GitXplorerGitXplorer
s

luwa

public
95 stars
3 forks
1 issues

Commits

List of commits on branch master.
Unverified
8e4852e13e56b7ece875360e31bc01a128c762ed

Continue cleaning things up while pondering how to share stack between instructions & temp value scratch space

sserprex committed 6 years ago
Unverified
40155c5903e3d5702594184e121352fe45bacd73

Fix Typeck signature & implement

sserprex committed 6 years ago
Unverified
3f5feb3f421c3846b60649eac82c674d1a815060

Liveness analysis: forgot to recursively inspect ast

sserprex committed 6 years ago
Unverified
3a86c5ddaed4191f78ca247390aeeea55acc72c5

First stab at: mkMop Typeck, SetPc, register liveness analysis

sserprex committed 6 years ago
Unverified
e7815f352646b5c3870d36f8d7d8cc707af7bc85

Considering coming up with a clean way to define microops like LoadFuncParamc in terms of other microops

sserprex committed 6 years ago
Unverified
2fc30ff4b1cadacbdf02a8a6616f6e8e158460e5

vm: Generate a label to escape from switch

sserprex committed 6 years ago

README

The README file for this repository.

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