Rilis stabil Portage 3.0 telah diumumkan

Pengembang baru-baru ini yang bertanggung jawab atas sistem manajemen paket Portage (pada distribusi Gentoo Linux) mengumumkan rilis versi stabil dari versi 3.0.

Di mana, kebaruan utama cabang baru ini disajikan, adalah pekerjaan yang dilakukan dalam jangka panjang di transisi ke Python 3 dan akhir dukungan untuk Python 2.7 (sesuatu yang sudah terlihat datang sejak lama, sejak cabang ini secara resmi tanpa dukungan selama beberapa bulan)

Kami punya kabar baik! Proyek Gentoo Portage baru-baru ini telah menstabilkan manajer paket versi 3.0.

Apa yang baru? Nah, versi ketiga Portage ini menghapus dukungan untuk Python 2.7, yang telah diupayakan secara terus menerus di repositori utama Gentoo oleh proyek Gentoo Python sepanjang tahun 2020.

Selain penghentian dukungan untuk Python 2.7, perubahan besar lainnya yang menonjol dari cabang stabil baru Portage 3.0 ini adalah dimasukkannya berbagai pengoptimalan yang mereka izinkan membuat penghitungan jauh lebih cepat (antara 50% dan 60%) terkait dengan menentukan dependensi.

Menariknya, beberapa pengembang menyarankan untuk menulis ulang kode resolusi ketergantungan di C / C ++ atau Go untuk mempercepat pekerjaan mereka, tetapi mereka berhasil menyelesaikan masalah yang ada dengan susah payah.

Dan apakah itu profil dari kode yang ada menunjukkan bahwa sebagian besar waktu perhitungan didedikasikan untuk memanggil fungsi use_reduce dan catpkgsplit dengan sekumpulan argumen yang berulang (orang yang memimpin pekerjaan ini menyebutkan bahwa misalnya, fungsi catpkgsplit dipanggil 1 hingga 5 juta kali).

Dengan masalah yang terdeteksi, sebutkan bahwa untuk mempercepat penghitungan, caching telah diterapkan hasil dari fungsi-fungsi ini melalui kamus.

Selain itu, karena patch yang disediakan oleh pengguna, mengupdate Portage ke versi terbaru dapat sangat mempercepat penghitungan dependensi hingga 50-60%. Kami senang melihat komunitas kami berpartisipasi dalam perangkat lunak kami! Untuk lebih jelasnya, lihat posting Reddit ini dari anggota komunitas yang menyediakan tambalan. Tetap sehat dan terus memasak dengan Gentoo!

Selain itu itu juga mencatat bahwa fungsi bawaan lru_cache sudah optimal untuk tugas caching ini, tetapi hanya tersedia dalam versi Python sejak 3.2.

Untuk kompatibilitas mundur, sebuah rintisan juga ditambahkan untuk menggantikan lru_cache, tetapi keputusan untuk mengakhiri dukungan Python 2.7 di Portage 3.0 sangat menyederhanakan tugas dan memungkinkan untuk melewati lapisan ini.

Saya menghabiskan beberapa waktu untuk membuat profil Portage dengan cProfile dan vmprof untuk memahami fitur mana yang paling memakan waktu. Saya juga membuat beberapa flamegraph dari hasil profiler, yang terlihat seperti ini. Yang saya perhatikan adalah beberapa fungsi, seperti use_reducecatpkgsplit, sangat sering dipanggil dengan argumen yang sama (seperti, 1 hingga 5 juta kali, untuk catpkgsplit). Saya melakukan beberapa percobaan untuk menyimpan hasil dari fungsi-fungsi ini dalam sebuah dikte, dan setelah melihat beberapa percepatan yang bagus, saya mengirimkan sebuah patch ke daftar pengembang Portage. Seseorang menyarankan menggunakan Python bawaanlru_cache function decorator sebagai gantinya, tapi itu hanya tersedia di Python 3.2 dan yang lebih tinggi.

Di sisi lain, penggunaan cache telah mengurangi operasi "emerge -uDvpU –with-bdeps = y @world" di ThinkPad X220 dari 5 menit 20 detik menjadi 3 menit 16 detik (63%). Pengujian pada sistem lain telah menunjukkan peningkatan kinerja setidaknya 48%.

Pengembang yang menyiapkan perubahan juga mencoba menerapkan prototipe dari kode resolusi ketergantungan di C ++ atau Rust, tapi ternyata tugas itu terlalu sulit, karena diperlukan porting kode dalam jumlah besar dan pada saat yang sama diragukan apakah hasilnya sepadan dengan usaha.

Akhirnya jika Anda ingin tahu lebih banyak tentang itu Tentang catatan rilis cabang stabil ini, Anda dapat memeriksa detailnya Di tautan berikut.


tinggalkan Komentar Anda

Alamat email Anda tidak akan dipublikasikan. Bidang yang harus diisi ditandai dengan *

*

*

  1. Bertanggung jawab atas data: AB Internet Networks 2008 SL
  2. Tujuan data: Mengontrol SPAM, manajemen komentar.
  3. Legitimasi: Persetujuan Anda
  4. Komunikasi data: Data tidak akan dikomunikasikan kepada pihak ketiga kecuali dengan kewajiban hukum.
  5. Penyimpanan data: Basis data dihosting oleh Occentus Networks (UE)
  6. Hak: Anda dapat membatasi, memulihkan, dan menghapus informasi Anda kapan saja.