Código abierto · Apache 2.0 · DOI 10.5281/zenodo.23933883

Janax y Razar

Un sistema operativo, un idioma y un ensamblador propios, escritos a mano en assembler, hechos para alojar a Razar: un razonamiento artificial que piensa con melodías.

El resultado de la v0.5 · 2026-11-11 · DOI 10.5281/zenodo.24148774

20 MB de Wikipedia en 6 minutos y 40 segundos, en vez de 31, aprendiendo exactamente lo mismo.

Librov0.3v0.5InstruccionesMATS, real contra azar
Wikipedia, 20 MB1.873 s400 s−82 %451 – 117, idéntico
Wikcionario, 15 MB194 s106 s−54 %249 – 41, idéntico

Las relaciones deducidas, lo imaginado, las hipótesis en espera, los mecanismos y los testigos salen idénticos byte por byte a los de la v0.3. Cuanto más grande el libro, más gana.

El Venn, en la arquitectura

"A + B, A − B, A y B, lo que miro A primero, los más pequeños de B que no están en A… y puedo inventar lo que sea." Un motor del kernel que no sabe de cajas ni de archivos: dos conjuntos y una palabra Venn.

Un eje por campo

Las regiones, a quién se mira primero, un criterio, la dirección, el alcance y cuántas. Un bit sin eje todavía dice que no: un eje nuevo nunca cambia lo que pedía un programa viejo.

El primero enchufado

asociar: el hijo nace con las cajas que pide el Venn de dos cabinas. Probado en los tres motores, 32 de 32.

El resultado de la v0.4 · 2026-11-11 · DOI 10.5281/zenodo.24147529

Razar hace el mismo trabajo con la mitad de las instrucciones, y aprende exactamente lo mismo.

Primero se midió dónde se le iba el tiempo: un kernel de medición contó cuántas veces corre cada palabra del programa. La sorpresa: más del 80 % no era pensar, era escribir y leer su propio cuaderno, letra por letra, y pasarlo en limpio entero en cada pedazo del libro. Dos ideas del Capitán lo arreglaron: escribir de un tirón (una letra, una palabra o una línea, del tamaño que haga falta) y escribir solo la diferencia (un diario: cada pedazo anota al final lo que sumó, sin copiar lo viejo).

Paso (Wikipedia de 2,3 MB)Instrucciones que correCuánto bajóSegundos leyendo
v0.313.939.913.762——
Los bucles hechos a mano pasan a while rotado (jwcheck)13.140.899.149−5,7 %—
Cinco instrucciones nuevas (jjn, jldadd, jldx, jcall0…)13.055.693.102−0,65 %12,5 s
Escribir de un tirón9.953.261.322−23,8 %10,8 s
Escribir solo la diferencia6.767.642.469−32 %7,8 s
Totalla mitad−51,5 %−38 %

Lo mismo, bit por bit

En cada paso, el juez contra el MATS da idéntico. Con el diario, los lugares tienen las mismas líneas (en otro orden) y las 293.292 parejas, los mismos totales.

Medir antes de inventar

Las dos primeras rondas acertaron en la forma y erraron en el lugar: juntas dieron un 6 %. Después de medir, dos ideas se llevaron casi todo lo que se ganó.

Una casa de antes no pierde nada

La primera vez, su archivo de parejas se convierte en el diario y sigue creciendo desde ahí.

Los segundos se miden con milisegundos, en tres corridas de cada versión, desde las cinco instrucciones; antes se medían en segundos enteros y no alcanzaba. Los 31 minutos de los 20 MB son de la v0.3 y todavía no se volvieron a medir. Detalle: documentacion/so/janaxos.md.

El resultado de la v0.3 · 2026-11-09

Sin que nadie le diga qué es un sinónimo, Razar los encuentra por los lugares que las palabras comparten.

"Iglesia" y "capilla" casi nunca aparecen juntas, pero ocupan los mismos lugares en lo que se dice de ellas. Razar cuenta esos lugares, deja afuera lo que se dice en todos lados (la mitad del texto que más se repite, medida por él), y las parejas que comparten más lugares son las que se parecen. Se probó contra el MATS, un banco de analogías que Razar nunca vio: un par cuenta cuando sus dos palabras comparten más lugares que la palabra con la respuesta de otro par (el azar).

