Rilis linker Mold 3.0, dikembangkan oleh LLVM lld

Linker Mold 3.0 telah dirilis dan dapat digunakan sebagai pengganti linker GNU yang lebih cepat dan transparan. Linux-sistem. Proyek ini dikembangkan oleh Rui Ueyama, penulis linker LLVM lld. Fitur utama Mold adalah kecepatan linking-nya yang sangat tinggi, secara signifikan mengungguli linker GNU gold dan LLVM lld (linking di Mold hanya setengah lebih cepat daripada sekadar menyalin file dengan utilitas cp). Kode tersebut ditulis dalam Rust dan didistribusikan di bawah lisensi MIT.

Mengurangi waktu penautan secara signifikan meningkatkan kegunaan proyek besar dengan mengurangi waktu tunggu selama pembuatan file yang dapat dieksekusi saat melakukan debugging dan pengujian perubahan. Motivasi untuk menciptakan Mold berasal dari frustrasi karena harus menunggu penautan selesai setelah setiap perubahan kode, kinerja buruk dari linker yang ada pada sistem multi-core, dan keinginan untuk mencoba arsitektur penautan yang pada dasarnya berbeda tanpa menggunakan model yang terlalu kompleks seperti penautan inkremental.

Mold mencapai kinerja tinggi dalam mengkompilasi file yang dapat dieksekusi dari sejumlah besar file objek yang disiapkan oleh kompiler dengan menggunakan algoritma yang lebih cepat, secara aktif memparalelkan operasi di seluruh inti CPU yang tersedia, dan menggunakan struktur data yang lebih efisien. Misalnya, Mold mengimplementasikan teknik untuk melakukan perhitungan intensif secara bersamaan dengan penyalinan file, memuat file objek ke dalam memori terlebih dahulu, menggunakan tabel hash cepat untuk resolusi simbol, memindai tabel relokasi dalam thread terpisah, dan menghilangkan duplikasi bagian yang digabungkan di berbagai file.

Cabang Mold 3.0 terkenal karena penulisan ulang basis kode dari C++ (C++20) ke Rust. Mold 3.0 dapat digunakan sebagai pengganti transparan untuk Mold 2.42.1, rilis C++ terakhir, dan mendukung semua opsi dan arsitektur target yang sebelumnya tersedia. Transisi ke Rust memungkinkan untuk melindungi proyek dari potensi masalah saat menangani file objek yang rusak—dalam situasi di mana versi C++ mengalami crash karena akses di luar batas, implementasi Rust berhenti pada tahap pemeriksaan batas. Kinerja implementasi Rust setara dengan versi C++.

Selain migrasi ke Rust, tujuan utama dalam mengembangkan cabang 3.0 adalah untuk meningkatkan kompatibilitas dengan GNU ld dan mempersiapkan proyek untuk digunakan sebagai linker default dalam distribusi. LinuxSistem build telah digantikan dengan Cargo, dan sistem pengujian telah digantikan dengan cargo test, menggantikan ctest. Pustaka oneTBB telah dihapus dari dependensi.

Sumber: opennet.ru

Beli hosting yang andal untuk situs dengan perlindungan DDoS, server VPS VDS 🔥 Beli hosting website andal dengan perlindungan DDoS, server VPS VDS | ProHoster