1 puntos por GN⁺ 2026-03-18 | Aún no hay comentarios. | Compartir por WhatsApp
  • El compilador JIT de CPython logró un rendimiento 11~12% más rápido en macOS AArch64 y 5~6% en Linux x86_64, alcanzando su objetivo antes de lo previsto
  • En las versiones 3.13~3.14, el JIT era más lento que el intérprete, pero el desarrollo centrado en la comunidad y las mejoras estructurales elevaron significativamente el rendimiento
  • Intentos experimentales como trace recording y reference count elimination fueron puntos de inflexión clave
  • Colaboraron contribuyentes clave como Savannah Ostrowski, Mark Shannon, Diego Russo y Brandt Bucher, junto con muchos nuevos participantes
  • Este resultado muestra que el desarrollo impulsado por la comunidad y una cultura de colaboración pueden generar efectos reales en la mejora de rendimiento del software de código abierto

Estado de las mejoras de rendimiento del JIT de CPython

  • Se registró un rendimiento 11~12% más rápido en macOS AArch64 y 5~6% en Linux x86_64
    • Las mediciones se basan en media geométrica, y en algunos benchmarks la variación va desde 20% más lento hasta más de 100% más rápido
    • El soporte para free-threading todavía no está completo, con objetivo para las versiones 3.15/3.16
  • El JIT de las versiones 3.13~3.14 era más lento que el intérprete, pero en esta versión logró una mejora de velocidad significativa

Desarrollo del JIT centrado en la comunidad

  • Tras el fin del patrocinio principal del equipo Faster CPython en 2025, se pasó a un modelo de desarrollo liderado por la comunidad
    • Objetivos: mejora de 5% en 3.15, mejora de 10% en 3.16 y soporte para free-threading
    • Para reducir el bus factor, se aseguró contar con al menos dos mantenedores en cada etapa (frontend, middle-end y backend)
  • Se dividieron problemas complejos en partes más pequeñas para fomentar la participación de nuevos contribuyentes
    • Brandt Bucher separó las unidades de trabajo mediante “mega-issues”
    • 11 contribuidores transformaron instrucciones del intérprete para que fueran más favorables a la optimización JIT
  • Una cultura de incentivo a las contribuciones y de compartir los logros ayudó a sostener la participación
    • Como resultado, el rendimiento en Linux x86_64 mejoró de 1% a 3~4%

Principales puntos de inflexión técnicos

Trace recording

  • En el core sprint de CPython se hizo la transición a un frontend basado en tracing
    • Al principio era 6% más lento, pero el rendimiento mejoró con la introducción de una estructura de dual dispatch
    • Se mantuvo la velocidad del intérprete base minimizando al mismo tiempo el aumento en el tamaño del intérprete
  • La introducción de trace recording aumentó en 50% la cobertura de código JIT, mejorando después la eficiencia de optimización

Reference count elimination

  • Inspirado en el trabajo de optimización de bytecode de Matt Page
    • Mejoró el rendimiento al eliminar las ramas (branches) que aparecen al disminuir el conteo de referencias
    • Se confirmó que incluso eliminar una sola rama reduce el costo acumulado
  • Es fácil de paralelizar y se usó para formar a nuevos contribuyentes como tarea de aprendizaje de la estructura del JIT

Infraestructura y composición del equipo

  • Savannah Ostrowski opera una infraestructura de medición de rendimiento del JIT con 4 máquinas
    • Los resultados diarios de ejecución del JIT permiten detectar temprano regresiones de rendimiento
  • Diego Russo estuvo a cargo de mejorar el JIT para hardware ARM y la compatibilidad con perfiles/profilers
  • Brandt Bucher construyó la base del backend de código máquina, reduciendo la barrera de entrada para nuevos contribuidores

Colaboración e intercambio de conocimiento

  • Los consejos de CF Bolz-Tereick sobre PyPy ayudaron a mejorar la comprensión del diseño del JIT
  • El intercambio con expertos en compiladores como Max Bernstein aportó motivación continua y crecimiento técnico
  • La experiencia analizando el código de PyPy contribuyó a mejorar la calidad del JIT de CPython

Conclusión

  • El JIT de Python 3.15 es el resultado de combinar colaboración comunitaria, experimentación técnica y mejoras de infraestructura
  • Demuestra que las personas, la suerte y una cultura de colaboración son la fuerza clave detrás de la innovación en rendimiento dentro del código abierto

Aún no hay comentarios.

Aún no hay comentarios.