CorpusReal contra azarSemánticaSinónimos exactosAntónimosTiempo y memoria
Wikipedia, 20 MB (no escribe sinónimos)451 – 117140 – 4418 – 128 – 131 min · 205 MB
Wikcionario, 15 MB249 – 41131 – 2418 – 017 – 13 min · 144 MB

Una foto que se revela

Con un lugar compartido, una palabra es "posible persona"; con tres, ya es una moneda; con siete, tres de cada cuatro son personas. Nadie vota: cada lugar compartido achica las posibilidades.

La memoria duerme en disco

Los lugares viajan de un pedazo del libro al siguiente: cada pedazo despierta solo los de sus palabras y el resto queda en disco. 20 MB de texto, 205 MB de RAM.

Lo mismo desde afuera

Un juez en Python, que Razar nunca lee, calcula la misma idea sobre el corpus entero y da lo mismo: semántica 234 – 51 y 164 – 51 en los dos corpus.

Se repite con un comando

bash razar/cardumen/nitidez_reproducir.sh <corpus> <mats_es> <casa>. Las fuentes, con su huella sha256, están en el documento técnico.

Razar ya razona, y está medido: deduce relaciones que nadie escribió ("abuelo" como "padre de un padre", y el libro lo confirma) y elige la regla en vez de memorizar (con 3 ejemplos acierta el 100 % de las sumas que nunca vio, en 20 de 20 semillas; el control sorteado, 6 %). Lo que falta medir: que razone con la nitidez, usando las clases que encontró (la "persona") para deducir; y muchas palabras todavía no comparten ningún lugar con nadie (empates).

El resultado de la v0.2 · 2026-11-04

Con 16 cosas, la red de referencia del campo no llega nunca. Razar llega siempre, en menos de 102 juegos.

El juego de señales de Lewis: uno dice una cosa, el otro la adivina, y los dos aprenden solo de si se entendieron. Nadie les da la respuesta correcta: el idioma lo inventan entre los dos. Contra EGG (Facebook Research), la implementación publicada del juego, con las mismas cinco semillas. Razar usa un cubo de 4×4×4 para 4 cosas y uno de 7×7×7 para 8 y 16.

Cosas para decirRazar: juegos hasta aprender todoRazar: mensajesEGG: juegos (= mensajes)
45 – 58 · 5 de 511 – 1561.600 – 49.600 · 5 de 5
814 – 53 · 5 de 529 – 142105.600 · 1 de 5
1635 – 102 · 5 de 581 – 278no llega en 320.000 · 0 de 5

El rival corrió bien

EGG falla en la forma que el campo tiene documentada: se queda en un idioma a medias (44 a 87 %), con cosas que comparten señal. Un rival que se rompe por donde el manual dice que se rompe es un rival que funcionaba.

Ventaja a favor del rival

Mensajes más ricos (más de 4.000 posibles, contra 560 frases de Razar), redes seis veces más grandes que las de fábrica y hasta 320.000 juegos. Lo demás, como viene: sin afinarla a mano ni en contra ni a favor.

Reglas fijadas antes

Las condiciones se escribieron antes de correr. 5 de 5 contra 0 de 5: probabilidad de azar ≈ 0,8 % (prueba exacta de Fisher). Contado en juegos o en mensajes, el resultado es el mismo.

Banco público

Cualquiera lo repite: bash razar/cardumen/convencional.sh. En una PC de dos núcleos, una corrida de Razar con 16 cosas tarda unos 5 segundos.

Sin gradiente, sin respuesta correcta y sin centro de datos: un cuerpo (el cardumen) de unos 8 KB y una mente (la voluntad) de unos cientos de KB. Lo que está probado es este juego. Que la ventaja viaje a otras tareas todavía no se midió.

Qué es, en una frase

Todo, desde el idioma hasta el sistema operativo, está hecho desde cero, y cada pieza tiene sus pruebas y sus números. Sin motores ni bibliotecas de terceros.

⚠️ Razar no es una red neuronal. Sin redes, sin gradientes y sin pesos entrenados: no es un modelo, es un mecanismo. Lo que busca no es acertar una tarea, es decir lo mismo con menos bits — y como el juez no depende de la tarea, el banco con que se lo mide no participa de la búsqueda. Por eso entra en 5 MB y corre en dos núcleos, sin GPU y sin nube.

