Ipinakilala ng proyekto ng Gentoo ang Portage 3.0 package management system

Pinatatag paglabas ng sistema ng pamamahala ng pakete Portage 3.0, ginagamit sa pamamahagi Gentoo Linux. Ang ipinakita na thread ay nagbubuod sa pangmatagalang gawain sa paglipat sa Python 3 at ang pagtatapos ng suporta para sa Python 2.7.

Bukod sa pagtatapos ng suporta para sa Python 2.7, isa pang mahalagang pagbabago ay ang pagsasama ng mga pag-optimize, na naging posible upang mapabilis ang mga kalkulasyon na may kaugnayan sa pagtukoy ng mga dependency sa pamamagitan ng 50-60%. Kapansin-pansin, iminungkahi ng ilang developer na isulat muli ang dependency resolution code sa C/C++ o Go para pabilisin ang operasyon nito, ngunit nagawa nilang lutasin ang umiiral na problema nang may kaunting pagsisikap.

Ang pag-profile sa umiiral na code ay nagpakita na ang karamihan sa oras ng pagkalkula ay ginugol sa pagtawag sa use_reduce at catpkgsplit function na may paulit-ulit na hanay ng mga argumento (halimbawa, ang catpkgsplit function ay tinawag na 1 hanggang 5 milyong beses). Upang mapabilis ang mga bagay-bagay, ginamit ang pag-cache ng mga resulta ng mga function na ito gamit ang mga diksyunaryo. Ang pinakamagandang opsyon para sa pag-iimbak ng cache ay ang built-in na lru_cache function, ngunit ito ay magagamit lamang sa mga release ng Python simula sa 3.2. Para sa pagiging tugma sa mga naunang bersyon, isang stub ang idinagdag upang palitan ang lru_cache, ngunit ang desisyon na ihinto ang suporta para sa Python 2.7 sa Portage 3.0 ay lubos na pinasimple ang gawain at naging posible na gawin nang wala ang layer na ito.

Ang paggamit ng cache ay nagpababa sa oras ng pagpapatupad ng "emerge -uDvpU β€”with-bdeps=y @world" na operasyon sa ThinkPad X220 laptop mula 5 minuto 20 segundo hanggang 3 minuto 16 segundo (63%). Ang mga pagsubok sa iba pang mga system ay nagpakita ng pagtaas ng pagganap ng hindi bababa sa 48%.

Sinubukan din ng developer na naghanda ng pagbabago na magpatupad ng prototype ng dependency resolution code sa C++ o Rust, ngunit ang gawain ay masyadong mahirap dahil nangangailangan ito ng pag-port ng malaking halaga ng code, at nagdududa na ang resulta ay sulit ang pagsisikap .

Pinagmulan: opennet.ru

Magdagdag ng komento