JIT Compilación en 5μs: cómo la IA hace que sea fácil y rápido

JIT Compiling Code in 5μs

JIT Compilación en 5μs: cómo la IA hace que sea fácil y rápido

La compilación JIT era un arte oscuro que requería conocimientos de ensamblador. Ahora, con IA, es más fácil que nunca. El autor de pgrust, una base de datos en Rust, muestra cómo construir un compilador JIT que compila en ~5μs, permitiendo compilar todas las consultas SQL. Usando copy-and-patch y stencils de ARM64, construye un motor de expresiones regulares que iguala el rendimiento del código escrito a mano, 10-20x más rápido que un intérprete.

Con el uso de IA, es más fácil que nunca escribir un compilador JIT con tiempos de compilación rápidos al apuntar directamente a ensamblador.
  1. MaxBarraclough

    Me recuerda al artículo de blog de 2024 'Look ma, I wrote a new JIT compiler for PostgreSQL' [0]. Ambos artículos lamentan que el JIT basado en LLVM de Postgres [1] tarda un poco en generar código.

    > La rareza de los compiladores JIT me hace creer que implementar un compilador JIT históricamente era demasiado difícil para que valiera la pena.

    Eso solo es cierto si escribes un JIT desde cero. No hay rareza de JITs, es solo que a menudo se usa LLVM (y otros frameworks). Cada intérprete importante tiene un compilador JIT. PCRE2 tiene un compilador JIT. Hay frameworks JIT por ahí con generación de código mucho más rápida que LLVM: Cranelift, GNU Lightning, Mir. Dudo que puedan generar código más rápido que un JIT de copiar y pegar personalizado, pero serían mucho más rápidos que LLVM.

    [0] https://www.pinaraf.info/2024/03/look-ma-i-wrote-a-new-jit-c... , discutido: https://news.ycombinator.com/item?id=39742916

    [1] https://www.postgresql.org/docs/current/jit-reason.html

  2. agnishom

    Recomiendo los artículos de Russ Cox sobre implementar un motor de regex: https://swtch.com/~rsc/regexp/

    Es muy relevante

  3. catlifeonmars

    Esto es quizás un poco meta, pero fue una lectura agradable. Es refrescante leer un artículo sobre usar un LLM que no parece que también fue escrito por ese LLM.

    Podría usar este enfoque para generar las plantillas para un firewall JIT con el que he estado experimentando.

    También se me ocurre que esto podría usarse para generar bytecode de eBPF sobre la marcha también

  4. glum64

    Uhm, Common Lisp, donde JIT no solo está disponible sino que también es manejable: el programador puede decidir qué merece ser compilado y qué no.

    Además del tiempo de ejecución, JIT también está disponible cuando el código se compila o se carga para ejecución (es decir, ¿tienes en mente una aceleración de compilación o carga? no hay problema, también puedes compilar esa aceleración en código máquina nativo, y así hasta el infinito...).

  5. mgaunard

    El problema con el enfoque es que no es compilación JIT real, es solo plantillas de ensamblador con sustituciones básicas.

    Al no usar LLVM, te pierdes todas las optimizaciones que hace.

  6. malisper

    Autor aquí. Avísame si tienes alguna pregunta sobre el artículo o sobre pgrust.

  7. glenjamin

    pgrust suena muy interesante, pero con los cambios profundos no hay un camino viable para subirlo al proyecto principal - ¿el objetivo final es ser lo suficientemente robusto como para que tenga una adopción amplia?

  8. hamilyon2

    Usa compilación de copiar y pegar para lograr eso

Más de este día

2026-08-23