El compilador Nuitka Python-to-C prepara grandes ganancias de rendimiento

Nuitka, un compilador que transforma Python en C por el bien de las ganancias de rendimiento y un tiempo de ejecución más portátil, ha alcanzado su versión 0.6, un hito que sienta las bases para futuras ganancias de rendimiento. Como dijo el desarrollador de Nuitka, Kay Hayen, "es probable que se produzcan mejoras de rendimiento en cada lanzamiento próximo".

Nuitka 0.6 aplica optimizaciones a los booltipos de Python ( true/false), de modo que el código que los usa se puede reducir al código C más eficiente posible. Las booloptimizaciones son el preludio de optimizaciones similares para otros tipos de variables.

Nuitka, como Cython, compila un programa Python en C y vincula el ejecutable resultante con el tiempo de ejecución de Python para una máxima compatibilidad. Las versiones de Python 2.6, 2.7 y 3.3 a 3.7 son compatibles, incluidas construcciones como async.

Los programas de Python compilados con Nuitka pueden beneficiarse de grandes aumentos de rendimiento. Hayen afirma que una versión compilada por Nuitka del punto de referencia de Pystone se ejecuta un 312 por ciento más rápido que una implementación de CPython convencional.

Pero Hayen advierte que las mejoras de rendimiento más significativas aguardan la llegada de la inferencia de tipos en Nuitka, lo que permite la traducción completa de ciertos tipos de objetos de Python a versiones nativas de C.

El dinamismo de Python hace que muchos tipos de optimizaciones sean inherentemente difíciles. Muchas optimizaciones de Cython requieren mucha orientación y una sintaxis de anotación especializada para obtener los mejores resultados. El proyecto Nuitka tiene como objetivo proporcionar el mismo tipo de optimizaciones sin necesidad de que el desarrollador anote el código.

Otro acelerador de Python de uso común, PyPy, funciona compilando justo a tiempo el código de Python para ensamblar. Pero PyPy funciona mejor para la optimización local; no es adecuado para compilar una aplicación Python que se implementa de forma independiente. Nuitka genera ejecutables independientes. Uno de sus posibles casos de uso es empaquetar una aplicación Python para distribución de terceros.

Otras mejoras en Nuitka 0.6 incluyen soporte en Windows para los compiladores Clang, Microsoft Visual C ++ y Cygwin, almacenamiento en caché de archivos de objetos para una recompilación más rápida (nuevamente, en Windows) y formateo automático del código C generado  clang-formatpara mayor legibilidad.