Beberapa hari lalu rilis versi baru Linker Mold 1.1 modern diumumkan, yang dapat digunakan sebagai pengganti transparan yang lebih cepat untuk penghubung GNU pada sistem Linux.
Dalam versi baru cetakan 1.1 ini adalah versi yang berisi fitur baru, perbaikan bug, dan peningkatan kinerja.
Tentang cetakan
Cetakan mendukung semua fitur tautan GNU dan memiliki kinerja yang sangat tinggi, karena tautan yang dibuatnya hanya dua kali lebih cepat dari sekadar menyalin file dengan utilitas cp.
Dengan cara ini mengurangi waktu kompilasi secara signifikan meningkatkan kenyamanan mengembangkan proyek besar dengan mengurangi waktu tunggu dalam proses pembuatan file yang dapat dieksekusi saat men-debug dan menguji perubahan.
Motivasi untuk membuat Mold adalah gangguan karena harus menunggu tautan selesai setelah setiap perubahan kode, serta rendahnya efisiensi linker yang ada dalam sistem multicore dan keinginan untuk menguji arsitektur link yang berbeda secara fundamental tanpa menggunakan model rumit yang tidak perlu seperti inkremental linking.
Performa tinggi dalam menautkan file yang dapat dieksekusi dari sejumlah besar file objek yang disiapkan oleh kompiler di Mold dicapai melalui penggunaan algoritma yang lebih cepat, paralelisasi operasi yang aktif antara inti CPU yang tersedia, dan penggunaan struktur data yang lebih efisien.
Misalnya Mold menerapkan teknik untuk melakukan perhitungan intensif secara bersamaan dengan penyalinan file, secara proaktif memuat file objek ke dalam memori, menggunakan tabel hash cepat saat menyelesaikan karakter, memindai tabel relokasi dalam aliran terpisah dan menghapus duplikasi bagian yang diulang dalam file yang berbeda.
Hal baru utama dari Mold 1.1
Dalam versi baru dari Cetakan 1.1 yang disajikan, disorot bahwa dukungan untuk pengoptimalan tahap tautan (LTO, Pengoptimalan Waktu Tautan).
Pengoptimalan LTO berbeda dengan mempertimbangkan status semua file yang terlibat dalam proses pembuatan, sementara mode pengoptimalan tradisional mengoptimalkan setiap file satu per satu dan tidak memperhitungkan kondisi pemanggilan fungsi yang ditentukan dalam file lain.
Sebelumnya, ketika file kode perantara (IR) GCC atau LLVM ditemukan, tautan ld.bfd atau ld.lld yang sesuai dipanggil, tetapi sekarang Mold menangani file IR sendiri dan menggunakan API plugin Linker, juga digunakan di GNU ld dan Penghubung emas GNU. Kecepatan saat LTO diaktifkan hanya sedikit lebih cepat daripada tautan lain, karena sebagian besar waktu dihabiskan untuk mengoptimalkan kode, bukan untuk menautkan.
Itu juga disorot itu opsi ditambahkan “–print-dependencies” dan “–print-dependencies=full” pUntuk menghasilkan informasi dalam format CSV tentang dependensi antara file input, yang dapat, misalnya, digunakan untuk menganalisis alasan koneksi saat menautkan file objek tertentu atau saat bekerja untuk meminimalkan ketergantungan antar file.
Perubahan lain yang menonjol dari eversi baru adalah bahwa dukungan untuk arsitektur RISC-V (RV64) pada platform host dan target.
Selain itu, kita juga dapat menemukan itu menambahkan opsi “–emit-relocs” untuk mengaktifkan penyalinan bagian relokasi alamat dari file input hingga file akhir untuk pengoptimalan lebih lanjut yang akan diterapkan pada tahap pasca-tautan.
Dari perubahan lain yang menonjol:
- Menambahkan opsi “–shuffle-sections” untuk mengacak urutan bagian sebelum memperbaiki alamatnya di ruang alamat virtual.
- Menambahkan opsi “–warn-once” dan “–warn-textrel”.
- Ketergantungan yang dihapus pada libxxhash.
Akhirnya jika Anda tertarik untuk mengetahui lebih banyak tentangnya, Anda dapat memeriksa detailnya di link berikut.
Bagaimana cara menginstal Cetakan?
Bagi mereka yang tertarik untuk dapat bekerja dengan Mold, mereka dapat memperoleh utilitas dengan mengunduh dan mengkompilasi kode sumber. Untuk melakukan ini, cukup buka terminal dan ketik berikut ini:
git clone https://github.com/rui314/mold.git
cd mold
git checkout v1.1.1
make -j$(nproc) CXX=clang++
sudo make install
Untuk mengetahui penggunaan Mould, Anda dapat berkonsultasi dengan dokumentasi di tautan ini.