Stabilné vydanie Portage 3.0 už bolo oznámené

Vývojári nedávno ktorí majú na starosti systém správy balíkov dopravné (v distribúcii Gentoo Linux) ohlásil vydanie stabilnej verzie verzie 3.0.

V ktorom, hlavná novinka z tejto novej pobočky je práca, ktorá sa z dlhodobého hľadiska vykonala na prechod na Python 3 a koniec podpory pre Python 2.7 (niečo, čo sa už dlho videlo prichádzať, pretože táto pobočka bola niekoľko mesiacov oficiálne bez podpory)

Máme dobré správy! Projekt Gentoo Portage nedávno stabilizoval verziu 3.0 správcu balíkov.

Čo je nové? Táto tretia verzia Portage odstraňuje podporu pre Python 2.7, o ktorú sa počas celého roku 2020 neustále usilovalo hlavné úložisko Gentoo v rámci projektu Gentoo Python.

Okrem ukončenia podpory pre Python 2.7, ďalšia veľká zmena ktorá vyčnieva z tejto novej stabilnej pobočky Portage 3.0 bolo zahrnutie rôznych optimalizácií že povolili robiť výpočty oveľa rýchlejšie (medzi 50% a 60%) spojené s určovaním závislostí.

Je zaujímavé, že niektorí vývojári navrhli prepísať kód na rozlíšenie závislostí v C / C ++ alebo Go, aby sa urýchlila ich práca, ale podarilo sa im vyriešiť existujúci problém s veľkým úsilím.

A profil existujúceho kódu ukázal, že väčšinu času kalkulácia je venovaný volaniu funkcií use_reduce a catpkgsplit s opakujúcou sa sadou argumentov (osoba, ktorá viedla túto prácu, uvádza, že napríklad funkcia catpkgsplit bola volaná 1 až 5 miliónov krát).

Pri zistenom probléme uveďte, že na urýchlenie výpočtov bolo použité medzipamäť výsledkov týchto funkcií pomocou slovníkov.

Aktualizácia na najnovšiu verziu aplikácie Portage tiež môže z dôvodu opravy dodanej používateľom výrazne urýchliť výpočty závislostí o 50–60%. Sme radi, že sa naša komunita podieľa na našom softvéri! Viac podrobností nájdete v tomto príspevku Redditu od člena komunity, ktorý opravu poskytol. Zostaňte zdraví a pokračujte v varení s Gentoo!

okrem toho tiež si všíma, že vstavaná funkcia lru_cache bola optimálna pre túto úlohu ukladania do pamäte cache, ale bola k dispozícii iba vo verziách Pythonu od verzie 3.2.

Kvôli spätnej kompatibilite bol tiež pridaný stub, ktorý nahradil lru_cache, ale rozhodnutie ukončiť podporu Pythonu 2.7 v Portage 3.0 túto úlohu výrazne zjednodušilo a umožnilo obísť túto vrstvu.

Strávil som nejaký čas profilovaním Portage s cProfile a vmprof, aby som pochopil, ktoré funkcie mi zaberajú najviac času. Z výsledkov profilovača som vygeneroval niekoľko plameňov, ktoré vyzerali takto. Všimol som si, že niektoré funkcie, ako use_reducecatpkgsplit, sú volané veľmi často s rovnakými argumentmi (ako, 1 až 5 miliónov krát, pre catpkgsplit). Urobil som niekoľko experimentov, aby som výsledky týchto funkcií uložil do medzipamäte v diktáte, a potom, čo som videl niekoľko dobrých zrýchlení, som odoslal opravu do zoznamu vývojárov Portage. Niekto navrhol použiť zabudovaný Pythonlru_cache natierač funkcií, ale ten je k dispozícii iba v Pythone 3.2 a vyššom.

Na druhej strane použitie medzipamäte znížilo operáciu „emerge -uDvpU –with-bdeps = y @world“ na ThinkPad X220 z 5 minút 20 sekúnd na 3 minúty 16 sekúnd (63%). Testy na iných systémoch preukázali zvýšenie výkonu najmenej o 48%.

Vývojár, ktorý pripravil zmenu, sa pokúsil implementovať aj prototyp z kódu riešenia závislostí v C ++ alebo Rust, ale úloha sa ukázala ako príliš ťažká, pretože to vyžadovalo veľké množstvo kódu, ktoré bolo treba niesť, a zároveň bolo pochybné, či výsledok stál za tú námahu.

Konečne ak o tom chcete vedieť viac O poznámke k vydaniu tejto stabilnej vetvy si môžete pozrieť podrobnosti Na nasledujúcom odkaze.


Zanechajte svoj komentár

Vaša e-mailová adresa nebude zverejnená. Povinné položky sú označené *

*

*

  1. Za údaje zodpovedá: AB Internet Networks 2008 SL
  2. Účel údajov: Kontrolný SPAM, správa komentárov.
  3. Legitimácia: Váš súhlas
  4. Oznamovanie údajov: Údaje nebudú poskytnuté tretím stranám, iba ak to vyplýva zo zákona.
  5. Ukladanie dát: Databáza hostená spoločnosťou Occentus Networks (EU)
  6. Práva: Svoje údaje môžete kedykoľvek obmedziť, obnoviť a vymazať.