Rilis stabil pertama dari Mold linker, yang dikembangkan oleh LLVM lld

Rui Ueyama, penulis linker LLVM lld dan kompiler chibicc, mempresentasikan rilis stabil pertama dari linker Mold berkinerja tinggi yang baru, yang terasa lebih cepat daripada linker emas GNU dan LLVM lld dalam kecepatan menghubungkan file objek. Proyek ini dianggap siap untuk implementasi produksi dan dapat digunakan sebagai pengganti GNU linker yang lebih cepat dan transparan di sistem Linux. Rencana untuk rilis besar berikutnya termasuk menyelesaikan dukungan untuk platform macOS, setelah itu pekerjaan mengadaptasi Mold untuk Windows akan dimulai.

Cetakan ditulis dalam C++ (C++20) dan dilisensikan di bawah AGPLv3, yang kompatibel dengan GPLv3, tetapi tidak kompatibel dengan GPLv2, karena memerlukan perubahan terbuka saat mengembangkan layanan jaringan. Pilihan ini dijelaskan oleh keinginan untuk memperoleh dana pengembangan - penulis bersedia menjual hak atas kode untuk diberi lisensi ulang di bawah lisensi permisif, seperti MIT, atau memberikan lisensi komersial terpisah bagi mereka yang tidak puas dengan AGPL.

Mold mendukung semua fitur linker GNU dan memiliki kinerja yang sangat tinggi - penautan dilakukan dengan kecepatan hanya setengah dari kecepatan menyalin file dengan utilitas cp. Misalnya, saat membuat Chrome 96 (ukuran kode 1.89 GB), dibutuhkan 8 detik untuk menautkan file yang dapat dieksekusi dengan debuginfo di komputer 53-inti menggunakan GNU gold, LLVM lld - 11.7 detik, dan Mold hanya 2.2 detik (26 kali lebih cepat dari emas GNU). Saat menghubungkan Clang 13 (3.18 GB), dibutuhkan 64 detik di GNU gold, 5.8 detik di LLVM lld, dan 2.9 detik di Mold. Saat membuat Firefox 89 (1.64 GB), dibutuhkan 32.9 detik di GNU gold, 6.8 detik di LLVM lld, dan 1.4 detik di Mold.

Rilis stabil pertama dari Mold linker, yang dikembangkan oleh LLVM lld

Mengurangi waktu pembuatan dapat secara signifikan meningkatkan kenyamanan pengembangan proyek besar dengan mengurangi waktu tunggu dalam proses menghasilkan file yang dapat dieksekusi saat melakukan debug dan menguji perubahan. Motivasi pembuatan Mold adalah rasa frustrasi karena harus menunggu tautan selesai setelah setiap perubahan kode, buruknya kinerja tautan yang ada pada sistem multi-inti, dan keinginan untuk mencoba arsitektur tautan yang berbeda secara mendasar tanpa menggunakan model yang terlalu rumit seperti itu. sebagai tautan tambahan.

Performa tinggi dalam menghubungkan file yang dapat dieksekusi dari sejumlah besar file objek yang disiapkan kompiler di Mold dicapai dengan menggunakan algoritme yang lebih cepat, paralelisasi aktif operasi antara inti CPU yang tersedia, dan penggunaan struktur data yang lebih efisien. Misalnya, Mold mengimplementasikan teknik untuk melakukan perhitungan intensif saat menyalin file, memuat file objek ke dalam memori, menggunakan tabel hash cepat untuk resolusi karakter, memindai tabel relokasi di thread terpisah, dan menghapus duplikasi bagian gabungan yang diulangi di file berbeda.

Sumber: opennet.ru

Tambah komentar