Show HN: I made a Clojure-like language in Go, boots in 7ms

· web systems devtools · Source ↗

TLDR

  • 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.

Original | Discuss on HN