1 puan yazan GN⁺ 2025-01-25 | 1 yorum | WhatsApp'ta paylaş
  • Wild linker

    • Wild, yinelemeli geliştirme için çok hızlı linkleme hedefleyen bir araçtır.
    • Artımlı linkleme henüz uygulanmış değil, ancak şu anda da oldukça hızlı performans gösteriyor.
    • Prodüksiyon derlemelerinde GNU ld veya LLD gibi olgun linkleyicilerin kullanılması önerilir.
    • Geliştirme sırasında hızlı derleme süreleri istiyorsanız Wild'ı deneyebilirsiniz.
    • x86-64 Linux üzerinde geliştirme yapıyorsanız kullanılabilir; sorun yaşarsanız hata raporu göndermeniz önerilir.
  • Kurulum

    • Önceden derlenmiş binary'yi kurmak için sürümler sayfasındaki komutu kopyalayıp kullanabilirsiniz.
    • wild binary'sini yolunuza elle kopyalayabilirsiniz.
    • Kendiniz derleyip kurmak için cargo install --locked --bin wild --git https://github.com/davidlattimore/wild.git wild komutunu kullanın.
  • Varsayılan linker olarak kullanma

    • Rust kodu derlemelerinde Wild'ı varsayılan linker olarak kullanmak için ~/.cargo/config.toml dosyasına ayar ekleyin.
  • Soru-Cevap

    • Neden bir linker daha?
      • Mold zaten çok hızlı, ancak artımlı linklemeyi desteklemiyor. Wild ise artımlı linklemeyi hedefliyor.
      • Rust ile yazıldığı için artımlı linklemenin karmaşıklığını çözebileceği umuluyor.
    • Çalışan özellikler
      • Şu anda desteklenen platform/mimari: Linux üzerinde x86-64
      • Statik linklenmiş binary, dinamik linklenmiş binary ve paylaşılan nesne (.so dosyaları) çıktısı üretebilir
      • Rust proc-macro'larıyla uyumluluğu doğrulandı
      • crates.io üzerindeki popüler crate testlerini geçti
      • Debug bilgisi desteği var
    • Henüz desteklenmeyen özellikler
      • Artımlı linkleme, x86-64 dışındaki mimari desteği, çeşitli linker flag'leri desteği, Mac ve Windows desteği vb.
  • Benchmark

    • Wild'ın hedefi, artımlı linkleme sayesinde çok hızlı performans sunmaktır.
    • Artımlı olmayan linklemede de mümkün olduğunca hızlı performans hedefleniyor.
    • Benchmark sonuçlarına göre Wild, debug bilgisi olmadan çok hızlı performans gösteriyor.
    • Debug bilgisi eklendiğinde performans bir miktar düşüyor.
  • Rust kodunu linkleme

    • cargo test komutunu kullanarak crate'leri Wild ile derleyip test edebilirsiniz.
    • Clang derleyicisinin kurulu olması gerekir; GCC keyfi bir linker kullanımına izin vermez.
  • Katkı

    • Wild'a nasıl katkı sağlayabileceğiniz hakkında bilgi için CONTRIBUTING.md dosyasına bakın.
  • Destek

    • Bu projeye destek olursanız daha uzun süre tam zamanlı çalışılabilir.
  • Lisans

    • Apache License, Version 2.0 veya MIT lisansından birini seçebilirsiniz.

1 yorum

 
GN⁺ 2025-01-25
Hacker News yorumları
  • mold lisansını AGPL'den MIT'ye çevirdikten sonra yeni bir hızlı linker ihtiyacı azalmış olsa da, bu projenin ortaya çıkması şaşırtıcı. Bazı durumlarda mold'dan 2 kat daha hızlı olması dikkat çekici

  • Daha önce bu projeye bakmıştım ama henüz prodüksiyona hazır görünmüyor. Bu yüzden hâlâ mold kullanıyorum

  • macOS kullanıcıları için Apple 1-2 yıl önce yeni bir linker çıkardı ve Rust ile kullanırken config.toml dosyasına belirli bir ayar eklemek gerekiyor

  • C/C++ derleyicilerinin link aşaması olmadan tüm programı tek bir birim olarak derlemesi ilginç olurdu. Harici kütüphanelerin çoğu zaten dinamik olarak linklendiği için, link sürecini kaldırmak sorun yaratmayabilir

  • 2008'de Gold, 2015'te Lld, 2021'de mold derken hızlı linker'lara olan ilgi istikrarlı biçimde artıyor

  • Rust'ın popülerliği nedeniyle hızlı linker'lara ilgi arttı; Rust ikilileri link aşamasında çok zaman harcıyor. Bu sadece Rust'a özgü bir sorun değil, statik linkleme ve LLVM optimizasyonlarından kaynaklanıyor

  • John Levine'in "Linkers and Loaders" kitabı bu konuda iyi bir kaynak; birkaç yıl önce okuduğumda oldukça ilgi çekici bulmuştum

  • wild, mold ve ld performansını karşılaştırınca, iyi yapılandırılmış projelerde link süresinin büyük bir sorun olmadığı görülüyor

  • Performans karşılaştırmaları 2020 model bir System76 Lemur Pro dizüstünde çalıştırılmış; cihazda 4 çekirdek (8 iş parçacığı) ve 42 GB RAM var

  • Linker'ın ne olduğunu merak edenler de var

  • Linux çekirdeğini linkleyip linkleyemediğini soran bir soru vardı; bu, LLD için faydalı bir dönüm noktasıydı