Se agrega un compilador JIT a Python 3.13
- Brandt Bucher, desarrollador principal de CPython, presentó un pull request para agregar un compilador JIT a la rama de Python 3.13.
- Este cambio será una de las transformaciones más grandes del intérprete de CPython desde el intérprete adaptativo especializado añadido en Python 3.11.
¿Qué es JIT?
- La compilación JIT (Just in Time) se refiere a un diseño en el que la compilación ocurre cuando el código se ejecuta por primera vez.
- Un compilador JIT es un compilador que genera código máquina, en contraste con un compilador AOT (Ahead of Time).
- El código de Python primero se compila a bytecode, y ese bytecode no significa nada para la CPU por sí mismo, sino que se ejecuta mediante un bucle especial de intérprete de bytecode.
¿Qué es copy-and-patch JIT?
- copy-and-patch JIT es un concepto propuesto en 2021, diseñado como un algoritmo rápido para runtimes de lenguajes dinámicos.
- copy-and-patch JIT se basa en la idea de copiar las instrucciones de cada operación y rellenar (parchear) los argumentos del bytecode.
Ventajas y desventajas de copy-and-patch JIT
- Mientras que un compilador JIT “completo” compila bytecode de alto nivel a instrucciones de bajo nivel en un lenguaje intermedio (IL), copy-and-patch JIT realiza la compilación de bytecode a código máquina mediante un conjunto de plantillas.
- copy-and-patch JIT no necesita ejecutar una arquitectura compleja de compilador JIT dentro del runtime de Python; basta con instalar las herramientas JIT de LLVM en la máquina donde se compila CPython desde el código fuente.
¿Cómo funciona este JIT?
- Se amplía una API recién agregada a Python 3.13 para permitir que optimizadores conectables puedan descubrirse en tiempo de ejecución.
- El nuevo JIT es un optimizador opcional para esta nueva arquitectura.
- Al compilar CPython desde el código fuente, si se proporciona la bandera
--enable-experimental-jit, se generan plantillas de código máquina para el bytecode de Python.
¿Este JIT es más rápido?
- Los benchmarks iniciales muestran mejoras de rendimiento de alrededor de 2-9%.
- Este JIT es la piedra angular de una serie de optimizaciones que pueden mejorar significativamente el rendimiento de Python.
Opinión de GN⁺
- El compilador JIT añadido a Python 3.13 es un cambio importante para mejorar la velocidad de ejecución de Python, especialmente al aumentar la eficiencia en tareas repetitivas.
- copy-and-patch JIT ofrece un enfoque innovador para mejorar el rendimiento sin necesidad de integrar una arquitectura JIT compleja en el runtime de Python del usuario.
- Se espera que esta tecnología genere debates interesantes en la comunidad de Python y abra nuevas puertas para la optimización del rendimiento de Python.
1 comentarios
Opiniones de Hacker News