Los desarrolladores del proyecto Pyston, que ofrece una implementación de alto rendimiento del lenguaje Python utilizando tecnologías modernas de compilación JIT, han presentado la extensión Pyston-lite con la implementación de un compilador JIT para CPython. Mientras que Pyston es un fork de la base de código de CPython y se desarrolla de forma independiente, Pyston-lite se presenta como una extensión universal destinada a conectarse al intérprete de Python estándar (CPython).
Pyston-lite permite utilizar las tecnologías básicas de Pyston sin reemplazar el intérprete, a través de la instalación de una extensión adicional con el gestor de paquetes PIP o Conda. Pyston-lite ya está disponible en los repositorios de PyPI y Conda, y para su instalación basta con ejecutar el comando «pip install pyston_lite_autoload» o «conda install pyston_lite_autoload -c pyston». Se han propuesto dos paquetes: pyston_lite (JIT propiamente dicho) y pyston_lite_autoload (que realiza la sustitución automática de JIT al iniciar el proceso de Python). También es posible controlar programáticamente la activación de JIT desde la aplicación sin instalar el módulo autoload, utilizando la función pyston_lite.enable().
Aunque Pyston-lite no abarca todas las optimizaciones disponibles en Pyston, su uso permite aumentar el rendimiento entre un 10% y un 25% en comparación con el Python 3.8 estándar. En el futuro, se planea transferir a Pyston-lite la mayoría de las optimizaciones presentes en Pyston, así como ampliar las versiones de CPython compatibles (la primera versión solo es compatible con Python 3.8). Entre los planes más ambiciosos se destaca la colaboración con el equipo de CPython para implementar nuevas API para JIT, que permitirán un control más completo del funcionamiento de Python. Se discute la inclusión de los cambios propuestos en la rama de Python 3.12. En ideal, se considera la posibilidad de trasladar toda la funcionalidad de Pyston a la extensión, lo que evitaría la necesidad de mantener un fork propio de CPython.
Además de Pyston-lite, el proyecto también ha lanzado una actualización del paquete completo Pyston 2.3.4, que ofrece nuevas optimizaciones. En la prueba pyperformance, la versión 2.3.4 es aproximadamente un 6% más rápida que la versión 2.3.3. La mejora total en rendimiento en comparación con CPython se estima en un 66%.
También se pueden destacar las optimizaciones desarrolladas en el ciclo de desarrollo de CPython 3.11 en el proyecto principal, que en algunas pruebas permitieron aumentar el rendimiento en un 25%. Por ejemplo, en CPython 3.11 se ha mejorado la eficiencia del almacenamiento en caché del estado de bytecode de los módulos base, lo que acelerará el inicio de los scripts en un 10-15%. Se ha acelerado significativamente la llamada a funciones y se han añadido intérpretes rápidos especializados para operaciones típicas. También se está trabajando en la migración de algunas optimizaciones preparadas por los proyectos Cinder y HotPy.
Además, en el marco del proyecto nogil, se está trabajando en un modo experimental de construcción de CPython sin el bloqueo global del intérprete (GIL, Global Interpreter Lock), que no permite el acceso paralelo a objetos compartidos desde diferentes hilos, lo que obstaculiza la paralelización de operaciones en sistemas multinúcleo. Como otra opción para resolver el problema del GIL, se está desarrollando la posibilidad de vincular un GIL separado a cada intérprete que se ejecute dentro de un proceso (en un proceso se pueden ejecutar varios intérpretes, pero la eficiencia de su ejecución paralela depende del GIL).
Fuente: opennet.ru