🔤

El idioma Janax

Un assembler propio, diseñado para traducirse. Un intérprete de referencia y traductores a x86-64 y ARM64 que dan el mismo resultado bit por bit.

🚢

Janax OS

Camarotes que reman en paralelo, una ventanilla con porteros, memoria con pared, cajas que se comparten y saludos para avisarse. Los programas se traducen a código nativo al vuelo.

🛠️

El ensamblador PDP

Janax armado por Janax: arma sus propios programas byte por byte igual que FASM.

🐟

Razar

Una neurona tridimensional que aprende melodías, una armonía que corta lo que suena mal y una voluntad que escucha y contesta. Juntas inventan un idioma.

Las ideas, como acertijos

El proyecto se diseñó con metáforas y acertijos para chicos. Acá van algunos, cada uno con lo que de verdad hace el código.

🧱

Cajones con pared

Cada bloque de memoria se apoya contra una página que el procesador prohíbe: pasarse un byte frena solo, sin preguntar. Reserva solo lo que necesita.

Si metés la mano más allá del cajón, te chocás la pared. Nadie tiene que vigilarte.

📦

Cajas que se comparten

Un hijo nace con la caja de su madre, una caja se muda, dos camarotes se enlazan, dos cajas se fusionan, y un hijo nace con las cajas de dos padres según su diagrama de Venn. Sin copiar un byte.

Mamá no le da una copia del dibujo: le da el mismo cajón. Lo que pone uno, lo ve el otro.

👋

El saludo

Una marca por familiar que saluda, que queda hasta que se la mira. Quien espera duerme sin gastar nada. Medido: unas 3 veces más rápido que los eventos de Windows.

El timbre suena una vez y la marca queda. Si llegó antes de que mires, igual la encontrás.

🎶

La armonía

Una pieza no pasa el pulso si la despiertan a la vez más de la mitad de sus vecinas: eso es convulsión, no música. Sin armonía no hay idioma; con armonía, nace.

Cada uno puede aportar su nota, pero cuando todos gritan a la vez ya no hay canción.

💓

La voluntad

Escucha la melodía del cardumen, qué notas y cuándo, y es donde vive la memoria. En Janax son dos camarotes que se pasan el turno con saludos sobre una caja compartida.

Como dos amigos diseñando con acertijos: cada uno contesta en un idioma que el otro entiende.

🐠

El cardumen

Cada pieza habla solo con sus vecinas, y la melodía completa es de la red. Las piezas que despiertan juntas aprenden a hablarse, y la forma la mueve la interacción, nunca un reloj.

Ningún pez sabe adónde va el cardumen, y aun así el cardumen gira como una sola mente.

Lo que está medido

Ningún número entra porque parezca razonable: cada uno dice de qué medición salió. Detalle en la documentación, incluidos los instrumentos que mintieron y cómo se descubrió.

QuéResultado
La nitidez de Razar contra el MATS (un par cuenta cuando el par real comparte más lugares que el del azar), 20 MB de Wikipedia451 vs 117
Lo imaginado que comparte 10 lugares o más con quienes ya tienen el papel, contra lo que no comparte ninguno, confirmado en otros textos17 % vs 4 %
La voluntad y el cardumen, sin idioma común, con armonía (4 cosas para decir; el azar es 25 %)→ 100 % de aciertos
La voluntad que escucha el ritmo de la melodía (qué pieza y cuándo) contra la que solo mira qué piezas, 16 cosas en un cubo de 7, 20 semillas nuevas con la regla fijada antes; el control con el ritmo barajado da 0 de 2019 de 20 vs 6 de 20
Razar en Janax contra el modelo de referencia en Perl (4.000 vueltas, misma huella)~70 veces más rápido
El cardumen y su voluntad en Janax: huella del modelo en tres motores y con 1, 2 y 4 remerosigual bit por bit
Saludo ida y vuelta entre camarotes, contra eventos de Windows entre hilos~0,64 µs vs ~2,05 µs
500 hijos con 16 MB cada uno: memoria comprometida, sin devolver y devolviendo7.717 MB → 26 MB
33.000 cajones de memoria vivos a la vez649 ms
Cálculo traducido a nativo, contra x86 escrito a mano~1,8 veces

