En informática , la compilación de copia y parche es una técnica sencilla de compilación destinada a la compilación justo a tiempo (JIT). Esta técnica utiliza la coincidencia de patrones para relacionar plantillas pregeneradas con partes de un árbol de sintaxis abstracta (AST) o un flujo de bytecode , y genera fragmentos de código máquina preescritos que luego se modifican para insertar direcciones de memoria , direcciones de registro , constantes y otros parámetros, produciendo así código ejecutable. El código que no coincide con las plantillas puede interpretarse de la forma habitual o bien generarse para llamar directamente al código del intérprete .
Compilación
Si bien la técnica de copiar y parchear es un método de compilación "rápido y poco riguroso" que es muchísimo más rápido que las técnicas más estrictas, a menudo produce un código que, en muchos casos, puede alcanzar un rendimiento similar al del código parcialmente optimizado producido por dichas técnicas.
La técnica de copiar y parchear fue descrita por primera vez por Fredrik Kjolstad y Haoran Xu en un artículo de 2021. [ 1 ]
A partir de 2023Xu estaba trabajando en una implementación para Lua que genera plantillas automáticamente, basándose en descripciones de lenguaje de alto nivel de las primitivas del intérprete. [ 2 ]
A partir de 2024, se utilizó una implementación de copia y parche basada en bytecode para el compilador JIT de Python 3.13. [ 3 ] [ 4 ]
En 2025, se agregó una implementación basada en bytecode de copiar y parchear para R en una versión modificada de R 4.3.2. [ 5 ]
Véase también
Referencias
- ↑ Xu, Haoran; Kjolstad, Fredrik (2021-10-15). "Compilación de copia y parche: un algoritmo de compilación rápido para lenguajes de alto nivel y bytecode" . Actas de la ACM sobre lenguajes de programación . 5 (OOPSLA): 136:1–136:30. arXiv : 2011.13127 . doi : 10.1145/3485513 .
- ↑ Xu, Haoran (2023-05-12). "Construyendo un JIT básico para Lua automáticamente" . sillycross.github.io . Recuperado el 2024-01-11 .
- ↑ "Python 3.13 obtiene un JIT" . tonybaloney.github.io . Consultado el 9 de enero de 2024 .
- ↑ "GH-113464: Un compilador JIT de copiar y parchear por brandtbucher · Solicitud de extracción n.° 113465 · python/cpython" . GitHub . Consultado el 9 de enero de 2024 .
- ↑ Kocourek, Matěj; Křikava, Filip; Vitek, Jan (2025-10-09). "Compilador Just-in-Time de Copia y Parche para R" . VMIL '25: Actas del 17.º Taller Internacional ACM SIGPLAN sobre Máquinas Virtuales y Lenguajes Intermedios . ACM: 12–21 . doi : 10.1145/3759548.3763370 . ISBN 979-8-4007-2164-9.
- Construcción de compiladores