Programování

Překladač Python-to-C ++ slibuje rychlejší provedení

Čím je jazyk populárnější, tím pestřejší je jeho implementace. Python je klasickým příkladem, přičemž většina náhrad za jeho výchozího tlumočníka je napsána tak, aby urychlila provádění jazyka. Mezi nejnovější a nejzajímavější patří Nuika.

Nuika (otevřený zdroj na GitHubu) kompiluje Python do C ++ kódu, který pak může být spuštěn na místě nebo zabalen jako samostatný soubor pro redistribuci. Na rozdíl od jiných nahrazení stávajících interpretů Pythonu požaduje plnou kompatibilitu se všemi jazykovými konstrukcemi v Pythonu 2.6, 2.7, 3.2 a 3.3.

Podle vedoucí projektu Kay Hayen již byl první milník Nuitky - parita funkce s jazykem - splněn. Hayen představila diskusi o Nuitce zpět na konferenci EuroPython 2012 a práce začaly vážně (na základě historie spáchání GitHub) koncem téhož roku.

Aby Nuitka fungovala, vyžaduje jak aktuální verzi interpretu Pythonu (větev 2.x nebo 3.x), tak kompilátor C ++. Microsoft Visual Studio, MinGW a Clang / LLVM jsou všechny podporovány pro druhé v 32- a 64bitových edicích. Křížová kompilace - řekněme z Linuxu na Windows nebo naopak - však není podporována a kompilace 64bitového spustitelného souboru ve Windows vyžaduje kompilátor Microsoftu.

Další nevýhodou je vytvoření samostatných spustitelných souborů. Za tímto účelem Nuitka zahrnuje redistribuovatelné soubory CPython (ve Windows kolekce DLL a dalších podpůrných souborů) se spustitelným souborem. Samostatné programy proto přicházejí se slušným množstvím režie: Jednoduchý skript příkazového řádku „Hello, world“ pro Python 2.7 vytváří 2,6 MB 32bitový spustitelný soubor Windows spolu s 7,4 MB podpůrných souborů. (Verze stejného programu s grafickým uživatelským rozhraním vážila u spustitelného souboru 10 MB, celkem 20 MB.)

To, čeho může Nuitka již dosáhnout, je přesto působivé a Hayenovy plány do budoucna jsou ambiciózní. Dalším krokem je zefektivnění kódu generovaného Nuitkou, včetně lepšího zpracování typů proměnných a optimalizace toku řízení. Dále jsou na mapě ještě sofistikovanější a hodnotnější funkce, jako je rozhraní Nuitka přímo s kódem C použitým v Pythonu prostřednictvím systému cizích funkcí jazyka ctypes.

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