let-go: A Clojure Dialect Compiler and VM Written in Go with Standalone Binary Support
By
marcingas
Hand-rolled, kettle-boiled, baked to perfection. Worth every minute at the bakery.
Summary
let-go is a bytecode compiler and virtual machine for a Clojure-like language implemented in Go. It produces standalone ~10MB binaries with ~7ms cold start times, making it the smallest and fastest-starting Clojure-family language in Go. The project supports compiling programs into single executables or self-contained WASM web apps with terminal emulation via xterm.js, requiring no runtime for distribution.
Key quotes
· 3 pulledThe smallest and fastest-starting Clojure-family language in Go — a single ~10MB binary with ~7ms cold start.
Standalone executables — compile your program into a single binary with lg -b myapp main.lg. No runtime needed, just distribute and run.
WASM web apps — compile your program to a self-contained HTML page with lg -w outdir main.lg. Full terminal emulation via xterm.js, runs in any browser.
You might also wanna read
Optimizing a Simple AST-Walking Interpreter for Competitive Performance
This article details the process of optimizing a simple AST-walking interpreter for a dynamic programming language called Zef, created as a
Developing a Fuzzer for the Toy Optimizer to Detect Compiler Optimization Bugs
The article discusses creating a fuzzer for the Toy Optimizer compiler project to automatically detect correctness bugs in optimization pass
Developer's Experience with Compact Compiler Development: Writing C Subset in 1500 Lines
The article discusses the author's experience with compiler development, challenging the conventional wisdom that compilers must be enormous
Practical Patterns for Programmatic C Code Generation
The article provides practical advice and patterns for generating C code programmatically rather than writing it manually. The author, a com
Technical Analysis of LLVM IR Design Issues and Current Fixes
The article is a technical critique of LLVM's design issues, building on a previous blog post. The author notes that some previously identif
Understanding Rust's GCC Backend: Architecture and Implementation
This article explains how the Rust programming language compiler can use different backends to generate binary code, with a focus on the GCC
