Već najavljeno stabilno izdanje Portage 3.0

Programeri nedavno koji su zaduženi za sistem upravljanja paketima Portage (na Gentoo Linux distribuciji) najavio izlazak stabilne verzije verzije 3.0.

U kojem, glavna novina ove nove predstavljene grane je posao koji je dugoročno izveden na prijelaz na Python 3 i kraj podrške za Python 2.7 (nešto za što se već dugo vidjelo da dolazi, budući da je ova grana službeno bila bez podrške nekoliko mjeseci)

Imamo dobre vijesti! Projekt Gentoo Portage nedavno je stabilizirao verziju 3.0 upravitelja paketa.

Šta je novo? Pa, ova treća verzija Portagea uklanja podršku za Python 2.7, što je kontinuirani napor u glavnom Gentoo spremištu od strane Gentoo Python projekta tokom 2020. godine.

Pored ukidanja podrške za Python 2.7, još jedna velika promjena što se izdvaja od ove nove stabilne grane Portage 3.0 bilo je uključivanje različitih optimizacija što su dozvolili izračunate mnogo brže (između 50% i 60%) povezano sa utvrđivanjem zavisnosti.

Zanimljivo je da su neki programeri predložili prepisivanje koda za rješavanje ovisnosti u C / C ++ ili Go kako bi ubrzali svoj posao, ali postojeći problem uspjeli su riješiti uz veliki napor.

I to je to profil postojećeg koda pokazao je to većinu vremena proračun posvećen je pozivanju funkcija use_reduce i catpkgsplit sa ponavljajućim nizom argumenata (osoba koja je vodila ovaj rad spominje da je, na primjer, funkcija catpkgsplit pozvana 1 do 5 miliona puta).

Uz otkriveni problem, spomenite to da biste ubrzali proračune, primijenjeno je predmemoriranje rezultata ovih funkcija pomoću rječnika.

Uz to, zbog zakrpe koju isporučuje korisnik, nadogradnja na najnoviju verziju Portage može uvelike ubrzati izračune zavisnosti za 50-60%. Volimo da naša zajednica učestvuje u našem softveru! Za više detalja pogledajte ovaj Reddit post od člana zajednice koji je dostavio zakrpu. Budite zdravi i nastavite kuhati s Gentooom!

pored toga također napominje da je ugrađena funkcija lru_cache bila optimalna za ovaj zadatak keširanja, ali bio je dostupan samo u verzijama Pythona od 3.2.

Za povratnu kompatibilnost, dodatak je također dodat da zamijeni lru_cache, ali odluka da se ukine podrška za Python 2.7 u Portage 3.0 uvelike je pojednostavila zadatak i omogućila zaobilaženje ovog sloja.

Proveo sam neko vrijeme profilirajući Portage sa cProfile i vmprof da shvatim koje funkcije traju najduže. Također sam generirao nekoliko plamenih grafova iz rezultata profila, koji su izgledali ovako. Ono što sam primijetio je da neke funkcije, poput use_reducecatpkgsplit, pozivaju se vrlo često s istim argumentima (npr. 1 do 5 miliona puta, za catpkgsplit). Napravio sam nekoliko eksperimenata kako bih rezultate tih funkcija pohranio u diktat, a nakon što sam vidio nekoliko dobrih ubrzanja, poslao sam zakrpu na listu programera Portage. Neko je predložio upotrebu ugrađenog Pythonalru_cache umjesto toga, koristi se dekorator funkcija, ali to je dostupno samo u Pythonu 3.2 i novijim.

S druge strane, upotreba predmemorije smanjila je operaciju "emerge -uDvpU -with-bdeps = y @world" na ThinkPad X220 sa 5 minuta 20 sekundi na 3 minute 16 sekundi (63%). Ispitivanja na drugim sistemima pokazala su povećanje performansi od najmanje 48%.

Programer koji je pripremio promjenu također je pokušao implementirati prototip iz koda za razlučivanje ovisnosti u C ++ ili Rust, ali ispostavilo se da je zadatak pretežak, jer je bila potrebna velika količina koda, a istodobno je bilo sumnjivo vrijedi li rezultat truda.

Konačno ako želite znati više o tome O napomeni o izdanju ove stabilne grane možete provjeriti detalje Na sledećem linku.


Ostavite komentar

Vaša e-mail adresa neće biti objavljena. Obavezna polja su označena sa *

*

*

  1. Odgovoran za podatke: AB Internet Networks 2008 SL
  2. Svrha podataka: Kontrola neželjene pošte, upravljanje komentarima.
  3. Legitimacija: Vaš pristanak
  4. Komunikacija podataka: Podaci se neće dostavljati trećim stranama, osim po zakonskoj obavezi.
  5. Pohrana podataka: Baza podataka koju hostuje Occentus Networks (EU)
  6. Prava: U bilo kojem trenutku možete ograničiti, oporaviti i izbrisati svoje podatke.