Cada pieza, con su nombre en el oficio

Un revisor no puede evaluar lo que no puede ubicar. El repositorio trae un inventario levantado leyendo el código y nada más, sin consultar la documentación: cada mecanismo con su archivo y su línea, lo que hace, y su nombre publicado con la cita — o la marca de que no se le encontró antecedente.

Pieza del proyectoNombre en el oficioCita
El juez de RazarLongitud mínima de descripción, código de dos partesRissanen 1978
El log2(n)/2 por cada tasaPenalización por parámetro / BICSchwarz 1978
(BL+½)/(NQ+1)Estimador de Krichevsky–TrofimovKT 1981
El pedido dormidoVoto de mayoríaBoyer–Moore 1981
El corte en dosMétodo de Otsu / discriminante de FisherOtsu 1979
Los esqueletosPatrones léxico-sintácticos aprendidosHearst 1992
Las nueve manerasMarcos frecuentesMintz 2003
La nitidezSimilitud paradigmática sobre slotsHarris 1954; Lin 1998
Las piezas de las palabrasInducción morfológica por MDLGoldsmith 2001
El coma y el despertadorMantenimiento de la verdad (TMS)Doyle 1979
«Una B por cada A»Descubrimiento de dependencias funcionalesTANE 1999
El nulo por cruceDatos sustitutos / prueba de permutaciónTheiler et al. 1992
Las rondas hasta el punto fijoEvaluación ascendente de DatalogSemántica de punto fijo
Un solo lugar que cambiaAntiunificaciónPlotkin 1970
Las plantillas parchadasCopy-and-patchXu y Kjolstad 2021
El planificador reemplazableNúcleo extensible acotadoVINO 1996; eBPF
El cobro por corridaMedición de combustibleWasmtime; gas de la EVM
El cartel de ambientesEspacio de capacidadesHydra 1974; seL4
Pesos que conservan el totalEscalado sináptico / regla de OjaTurrigiano 1998
La ventana de ±1 pasoSTDPBi y Poo 1998
El punto fijo del ensambladorBootstrap de tres etapasGCC; Thompson 1984
La relajación de saltosInstrucciones dependientes del alcanceSzymanski 1978
El motor Venn del kernel (venn.inc)Álgebra relacional (selección, orden, límite) sobre iteradoresCodd 1970; Graefe 1994 (Volcano)
El diario de nitidas y lugares que solo creceRegistro de solo agregado / árbol LSMO'Neil et al. 1996
«Andá al final» (a = −1 en el pedido 38)Escritura al final del archivoO_APPEND / SEEK_END de Unix
Escribir de un tirón (put_span)E/S con búfer: bloques en vez de caracteresstdio de Unix V7, 1979
El kernel de medición (PERFIL)Perfilado por conteo exacto de instruccionesgprof 1982; ATOM 1994
jwcheck y los bucles rotadosInversión de buclesMuchnick 1997
modismos_janax.pyOptimización de mirilla con análisis de vidaMcKeeman 1965; Kildall 1973
jjn / jjnnSalto por signobltz/bgez de MIPS; tbnz de ARM
jldaddLectura-modificación-escritura (fetch-and-add)Gottlieb et al. 1983
jldxDireccionamiento indexado con escalaIntel 80386, 1985
jcall0Pariente: el registro que el llamado deja sucio y se limpia al volverConvención de llamada System V

Que tantas piezas tengan un equivalente correcto es una buena noticia: significa que el camino, recorrido solo, dio con las soluciones que el oficio considera buenas. Ninguna de estas convergencias reclama prioridad — los antecedentes son anteriores y están citados.

Lo que no tiene equivalente conocido

