# cljgo > Clojure hosted on Go. A compiler written in Go that AOT-emits plain Go source (the ClojureScript model), plus a tree-walk evaluator that powers the REPL and macro engine. Ships small static binaries with fast boot, zero-binding Go interop, and conformance-tested Clojure semantics verified against JVM Clojure 1.12. cljgo compiles Clojure to plain Go source and also runs it in a REPL from the same analyzer, so REPL and compiled binaries behave identically (dual-harness conformance-tested against real JVM Clojure). A compiled hello-world is a ~7.1 MB static binary that starts in ~5 ms (measured 2026-08-02; the cljgo tool itself is ~28.6 MB). It calls any Go package with zero bindings, ships single static binaries, includes the bri app framework (config, HTTP, HTML), a dependency/publishing story on the Go module ecosystem, and core.async. Performance is honestly reported — in the AOT-vs-AOT head-to-head against Glojure, cljgo wins the tree-recursion rows (tak, fib) and loses transducers and reduce, with four rows tied inside the run-to-run noise; the reduce loss is ~3.7x and is published alongside the wins. Errors are structured diagnostics with registered codes and `cljgo explain ` pages. ## Documentation Sets - [Abridged documentation](https://muthuishere.github.io/cljgo/llms-small.txt): a compact version of the documentation for cljgo, with non-essential content removed - [Complete documentation](https://muthuishere.github.io/cljgo/llms-full.txt): the full documentation for cljgo ## Notes - The complete documentation includes all content from the official documentation - The content is automatically generated from the same source as the official documentation