Skip to main content
Pre-release

This release is a pre-release and may not be stable for production use.

Geno

CI PyPI version Status: Preview License: Apache 2.0

Website | Install | Language Tour | Examples | Documentation | Maturity | Contributing

Geno is a statically typed, functional-first programming language for reliable small programs written with LLMs. You can write Geno directly or generate it with a model; executable examples, contracts, explicit block boundaries, and capability-gated effects make the result easier to check and repair. Geno runs directly and compiles to Python and JavaScript.

Project status: Preview. Geno is ready for evaluation, examples, and early tools, but its pre-1.0 language and tooling may change. Beta and Experimental below describe individual component readiness, not overall project stability. See the preview program and maturity matrix.

Here is the core idea. Save this as score.geno:

func score_label(score: Int) -> String
    requires score >= 0
    example 95 -> "excellent"
    example 70 -> "passing"
    example 40 -> "needs work"

    if score >= 90 then
        return "excellent"
    else if score >= 60 then
        return "passing"
    else
        return "needs work"
    end if
end func

func main() -> String
    return score_label(95)
end func
$ geno test score.geno
3 passed, 0 failed

$ geno run score.geno
=> excellent
  • example clauses are executable specifications.
  • requires states a checked precondition.
  • Explicit end tokens make generated block boundaries unambiguous.

Quickstart

Geno requires Python 3.10-3.13. Install the published CLI, create a project, then test and run it:

pip install geno-lang
geno --version
geno init hello --template cli
cd hello
geno test Main.geno
geno run Main.geno

The generated program finishes with:

>>> Hello, World! <<<

Continue with Getting Started, or jump to the Language Tour.

Why Geno?

LLMs are good at producing plausible code. Geno is designed to make plausible code easier to constrain, validate, and ship.

Common failure mode Geno design choice What you get
Bracket and indentation drift end func, end if, end match Clear parse boundaries in generated code
Untested behavior Required example clauses Inline executable specs for most functions
Type confusion Explicit function signatures plus local inference Stable interfaces without noisy locals
Accidental effects Capability-gated filesystem, network, process, env, clock, random, print, regex Effects are visible at the command line
Edge-case misses Exhaustive pattern matching and requires / ensures contracts Better compiler feedback before runtime
Runtime escape risk Capability gates and surface-specific sandboxing Safer execution of generated programs

Where Geno Runs

Surface Start here Status Boundary
Python CLI geno run, geno test, geno compile -o app.py Beta Effectful builtins require explicit capabilities
Node.js CLI geno compile --target js -o app.js Beta Generated JavaScript is for trusted execution; capability flags do not confine Node.js APIs
Browser app geno build -o dist/ Beta Produces static HTML/JS artifacts with browser-specific capabilities
Hosted runtime geno serve Beta Provides an HTTP API with isolated execution, auth, rate limiting, and metrics

Package management, the LSP and VS Code extension, the formatter, and the self-hosted frontend are experimental. See Supported Targets and the Maturity Matrix for the detailed contract.

Language At A Glance

Geno is immutable by default and includes:

  • Static typing with local inference, generics, traits, and impl blocks
  • Algebraic data types, exhaustive pattern matching, guards, and rest patterns
  • One error model: Result / Option with ? propagation, and panic for bugs
  • Lists, arrays, vectors, maps, mutable maps, and sets
  • Lambdas, pipelines with |>, async functions, and await
  • F-strings plus CSV, TOML, and JSON helpers
  • Python and JavaScript compilation

The Language Tour explains these features with runnable examples. Target-specific behavior is documented in Portable Runtime Semantics. The Language Specification is the 0.6 contract, shipped as release candidate 0.6.0-rc.2 and normative from 0.6.0; v0.5 remains the normative contract for the 0.5 series and v0.4 stays frozen for 0.4. Coming from 0.5? Run geno migrate, then see the migration notes.

Examples

Example What it shows
examples/fibonacci.geno Recursion, iteration, examples-as-tests
examples/safe_divide.geno Result, Option, and pattern matching
examples/apps/geno-check Multi-module CLI validation app
examples/apps/geno-dash Browser dashboard with canvas widgets
examples/apps/geno-snap Hosted API mock server

More release-gated applications are listed in Reference Apps.

Safety And Limits

Geno separates pure computation from effects. Builtins that touch the filesystem, network, process execution, environment, clock, random values, output, or regex require explicit capabilities.

The CLI and hosted runtime use sandboxed execution with process isolation. The in-process embedding API has cooperative limits, and generated JavaScript is not a security boundary. Before running untrusted programs, read the Security Policy, Execution Surface, and Capability Reference.

The package ecosystem and editor tooling are still young, and breaking changes remain possible before 1.0. For current limitations, consult the Maturity Matrix and Common Pitfalls.

Research

Geno tracks a reproducible runtime benchmark snapshot, whose committed run meets the suite target of <=2x for at least 80% of measured problems. The LLM correctness benchmark documents its methodology, but public frontier-model results are deferred and no Geno-vs-Python correctness advantage is currently claimed. The seeded-mistake results, which need no model, show how Geno's diagnostics locate and fix the mistakes models carry over from other languages.

Develop Geno

This repository contains the language implementation, standard library, documentation, benchmarks, example applications, self-hosted frontend, and VS Code extension.

git clone https://github.com/davidiach/geno-lang.git
cd geno-lang
pip install -e ".[dev]"

Read CONTRIBUTING.md for the development workflow and local checks, GOVERNANCE.md for decision rights, and the design proposal process for substantial changes. Use GitHub Discussions for questions, the preview feedback template for early-user reports, and SECURITY.md for private vulnerability reporting. Release history is recorded in CHANGELOG.md.

License

Apache License 2.0. See LICENSE for details.

Metadata

Release files for geno-lang 0.6.0rc2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for geno-lang 0.6.0rc2
File Size Uploaded Provenance
geno_lang-0.6.0rc2.tar.gz 625.4 kB With provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for geno-lang 0.6.0rc2
File Interpreter ABI Platform
geno_lang-0.6.0rc2-py3-none-any.whl Python 3 none any Details

Total release size: 1.3 MB

Release files / geno_lang-0.6.0rc2.tar.gz

Download URL geno_lang-0.6.0rc2.tar.gz
Size 625.4 kB
Tags Source
SHA-256 checksum
How to use checksums
50d9fe329163969a84c11b967b35e20359436702f041d45133378c3e450195a8
BLAKE2b-256 checksum
How to use checksums
f8642966f4d6dce3f4b6be22b95e724352a576ac1e634d98ef085db5b4e41823
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 24, 2026.

Transparency log

Release files / geno_lang-0.6.0rc2-py3-none-any.whl

Download URL geno_lang-0.6.0rc2-py3-none-any.whl
Size 664.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
a88484438828de1fb7f20c9d827bbe7ebbbf22a5d7d1f9efb7223400cf0811b6
BLAKE2b-256 checksum
How to use checksums
cb1e18cd34fad0819c30cfa975fdcf3167ae816d9881c2d94168f177a5eb2bbc
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 24, 2026.

Transparency log

Security for geno-lang 0.6.0rc2

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for geno_lang-0.6.0rc2.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 24, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page