Pyston-lite, compilador JIT para stock Python presentado

Los desarrolladores del proyecto Pyston, que ofrece una implementación de alto rendimiento del lenguaje Python utilizando modernas tecnologías de compilación JIT, presentaron la extensión Pyston-lite con una implementación del compilador JIT para CPython. Si bien Pyston es una rama del código base CPython y se desarrolla por separado, Pyston-lite está diseñado como una extensión universal diseñada para conectarse al intérprete estándar de Python (CPython).

Pyston-lite le permite utilizar las tecnologías básicas de Pyston sin cambiar el intérprete, instalando una extensión adicional usando el administrador de paquetes PIP o Conda. Pyston-lite ya está alojado en los repositorios de PyPI y Conda y para instalarlo basta con ejecutar el comando “pip install pyston_lite_autoload” o “conda install pyston_lite_autoload -c pyston”. Se ofrecen dos paquetes: pyston_lite (directamente JIT) y pyston_lite_autoload (realiza sustitución JIT automática cuando se inicia el proceso de Python). También es posible controlar mediante programación la inclusión de JIT desde la aplicación sin instalar el módulo de carga automática, utilizando la función pyston_lite.enable().

Aunque Pyston-lite no cubre todas las optimizaciones disponibles en Pyston, su uso puede mejorar el rendimiento aproximadamente entre un 10 y un 25 % en comparación con Python 3.8 normal. En el futuro, está previsto transferir la mayoría de las optimizaciones presentes en Pyston a Pyston-lite, así como ampliar las versiones compatibles de CPython (la primera versión solo admite Python 3.8). Los planes más globales incluyen la colaboración con el equipo de CPython para implementar nuevas API para JIT, lo que permitirá un control más completo sobre el trabajo de Python. Se está discutiendo la inclusión de los cambios propuestos en la rama Python 3.12. Idealmente, se está considerando la posibilidad de mover toda la funcionalidad de Pyston a la extensión, lo que nos permitirá evitar mantener nuestra propia bifurcación de CPython.

Además de Pyston-lite, el proyecto también lanzó una actualización del paquete completo Pyston 2.3.4, que ofrece nuevas optimizaciones. En la prueba de rendimiento de py, la versión 2.3.4 es más rápida que la versión 2.3.3 en aproximadamente un 6%. La ganancia de rendimiento general en comparación con CPython se estima en un 66%.

Adicionalmente, podemos destacar las optimizaciones desarrolladas dentro del ciclo de desarrollo CPython 3.11 en el proyecto principal, que en algunas pruebas permitieron incrementar el rendimiento en un 25%. Por ejemplo, en CPython 3.11, se ha aumentado la eficiencia del almacenamiento en caché del estado del código de bytes de los módulos básicos, lo que acelerará el lanzamiento de scripts en un 10-15%. Las llamadas a funciones se han acelerado significativamente y se han agregado intérpretes rápidos especializados de operaciones estándar. También se está trabajando para portar algunas optimizaciones preparadas por los proyectos Cinder y HotPy.

Además, dentro del proyecto nogil, se está trabajando en un modo experimental para construir CPython sin un bloqueo de intérprete global (GIL, Global Interpreter Lock), que no permite el acceso paralelo a objetos compartidos desde diferentes subprocesos, lo que impide la paralelización de operaciones en múltiples -sistemas centrales. Como otra solución al problema de GIL, se está desarrollando la capacidad de vincular un GIL separado a cada intérprete que se ejecuta dentro de un proceso (se pueden ejecutar varios intérpretes en un proceso, pero la eficiencia de su ejecución paralela depende del GIL).

Fuente: opennet.ru

Añadir un comentario