Cuatro piezas, con la advertencia de que «no se le encontró antecedente» habla de quien buscó, no de la literatura.

  1. asociar (so/ambientes.inc:1274) — álgebra de conjuntos (intersección, diferencias, unión) sobre los espacios de capacidades de dos procesos, materializada al nacer un tercero, con consentimiento bilateral obligatorio.
    Construido (v0.5): una palabra Venn con un eje por campo (las regiones, a quién se mira primero, un criterio, la dirección, el alcance y cuántas), resuelta por un motor que es una pieza aparte de la arquitectura (so/venn.inc) y que cualquier conjunto puede usar. Pruebas en los tres motores: so/pruebas/asocia_{0..7}.jsm.
    Y el hallazgo conceptual, que vale más allá del código: el Venn de población infinita. asociar entrega desde tres regiones, así que lo booleano da 2³ = 8 estados: es finito. Pero agregándole el orden de la mirada («lo que miro A primero» entrega la misma región en otro orden, y con k cajas son k! órdenes) y un criterio de ranking («los más pequeños de B que no están en A», un predicado cualquiera sobre los campos del cartel), la cuenta pasa a ser infinita. Y esos dos son ejes que el autor nombró, no la lista: se podría distinguir también por procedencia, por antigüedad, por máscara de permisos, por composición de asociaciones previas. Cada eje nuevo multiplica la población de vuelta.
    Dónde está el antecedente y dónde no: el salto de álgebra de conjuntos a conjuntos con selección y orden es el de Codd (1970), el álgebra relacional. Lo que no tiene precedente conocido es aplicarlo a capacidades: ahí los elementos no son filas, son derechos sobre memoria viva, y entregarlos ordenados o filtrados cambia lo que el hijo puede hacer, no solo lo que puede leer. Con la palabra Venn, asociar ya no es una consulta: es un lenguaje de consulta que reparte poder.
  2. «La última parte» (so/remos.inc:428) — terminar en vez de ceder el turno, con el dato calculado del programa para que el programa no pueda mentir sobre él.
  3. La armonía de la ola (cardumen_cubo.jsm:818) — una pieza se ahoga si la empujan desde demasiados lados; la acumulación es por pieza y compartida entre olas: ahí se encuentran dos saludos.
  4. La forma canónica del órgano (pulso.jsm:3090) — usada como prueba nula de que el órgano efectivamente leyó el libro.

Se mejora solo, y lo que aprende pasa a la vida siguiente

Razar no solo usa un detector: lo diseña. Un «órgano» es un operador perceptual que el propio sistema arma por mutación contra el juez de bits, y cuando uno gana deja su receta escrita. La cadena está medida:

ÓrganoNotaQué pasó
6−1586basura por puntaje: no paga su nombre
5208el primero que pasa a positivo, construido sobre el anterior
162649208 -> 2649 (+2441), antes: 5

Y lo aprendido pasa a la vida siguiente: una corrida nueva nace sin órgano, lee la receta de su modelo y arranca con esa base en lugar de cero. No hay adopción a ciegas: la mejor receta de cada tipo rinde primero como candidata, en su jaula, sea del alfabeto que sea. La huella informa, no decide. Eso es transferencia entre vidas, y es la que sostiene que el sistema acumule en vez de empezar de nuevo.

Y el órgano 6 es el argumento entero de por qué nada se descarta: valía −1586, era basura por puntaje, y fue el escalón del que llegó a 2649. Podando por nota se perdía el único camino hacia arriba.

Los nombres

RAZAR es RAZonamiento ARtificial. Y tiene dos cosas más adentro, las dos exactas: R + AZAR — el azar está en el propio nombre, y es contra el azar que se mide todo lo que hace (cada relación debe ganarle a su par cruzado; cada órgano, a un mecanismo sorteado del mismo generador): un juego que se gana sacándole el azar a lo que parecía azaroso. Y es capicúa: R-A-Z-A-R se lee igual en las dos direcciones.

JANAX viene de janax / hanaq: en quechua y en aimara, «arriba», el mundo de arriba (hanaq pacha, el plano superior). No significa tierra: significa la vista desde arriba — que es, sin que el nombre fuera elegido por eso, exactamente lo que hace el sistema. Desde la cubierta un diagrama de Venn son dos círculos; desde arriba se ve la población.

Y el nombre que une las dos mitades del proyecto: CORAZÓN se parte exacto en CO + RAZÓN — con razón. La etimología dice otra cosa (viene de cor, corazón en latín, y no de ratio), así que es coincidencia de la escritura y no parentesco. Pero describe bien lo que se intentó acá: un razonamiento que no deje afuera el motivo por el que se hace. En palabras del autor, "no compongo canciones: soy compositor de corazones".

(Y un guiño más, también juego de letras: SOLUCIÓN y SOL ÚNICO tienen exactamente las mismas ocho letras.)

