Stabilní vydání Portage 3.0 již bylo oznámeno

Vývojáři nedávno kteří mají na starosti systém správy balíků Dopravné (v distribuci Gentoo Linux) oznámila vydání stabilní verze verze 3.0.

Ve kterém, hlavní novinka této nové pobočky představena, je práce, která byla dlouhodobě prováděna na přechod na Python 3 a konec podpory pro Python 2.7 (něco, co se už dlouho objevovalo, protože tato pobočka byla několik měsíců oficiálně bez podpory)

Máme dobré zprávy! Projekt Gentoo Portage nedávno stabilizoval verzi 3.0 správce balíčků.

Co je nového? Tato třetí verze Portage odstraňuje podporu pro Python 2.7, což bylo neustálé úsilí v hlavním úložišti Gentoo projektem Gentoo Python v průběhu roku 2020.

Kromě ukončení podpory pro Python 2.7, další zásadní změna která vyniká z této nové stabilní pobočky Portage 3.0 bylo zahrnutí různých optimalizací které povolili mnohem rychlejší výpočty (mezi 50% a 60%) spojené s určováním závislostí.

Je zajímavé, že někteří vývojáři navrhli přepsat kód rozlišení závislostí v C / C ++ nebo Go, aby urychlili svou práci, ale podařilo se jim vyřešit stávající problém s velkým úsilím.

A profil stávajícího kódu ukázal, že většinu času výpočet je věnován volání funkcí use_reduce a catpkgsplit s opakující se sadou argumentů (osoba, která tuto práci vedla, uvádí, že například funkce catpkgsplit byla volána 1 až 5 milionůkrát).

U zjištěného problému uveďte, že pro urychlení výpočtů bylo použito ukládání do mezipaměti výsledku těchto funkcí pomocí slovníků.

Navíc díky opravě dodané uživatelem může upgrade na nejnovější verzi Portage výrazně urychlit výpočty závislostí o 50–60%. Rádi vidíme naši komunitu podílet se na našem softwaru! Další podrobnosti najdete v tomto příspěvku Redditu od člena komunity, který opravu poskytl. Zůstaňte zdraví a pokračujte v vaření s Gentoo!

kromě toho také bere na vědomí, že vestavěná funkce lru_cache byla optimální pro tento úkol ukládání do mezipaměti, ale byl k dispozici pouze ve verzích Pythonu od 3.2.

Kvůli zpětné kompatibilitě byl také přidán stub, který nahradil lru_cache, ale rozhodnutí ukončit podporu Pythonu 2.7 v Portage 3.0 výrazně zjednodušilo úkol a umožnilo obejít tuto vrstvu.

Strávil jsem nějaký čas profilováním Portage s cProfile a vmprof, abych pochopil, které funkce trvaly nejdéle. Také jsem vygeneroval několik plamenografů z výsledků profilovače, které vypadaly takto. Všiml jsem si, že některé funkce, jako use_reducecatpkgsplit, jsou volána velmi často se stejnými argumenty (jako, 1 až 5 milionů krát, pro catpkgsplit). Udělal jsem několik experimentů, abych výsledky těchto funkcí uložil do mezipaměti v diktátu, a poté, co jsem viděl několik dobrých zrychlení, jsem odeslal opravu do seznamu vývojářů Portage. Někdo navrhl použít vestavěný Pythonlru_cache místo toho dekorátor funkcí, ale ten je k dispozici pouze v Pythonu 3.2 a vyšším.

Na druhé straně použití mezipaměti snížilo operaci „emerge -uDvpU –with-bdeps = y @world“ na ThinkPad X220 z 5 minut 20 sekund na 3 minuty 16 sekund (63%). Testy na jiných systémech ukázaly zvýšení výkonu nejméně o 48%.

Vývojář, který změnu připravil, se také pokusil implementovat prototyp z kódu rozlišení závislostí v C ++ nebo Rust, ale úkol se ukázal jako příliš obtížný, protože to vyžadovalo velké množství kódu, které mají být provedeny, a zároveň bylo pochybné, zda výsledek stojí za námahu.

Konečně pokud o tom chcete vědět víc O poznámce k vydání této stabilní větve můžete zkontrolovat podrobnosti Na následujícím odkazu.


Zanechte svůj komentář

Vaše e-mailová adresa nebude zveřejněna. Povinné položky jsou označeny *

*

*

  1. Za data odpovídá: AB Internet Networks 2008 SL
  2. Účel údajů: Ovládací SPAM, správa komentářů.
  3. Legitimace: Váš souhlas
  4. Sdělování údajů: Údaje nebudou sděleny třetím osobám, s výjimkou zákonných povinností.
  5. Úložiště dat: Databáze hostovaná společností Occentus Networks (EU)
  6. Práva: Vaše údaje můžete kdykoli omezit, obnovit a odstranit.