Developer marcingas released let-go, a Clojure-like language written in pure Go that achieves 95.4% compatibility with JVM Clojure while booting in approximately 7 milliseconds. The project, shared on Hacker News on May 9, 2026, ships as a ~10MB static binary—7× smaller than Babashka and 30× smaller than JDK—with idle memory usage of just 14MB.
Performance and Compatibility Metrics
let-go demonstrates significant performance advantages over existing Clojure implementations. The language completes map/filter pipelines in 8ms, running 2.4× faster than Babashka, and achieves 10× faster performance than Joker on most benchmarks. Testing against the jank-lang/clojure-test-suite shows 4,696 of 4,921 assertions passing (95.4%) across 217 test files.
Key features include:
- Cold boot time of ~7ms with pre-compiled bytecode
- ~10MB static binary (7× smaller than Babashka, 30× smaller than JDK)
- Idle memory usage of 14MB
- 8ms for map/filter pipelines (2.4× faster than Babashka)
- 95.4% compatibility with JVM Clojure test suite
- nREPL server support (works with Calva, CIDER)
Technical Architecture and Use Cases
The language features a handcrafted compiler and stack VM specifically designed for Clojure-like code. The compiler supports AOT mode, producing portable bytecode blobs and standalone binaries combining runtime and bytecode. let-go supports macros, destructuring, protocols, records, multimethods, transducers, lazy sequences, and persistent data structures. The standard library includes core.async channels, HTTP server/client, JSON, Transit, and IO utilities, plus support for Babashka pods for databases, AWS, and Docker integration.
Creator marcingas explained the project's origin: "I started this project in 2021 as an elaborate practical joke: I wanted to have an excuse for writing Clojure while pretending to write Go. Jokes aside, it turned out to be pretty decent." The 7ms boot time is significant—it fits within a single requestAnimationFrame at 60fps with 10ms to spare, making it viable for rapid CLI tools and scripts where JVM startup overhead (typically 1-2 seconds) proves prohibitive.
Limitations and Real-World Applications
let-go is not a drop-in replacement for JVM Clojure: it cannot load JARs and lacks all Java APIs. Notable compatibility gaps include edge cases around numeric overflow and a few unimplemented namespaces. However, the language excels at writing CLIs, web servers, data processing scripts, and systems programming. The creator has used it to build a daemonless container runtime and confirmed it runs on Plan9. The project gained 80 points with 23 comments on Hacker News, demonstrating interest in lightweight Clojure alternatives.
Key Takeaways
- let-go achieves 7ms cold boot time with a 10MB static binary, dramatically faster than JVM-based Clojure implementations
- The language demonstrates 95.4% compatibility with JVM Clojure, passing 4,696 of 4,921 test assertions
- Performance benchmarks show 2.4× faster execution than Babashka for map/filter pipelines
- Easily embeddable in Go programs with seamless function, struct, and channel interoperability
- Well-suited for CLIs, web servers, and data processing where JVM startup overhead is prohibitive