Že objavljena stabilna izdaja Portage 3.0

Razvijalci v zadnjem času ki so odgovorni za sistem upravljanja paketov Portage (o distribuciji Gentoo Linux) je napovedal izid stabilne različice različice 3.0.

V kateri, glavna novost te nove predstavljene podružnice je delo, ki je bilo dolgoročno izvedeno na prehod na Python 3 in konec podpore za Python 2.7 (nekaj, kar je bilo že dolgo videti, saj je bila ta podružnica nekaj mesecev uradno brez podpore)

Imamo dobre novice! Projekt Gentoo Portage je pred kratkim stabiliziral različico 3.0 upravitelja paketov.

Kaj je novega? No, s to tretjo različico Portage je odstranjena podpora za Python 2.7, ki jo je projekt Gentoo Python v letu 2020 neprestano prizadeval v glavnem skladišču Gentoo.

Poleg ukinitve podpore za Python 2.7, še ena velika sprememba ki izstopa iz te nove stabilne veje Portage 3.0 je bila vključitev različnih optimizacij da so dovolili veliko hitreje izračunajte (med 50% in 60%) povezane z določanjem odvisnosti.

Zanimivo je, da so nekateri razvijalci predlagali prepis kode za reševanje odvisnosti v C / C ++ ali Go, da bi pospešili svoje delo, vendar so obstoječi problem uspeli rešiti z velikim trudom.

In profil obstoječe kode je to pokazal večino časa izračun je namenjen klicanju funkcij use_reduce in catpkgsplit s ponavljajočim se nizom argumentov (oseba, ki je vodila to delo, omenja, da je bila funkcija catpkgsplit na primer poklicana 1 do 5 milijonov krat).

Pri zaznani težavi omenite, da za pospešitev izračunov uporabljeno je predpomnjenje rezultatov teh funkcij s pomočjo slovarjev.

Zaradi posodobitve, ki jo dobavi uporabnik, lahko posodobitev Portagea na najnovejšo različico močno pospeši izračune odvisnosti za 50–60%. Všeč nam je, ko naša skupnost sodeluje v naši programski opremi! Za več podrobnosti si oglejte to objavo na Redditu člana skupnosti, ki je priskrbel popravek. Ostanite zdravi in ​​kuhajte z Gentoo!

Poleg tega poudarja tudi, da je bila vgrajena funkcija lru_cache optimalna za to nalogo predpomnjenja, vendar je bila na voljo samo v različicah Python od 3.2.

Za združljivost s prejšnjimi različicami je bil nadomeščen lru_cache tudi dodan škrbin, vendar je odločitev o prenehanju podpore Python 2.7 v Portage 3.0 močno poenostavila nalogo in omogočila zaobidej te plasti.

Nekaj ​​časa sem profiliral Portage s cProfile in vmprof, da sem razumel, katere funkcije jemljejo največ časa. Iz rezultatov profilatorja sem ustvaril tudi nekaj flamegrafov, ki so izgledali takole. Opazil sem, da nekatere funkcije, na primer use_reducecatpkgsplit, so zelo pogosto poklicani z enakimi argumenti (na primer 1 do 5 milijonov krat, za catpkgsplit). Naredil sem nekaj poskusov, da bi rezultate teh funkcij predpomnil v nareku, in ko sem videl nekaj dobrih pospeškov, sem na seznam razvijalcev Portage poslal obliž. Nekdo je predlagal uporabo vgrajenega Pythonalru_cache namesto tega, vendar je to na voljo samo v Python 3.2 in novejših različicah.

Po drugi strani pa je uporaba predpomnilnika zmanjšala operacijo "emerge -uDvpU -with-bdeps = y @world" na ThinkPad X220 s 5 minut 20 sekund na 3 minute 16 sekund (63%). Testi na drugih sistemih so pokazali vsaj 48-odstotno povečanje zmogljivosti.

Razvijalec, ki je pripravil spremembo, je skušal implementirati tudi prototip iz kode ločljivosti odvisnosti v jeziku C ++ ali Rust, toda naloga se je izkazala za pretežko, saj je zahteval prenos večje količine kode, hkrati pa je bilo dvomljivo, ali je bil rezultat vreden truda.

Končno če želite vedeti več o tem O opombi k izdaji te stabilne veje lahko preverite podrobnosti V naslednji povezavi.


Pustite svoj komentar

Vaš e-naslov ne bo objavljen. Obvezna polja so označena z *

*

*

  1. Odgovoren za podatke: AB Internet Networks 2008 SL
  2. Namen podatkov: Nadzor neželene pošte, upravljanje komentarjev.
  3. Legitimacija: Vaše soglasje
  4. Sporočanje podatkov: Podatki se ne bodo posredovali tretjim osebam, razen po zakonski obveznosti.
  5. Shranjevanje podatkov: Zbirka podatkov, ki jo gosti Occentus Networks (EU)
  6. Pravice: Kadar koli lahko omejite, obnovite in izbrišete svoje podatke.