Il compilatore da Python a C ++ promette un'esecuzione più rapida

Più popolare è la lingua, più varie sono le sue implementazioni. Python è un classico esempio, con la maggior parte delle sostituzioni per il suo interprete predefinito scritto per velocizzare l'esecuzione del linguaggio. Tra le ultime e più intriganti c'è Nuika.

Nuika (open source su GitHub) compila codice da Python a C ++, che può quindi essere eseguito sul posto o confezionato come file autonomo per la ridistribuzione. A differenza di altre sostituzioni per gli interpreti Python esistenti, rivendica la piena compatibilità con tutti i costrutti del linguaggio in Python 2.6, 2.7, 3.2 e 3.3.

Secondo la guida del progetto, Kay Hayen, la prima pietra miliare di Nuitka - la parità di funzionalità con la lingua - è già stata raggiunta. Hayen ha presentato una discussione su Nuitka alla conferenza EuroPython 2012 e il lavoro è iniziato sul serio (basato sulla cronologia dei commit di GitHub) intorno alla fine di quell'anno.

Per far funzionare la sua magia, Nuitka richiede sia una versione corrente dell'interprete Python (ramo 2.xo 3.x) sia un compilatore C ++. Microsoft Visual Studio, MinGW e Clang / LLVM sono tutti supportati per quest'ultimo, in entrambe le edizioni a 32 e 64 bit. Tuttavia, la compilazione incrociata, ad esempio da Linux a Windows o viceversa, non è supportata e la compilazione di un eseguibile a 64 bit su Windows richiede il compilatore di Microsoft.

Un altro svantaggio è la creazione di eseguibili autonomi. Per fare ciò, Nuitka include i ridistribuibili di CPython (in Windows, una raccolta di DLL e altri file di supporto) con l'eseguibile. Di conseguenza, i programmi autonomi comportano un discreto sovraccarico: un semplice script della riga di comando "Hello, world" per Python 2.7 produce un eseguibile Windows a 32 bit da 2,6 MB, insieme a 7,4 MB di file di supporto. (Una versione GUI dello stesso programma pesava 10 MB per l'eseguibile, 20 MB in totale.)

Tuttavia, ciò che Nuitka può già realizzare è impressionante, ei piani di Hayen per il suo futuro sono ambiziosi. I passaggi successivi sono rendere il codice generato da Nuitka più efficiente, inclusa una migliore gestione dei tipi di variabili e ottimizzazioni per il flusso di controllo. Più avanti sulla road map ci sono funzionalità ancora più sofisticate e preziose, come avere l'interfaccia Nuitka direttamente con il codice C utilizzato in Python tramite il sistema di funzioni straniere ctypes del linguaggio.