BookinglyTech News
Software

PyPy 8.0 llega con soporte beta de Python 3.12 y deja atrás su backend HPy

El intérprete alternativo salta a la 8.0 con Python 3.12 en calidad beta, mejoras en la generación de código RPython y la retirada de HPy como backend interno.

2 min de lecturaAlternativeTo0 vistas

El equipo de PyPy ha publicado la versión 8.0, la primera que da soporte a Python 3.12, eso sí, en calidad beta. La distribución mantiene además las ramas de Python 2.7 y 3.11, así que quien arrastre código antiguo sigue teniendo a dónde agarrarse. El salto de 7.x a 8.0 no es cosmético: responde a cambios de arquitectura que se han ido acumulando durante el ciclo de desarrollo, y el propio equipo avisa de que la implementación de 3.12 puede arrastrar errores al ser la primera entrega.

Qué cambia por dentro

El movimiento más llamativo es la retirada de HPy como backend interno. Se trata de un enfoque basado en handles que nunca llegó a cuajar en la comunidad de Python como estándar, y el proyecto lo ha desactivado por defecto. El código sigue en el árbol y se puede activar con un toggle de compilación, pero ya no es la apuesta por defecto. El proyecto HPy continúa existiendo por su cuenta.

En el frente del compilador, hay mejoras en la generación de código RPython: gotos calculados e inlining más agresivo para aligerar la ejecución del intérprete base. Las ganancias de rendimiento son modestas, según el equipo, pero han añadido anotaciones en el código fuente que mapean el C generado con las fuentes RPython originales, algo que debería facilitar el trabajo de optimización a futuro. Ahí tienes la documentación de RPython si quieres mirar esa capa.

También han revivido pyhdrdump, una utilidad basada en clang que compara las cabeceras de PyPy con las de CPython. Sirve para detectar desviaciones de compatibilidad antes de que se conviertan en un problema para quien porta extensiones.

Plataformas y quién empaqueta

PyPy mantiene su ambición multiplataforma: desde Windows de 32 bits y Linux sobre ARM hasta arquitecturas menos habituales como RISC-V RV64IMAFD o s390x. El problema es que los binarios oficiales son limitados y buena parte de la cobertura real la ponen los empaquetadores downstream: Debian, Fedora, Conda y varias distribuciones BSD y Linux. El proyecto sigue buscando patrocinio para publicar binarios en más plataformas, y acepta contribuciones en corrección de errores, documentación y mejoras del JIT.

Para quien tenga código que dependa de características recientes de Python y quiera aprovechar la compilación JIT de PyPy, la beta de 3.12 ya se puede probar. El equipo pide feedback, que en una implementación nueva es donde aparecen los casos raros. La duda razonable es cuánto tarda esa beta en considerarse estable: el salto a 8.0 con 3.12 a medio camino deja claro que la prioridad era no quedarse atrás respecto a CPython.