Está dispoñible unha versión do proxecto Nuitka 2.0, que desenvolve un compilador para traducir scripts de Python nunha representación C, que despois pode compilarse nun ficheiro executable usando libpython para a máxima compatibilidade con CPython (usando ferramentas nativas de CPython para manipular obxectos). Compatibilidade completa coas versións actuais de Python 2.6, 2.7, 3.3 - 3.11. En comparación con CPython, os scripts compilados mostran unha mellora do rendemento do 335 % nas probas de pystone. O código do proxecto distribúese baixo a licenza Apache.
Entre os cambios na nova versión:
- Engadimos a capacidade de usar variables nas configuracións de paquetes, o que che permite consultar valores dos paquetes instalados durante a compilación e usar estes valores para determinar o backend. A compatibilidade con variables nas configuracións permíteche resolver moitos problemas que antes requirían complementos.
- Engadiuse compatibilidade con parámetros definidos polo usuario para influír na configuración de cada paquete. Os parámetros pódense ler coa nova función get_parameter e usarse para controlar o comportamento do módulo (por exemplo, pódese definir un parámetro para desactivar Numba JIT ou Torch JIT).
- Engadiuse a opción "--include-onefile-external-data" para especificar modelos para ficheiros de datos que están definidos na configuración pero que deben fornecerse por separado do ficheiro executábel ao compilar no modo onefile.
- Engadiuse a opción "--cf-protection" para configurar o modo de protección CFI (Integridade do Fluxo de Control) de GCC, que bloquea as violacións do fluxo de control.
- Implementouse a capacidade de xerar sumas de comprobación para a verificación da integridade para os ficheiros YAML do complemento, que se planea usar no futuro para a verificación en tempo de execución.
- As accións permiten especificar varias opcións, separadas por liñas (cun salto de liña como separador). Por exemplo: include-data-dir: | a=bc=d
- Implementouse unha análise de tipos de ciclos, que se empregará no futuro para implementar optimizacións selectivas.
- Engadíronse optimizacións para acelerar o traballo con variables non compartidas e con caracteres de escape.
- O complemento anti-bloat foi ampliado para reducir o número de paquetes ao usar as bibliotecas streamlit, torch, knetworkx, distributed, skimage, bitsandbytes, tf_keras, pip, networkx e pywt (eliminando principalmente as dependencias pytest, IPython, nose, triton e dask).
Fonte: opennet.ru
