// the find
ProvableHQ/leo
🦁 The Leo Programming Language. A Programming Language for Formally Verified, Zero-Knowledge Applications
Leo is a statically-typed, imperative language that compiles to zk-SNARK circuits for the Aleo blockchain. It abstracts away the math of zero-knowledge proofs behind a JavaScript/Rust-influenced syntax, letting you write private applications without needing to understand R1CS or Groth16 directly. The target audience is developers who want to build on Aleo specifically — this is not a general ZK toolkit.
The language design is genuinely well-thought-out: explicit `public`/`private` visibility on function inputs maps directly onto what gets exposed in the proof versus what stays hidden, which is exactly the mental model you need. The toolchain is complete — formatter, LSP, and a disassembler are all first-party crates, not afterthoughts. The compiler pipeline is cleanly separated into distinct crates (parser, AST, type-checker, codegen) with a dedicated passes infrastructure, making it navigable for contributors. Compilation goes to Aleo instructions as an intermediate representation, which means you get the full snarkVM optimization stack without Leo needing to own it.
It's still alpha and explicitly warns of breaking changes — the lock-in to the Aleo ecosystem means any stability issues there ripple directly into Leo. Loops are bounded at compile time (no dynamic iteration), which is a real constraint that catches people off guard coming from general-purpose languages. The async model for on-chain finalization is unusual and poorly documented relative to how central it is to building anything non-trivial. GPL v3 license will be a blocker for anyone wanting to embed the compiler in a commercial product.