Lëshimi i qëndrueshëm Portage 3.0 është njoftuar tashmë

Zhvilluesit kohët e fundit të cilët janë përgjegjës për sistemin e menaxhimit të paketave mbartje (në shpërndarjen e Gentoo Linux) njoftoi lëshimin e versionit të qëndrueshëm të versionit 3.0.

Në të cilën, risia kryesore e kësaj dege të re të paraqitur, është puna që u krye në një periudhë afatgjatë në kalimi në Python 3 dhe fundi i mbështetjes për Python 2.7 (diçka që tashmë ishte parë të vinte për një kohë të gjatë, pasi kjo degë ishte zyrtarisht pa mbështetje për disa muaj)

Kemi një lajm të mirë! Projekti Gentoo Portage së fundmi ka stabilizuar versionin 3.0 të menaxherit të paketës.

Cfare ka te re? Epo, ky version i tretë i Portage heq mbështetjen për Python 2.7, e cila ka qenë një përpjekje e vazhdueshme në depon kryesore Gentoo nga projekti Gentoo Python përgjatë vitit 2020.

Përveç ndërprerjes së mbështetjes për Python 2.7, një tjetër ndryshim i madh që dallon nga kjo degë e re e qëndrueshme e Portage 3.0 ishte përfshirja e optimizimeve të ndryshme që ata e lejuan bëni llogaritjet shumë më të shpejta (midis 50% dhe 60%) shoqerohet me percaktimin e varesive.

Interesante, disa zhvillues sugjeruan të rishkruajnë kodin e zgjidhjes së varësisë në C / C ++ ose Go për të shpejtuar punën e tyre, por ata arritën të zgjidhnin problemin ekzistues me përpjekje të mëdha.

Dhe kjo profili i kodit ekzistues tregoi se shumicën e kohës llogaritjen i dedikohet thirrjes së funksioneve use_reduce dhe catpkgsplit me një grup argumentesh të përsëritura (personi që e drejtoi këtë punë përmend që për shembull, funksioni catpkgsplit u thirr 1 deri në 5 milion herë).

Me problemin e zbuluar, përmendni që për të shpejtuar llogaritjet, u aplikua caching të rezultatit të këtyre funksioneve me anë të fjalorëve.

Për më tepër, për shkak të një patch-i dhënë nga përdoruesit, azhurnimi në versionin më të fundit të Portage mund të shpejtojë shumë llogaritjet e varësisë me 50-60%. Na pëlqen të shohim komunitetin tonë të marrë pjesë në softuerin tonë! Për më shumë detaje, shikoni këtë postim të Reddit nga anëtari i komunitetit i cili dha patch. Qëndroni të shëndetshëm dhe vazhdoni të gatuani me Gentoo!

Përveç kësaj gjithashtu vëren se funksioni i integruar i lru_cache ishte optimal për këtë detyrë të caching, por ajo ishte në dispozicion vetëm në versionet Python që nga 3.2.

Për pajtueshmëri prapa, një cung u shtua gjithashtu për të zëvendësuar lru_cache, por vendimi për t'i dhënë fund mbështetjes Python 2.7 në Portage 3.0 thjeshtoi shumë detyrën dhe bëri të mundur anashkalimin e kësaj shtrese.

Kam kaluar ca kohë duke profilizuar Portage me cProfile dhe vmprof për të kuptuar se cilat tipare po zgjasnin më gjatë. Unë gjithashtu krijova disa flamegrafikë nga rezultatet e profilizuesit, të cilat dukeshin kështu. Ajo që vura re ishte se disa funksione, si use_reducecatpkgsplit, thirren shumë shpesh me të njëjtat argumente (si, 1 deri në 5 milion herë, për catpkgsplit) Unë bëra disa eksperimente për të ruajtur rezultatet e këtyre funksioneve në një diktim, dhe pasi pashë disa shpejtësi të mira, unë paraqita një copë toke në listën e zhvilluesve Portage. Dikush sugjeroi përdorimin e Python të integruarlru_cache dekorues i funksioneve në vend të kësaj, por ai është i disponueshëm vetëm në Python 3.2 dhe më të lartë.

Nga ana tjetër, përdorimi i cache ka zvogëluar operacionin "emerge -uDvpU –with-bdeps = y @ world" në ThinkPad X220 nga 5 minuta 20 sekonda në 3 minuta 16 sekonda (63%). Testet në sistemet e tjera kanë treguar një fitim performance prej të paktën 48%.

Zhvilluesi që përgatiti ndryshimin gjithashtu u përpoq të zbatonte një prototip nga kodi i rezolucionit të varësisë në C ++ ose Rust, por detyra doli të jetë shumë e vështirë, pasi kërkonte transportimin e një sasie të madhe të kodit dhe në të njëjtën kohë ishte e dyshimtë nëse rezultati ia vlente të përpiqeshin.

Më në fund nëse doni të dini më shumë rreth saj Për shënimin e lëshimit të kësaj dege të qëndrueshme, mund të kontrolloni detajet Në lidhjen vijuese.


Lini komentin tuaj

Adresa juaj e emailit nuk do të publikohet. Fusha e kërkuar janë shënuar me *

*

*

  1. Përgjegjës për të dhënat: AB Internet Networks 2008 SL
  2. Qëllimi i të dhënave: Kontrolloni SPAM, menaxhimin e komenteve.
  3. Legjitimimi: Pëlqimi juaj
  4. Komunikimi i të dhënave: Të dhënat nuk do t'u komunikohen palëve të treta përveç me detyrim ligjor.
  5. Ruajtja e të dhënave: Baza e të dhënave e organizuar nga Occentus Networks (BE)
  6. Të drejtat: Në çdo kohë mund të kufizoni, rikuperoni dhe fshini informacionin tuaj.