Ja va ser anunciada la versió estable de Portage 3.0

Fa poc els desenvolupadors que estan a càrrec de de el sistema d'administració de paquets porteig (En la distribució de Gentoo Linux) van donar a conèixer el llançament de la versió estable de la versió 3.0.

En la qual, la principal novetat d'aquesta nova branca presentada, és el treball que es va realitzar a llarg termini sobre la transició a Python 3 i el final de el suport per Python 2.7 (Cosa que ja es veia venir des de fa molt de temps, ja que aquesta branca quedo oficialment sense suport des de fa ja diversos mesos)

Tenim bones notícies! El projecte Portage de Gentoo ha estabilitzat recentment la versió 3.0 de l'administrador de paquets.

Què hi ha de nou? Bé, aquesta tercera versió de Portage elimina el suport per Python 2.7, que ha estat un esforç continu en el repositori principal de Gentoo per part de el projecte Python de Gentoo durant l'any 2020.

A més de la descontinuación de el suport per Python 2.7, un altre canvi important que es destaca d'aquesta nova branca estable de Portage 3.0 va ser la inclusió de diverses optimitzacions que van permetre fer que els càlculs siguin molt més ràpids (entre un 50% i 60%) associats amb la determinació de dependències.

Curiosament, alguns desenvolupadors van suggerir reescriure el codi de resolució de dependències en C / C ++ o Go per accelerar el seu treball, però van aconseguir resoldre el problema existent amb un gran esforç.

I és que el perfil de el codi existent va mostrar que la major part de el temps de càlcul es dedica a trucar a les funcions use_reduce i catpkgsplit amb un conjunt repetit d'arguments (la persona que porto aquest tasca esmenta que per exemple, la funció catpkgsplit es va cridar d'1 a 5 milions de vegades).

Amb el problema detectat, esmenta que per accelerar els càlculs, es va aplicar l'emmagatzematge en memòria cau de l'resultat d'aquestes funcions mitjançant diccionaris.

A més, a causa d'un pegat proporcionat per l'usuari, l'actualització a l'última versió de Portage pot accelerar enormement els càlculs de dependència entre un 50 i un 60%. Ens encanta veure a la nostra comunitat participar en el nostre programari! Per a més informació, consulteu aquesta publicació de Reddit de l'membre de la comunitat que va proporcionar el pegat. ¡Per estar saludable i segueixi cuinant amb Gentoo!

A més de que també assenyala que la funció incorporada lru_cache era òptima per a aquesta tasca d'emmagatzemar la memòria cau, però que només estava disponible en les versions de Python des 3.2.

Per compatibilitat amb versions anteriors, també es va agregar un codi auxiliar per reemplaçar lru_cache, però la decisió de finalitzar el suport de Python 2.7 a Portage 3.0 va simplificar enormement la tasca i permetre poder prescindir d'aquesta capa.

Vaig dedicar un temps a perfilar Portage amb cProfile i vmprof per comprendre quines funcions prenien més temps. També vaig generar alguns flamegraphs a partir dels resultats de l'generador de perfils, que es veien així. El que vaig notar va ser que algunes funcions, com use_reducecatpkgsplit, Es diuen amb molta freqüència amb els mateixos arguments (com, 1 a 5 milions de vegades, per catpkgsplit). Vaig fer alguns experiments per emmagatzemar en memòria cau els resultats d'aquestes funcions en un dictat, i després de veure algunes bones acceleracions, vaig enviar un pegat a la llista de desenvolupadors de Portage. Algú va suggerir utilitzar Python incorporatlru_cache decorador de funcions en el seu lloc, però això només està disponible en Python 3.2 i superior.

D'altra banda l'ús de la memòria cau ha reduït l'operació «emergeix -uDvpU -with-bdeps = i @world» al Thinkpad X220 de 5 minuts 20 segons a 3 minuts 16 segons (63%). Les proves en altres sistemes han demostrat un guany de rendiment de al menys un 48%.

El desenvolupador que va preparar el canvi també va intentar implementar un prototip de el codi de resolució de dependències a C++ o Rust, però la tasca va resultar ser massa difícil, ja que requeria portar una gran quantitat de codi i, a el mateix temps, era dubtós que el resultat valgués la pena l'esforç.

Finalment si vols conèixer més a l'respecte sobre la nota de l'alliberament d'aquesta branca estable, pots consultar els detalls en el següent enllaç.


Sigues el primer a comentar

Deixa el teu comentari

La seva adreça de correu electrònic no es publicarà. Els camps obligatoris estan marcats amb *

*

*

  1. Responsable de les dades: AB Internet Networks 2008 SL
  2. Finalitat de les dades: Controlar l'SPAM, gestió de comentaris.
  3. Legitimació: El teu consentiment
  4. Comunicació de les dades: No es comunicaran les dades a tercers excepte per obligació legal.
  5. Emmagatzematge de les dades: Base de dades allotjada en Occentus Networks (UE)
  6. Drets: En qualsevol moment pots limitar, recuperar i esborrar la teva informació.