Portage 3.0 stabiele release al aangekondigd

Ontwikkelaars onlangs die verantwoordelijk zijn voor het pakketbeheersysteem Portage (op de Gentoo Linux-distributie) kondigde de release aan van de stabiele versie van versie 3.0.

Waarin, de belangrijkste nieuwigheid van deze nieuwe tak gepresenteerd, is het werk dat op lange termijn is verricht overgang naar Python 3 en einde van ondersteuning voor Python 2.7 (iets dat al een hele tijd aan het komen was, aangezien deze tak officieel enkele maanden zonder ondersteuning zat)

We hebben goed nieuws! Het Gentoo Portage-project heeft onlangs versie 3.0 van de pakketbeheerder gestabiliseerd.

Wat is er nieuw? Welnu, deze derde versie van Portage verwijdert de ondersteuning voor Python 2.7, wat een voortdurende inspanning is geweest in de hoofdrepository van Gentoo door het Gentoo Python-project gedurende 2020.

Naast het stopzetten van de ondersteuning voor Python 2.7, nog een belangrijke verandering die zich onderscheidt van deze nieuwe stabiele tak van Portage 3.0 was het opnemen van verschillende optimalisaties dat ze toestonden veel sneller berekeningen maken (tussen 50% en 60%) geassocieerd met het bepalen van afhankelijkheden.

Interessant genoeg stelden sommige ontwikkelaars voor om de afhankelijkheidsresolutiecode in C / C ++ of Go te herschrijven om hun werk te versnellen, maar ze slaagden erin het bestaande probleem met veel moeite op te lossen.

En het bestaande codeprofiel liet dat meestal zien berekening is toegewijd aan het aanroepen van de use_reduce en catpkgsplit functies met een zich herhalende reeks argumenten (de persoon die dit werk leidde vermeldt dat bijvoorbeeld de functie catpkgsplit 1 tot 5 miljoen keer werd aangeroepen).

Als het probleem is gedetecteerd, vermeldt u dat om de berekeningen te versnellen, caching is toegepast van het resultaat van deze functies door middel van woordenboeken.

Bovendien, dankzij een door de gebruiker geleverde patch, kan het upgraden naar de nieuwste versie van Portage de afhankelijkheidsberekeningen aanzienlijk versnellen met 50-60%. We vinden het geweldig om onze community te zien deelnemen aan onze software! Bekijk voor meer informatie dit Reddit-bericht van het communitylid dat de patch heeft geleverd. Blijf gezond en blijf koken met Gentoo!

Daarnaast merkt ook op dat de ingebouwde functie lru_cache optimaal was voor deze taak van caching, maar het was alleen beschikbaar in Python-versies sinds 3.2.

Voor achterwaartse compatibiliteit werd ook een stub toegevoegd om lru_cache te vervangen, maar de beslissing om Python 2.7-ondersteuning in Portage 3.0 te beëindigen, vereenvoudigde de taak aanzienlijk en maakte het mogelijk om deze laag te omzeilen.

Ik heb wat tijd besteed aan het profileren van Portage met cProfile en vmprof om te begrijpen welke functies de meeste tijd in beslag namen. Ik heb ook een aantal vlammen gegenereerd op basis van de resultaten van de profiler, die er zo uitzagen. Wat me opviel was dat sommige functies, zoals use_reducecatpkgsplit, worden heel vaak aangeroepen met dezelfde argumenten (zoals, 1 tot 5 miljoen keer, for catpkgsplit​ Ik heb wat experimenten gedaan om de resultaten van deze functies in een dictaat te cachen, en nadat ik een aantal goede versnellingen had gezien, stuurde ik een patch naar de Portage-ontwikkelaarslijst. Iemand stelde voor om ingebouwde Python te gebruikenlru_cache functie decorateur, maar dat is alleen beschikbaar in Python 3.2 en hoger.

Aan de andere kant heeft het gebruik van de cache de bewerking "emerge -uDvpU –with-bdeps = y @world" op de ThinkPad X220 teruggebracht van 5 minuten 20 seconden tot 3 minuten 16 seconden (63%). Tests op andere systemen hebben een prestatieverbetering van minstens 48% aangetoond.

De ontwikkelaar die de wijziging heeft voorbereid, heeft ook geprobeerd een prototype te implementeren van de afhankelijkheidsoplossingscode in C ++ of Rust, maar de taak bleek te moeilijk, omdat er een grote hoeveelheid code moest worden overgezet en tegelijkertijd was het twijfelachtig of het resultaat de moeite waard was.

Eindelijk als je er meer over wilt weten Over de release-opmerking van deze stabiele branch kunt u de details bekijken In de volgende link.


Laat je reactie achter

Uw e-mailadres wordt niet gepubliceerd. Verplichte velden zijn gemarkeerd met *

*

*

  1. Verantwoordelijk voor de gegevens: AB Internet Networks 2008 SL
  2. Doel van de gegevens: Controle SPAM, commentaarbeheer.
  3. Legitimatie: uw toestemming
  4. Mededeling van de gegevens: De gegevens worden niet aan derden meegedeeld, behalve op grond van wettelijke verplichting.
  5. Gegevensopslag: database gehost door Occentus Networks (EU)
  6. Rechten: u kunt uw gegevens op elk moment beperken, herstellen en verwijderen.