Desde Linux David Naranjo  

Pyston 2 una implementación de Python con un compilador JIT

Después de una pausa de tres años en el desarrollo, se ha publicado el lanzamiento del proyecto Pyston 2, que desarrolla una implementación de alto rendimiento del lenguaje Python utilizando los desarrollos del proyecto LLVM.

La implementación se destaca por el uso de tecnologías de compilación JIT modernas y tiene como objetivo lograr un alto rendimiento similar al de los lenguajes de sistema tradicionales como C ++.

El código de versiones anteriores de Pyston se distribuyó bajo la licencia de Apache, pero el código de Pyston 2 aún no está disponible y solo se publican compilaciones listas para usar para Ubuntu 18.04 y 20.04 (un archivo con el código está disponible para descargar pero solo hay un código auxiliar con información de que el proyecto aún está cerrado).

Publicar el código es parte de los planes de los desarrolladores, pero esto se hará después de que se haya completado la formación del modelo de negocio de la nueva empresa y se haya decidido seguir desarrollando Pyston sin el apoyo financiero de Dropbox.

Sobre Pyston 2

A diferencia de las versiones anteriores, Pyston 2 está marcado como estable y no como versión de prueba. Se ha trabajado mucho para optimizar el rendimiento y Pyston 2 ahora es más rápido que el original Python 3.8 en aproximadamente un 20% al aprobar el conjunto de pruebas python-macrobenchmarks.

Las ganancias de rendimiento más notables se observan en las cargas de trabajo inherentes a las aplicaciones web. En pruebas separadas como chaos.py y nbody.py, Pyston 2 supera a Python 3.8 por un factor de 2. El costo de usar JIT es un ligero aumento en el consumo de memoria.

Estamos muy emocionados de lanzar Pyston v2, una implementación más rápida y altamente compatible del lenguaje de programación Python. La versión 2 es un 20% más rápida que la Python 3.8 estándar en nuestros macrobenchmarks. Más importante aún, es probable que sea más rápido en su código. Pyston v2 puede reducir los costos del servidor, reducir las latencias de los usuarios y mejorar la productividad del desarrollador.

Pyston v2 es fácil de implementar, por lo que si está buscando un mejor rendimiento de Python, le recomendamos que se tome cinco minutos y pruebe Pyston . Hacerlo es una de las formas más fáciles de acelerar su proyecto.

En términos de compatibilidad con Python nativo, el proyecto Pyston se promociona como la implementación alternativa más compatible con CPython, ya que Pyston es una bifurcación del código base principal de CPython.

Pyston admite todas las funciones de CPython, incluida la API C para desarrollar extensiones C. Pyston fue desarrollado originalmente por Dropbox, que en 2017 decidió interrumpir el desarrollo interno. A principios de 2020, los principales desarrolladores de Pyston fundaron su empresa, reinventaron por completo el proyecto y comenzaron a trabajar en Pyston a tiempo completo.

Aún no se proporcionan detalles técnicos sobre el relleno de Pyston 2, solo se mencionan DynASM JIT, almacenamiento en caché en línea y optimizaciones generales de CPython. La versión anterior de Pyston usaba un JIT de método a la vez, similar al JIT de los motores JavaScript modernos.

En JIT, el código de Python se analizó y se tradujo a una representación intermedia LLVM (IR, Representación intermedia). Además, la representación IR se procesó en el optimizador LLVM y se pasó para su ejecución al motor LLVM JIT, que convirtió la representación IR en código de máquina.

Para obtener información sobre los tipos de variables para programas en el lenguaje dinámico Python, se utilizó la técnica de predicción probabilística de tipos de objetos, seguida de la aclaración de la correcta elección del tipo durante la ejecución.

Por lo tanto, Pyston varió constantemente la ejecución entre dos ramas: la rápida, cuando se confirman los tipos predichos, y la lenta, que se utiliza en caso de una discrepancia de tipos.

El trabajo podría realizarse en modo multiproceso, permitiendo la ejecución en paralelo de varios hilos de código en el lenguaje Python y libre del bloqueo global del intérprete (GIL, global interpreter lock).

Finalmente si quieres conocer mas al respecto, puedes consultar los detalles en el siguiente enlace.

Leave A Comment

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.