PyOxidizer koristi Rust za izradu izvršnih datoteka Pythona

Novi projekt, napisan na Rustu, želi olakšati pakiranje i distribuciju Python aplikacije kao samostalne binarne izvršne datoteke - nešto što je Pythonovim programerima već dugo bilo teško.

PyOxidizer je, prema svom GitHub README-u, "zbirka sanduka s hrđom koja olakšava izgradnju knjižnica i binarnih datoteka koje sadrže Python tumače." Pomoću PyOxidizer-a, tvrde njegovi programeri, moguće je izgraditi izvršnu datoteku za aplikaciju Python koja ugrađuje Python interpreter, bez ikakvih drugih runtime ovisnosti.

PyOxidizer zahtijeva instalaciju Rust 1.31 ili bolje i pakira samo aplikacije napisane na Pythonu 3.7. Da bi koristio PyOxidizer, programer stvara TOML datoteku koja opisuje kako se ugrađuje zadana aplikacija Python, a zatim gradi i pokreće PyOxidizer s varijablom okruženja koja pokazuje na tu TOML datoteku.

PyOxidizer se izdvaja od ostalih rješenja za pakiranje korištenjem prilagođene verzije interpretatora Python koji je dizajniran da bude statički povezan i ugrađen u drugi program. Druga rješenja, poput PyInstaller, redistribuiraju postojeće zalihe CPython .DLL - prikladno i kompatibilno, ali ne baš fleksibilno. PyOxidizer također spakira bajtkod za aplikaciju Python u izvršnu sliku i učitava ga izravno iz memorije (brzo), a ne iz datotečnog sustava (sporije).

Kao i PyInstaller, i PyOxidizer ne vrši nikakve optimizacije na Python kodu. Drugi projekt, Nuitka, ne samo da kompajlira Python aplikacije za samostalne izvršne datoteke, već također pokušava primijeniti optimizaciju izvedbe na kompilirani kôd. Međutim, Nuitka se još uvijek smatra projektom na beta razini, a mnoga od predviđenih poboljšanja performansi još nisu dostupna.

PyOxidizer je još uvijek projekt u vrlo ranoj fazi. Može generirati samo Linux binarne datoteke, jer je jedan od uzlaznih projekata o kojima ovisi, ugradiva verzija CPythona, trenutno dostupan samo u Linuxovim zgradama.