Programmēšana

Kompilators Python-to-C ++ sola ātrāku izpildi

Jo populārāka valoda, jo daudzveidīgāka ir tās ieviešana. Python ir klasisks piemērs, ar lielāko daļu noklusējuma tulka aizstājēju, kas rakstīts, lai paātrinātu valodas izpildi. Starp jaunākajiem un intriģējošākajiem ir Nuika.

Nuika (atvērtais avots vietnē GitHub) apkopo Python uz C ++ kodu, kuru pēc tam var izpildīt vietā vai iesaiņot kā atsevišķu failu pārdalīšanai. Atšķirībā no dažiem citiem esošo Python tulku aizstājējiem, tā apgalvo pilnīgu savietojamību ar visām valodas konstrukcijām Python 2.6, 2.7, 3.2 un 3.3.

Saskaņā ar projekta vadību Kay Hayen, Nuitka pirmais pagrieziena punkts - iezīmju paritāte ar valodu - jau ir izpildīts. Heivens prezentēja Nuitkas diskusiju EuroPython 2012 konferencē, un darbs nopietni (pamatojoties uz GitHub saistību vēsturi) tika uzsākts aptuveni tā gada beigās.

Lai strādātu ar savu burvību, Nuitkai nepieciešama gan pašreizējā Python tulka versija (filiāle 2.x vai 3.x), gan kompilators C ++. Pēdējie tiek atbalstīti gan Microsoft Visual Studio, gan MinGW, gan Clang / LLVM gan 32, gan 64 bitu izdevumos. Tomēr savstarpēja kompilācija - teiksim, no Linux uz Windows vai otrādi - netiek atbalstīta, un 64 bitu izpildāmā faila sastādīšanai sistēmā Windows ir nepieciešams kompilators.

Vēl viens trūkums ir atsevišķu izpildāmo failu izveidošana. Lai to izdarītu, Nuitka ar izpildāmo failu iekļauj CPython atkārtoti izplatāmos failus (sistēmā Windows - DLL un citu atbalsta failu kolekcija). Līdz ar to atsevišķām programmām ir diezgan daudz pieskaitāmo izmēru: vienkāršs komandrindas skripts "Hello, world" Python 2.7 rada 2,6 MB 32 bitu Windows izpildāmo failu kopā ar 7,4 MB atbalsta failiem. (Tās pašas programmas GUI versija izpildāmajam failam svēra 10 MB, kopā 20 MB.)

Tomēr tas, ko Nuitka jau var paveikt, ir iespaidīgs, un Hejena nākotnes plāni ir vērienīgi. Nākamās darbības ir padarīt Nuitka ģenerēto kodu efektīvāku, ieskaitot labāku mainīgo tipu apstrādi un vadības plūsmas optimizāciju. Ceļa kartē ir vēl sarežģītākas un vērtīgākas funkcijas, piemēram, Nuitka saskarne ir tieši ar C kodu, ko izmanto Python, izmantojot valodas ārējo funkciju sistēmu ctypes.

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