Hoja de ruta técnica de Rul (.rl) — Del motor v0.4 al lenguaje de sistemas general v1.0
Hoja de ruta de ingeniería en cuatro hitos que expande Rul (.rl) desde un motor de cómputo columnar de 29 opcodes (v0.4) hasta un lenguaje de sistemas de propósito general que reemplaza a Rust y Go para software generado por IA (v1.0).
Por qué empezamos con pipelines de datos (v0.1 a v0.4)
Para demostrar que el formato de instrucción binaria de 16 bytes funciona en silicio real antes de añadir construcciones de lenguaje de propósito general, restringimos las fases v0.1 a v0.4 a pipelines de procesamiento de matrices y vectores (29 opcodes) — demostrando verificación O(N) en ~5,78 ns/nodo, compilación ELF64 autónoma en ~6,4 µs y un rendimiento de 51,53 GB/s.
Cuatro hitos hacia el lenguaje de sistemas de propósito general v1.0
Núcleo SSA-DAG columnar de 29 opcodes, trazador de caja blanca y compilador AVX2 ELF64 AOT
Demostró en hardware real el formato binario de 16 bytes, el verificador O(N) de un solo pase (~5,8 ns/nodo), el motor de 3 niveles, el servidor rul-mcp y el compilador nativo Linux ELF64 sin LLVM (~6,4 µs).
- 01. RulHeader de 64 bytes, ArenaDescriptor de 16 bytes, ProofEntry de 16 bytes y NodeFrame de 16 bytes en 29 opcodes.
- 02. Ensamblador simbólico bidireccional sin pérdidas .rls <-> .rl, CLI autónomo rul, rul-bench y servidor rul-mcp de 6 herramientas.
- 03. Asignador de registros YMM de escaneo lineal (ymm2..ymm13) que alcanza 51,53 GB/s (4,72x sobre C) en matrices de 80 MB.
Flujo de control de propósito general, funciones modulares y tipos de datos compuestos
Expandir el conjunto de instrucciones de 16 bytes más allá de las matrices numéricas para admitir escalares generales, structs, enums, cadenas UTF-8, mapas hash, ramas condicionales y bucles con prueba de terminación.
- 01. Soporte de primera clase para i64, i32, u8, f32, structs de diseño fijo, uniones etiquetadas algebraicas, cadenas UTF-8 validadas y mapas hash en arena.
- 02. SelectBranch: bifurcación condicional que exige que ambas ramas converjan en un estado idéntico de versión de memoria (comprobado en O(1)).
- 03. RegionLoop y Call: bucles acotados con testigos de terminación en ProofEntry y funciones modulares verificadas sin inlining global.
Propiedad del heap de nivel Rust y tiempos de vida de structs en tiempo O(N)
Generalizar las versiones TokenOp de 32 bits y los testigos ProofEntry de 16 bytes desde matrices planas hacia asignaciones de heap basadas en regiones y préstamos de campos de structs.
- 01. Asignación y liberación determinista de regiones del heap vinculadas a tokens de propiedad lineal con cero GC y cero fragmentación malloc/free.
- 02. Testigos ProofEntry para mutaciones disjuntas de campos de structs y tiempos de vida de sub-rebanadas zero-copy comprobados en O(1) por instrucción.
- 03. Protección total contra use-after-free, double-free y aliasing sin resolución de restricciones Borrow Checker de varios segundos.
Concurrencia determinista al estilo Go y E/S del SO controlada por CapabilityMask
Introducir tareas ligeras, canales con transferencia de propiedad y bits de capacidad detallados en la cabecera que gobiernen llamadas al sistema de archivos, red y procesos.
- 01. Enviar un búfer por un canal tipado realiza un AffineConsume sobre el token emisor y transfiere la propiedad al receptor — evitando carreras de datos al cargar sin GC.
- 02. Ampliar el RulHeader.capability_mask de 64 bits para controlar lecturas/escrituras de archivos, sockets de red, temporizadores y subprocesos.
- 03. Un binario .rl con CAP_NONE (0x0) queda bloqueado matemáticamente de realizar cualquier llamada de red o disco antes de iniciar la ejecución.
Backends nativos multiarquitectura (x86_64, ARM64, WASI) y pruebas formales de solidez
Emitir ejecutables autónomos en Linux, macOS, Windows y WebAssembly sin LLVM, respaldados por model checking con Kani y una suite de conformidad v1.0 de 50 programas.
- 01. Generación de código nativo cero-LLVM para x86_64 y AArch64 (ARM64) en Linux, macOS y Windows, más módulos WASI deterministas.
- 02. Pruebas de model checking acotado (Kani) y fuzzing diferencial continuo en el decodificador binario, verificador O(N) y generador nativo.
- 03. Especificación binaria .rl v1.0 congelada y suite pública de pruebas de conformidad de 50 programas.
Reglas fundamentales de ingeniería (No-Objetivos)
Toda propiedad de seguridad (tipos, propiedad, límites, terminación de bucles, permisos de E/S) debe ser verificable en un único pase hacia adelante O(N).
Cero pausas de GC y cero hilos ocultos en tiempo de ejecución; el ciclo de vida de la memoria se rastrea explícitamente mediante arenas y regiones versionadas.
Cada nivel de ejecución (Tier 0, Tier 1, Tier 2 y ELF64 AOT) debe producir resultados idénticos o detenerse de forma segura con un error determinista.