Lanzamiento de Nuitka 2.0, un compilador para el lenguaje Python

Está disponible una versión del proyecto Nuitka 2.0, que desarrolla un compilador para traducir scripts de Python a una representación C, que luego se puede compilar en un archivo ejecutable usando libpython para una máxima compatibilidad con CPython (usando herramientas nativas de CPython para manipular objetos). Proporcionó compatibilidad total con las versiones actuales de Python 2.6, 2.7, 3.3 - 3.11. En comparación con CPython, los scripts compilados muestran una mejora del rendimiento del 335 % en las pruebas de Pystone. El código del proyecto se distribuye bajo la licencia de Apache.

Entre los cambios de la nueva versión:

  • Se agregó la capacidad de usar variables en la configuración del paquete, lo que le permite consultar valores de los paquetes instalados en el momento de la compilación y usar esos valores para definir el backend. La compatibilidad con variables en la configuración le permite resolver muchas tareas de forma estándar que antes requerían la conexión de complementos.
  • Se agregó soporte para parámetros definidos por el usuario para influir en la configuración de cada paquete. Los parámetros se pueden leer usando la nueva función get_parameter y usarse para seleccionar el comportamiento de los módulos (por ejemplo, puede configurar un parámetro para deshabilitar Numba JIT o Torch JIT).
  • Se agregó la opción "--include-onefile-external-data" para especificar plantillas de archivos de datos que se definen en la configuración pero que deben proporcionarse por separado del archivo ejecutable cuando se compila en modo onefile.
  • Se agregó la opción “--cf-protection” para configurar el modo de protección CFI (Integridad de flujo de control) en GCC, que bloquea las violaciones del orden de ejecución normal (flujo de control).
  • Para los archivos yaml del complemento, se implementó la capacidad de crear sumas de verificación para verificaciones de integridad, que en el futuro planean usar para organizar la verificación en tiempo de ejecución.
  • Acciones permite especificar múltiples opciones, separadas por líneas (se utiliza una nueva línea como delimitador). Por ejemplo: incluir-datos-dir: | a=bc=d
  • Se ha implementado un análisis de tipos de bucles, que se utilizará en el futuro para implementar optimizaciones selectivas.
  • Se agregaron optimizaciones para acelerar el trabajo con variables no compartidas y de escape.
  • Se han ampliado las capacidades del complemento anti-bloat, que ahora se puede utilizar para reducir la cantidad de paquetes cuando se utilizan las bibliotecas streamlit, torch, knetworkx, distribuido, skimage, bitsandbytes, tf_keras, pip, networkx y pywt (básicamente, vinculante a pytest, IPython, nose, triton y dask).

Fuente: opennet.ru

Añadir un comentario