Portage 3.0 kararlı sürümü zaten duyuruldu

Son zamanlarda geliştiriciler paket yönetim sisteminden sorumlu kişiler Portage (Gentoo Linux dağıtımında) 3.0 sürümünün kararlı sürümünün piyasaya sürüldüğünü duyurdu.

İçinde ana yenilik Sunulan bu yeni şubenin, uzun vadede Python 3'e geçiş ve Python 2.7 desteğinin sonu (bu şube birkaç aydır resmi olarak desteksiz olduğu için uzun zamandır gelmekte olduğu görülen bir şey)

İyi haberlerimiz var! Gentoo Portage projesi yakın zamanda paket yöneticisinin 3.0 versiyonunu stabilize etti.

Ne var ne yok? Portage'ın bu üçüncü sürümü, 2.7 boyunca Gentoo Python projesi tarafından ana Gentoo deposunda devam eden bir çaba olan Python 2020 desteğini kaldırıyor.

Python 2.7 desteğinin sonlandırılmasına ek olarak, başka bir büyük değişiklik Portage 3.0'ın bu yeni kararlı dalından öne çıkan çeşitli optimizasyonların dahil edilmesiydi izin verdiler hesaplamaları çok daha hızlı yapın (% 50 ile% 60 arasında) bağımlılıkların belirlenmesi ile ilişkili.

İlginç bir şekilde, bazı geliştiriciler işlerini hızlandırmak için bağımlılık çözüm kodunu C / C ++ veya Go'da yeniden yazmayı önerdiler, ancak mevcut sorunu büyük bir çabayla çözmeyi başardılar.

Ve mevcut kodun profili gösterdi ki çoğu zaman hesaplama use_reduce ve catpkgsplit işlevlerini çağırmaya adanmıştır tekrar eden bir dizi argümanla (bu çalışmayı yöneten kişi, örneğin catpkgsplit işlevinin 1 ila 5 milyon kez çağrıldığından bahseder).

Problem tespit edildiğinde, hesaplamaları hızlandırmak için, önbelleğe alma uygulandı sözlükler aracılığıyla bu işlevlerin sonucunun.

Ayrıca, kullanıcı tarafından sağlanan bir yama nedeniyle, Portage'ın en son sürümüne güncelleme, bağımlılık hesaplamalarını% 50-60 oranında büyük ölçüde hızlandırabilir. Topluluğumuzun yazılımımıza katılımını görmeyi seviyoruz! Daha fazla ayrıntı için, yamayı sağlayan topluluk üyesinin bu Reddit gönderisine göz atın. Sağlıklı kalın ve Gentoo ile yemek pişirmeye devam edin!

bunun yanı sıra ayrıca lru_cache yerleşik işlevinin optimal olduğunu da not eder bu önbelleğe alma görevi için, ancak yalnızca 3.2'den beri Python sürümlerinde mevcuttu.

Geriye dönük uyumluluk için lru_cache yerine bir saplama da eklendi, ancak Portage 2.7'da Python 3.0 desteğini sonlandırma kararı görevi büyük ölçüde basitleştirdi ve bu katmanı atlamayı mümkün kıldı.

Hangi özelliklerin en çok zaman aldığını anlamak için cProfile ve vmprof ile Portage profilini oluşturmak için biraz zaman harcadım. Profil oluşturucu sonuçlarından şuna benzeyen bazı flamgraflar da oluşturdum. Fark ettiğim şey, bazı işlevler, örneğin use_reducecatpkgsplit, aynı argümanlarla çok sık çağrılır (örneğin, 1 ila 5 milyon kez, catpkgsplit). Bu işlevlerin sonuçlarını bir dikte olarak önbelleğe almak için bazı deneyler yaptım ve bazı iyi hızlandırmaları gördükten sonra Portage geliştirici listesine bir yama gönderdim. Birisi yerleşik Python kullanmayı önerdilru_cache bunun yerine işlev dekoratörü, ancak bu yalnızca Python 3.2 ve üzeri sürümlerde mevcuttur.

Öte yandan, önbellek kullanımı ThinkPad X220'de "emerge -uDvpU –with-bdeps = y @world" işlemini 5 dakika 20 saniyeden 3 dakika 16 saniyeye (% 63) düşürdü. Diğer sistemlerdeki testler, en az% 48'lik bir performans kazancı göstermiştir.

Değişimi hazırlayan geliştirici ayrıca bir prototip uygulamaya çalıştı bağımlılık çözüm kodundan C ++ veya Rust'ta, ama görevin çok zor olduğu ortaya çıktı, çünkü büyük miktarda kod taşınmasını gerektiriyordu ve aynı zamanda sonucun çabaya değip değmeyeceği de şüpheliydi.

Nihayet onun hakkında daha fazlasını bilmek istiyorsan Bu kararlı şubenin sürüm notu hakkında ayrıntıları kontrol edebilirsiniz Aşağıdaki bağlantıda.


Yorumunuzu bırakın

E-posta hesabınız yayınlanmayacak. Gerekli alanlar ile işaretlenmiştir *

*

*

  1. Verilerden sorumlu: AB Internet Networks 2008 SL
  2. Verilerin amacı: Kontrol SPAM, yorum yönetimi.
  3. Meşruiyet: Onayınız
  4. Verilerin iletilmesi: Veriler, yasal zorunluluk dışında üçüncü kişilere iletilmeyecektir.
  5. Veri depolama: Occentus Networks (AB) tarafından barındırılan veritabanı
  6. Haklar: Bilgilerinizi istediğiniz zaman sınırlayabilir, kurtarabilir ve silebilirsiniz.