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:
action main
show with "hola, niell"
end
Instalar el compilador (Linux x86_64):
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.
Compilar y ejecutar el programa:
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 — 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:
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 "<!DOCTYPE html>\n<html lang=\"{lang}\">\n<head>..."
end
Cada .md de la spec tiene su gemelo crudo servido al lado del HTML — 02-tipos.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 <variant> 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 — tu primer programa en 10 minutos
- Install — instalación por sistema operativo
- 01 Sintaxis — keywords, operadores, bloques
- 02 Tipos — primitivos, relaciones estructurales
- Keywords — catálogo completo del compilador