# Niell Un lenguaje de programación diseñado para **legibilidad bidireccional humano↔IA**. Compila a **LLVM IR**. Memoria segura por construcción. Sin data races. Sin VM. Sin liturgia sintáctica. Las firmas se leen como prosa: `action greet with name: text -> text`. Los efectos se leen como contratos: `fails with NotFound`. El programa cuenta lo que tiene que hacer antes de cómo lo hace. ## Status Pre-release v0.3. El compilador (Rust + inkwell + LLVM 18) implementa la Fase 1 — thin-slice del lenguaje con 407 tests verdes. Binario distribuible para Linux x86_64 (otras plataformas, build desde fuentes). ## Try it Un programa mínimo: ```niell action main show with "hola, niell" end ``` Instalar el compilador (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 ``` Detalles por plataforma (macOS, WSL2) en [Install](install.html). Compilar y ejecutar el programa: ```bash niell hello.niell -o hello ./hello # → hola, niell ``` ## Hecho con Niell Este sitio se genera con un SSG escrito completamente en Niell. El binario `niell` que acabas de descargar compila el mismo código que produjo esta página. Pipeline: markdown → AST → HTML, ~1000 líneas de Niell. El source de esta página está a un click: descarga [index.md](index.md) — es el markdown crudo. El HTML que estás leyendo lo generó esa lógica, corriendo en el mismo binario que tienes en tu máquina. Fragmento real del template, para que veas cómo se lee Niell: ```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 ``` Cada `.md` de la spec tiene su gemelo crudo servido al lado del HTML — [02-tipos.md](02-tipos.md), [04-acciones.md](04-acciones.md), etc. Transparencia para humanos curiosos y agentes que prefieren el source. ## Para qué sirve Niell Niell brilla en tres nichos donde su diseño paga doble. ### Pipelines de agentes Cuando un loop tiene a Claude (o cualquier IA) como intérprete del pipeline y necesita una autoridad determinística para validar estado, derivar contadores de retry, o rechazar transiciones inválidas — ese rol encaja con Niell. Tagged unions con `match` exhaustivo cierran todos los casos en compile-time; `fails with` distingue fallos esperados de bugs; el output `--json` da contratos estables consumibles desde Bash o desde otro agente. ### Spec-driven development Una firma como `action authenticate with creds: Credentials -> Session fails with InvalidPassword, AccountLocked` es contrato y código a la vez. El compilador exige que todos los `on