Predstavljen Pyston-lite, JIT kompajler za standardni Python

Programeri projekta Pyston, koji nudi implementaciju jezika Python visokih performansi koji koristi moderne tehnologije JIT kompilacije, uveli su proširenje Pyston-lite sa implementacijom JIT kompajlera za CPython. Ako je Pyston grana CPython kodne baze i razvija se odvojeno, onda je Pyston-lite dizajniran kao univerzalna ekstenzija dizajnirana za povezivanje sa regularnim Python interpreterom (CPython).

Pyston-lite vam omogućava da koristite osnovne Pyston tehnologije bez promjene interpretatora, instaliranjem dodatne ekstenzije pomoću PIP ili Conda paket menadžera. Pyston-lite je već hostovan u PyPI i Conda repozitorijumima, a za instalaciju samo pokrenite naredbu "pip install pyston_lite_autoload" ili "conda install pyston_lite_autoload -c pyston". Predlažu se dva paketa: pyston_lite (direktno JIT) i pyston_lite_autoload (izvodi automatsku zamjenu JIT-a pri pokretanju Python procesa). Također je moguće programski kontrolirati omogućavanje JIT-a unutar aplikacije bez instaliranja modula za automatsko učitavanje, koristeći funkciju pyston_lite.enable().

Iako Pyston-lite ne pokriva sve optimizacije dostupne u Pystonu, njegovo korištenje omogućava oko 10-25% poboljšanja performansi u odnosu na obični Python 3.8. U budućnosti planiramo da većinu optimizacija prisutnih u Pystonu prenesemo na Pyston-lite, kao i da proširimo podržane verzije CPythona (prvo izdanje podržava samo Python 3.8). Od globalnijih planova, tu je zajednički rad sa CPython timom na implementaciji novih API-ja za JIT, koji omogućavaju potpuniju kontrolu nad radom Pythona. Rasprava o uključivanju predloženih promjena u granu Python 3.12. U idealnom slučaju, razmatra se mogućnost prijenosa svih funkcionalnosti sa Pystona na ekstenziju, što će nam omogućiti da pobjegnemo od održavanja vlastite vilice CPythona.

Pored Pyston-lite-a, projekat je takođe objavio ažuriranje punog paketa Pyston 2.3.4, koje uključuje nove optimizacije. U testu pyperformance, verzija 2.3.4 je brža od verzije 2.3.3 za oko 6%. Ukupno povećanje performansi u odnosu na CPython se procjenjuje na 66%.

Osim toga, možemo primijetiti optimizacije razvijene u okviru razvojnog ciklusa CPython 3.11 u glavnom projektu, što nam je u nekim testovima omogućilo povećanje performansi za 25%. Na primjer, u CPython 3.11 poboljšana je efikasnost keširanja stanja bajtkoda baznih modula, što će ubrzati pokretanje skripti za 10-15%. Pozivi funkcija su značajno ubrzani i dodani su specijalizovani brzi tumači tipičnih operacija. U toku je i rad na prenosu nekih optimizacija koje su pripremili projekti Cinder i HotPy.

Dodatno, u okviru nogil projekta, radi se na eksperimentalnom načinu gradnje CPython-a bez globalnog zaključavanja interpretatora (GIL, Global Interpreter Lock), koji ne dozvoljava paralelni pristup zajedničkim objektima iz različitih niti, što onemogućava paralelizaciju operacija na višejezgarnim sistemima. Kao drugo rješenje problema s GIL-om, razvija se mogućnost vezanja zasebnog GIL-a za svaki interpretator koji radi unutar procesa (više interpretatora može biti pokrenuto u jednom procesu, ali efikasnost njihovog paralelnog izvršavanja počiva na GIL-u).

izvor: opennet.ru

Dodajte komentar