Lanskap pengembangan untuk linker telah kedatangan pemain baru dengan diperkenalkannya Wild, sebuah linker berbasis Rust yang menunjukkan peningkatan kinerja luar biasa dibandingkan solusi yang ada. Meskipun masih dalam tahap awal, Wild telah menarik perhatian komunitas dengan mencapai kecepatan hingga dua kali lebih cepat dari Mold dalam beberapa skenario, menandai kemajuan signifikan dalam teknologi linking.
Terobosan Kinerja
Benchmark awal Wild menunjukkan hasil yang mengesankan, terutama dalam build non-debug. Pengujian komunitas mengungkapkan bahwa Wild mengungguli linker yang ada secara signifikan ketika melakukan linking rustc-driver dan clang tanpa informasi debug. Keunggulan kinerja ini telah memicu minat yang besar, terutama mengingat bahwa Mold sebelumnya dianggap sebagai opsi tercepat yang tersedia.
Sepertinya Anda membangun dari awal. Dalam kasus tersebut, sebagian besar waktu akan dihabiskan untuk mengompilasi kode, bukan linking. Kasus untuk linker cepat paling kuat ketika melakukan pengembangan iteratif.
Perbandingan Waktu Linking (rustc-driver tanpa info debug):
- GNU ld (2.38): 20.774ms
- gold (2.38): 6.796ms
- lld (18.1.8): 1.601ms
- mold (2.34.1): 946ms
- wild (2024-11-30): 486ms
Dorongan untuk Incremental Linking
Pembeda utama untuk Wild adalah dukungan yang direncanakan untuk incremental linking, fitur yang secara khusus tidak ada pada linker modern lainnya termasuk Mold. Komunitas telah menyoroti hal ini sebagai kesenjangan signifikan dalam alat pengembangan Linux, terutama jika dibandingkan dengan linker Microsoft, yang telah mendukung incremental linking selama beberapa dekade. Kemampuan ini dapat secara substansial meningkatkan siklus pengembangan dengan hanya melakukan relinking pada komponen yang berubah daripada seluruh program.
Peran Rust dalam Sistem Kompleks
Pemilihan Rust untuk mengimplementasikan Wild telah menghasilkan diskusi yang signifikan. Anggota komunitas menunjukkan bahwa sistem tipe yang kuat dan jaminan keamanan Rust membuatnya sangat cocok untuk mengelola kompleksitas incremental linking. Meskipun ada perdebatan tentang perlunya linker lain setelah relisensing MIT Mold, fokus pada incremental linking dan fitur keamanan Rust menghadirkan kasus yang meyakinkan untuk pengembangan Wild.
Keterbatasan Saat Ini
Terlepas dari kinerjanya yang menjanjikan, Wild masih dalam pengembangan awal dengan beberapa keterbatasan. Saat ini hanya mendukung x86-64 pada Linux, tidak memiliki dukungan LTO (Link Time Optimization), dan belum mengimplementasikan fitur incremental linking yang direncanakan. Konsensus komunitas menyarankan untuk menunggu sebelum mengadopsi Wild di lingkungan produksi, meskipun kemajuan pengembangannya terus dipantau dengan cermat.
Keterbatasan Saat Ini pada Wild:
- Hanya mendukung x86-64 pada Linux
- Belum ada dukungan linking bertahap
- Dukungan flag linker yang terbatas
- Tidak ada dukungan skrip linker
- Tidak ada dukungan untuk Mac/Windows
- Tidak ada dukungan LTO
Fokus Pengembangan
Penekanan proyek pada kinerja waktu pengembangan daripada build produksi telah mendapat sambutan dari para pengembang. Fokus ini selaras dengan kebutuhan alur kerja pengembangan modern, terutama dalam proyek Rust di mana waktu linking dapat menjadi bottleneck selama pengembangan iteratif.
Catatan Teknis:
- LTO (Link Time Optimization): Teknik kompilasi yang memungkinkan compiler untuk mengoptimalkan lintas beberapa file sumber
- Incremental linking: Teknik yang hanya melakukan relinking pada bagian kode yang berubah daripada seluruh program
- RAII (Resource Acquisition Is Initialization): Idiom pemrograman yang digunakan dalam Rust untuk mengelola sumber daya
Referensi: Wild Linker