Show HN: I made a Clojure-like language in Go, boots in 7ms
Source: Hacker News
Overview
Let-go is a Clojure‑like language (~90% compatible with JVM Clojure) written in pure Go. It ships as a ~10 MB static binary and cold boots in ~7 ms — about 50× faster than the JVM and 3× faster than Babashka. It has decent throughput on algorithmic workloads, roughly in the ballpark of the GraalVM‑backed sci.
Origin
I started this project in 2021 as an elaborate practical joke: I wanted an excuse for writing Clojure while pretending to write Go.
Features
- Feels like real Clojure and includes an nREPL server (supported in Calva, CIDER, etc.).
- Easily embeddable in Go programs; functions, structs, and channels cross the boundary without fuss.
- Suitable for CLIs, web servers, data‑processing scripts, and even some systems programming — I used it to write a daemonless container runtime.
- Runs on Plan 9.
Under the Hood
The implementation consists of a fairly simple compiler and a stack VM, both handcrafted specifically for running Clojure‑like code. The compiler can operate in AOT mode, producing portable bytecode blobs and standalone binaries (runtime + bytecode).
Limitations
This is not a drop‑in replacement for Clojure in general:
- It does not load JARs.
- It lacks the full Java API surface.
- Existing Clojure projects will most likely require modifications to run.
Getting Started
Take it for a spin and tell me what you think. Issues and PRs are welcome!