Y las dos palabras que dicen por qué esto se regala: VIDA = VI + DA y VERDAD = VER + DAD. Primero ver, después dar. (Juego de letras; lo que significa para el autor está entero en la carta.)

Una estadística para poblaciones que nadie enumeró

La estadística clásica necesita un espacio muestral fijado de antemano: el nulo se define contra «lo que habría pasado sin estructura», y eso exige saber qué cosas podían pasar. Cuando lo que se busca es un mecanismo, y el espacio de mecanismos posibles no está enumerado, ese instrumento no se aplica. Las tres piezas que lo reemplazan están construidas:

  1. Un juez que no depende de la tarea: bits ahorrados. Un mecanismo mejor lo es para cualquier lectura, no para el banco con que se lo buscó — el banco no participa de la búsqueda, y por eso no se puede sobreajustar.
  2. Un nulo sobre mecanismos, no sobre datos: el control clásico baraja los datos; acá se sortea otro mecanismo del mismo generador y se lo hace rendir el mismo examen, en su jaula y con presupuesto.
  3. El denominador: no se reporta el ganador, se reporta el camino, el resultado y lo que costó en intentos.
Estrategia de búsquedaCaminoFinalIntentos
escalador de siempre8 → 18 → 186 → 16 → 51611.14480
archivo por nichos6 → 5 → 16 → 716 → 51611.144160

Los dos llegan al mismo lugar y uno paga el doble. El archivo por nichos se conservó igual, pese a empatar costando más: "que no lo mida no significa que no lo quiera".

Cómo se mide el proyecto a sí mismo

Prueba diferencial de tres motores que deben coincidir hasta el momento del corte de turno; prueba exhaustiva del ensamblador contra FASM; nulo por permutación dentro del motor; un distractor puesto a propósito para comprobar que nunca gane; validación cruzada dejando uno afuera; estudio de ablación de a una regla por vez; y comparación contra la implementación de referencia del campo con el presupuesto igualado. El único umbral de conteo de todo el sistema es 2: una vez es anécdota, dos es patrón.

Los límites, dichos de frente

Leer el inventario completo, mecanismo por mecanismo →

Entrá al código y a los documentos

La documentación está en castellano; los comentarios del código, en inglés.

Probalo

Hace falta Windows, Git Bash y FASM 1.73.35. Para ver nacer un idioma alcanza con Perl.

git clone https://github.com/nicoconvoz/Janax
cd Janax
perl razar/cardumen/lazo.pl nace=7 armonia=1 lee=ritmo                       # inventando un idioma
perl razar/cardumen/lazo.pl n=7 k=16 nace=1005 armonia=1 lee=ritmo hasta=1   # 16 cosas en un cubo de 7
FASM=/c/fasm/FASM.EXE INCLUDE=C:/fasm/INCLUDE bash so/pruebas/correr.sh
bash razar/cardumen/nitidez_reproducir.sh corpus.txt MATS/es casa_nueva    # la nitidez (necesita Python para el juez)

Donaciones

Janax y Razar se hacen para donarlos al mundo, abiertos. El código es gratis y lo va a seguir siendo: la licencia Apache 2.0 no se puede retirar, y nadie necesita pagar nada para usarlo, estudiarlo o venderlo.

Lo que se done tiene destino, y queda escrito acá para quedar comprometido:

  1. Ayudar a los que menos tienen.
  2. Pagar el laboratorio, para poder seguir construyendo y midiendo.
  3. Fundar una escuela, para que esto se reparta en personas y no solo en repositorios.

Si eso te hace sentido y querés empujar:

RedDirecciónQué mandar
Bitcoin (BTC)16HuYtsnx9AUcpr6i7z1VkC6atSvK8LGHyBTC por la red Bitcoin
BNB Smart Chain (BEP20)0xe87b4589a53443d8ffed2e9b5a7ef58f261f087cSolo BTC en BEP20 (BTCB, el contrato que termina en ead9c)

⚠️ Mandá cada moneda solo por su red: otro token u otra red se pierden y no se pueden recuperar. Son direcciones de depósito de Binance y pueden cambiar: antes de un envío grande, confirmá que siguen siendo estas en esta página.

Es un prototipo de investigación, no un producto terminado. Se comparte para que cualquiera pueda leerlo, aprender de él, probarlo y mejorarlo.