# 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 ` se manejen, así que la spec no se desactualiza silenciosamente: si un error nuevo aparece, el checker lo señala en cada call site hasta que se cubra. La documentación del sistema y el código son la misma cosa. ### CLI tools introspectables Errores con códigos estables (`niell explain NIELL-PARSE-001` devuelve descripción + ejemplo + fix pattern), output `--json` versionado, schema introspectable con `niell describe --json`. Las CLI escritas en Niell son consumibles por humanos y por scripts sin parsear prosa, y los agentes pueden preguntarles "qué entiendes y qué errores puedes tirar" antes de invocar. *Proyectos concretos con código y walkthroughs en preparación — sección Proyectos pendiente.* ## Por qué Niell > Antes de los LLMs, traducir intención a código era responsabilidad exclusiva del humano. Hoy esa traducción ya no es monopolio humano, pero la IA tampoco la reemplaza. Programador e IA trabajan como pares. Lo que escasea entre ambos ya no es **escribir** código — es **revisarlo**. Validar que hace lo que tiene que hacer, detectar lo que está mal, decidir si la dirección es correcta. Niell pone esa revisión en primer plano. La sintaxis empuja el contrato al frente; la mecánica de orquestación queda atrás. El compilador garantiza memoria, seguridad y ausencia de data races; el humano y la IA se reparten el resto. ## Links - [Getting started](getting-started.html) — tu primer programa en 10 minutos - [Install](install.html) — instalación por sistema operativo - [01 Sintaxis](01-sintaxis.html) — keywords, operadores, bloques - [02 Tipos](02-tipos.html) — primitivos, relaciones estructurales - [Keywords](keywords.html) — catálogo completo del compilador