Nativo para agentes LLM, apps de escritorio y móvil de fábrica, y un binario nativo medido contra Go — sobre un lenguaje con genéricos, traits, pattern matching y actores multicore: errores como valores, sin null y sin excepciones.
enum Tree { Leaf, Node(Tree, int, Tree) } fn sum(t: Tree) -> int { match (t) { Tree.Leaf => 0, Tree.Node(l, v, r) => sum(l) + v + sum(r), } } fn main() { let t = Tree.Node(Tree.Node(Tree.Leaf, 1, Tree.Leaf), 2, Tree.Leaf); print(sum(t)); // 3 }
Un solo binario, sin dependencias: el instalador detecta tu plataforma
(macOS, Linux y Windows, arm64 y x86_64), descarga la release y deja
ray en ~/.local/bin — o en
%LOCALAPPDATA%\Programs\raylang\bin desde PowerShell, ya en tu PATH.
macOS y Linux:
curl -sSfL https://raylang.dev/install.sh | shWindows, desde PowerShell:
irm https://raylang.dev/install.ps1 | iexVerifícalo con ray version — un binario, todo incluido: compilador, VM, LSP, formateador y gestor de paquetes.
ray new hola && cd hola && ray runray new deja un ray.toml + src/main.ray; ray dev recompila y reinicia al guardar.
Y después, el handbook: instalar, el lenguaje en quince minutos, la concurrencia y las herramientas, y desde ahí una guía por tipo de app.
raylang trae de serie las dos piezas para que un modelo escriba raylang correcto — y lo verifique solo.
CLAUDE.md.ray mcp — un servidor MCP embebido en el binario:
el bucle escribir → verificar → corregir con los diagnósticos
exactos del compilador y el código del modelo confinado (fuel + heap +
plazo, en subproceso).llms.txt se sirve como resource
(raylang://llms.txt) — el cliente lo inyecta antes de la
primera línea. Guía completa en
docs/mcp.md.$ claude mcp add raylang -- ray mcp
# tools
ray_check diagnósticos exactos, posicionados
ray_run stdout + exit, confinado
ray_test el runner @test
ray_fmt fuente canónico
ray_doc firma + doc de la stdlib
# resource
raylang://llms.txt
El mismo fuente raylang corre como app de escritorio en macOS, Linux y
Windows y como app móvil en iPhone y Android — sin framework externo ni segundo lenguaje. La
interfaz es HTML en el webview del sistema (std/ui), el backend es tu
servidor web en raylang, y el puente JS ↔ raylang, los menús nativos, los diálogos de
archivo, el audio y los assets horneados en el binario vienen en la toolchain.
ray bundle produce la .app con icono, menú de aplicación, panel About y firma ad-hoc (la de distribución la pones tú)..desktop; ventana y webview sobre GTK/WebKitGTK..exe de escritorio (sin consola al doble clic, icono y versión embebidos) con su acceso directo; ventana y webview sobre Win32/WebView2, audio por WASAPI.ray bundle --ios genera el proyecto Xcode con el programa compilado a librería estática; firma persistente para dispositivo y simulador.ray bundle --android genera el proyecto Gradle con el .so nativo, icono launcher y firma de release; audio por AAudio.Guía paso a paso en el handbook: app móvil para iOS y Android, de ray new al simulador, al emulador y a la recarga en caliente en el teléfono.
Extensiones oficiales sobre el LSP de raylang: diagnósticos en vivo, autocompletado, hover, ir a definición, renombrar y formateo.
Package Control: Install Package → raylang
Zeden revisión en la galería de Zedgramática tree-sitter + LSP; mientras se aprueba, se instala como extensión de desarrollo
Neovim · Helixapuntan a ray lsp directo; snippets en editors/README.md
La extensión de Zed está enviada a la galería oficial y en proceso de aprobación: zed-industries/extensions #7361.
La VM completa compilada a WebAssembly — el playground corre raylang en tu navegador, sin servidor y sin instalar nada.
Alcance: corre el lenguaje completo y la stdlib pura
con import std/* (math, json, markdown, iteradores, actores/canales…). La
stdlib con E/S (fs, process, red) compila pero devuelve
Err al ejecutar — el navegador no tiene disco ni sockets. Los paquetes del
registro (net, web, rpc, db…) y los
módulos multi-archivo no resuelven aquí: para eso, instala ray y usa
ray add.
El binario nativo se pelea de tú a tú con Go y rustc -O, y
le gana a node en 9 de los 10 programas de cómputo del banco poliglota. Las barras
salen de la tabla real del repositorio — re-medir el banco regenera esta gráfica. La columna
de la VM se mide con un build PGO de la toolchain (make pgo); la release
publicada es un build plano y en la VM rinde un 10–26 % menos en cómputo puro — el binario
nativo no se ve afectado. Cómo compilarlo.
Resultados (22 sep 2026 — M3 Pro, mediana de 10 corridas, 5 de calentamiento) · el mismo output en todas las variantes, verificado por checksum · barra más larga = más lento que el binario nativo de raylang (1×), truncada en 4×.
Una VM de bytecode para desarrollar, un binario nativo para desplegar y un intérprete como oráculo — salida byte a byte idéntica, verificada en CI.
ray build --native transpila a Rust y compila un ejecutable:
2,6–4× la VM en cargas de servicio y 14–28× en cómputo puro.
Heap aislado por fibra + transferencia de propiedad en send:
multicore real sin data races, con scheduler M:N.
Sin null y sin excepciones: Result/Option
+ ?, pattern matching exhaustivo y genéricos con traits.
ray trae proyecto, paquetes, tests, formateador, docs, REPL,
LSP para el editor y un servidor MCP para agentes LLM.
HTTP/1.1 y 2, JSON, TOML, DNS, WebSocket o los clientes de BD están escritos en raylang; cada crate de Cargo entra justificado y medido.
raylang lexea, parsea, chequea y ejecuta raylang: el compilador auto-alojado se ejecuta a sí mismo sobre los motores auto-alojados.
Servidor HTTP de producción con framework estilo Express, SSR con templates
compilados y tipados (.ray.html), WebSocket y streaming.
Manifiesto ray.toml + lockfile con hashes SHA-256; el registro
acepta versiones firmadas con Ed25519 y nombres reclamados.
Un agente de código LLM, una app de escritorio, servidores y herramientas — dogfood real, publicado en la organización.
Las librerías también: la pila de red y formatos
(net — HTTP/1.1 y 2, DNS, WebSocket, TLS —, web,
rpc, db — Postgres, Redis, SQLite) vive en
packages/,
escrita en raylang (TLS y SQLite vienen del runtime, rustls/rusqlite), y los paquetes de la comunidad se publican en el
registro con hashes y firmas.
Un fuente, tres motores: el mismo programa corre igual — byte a byte — en desarrollo, en despliegue y bajo el oráculo de validación.