Todo ingeniero tiene un proyecto en su cementerio de código que le enseñó más por sus fallos que por sus aciertos. Para mí, ese proyecto fue el inicio de Achronyme.
Lo que empezó como un experimento sencillo para crear pipelines de Procesamiento Digital de Señales (DSP) escaló estrepitosamente. Caí en la trampa clásica del “Scope Creep”: quería un lenguaje de propósito general, con motor gráfico personalizado, UI y asincronía… todo a la vez.
El error del medio megabyte
El resultado de esa ambición desmedida fue un monstruo de Frankenstein arquitectónico.
En mis versiones iniciales, cometí el pecado capital de la gestión de memoria: ingenuidad. Modelé los datos como objetos pesados, abusando de Arc<T> y estructuras estilo JavaScript para todo. No había localidad de caché, no había arenas, solo punteros inteligentes dispersos por el heap.
El costo de esa abstracción fue brutal: un simple “Hola Mundo” consumía 500KB de RAM. El runtime era lento, pesado y, sinceramente, poco usable para cualquier cosa seria. Tuve que pausarlo.
El pivote: Rust y la disciplina de la memoria
Durante ese hiato, descubrí el potencial real de Rust bien aplicado. No solo por la seguridad, sino por el control que te da sobre el layout de memoria si estás dispuesto a pelear con el borrow checker.
Decidí que Achronyme no iba a morir como un juguete lento. Iba a renacer con un propósito nuevo y específico: Criptografía y Protocolos.
Para que un lenguaje sea útil en el mundo de la criptografía (y potencialmente Zero-Knowledge Proofs), necesita precisión y eficiencia, no abstracciones pesadas. Esto implicó rediseñar la VM desde cero con principios opuestos a la versión anterior:
- Adiós
Arc, hola Arenas: En lugar de conteo de referencias atómico costoso para cada objeto, ahora gestiono la memoria mediante Arenas Tipadas (Slabs). Esto garantiza localidad de memoria y hace que la recolección de basura sea mucho más predecible. - NaN Boxing: Para aprovechar cada bit, implementé NaN Boxing. Ahora, un valor de 64 bits puede ser un flotante, un puntero, o un entero pequeño, todo sin asignaciones en el heap.
- BigInts Nativos: La criptografía no vive de flotantes. El nuevo motor está diseñado para integrar
BigIntsy elementos de campo finito como ciudadanos de primera clase.
El estado actual (“En pañales”)
Esta nueva fase de Achronyme apenas comienza. Estoy construyendo los cimientos: un Garbage Collector real (Mark-and-Sweep), soporte para estructuras de datos eficientes y una arquitectura que no se ahogue con la recursión.
El objetivo a largo plazo es ambicioso: convertir Achronyme en un lenguaje maduro para aplicaciones criptográficas, capaz de compilarse a WebAssembly o binarios nativos optimizados (quizás vía LLVM).
No es el camino fácil, pero después de ver lo que cuesta un “Hola Mundo” mal hecho, la eficiencia ya no es una opción; es la única meta.