Programiranje

Prevajalnik Python v C ++ obljublja hitrejše izvajanje

Bolj kot je jezik priljubljen, bolj raznolike so njegove izvedbe. Python je klasičen primer, saj je večina zamenjav za privzeti tolmač napisana za pospešitev izvajanja jezika. Med najnovejšimi in najbolj zanimivimi je Nuika.

Nuika (odprta koda na GitHub) prevede kodo Python v C ++, ki jo je nato mogoče namestiti ali pakirati kot samostojno datoteko za prerazporeditev. V nasprotju z nekaterimi drugimi zamenjavami obstoječih tolmačev Python trdi, da je popolnoma združljiv z vsemi jezikovnimi konstrukcijami v Pythonu 2.6, 2.7, 3.2 in 3.3.

Po mnenju vodje projekta je bila Kay Hayen, prvi mejnik Nuitke - enakovrednost jezika, - že izpolnjena. Hayen je na konferenci EuroPython 2012 predstavil razpravo o Nuitki in delo je začelo resno (na podlagi zgodovine zavez GitHub) okoli konca tega leta.

Nuitka potrebuje trenutno čarovniško različico tolmača Python (veja 2.x ali 3.x) in prevajalnik C ++, da deluje čarobno. Microsoft Visual Studio, MinGW in Clang / LLVM so vsi podprti v 32- in 64-bitni izdaji. Vendar navzkrižno prevajanje - recimo iz Linuxa v Windows ali obratno - ni podprto, za sestavljanje 64-bitne izvedljive datoteke v sistemu Windows pa je potreben Microsoftov prevajalnik.

Druga pomanjkljivost je ustvarjanje samostojnih izvršljivih datotek. V ta namen Nuitka vključuje izvršljive datoteke, ki jih je mogoče distribuirati CPython (v sistemu Windows zbirko DLL in druge podporne datoteke). Zato imajo samostojni programi precejšnje režijske stroške: preprost skript ukazne vrstice »Hello, world« za Python 2.7 ustvari 32-bitno 32-bitno Windows izvršljivo datoteko skupaj s 7,4 MB datotek za podporo. (Različica GUI istega programa je tehtala 10 MB za izvedljivo datoteko, skupaj 20 MB.)

Kljub temu je tisto, kar Nuitka že lahko doseže, impresivno in Hayenovi načrti za njeno prihodnost so ambiciozni. Naslednji koraki so izboljšanje učinkovitosti kode, ki jo ustvari Nuitka, vključno z boljšim ravnanjem s spremenljivkami in optimizacijami za nadzorni tok. Poleg tega so na načrtu še bolj dovršene in dragocene funkcije, kot je na primer vmesnik Nuitka neposredno s kodo C, ki se uporablja v Pythonu prek jezikovnega sistema tujih funkcij ctypes.

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