# Niell A programming language designed for **bidirectional human↔AI readability**. Compiles to **LLVM IR**. Memory-safe by construction. No data races. No VM. No syntactic ceremony. Signatures read like prose: `action greet with name: text -> text`. Effects read like contracts: `fails with NotFound`. The program says what it has to do before saying how it does it. ## Status Pre-release v0.3. The compiler (Rust + inkwell + LLVM 18) implements Phase 1 — the language thin-slice with 407 tests green. Distributable binary for Linux x86_64 (other platforms, build from source). ## Try it A minimal program: ```niell action main show with "hello, niell" end ``` Install the compiler (Linux x86_64): ```bash sudo apt install -y clang xz-utils curl -L https://niell.dev/dl/niell-linux-x86_64.xz | xz -d > niell chmod +x niell sudo mv niell /usr/local/bin/ niell --help ``` Per-platform details (macOS, WSL2) in [Install](install.html). Compile and run the program: ```bash niell hello.niell -o hello ./hello # → hello, niell ``` ## Built with Niell Niell is a general-purpose language: the same binary that compiles this site also compiles CLI tools, parsers, pipelines, or any program that writes text. This SSG is one use among many — producing HTML is the program's choice, not the language's. Pipeline: markdown → AST → HTML, ~1000 lines of Niell. The source of this page is one click away: download [index.md](index.md) — it's the raw markdown. The HTML you're reading was generated by that logic, running on the same binary you have on your machine. A real fragment of the template, so you see how Niell reads: ```niell action wrap_in_template with body: text, sidebar: text, meta: PageMeta -> text title: text = meta.title description: text = meta.description canonical: text = meta.canonical lang: text = meta.lang og_meta: text = emit_og_meta with meta json_ld: text = emit_json_ld with meta return "\n\n
..." end ``` Each `.md` of the spec has its raw twin served alongside the HTML — [02-tipos.md](../02-tipos.md), [04-acciones.md](../04-acciones.md), etc. Transparency for curious humans and agents that prefer the source. ## What Niell is for Niell shines in three niches where its design pays off twice. ### Agent pipelines When a loop has Claude (or any AI) as the pipeline interpreter and needs a deterministic authority to validate state, derive retry counters, or reject invalid transitions — that role fits Niell. Tagged unions with exhaustive `match` close every case at compile time; `fails with` distinguishes expected failures from bugs; the `--json` output gives stable contracts consumable from Bash or from another agent. ### Spec-driven development A signature like `action authenticate with creds: Credentials -> Session fails with InvalidPassword, AccountLocked` is contract and code at once. The compiler requires every `on