GENO

Geno/Application notes

Blog

Releases, design decisions and engineering detail from the Geno project. Each post stands on its own; read them in any order.

No.TitleTopicDate
007 Geno 0.5.0: main now speaks in exit codesGeno 0.5.0 makes main() -> Int your process exit status, adds named constructor arguments, and runs an Async value at most once. Here is what changed and how to migrate. Release 2026-10-14
006 The playground runs the real compilerMost language playgrounds send your code to a server. Geno's runs the actual CLI inside your browser tab, with Python compiled to WebAssembly and a 600 KB bundle of the toolchain. Tooling 2026-10-14
005 Examples are the specificationOrdinary Geno functions must carry at least one example clause, and geno test runs them all. Why we made examples mandatory, and what that buys you when a model writes the code. Design 2026-10-14
004 Why Geno writes end funcBraces and indentation work well for people with editors. Generated code needs boundaries that survive truncation, reformatting and streaming, so every Geno block closes by name. Design 2026-10-14
003 Fail closed: how capabilities workA Geno program cannot read a file, open a socket or start a process unless the command that runs it says so. Here is how capability gating works on each surface, including where it does not protect you. Security 2026-10-14
002 What we measure, and what we don't claim yetGeno's compiled Python lands at a median 1.60x the time of hand-written Python across 53 measured problems. Whether models write more correct code in Geno is a question we have not answered publicly, and here is why. Research 2026-10-14
001 Geno, written in GenoThe repository includes a lexer, parser, type checker and interpreter for Geno, written in about 8,400 lines of Geno. What it covers, what it does not, and why we keep it honest with a parity check. Engineering 2026-10-14

Subscribe with RSS, or watch GitHub releases.