Wild, alat linker cepat untuk Linux
(github.com/davidlattimore)-
Linker Wild
- Wild adalah alat yang menargetkan proses linking yang sangat cepat untuk pengembangan yang iteratif.
- Incremental linking memang belum diimplementasikan, tetapi saat ini pun performanya sudah cukup cepat.
- Untuk build produksi, disarankan memakai linker yang sudah matang seperti GNU ld atau LLD.
- Jika menginginkan waktu build yang cepat saat pengembangan, Wild layak dicoba.
- Dapat digunakan jika Anda sedang mengembangkan di x86-64 Linux, dan jika menemui masalah disarankan untuk mengirim bug report.
-
Instalasi
- Untuk memasang binary prabuild, Anda bisa menyalin perintah dari halaman rilis dan menggunakannya.
- Anda juga bisa menyalin binary
wildke path secara manual. - Untuk build dan instalasi langsung, gunakan perintah
cargo install --locked --bin wild --git https://github.com/davidlattimore/wild.git wild.
-
Menggunakannya sebagai linker default
- Untuk menggunakan Wild sebagai linker default saat membangun kode Rust, tambahkan pengaturan ke
~/.cargo/config.toml.
- Untuk menggunakan Wild sebagai linker default saat membangun kode Rust, tambahkan pengaturan ke
-
Tanya Jawab
- Mengapa perlu linker lain lagi?
- Mold memang sudah sangat cepat, tetapi tidak mendukung incremental linking. Wild menargetkan incremental linking.
- Karena ditulis dengan Rust, diharapkan ia bisa mengatasi kompleksitas incremental linking.
- Fitur yang sudah berfungsi
- Platform/arsitektur yang saat ini didukung: x86-64 di Linux
- Dapat menghasilkan binary statically linked, binary dynamically linked, dan shared object (file
.so) - Kompatibilitas dengan Rust proc-macros sudah dikonfirmasi
- Lulus pengujian pada crate-crate populer di crates.io
- Mendukung informasi debug
- Fitur yang belum didukung
- Incremental linking, dukungan arsitektur selain x86-64, dukungan berbagai link flag, dukungan Mac dan Windows, dan sebagainya
- Mengapa perlu linker lain lagi?
-
Benchmark
- Tujuan Wild adalah memberikan performa yang sangat cepat melalui incremental linking.
- Wild juga menargetkan performa secepat mungkin untuk linking non-incremental.
- Hasil benchmark menunjukkan bahwa tanpa informasi debug, Wild menunjukkan performa yang sangat cepat.
- Jika informasi debug disertakan, performanya sedikit menurun.
-
Linking kode Rust
- Anda dapat membangun dan menguji crate dengan Wild menggunakan perintah
cargo test. - Compiler Clang harus terpasang, karena GCC tidak mengizinkan penggunaan linker sembarang.
- Anda dapat membangun dan menguji crate dengan Wild menggunakan perintah
-
Kontribusi
- Untuk informasi tentang cara berkontribusi ke Wild, lihat CONTRIBUTING.md.
-
Sponsor
- Dengan mendukung proyek ini, pekerjaan penuh waktu pada proyek ini bisa dilanjutkan lebih lama.
-
Lisensi
- Dapat memilih Apache License, Version 2.0 atau lisensi MIT.
1 komentar
Komentar Hacker News
Meski kebutuhan akan linker cepat baru berkurang setelah mold mengubah lisensinya dari AGPL ke MIT, kemunculan proyek ini tetap mengejutkan. Fakta bahwa dalam beberapa kasus ia 2x lebih cepat daripada mold cukup menarik perhatian
Saya pernah melihat proyek ini sebelumnya, tetapi tampaknya belum siap untuk production. Jadi saya masih menggunakan mold
Untuk pengguna macOS, Apple merilis linker baru 1–2 tahun lalu, dan jika digunakan bersama Rust, perlu menambahkan pengaturan tertentu ke
config.tomlAkan terasa segar jika compiler C/C++ membangun seluruh program sebagai satu unit tanpa tahap linking. Sebagian besar library eksternal ditautkan secara dinamis, jadi menghapus proses linking seharusnya tidak menjadi masalah
Minat terhadap linker cepat terus meningkat, seperti terlihat dari Gold pada 2008, Lld pada 2015, dan mold pada 2021
Popularitas Rust meningkatkan minat terhadap linker cepat, dan binary Rust memang memakan banyak waktu pada tahap linking. Ini bukan masalah khusus Rust, melainkan akibat static linking dan optimisasi LLVM
"Linkers and Loaders" karya John Levine adalah buku yang bagus terkait topik ini, dan saat membacanya beberapa tahun lalu rasanya sangat menarik
Hasil perbandingan performa wild, mold, dan ld menunjukkan bahwa pada proyek yang terstruktur dengan baik, waktu linking bukan masalah besar
Benchmark performa dijalankan pada laptop System76 Lemur Pro model 2020 dengan 4 core (8 thread) dan RAM 42GB
Ada juga orang yang penasaran apa itu linker
Ada pertanyaan apakah ini bisa menautkan kernel Linux, dan itu merupakan tonggak penting yang berguna bagi LLD