Software nativo, documentado para agentes.
Nyx compila a código nativo con LLVM, hospeda su propio compilador y entrega cada proyecto con lo que un agente de IA necesita para escribirlo bien.
Instalación
$curl -sSf https://nyxlang.com/install.sh | sh
Linux · x86_64 / aarch64 / armv7l · Termux
Por qué Nyx
Lo que le da a quien lo escribe.
| Código nativo | nyx build compila vía LLVM a un ejecutable nativo. No hay máquina virtual ni intérprete en tiempo de ejecución. |
|---|---|
| Tipado gradual | Una variable anotada la verifica el compilador; sin el tipo, se infiere o queda abierto. Un script puede empezar suelto y volverse más estricto a medida que crece. |
| Se compila a sí mismo | El compilador está escrito en Nyx y se compila a sí mismo hasta dar el mismo IR de LLVM: el punto fijo se verifica, no se promete. |
| Biblioteca estándar | HTTP, PostgreSQL, SQLite, JSON, CSV, PDF y XLSX vienen con el lenguaje. Su lector columnar de CSV agrupó y filtró 5 millones de filas en 0.93 s, contra 1.21 s de pandas, según la medición de las notas de la versión 0.38.0. Ver la receta |
01 Instalación
Un comando para instalarlo. Uno para empezar un proyecto.
| Requisitos | clang, make y git, más las cabeceras de desarrollo de libgc, OpenSSL y zlib. El instalador instala lo que falte con el gestor de paquetes que encuentre: apt, dnf, pacman, apk, xbps, o pkg en Termux. |
|---|---|
| Instala en | ~/.nyx, con un enlace en ~/.local/bin/nyx (en Termux, $PREFIX/bin/nyx). Si ese directorio no está en tu PATH, el instalador lo agrega a tu perfil de shell y te avisa. |
| Verificar | nyx --version — imprime la versión instalada. |
| Actualizar | nyx update — trae la versión más reciente, la recompila e imprime qué cambió. |
| Desinstalar | nyx uninstall — borra la toolchain y el enlace que creó. |
| Siguiente | Primer programa — un solo archivo .nx, compilado a un binario nativo y verificado antes de correrlo. |
Primer proyectoterminal
$ nyx init my-app crea nyx.toml, src/main.nx, AGENTS.md y docs/nyx/$ cd my-app$ nyx run compila el proyecto y lo ejecuta
Muestra
Cómo se lee el lenguaje.
sample.nxnyx
enum Shape { Circle(int), Square(int), Rect(int, int) } fn area(s: Shape) -> int { return match s { // exhaustive: every variant must be covered Shape.Circle(r) => 3 * r * r, Shape.Square(l) => l * l, Shape.Rect(w, h) => w * h } } fn main() { let rect: Shape = Shape.Rect(3, 7) print("area = ${area(rect)}") }
| Muestra | Un enum con match exhaustivo sobre cada variante, interpolación de strings y tipos explícitos en cada binding. |
|---|---|
| Verificado con | nyx check — analiza y chequea tipos, sin linkear y sin ejecutar. |
| Ejecútalo | nyx sample.nx |
Biblioteca estándar
Qué trae la biblioteca estándar.
Todo lo de abajo viene con el toolchain: no hay paquete que agregar. Cada entrada abre una receta que compila y corre con la versión del pie de página.
- 146std/csvUn lector columnar: millones de filas a columnas tipadas en una pasada.
- 15std/jsonParsear JSON a mapas y arreglos, y volver a serializarlo.
- 51std/httpUn servidor HTTP mínimo con ruteo.
- 110std/serveUn framework web: rutas, middlewares, archivos estáticos y Server-Sent Events.
- 49std/httpCliente HTTP: pedidos, cabeceras, plazos y TLS.
- 104std/postgresUn cliente de PostgreSQL en Nyx puro, sin libpq.
- 55std/sqliteUna base de datos SQL embebida.
- 118std/pdfGenerar una factura en PDF: texto, líneas, una imagen y un código QR.
- 143std/pdf_renderDibujar una página de un PDF como imagen, en el servidor.
- 124std/xlsxEscribir un libro de Excel con celdas tipadas y combinadas.
- 113std/smtpEnviar correo con adjuntos, por STARTTLS o TLS.
- 133std/imageDecodificar, achicar y codificar imágenes: miniaturas de productos.
02 Documentación
La guía, paso a paso.
- 01Instalaciónrequisitos, qué queda dónde, cómo actualizar y cómo desinstalar.
- 02Primer programade un solo archivo .nx a un binario nativo que puedes distribuir.
- 03Proyectosnyx.toml, src/, tests/ y dependencias.
- 04AgentesAGENTS.md, CAPABILITIES.md y docs/nyx/: el contexto que lee un asistente.
- 05Línea de comandoscada subcomando: build, run, check, vet, fmt, test, add, update.
- 06Sintaxistipos, enums, match exhaustivo, Result y el operador ?.
03 Desarrolla con agentes
Cada proyecto lleva el contexto que un agente necesita para escribirlo.
Lo que siembra nyx init
| AGENTS.md | El manual de campo: cómo se construye un programa acá, los rieles duros y las trampas que arruinan un primer intento. Neutral respecto del proveedor, según la convención agents.md. |
|---|---|
| CAPABILITIES.md | Índice generado de la biblioteca estándar — lo que ya existe, para que nadie lo reinvente. Se regenera en cada build. |
| docs/nyx/ | La referencia densa más tres guías: escribir un programa, arreglar un error de compilación y reportar fricción. |
Herramientas
- nyx vetNombra las trampas grep-ables en lugar de dejar un error del parser:
warning[W101] src/main.nx:12 - nyx init --agent=claude,cursor,copilotUn archivo adaptador corto y opcional por herramienta. AGENTS.md sigue siendo la única fuente de verdad; el adaptador solo apunta ahí.
- nyx init --sddSiembra el andamiaje orientado a especificación: constitución, glosario, plantilla de ADR y specs/ — así el agente pregunta en vez de inventar.
- nyx reportDeja un FRICTION.md en el proyecto. No se envía nada por su cuenta.
AGENTS.md — sembrado por nyx initextracto
> **REGLA DE ORO — NO leas el fuente del compilador ni de la biblioteca estándar** > (`std/`, `compiler/`, ni nada bajo tu instalación de Nyx) «para entender cómo funciona». > No hace falta y te vas a perder. Si buscas una función, búscala en `CAPABILITIES.md`. … ## Rieles duros (NO hagas esto) - **NO inventes sintaxis.** Si dudas de que una palabra clave o una feature exista, probablemente no exista — revisa `CAPABILITIES.md` (o <https://nyxlang.com/by-example/>) en vez de adivinar. - **NO reinventes lo que ya hace la stdlib.** Si `CAPABILITIES.md` lo lista, úsalo. - **NO parches una limitación.** Repórtala con `nyx report` y detente. …
04 Fuente
Abierto, versionado y honesto sobre ser 0.x.
| Licencia | Apache-2.0 |
|---|---|
| Repositorio | https://github.com/nyxlang-dev/nyx |
| Novedades | Novedades — las últimas versiones, con qué cambió y por qué; la historia completa está en GitHub. |
| Estado | 0.x: en desarrollo activo. La API puede cambiar y no se garantiza la compatibilidad entre versiones minor. |