pakettihaldussüsteemi väljaanne , mida rakendatakse jaotisest . Esitatud haru on lõpetanud pikaajalise töö üleminekuks Python 3-le ja lõpetanud Python 2.7 toe.
Lisaks Python 2.7 toe lõpetamisele on teiseks oluliseks muudatuseks pandud , mis võimaldasid arvutuste kiirusel, mis on seotud sõltuvuste määratlemisega, suureneda 50-60%. Huvitav on see, et mõned arendajad pakkusid sõltuvuste lahendamise koodi ümberkirjutamist C/C++ või Go keeles, et kiirus kasvada, kuid probleem lahendati suhteliselt lihtsalt.
Koodiprofiilimine näitas, et peamine aeg arvutustes kulub funktsioonide use_reduce ja catpkgsplit kutsumisele korduvate argumentide kogumiga (näiteks catpkgsplit kutsuti üles 1 kuni 5 miljonit korda). Kiirus kasvas nende funktsioonide töö tulemuste vahemälu rakendamisega sõnastike abil. Vahemälu hoidmiseks oli optimaalne sisseehitatud funktsioon lru_cache, kuid see oli saadaval ainult Python'i väljaannetes alates 3.2. Varasema versiooni toe tagamiseks lisati lru_cache'i asendus, kuid Portage 3.0-s python 2.7 toe lõpetamine lihtsustas ülesannet ja lubas sellest vahekihist mööda minna.
Vahemälu kasutamine vähendas käsu „emerge -uDvpU —with-bdeps=y @world” täitmise aega ThinkPad X220 sülearvutil 5 minutist 20 sekundist 3 minutisse 16 sekundisse (63%). Muudel süsteemidel tehtud testid näitasid vähemalt 48% jõudluse kasvu.
Muutuse ettevalmistaja arendaja püüdis samuti ellu viia sõltuvuste lahendamise koodi prototüübi C++ või Rust keeles, kuid ülesanne osutus liiga keeruliseks, kuna see nõudis suure hulga koodi portimist ja oli kaheldav, kas saavutatud tulemus oleks kulutatud vaeva vääriline.
Allikas: opennet.ru
