let-go is a bytecode compiler and VM for a Clojure dialect written in Go: 10MB binary, 7ms cold start, standalone executables, and WASM output.
Key Takeaways
Benchmarks on Apple M1 Pro: 7ms startup vs Babashka’s 20ms, Joker’s 12ms, JVM’s 331ms; 14MB idle memory vs Babashka’s 27MB.
Passes 4,696 of 4,921 assertions (95.4%) in jank-lang/clojure-test-suite; gaps are mostly BigInt promotion and BigDecimal edge cases.
Ships core.async (real goroutines, not IOC), nREPL server, Babashka pod support, HTTP, JSON, Transit, and direct Linux syscalls.
Go interop via RegisterStruct/ToRecord/ToStruct lets you embed let-go as a scripting layer in Go apps with near-zero conversion overhead.
WASM compilation produces a self-contained HTML page with xterm.js terminal emulation; boots inside a single requestAnimationFrame.
Hacker News Comment Review
The single comment points to OS-level mmap startup time as the real floor for cold-start benchmarks, implying 7ms may approach the practical minimum for a native binary on Linux.