Ohjelmointi

PyOxidizer käyttää Rustia Python-suoritettavien tiedostojen tekemiseen

Uuden, Rustissa kirjoitetun projektin tarkoituksena on helpottaa Python-sovelluksen pakkaamista ja jakelua erillisenä binaarisena suoritustiedostona - mikä on jo pitkään ollut kipupiste Python-kehittäjille.

PyOxidizer on GitHub README -sivustonsa mukaan "kokoelma ruostelaatikoita, jotka helpottavat Python-tulkkien sisältävien kirjastojen ja binäärien rakentamista". PyOxidizerin avulla kehittäjät väittävät, että on mahdollista rakentaa suoritettava tiedosto Python-sovellukselle, joka upottaa Python-tulkin, ilman muita ajonaikaisia ​​riippuvuuksia.

PyOxidizer vaatii Rust 1.31: n tai uudemman asennuksen, ja pakkaa vain Python 3.7: llä kirjoitetut sovellukset. PyOxidizerin käyttöä varten kehittäjä luo TOML-tiedoston, joka kuvaa tietyn Python-sovelluksen upottamisen, sitten rakentaa ja suorittaa PyOxidizerin ympäristömuuttujalla, joka osoittaa kyseiseen TOML-tiedostoon.

PyOxidizer erottuu muista pakkausratkaisuista käyttäessään Python-tulkin mukautettua rakennetta, joka on suunniteltu yhdistettäväksi staattisesti ja upotettavaksi toiseen ohjelmaan. Muut ratkaisut, kuten PyInstaller, jakavat nykyisen CPython .DLL-osakekannan - kätevä ja yhteensopiva, mutta ei kovin joustava. PyOxidizer myös pakkaa Python-sovelluksen tavukoodin suoritettavaan kuvaan ja lataa sen suoraan muistista (nopeasti) eikä tiedostojärjestelmästä (hitaammin).

PyInstallerin tavoin PyOxidizer ei kuitenkaan tee mitään optimointia Python-koodille. Toinen projekti, Nuitka, ei vain koota Python-sovelluksia erillisiksi suoritettaviksi tiedostoiksi, vaan yrittää myös soveltaa suorituskyvyn optimointia käännettyyn koodiin. Nuitkaa pidetään kuitenkin edelleen beta-tason projektina, ja suuria osia ennustetuista suorituskyvyn parannuksista ei ole vielä saatavilla.

PyOxidizer itsessään on edelleen hyvin varhaisen vaiheen projekti. Se voi tuottaa vain Linux-binaareja, koska yksi sen alkupäähankkeista, CPythonin upotettava versio, on tällä hetkellä saatavana vain Linux-rakennuksissa.