El compilador de Python a C ++ promete una ejecución más rápida

Cuanto más popular es el lenguaje, más variadas son sus implementaciones. Python es un ejemplo clásico, con la mayoría de los reemplazos de su intérprete predeterminado escritos para acelerar la ejecución del lenguaje. Entre las últimas e intrigantes se encuentra Nuika.

Nuika (código abierto en GitHub) compila Python a código C ++, que luego se puede ejecutar en el lugar o empaquetar como un archivo independiente para su redistribución. A diferencia de otros reemplazos de los intérpretes de Python existentes, afirma ser totalmente compatible con todas las construcciones del lenguaje en Python 2.6, 2.7, 3.2 y 3.3.

Según el líder del proyecto, Kay Hayen, el primer hito de Nuitka, la paridad de características con el idioma, ya se ha alcanzado. Hayen presentó una discusión sobre Nuitka en la conferencia EuroPython 2012 y el trabajo comenzó en serio (basado en el historial de compromisos de GitHub) a fines de ese año.

Para hacer su magia, Nuitka requiere una versión actual del intérprete de Python (rama 2.xo 3.x) y un compilador de C ++. Microsoft Visual Studio, MinGW y Clang / LLVM son compatibles con este último, tanto en ediciones de 32 como de 64 bits. Sin embargo, la compilación cruzada, por ejemplo, de Linux a Windows o viceversa, no es compatible, y la compilación de un ejecutable de 64 bits en Windows requiere el compilador de Microsoft.

Otro inconveniente es la creación de ejecutables independientes. Para hacer esto, Nuitka incluye los redistribuibles de CPython (en Windows, una colección de DLL y otros archivos de soporte) con el ejecutable. En consecuencia, los programas independientes vienen con una gran cantidad de gastos generales: un simple script de línea de comandos "Hola, mundo" para Python 2.7 produce un ejecutable de Windows de 2.6MB de 32 bits, junto con 7.4MB de archivos de soporte. (Una versión de GUI del mismo programa pesaba 10 MB para el ejecutable, 20 MB en total).

Aún así, lo que Nuitka ya puede lograr es impresionante y los planes de Hayen para su futuro son ambiciosos. Los siguientes pasos son hacer que el código generado por Nuitka sea más eficiente, incluido un mejor manejo de los tipos de variables y optimizaciones para el flujo de control. Más adelante en la hoja de ruta hay características aún más sofisticadas y valiosas, como tener una interfaz Nuitka directamente con el código C utilizado en Python a través del sistema de funciones extranjeras ctypes del lenguaje.