Programmering

Python-til-C ++ - kompilator lover hurtigere udførelse

Jo mere populært sproget er, desto mere varieret er dets implementeringer. Python er et klassisk eksempel, hvor de fleste udskiftninger til dens standardtolk er skrevet for at fremskynde udførelsen af ​​sproget. Blandt de nyeste og mest spændende er Nuika.

Nuika (open source på GitHub) kompilerer Python til C ++ - kode, som derefter kan udføres på stedet eller pakkes op som en enkeltstående fil til omfordeling. I modsætning til nogle andre erstatninger for eksisterende Python-tolke hævder det fuld kompatibilitet med alle sprogkonstruktionerne i Python 2.6, 2.7, 3.2 og 3.3.

Ifølge projektets føring er Kay Hayen, Nuitkas første milepæl - paritet med sproget - allerede opfyldt. Hayen præsenterede en diskussion af Nuitka tilbage på EuroPython 2012-konferencen, og arbejdet startede for alvor (baseret på GitHub-begivenhedshistorien) omkring slutningen af ​​det år.

For at udøve sin magi kræver Nuitka både en aktuel version af Python-tolk (2.x eller 3.x gren) og en C ++ compiler. Microsoft Visual Studio, MinGW og Clang / LLVM understøttes alle til sidstnævnte i både 32- og 64-bit udgaver. Imidlertid understøttes krydskompilering - f.eks. Fra Linux til Windows eller omvendt - og kompilering af en 64-bit eksekverbar på Windows kræver Microsofts compiler.

En anden ulempe er oprettelsen af ​​enkeltstående eksekverbare filer. For at gøre dette inkluderer Nuitka CPythons omfordelbare dele (i Windows, en samling af DLL'er og andre supportfiler) med den eksekverbare. Derfor kommer selvstændige programmer med en hel del overhead: Et simpelt "Hello, world" kommandolinjescript til Python 2.7 producerer en 2.6MB 32-bit Windows-eksekverbar sammen med 7.4MB supportfiler. (En GUI-version af det samme program vejede ved 10 MB for den eksekverbare, 20 MB i alt.)

Det, Nuitka allerede kan opnå, er stadig imponerende, og Hayens planer for sin fremtid er ambitiøse. De næste trin er at gøre koden genereret af Nuitka mere effektiv, herunder bedre håndtering af variable typer og optimeringer til kontrolflow. Længere ude på køreplanen er endnu mere sofistikerede og værdifulde funktioner, såsom at have Nuitka-interface direkte med C-kode, der bruges i Python via sprogets ctypes fremmed-funktionssystem.