Programmering

Python-to-C ++ kompilator lover raskere utførelse

Jo mer populært språket er, desto mer varierte implementeringer. Python er et klassisk eksempel, med de fleste erstatningene for sin standardtolk skrevet for å øke hastigheten på utførelsen av språket. Blant de siste og mest spennende er Nuika.

Nuika (åpen kildekode på GitHub) kompilerer Python til C ++ - kode, som deretter kan kjøres på stedet eller pakkes opp som en frittstående fil for omfordeling. I motsetning til noen andre erstatninger for eksisterende Python-tolker, hevder den full kompatibilitet med alle språkkonstruksjonene i Python 2.6, 2.7, 3.2 og 3.3.

I følge prosjektets ledelse er Kay Hayen, Nuitkas første milepæl - paritet med språket - allerede oppfylt. Hayen presenterte en diskusjon om Nuitka tilbake på EuroPython 2012-konferansen, og arbeidet startet for alvor (basert på GitHub-forpliktelseshistorikken) rundt slutten av året.

For å utføre sin magi krever Nuitka både en nåværende versjon av Python-tolken (2.x eller 3.x gren) og en C ++ kompilator. Microsoft Visual Studio, MinGW og Clang / LLVM støttes alle for sistnevnte, i både 32- og 64-biters utgaver. Imidlertid støttes ikke kryss-kompilering - for eksempel fra Linux til Windows eller omvendt - og kompilering av en 64-biters kjørbar på Windows krever Microsofts kompilator.

En annen ulempe er etableringen av frittstående kjørbare filer. For å gjøre dette inkluderer Nuitka CPythons videredistribuerbare filer (i Windows, en samling av DLL-er og andre støttefiler) med den kjørbare filen. Følgelig kommer frittstående programmer med ganske mye overhead: Et enkelt "Hello, world" kommandolinjeskript for Python 2.7 produserer en 2,6 MB 32-bit Windows-kjørbar, sammen med 7,4 MB støttefiler. (En GUI-versjon av det samme programmet veide inn til 10 MB for den kjørbare, totalt 20 MB.)

Likevel er det Nuitka allerede kan oppnå imponerende, og Hayens planer for fremtiden er ambisiøse. De neste trinnene er å gjøre koden generert av Nuitka mer effektiv, inkludert bedre håndtering av variable typer og optimaliseringer for kontrollflyt. Lenger ut på veikartet er enda mer sofistikerte og verdifulle funksjoner, for eksempel å ha Nuitka-grensesnitt direkte med C-kode som brukes i Python via språkets ctypes fremmedfunksjonssystem.

$config[zx-auto] not found$config[zx-overlay] not found