· kaynak dev.to (home feed)
32 depo sayımı: Rust, mevcut C projelerini göç ettirerek değil, yeniden yazarak kazanıyor
16 eşleşmiş C/Rust projesinin sayımı, yalnızca iki amiral gemisi C deposunda Rust bulunmadığını, Rust tarafındaki benimsenmenin ise neredeyse tamamen FFI bağlamaları yerine baştan yeniden uygulamalarla gerçekleştiğini ortaya koyuyor.

Neden önemli
32 yaygın açık kaynak deposunun sayımı, C ve C++'tan Rust'a geçişin gerçek olduğunu ama çevresindeki politika tartışmasının ima ettiğinden çok daha dar kaldığını ortaya koyuyor: on altı amiral gemisi C projesinden yalnızca ikisinde hiç Rust var ve Rust'ın kazandığı yerlerde bunu kademeli dönüştürmeyle değil, tamamen yeniden yazımla yapmış.
Bu rakamlar, SILICON SCIENCE – Computer Science dergisinin 52. sayısındaki bir çalışmayı özetleyen dev.to'da yayımlanan bir analizden geliyor; gönderi, dergiyi otonom ajanlar tarafından hakemlik edilen, kamuya açık hakem yorumları ve yeniden üretilebilir makaleleri olan bir dergi olarak tanımlıyor.
Ne ölçüldü
Çalışma, on altı köklü C veya C++ projesini aynı nişi dolduran Rust alternatifleriyle eşleştiriyor; dört kategori var: sistem araçları (coreutils karşısında uutils, sudo karşısında sudo-rs, the_silver_searcher karşısında ripgrep, git karşısında gitoxide), ağ ve async kodu (OpenSSL karşısında rustls, zlib karşısında miniz_oxide, libuv karşısında tokio, ngtcp2 karşısında quiche), terminal ve veri araçları (vim karşısında helix, tmux karşısında zellij, htop karşısında bottom, jq karşısında jaq) ve güvenlik ile kriptografi (GnuPG karşısında rpgp, BoringSSL karşısında ring, OpenSSH karşısında russh, libsodium karşısında sodiumoxide).
Yazarlar, bu 32 ağacın sabitlenmiş anlık görüntülerinden 252 kaynak bileşeni Rust, C, C++ veya karma olarak sınıflandırmış. Gönderiye göre 36 hücreyi kapsayan elle etiketlenmiş bir doğrulama matrisi otomatik sınıflandırmayla tam olarak eşleşmiş ve tüm sayımın, kaydedilmiş anlık görüntülerden tek bir betikle bayt bayt aynı şekilde yeniden üretilebildiği bildiriliyor.
Mevcut C projeleri büyük ölçüde yerinde sayıyor
On altı C/C++ deposundan yalnızca ikisinde Rust var: yeni Rust nesne deposuyla ilgili kaynak bileşenlerin yüzde 10,5'ini içeren git ve ağaç içi bir Rust bileşeninin yüzde 11,1 oluşturduğu Google'ın BoringSSL'i. Diğer on dördü — coreutils, sudo, OpenSSL, zlib, libuv, vim, tmux, htop, jq, GnuPG, OpenSSH ve libsodium dahil — yüzde sıfır Rust ölçüyor.
Karma dil bileşenleri neredeyse yok: 252'de bir, yani yüzde 0,4 ve o tek örnek de git'in C çekirdeğinin Rust nesne deposu çalışmasıyla birleşimi. dev.to özetine göre bir bileşen içinde benimseme fiilen ya hep ya hiç; kimse aksi halde C olan bileşenlere Rust dosyaları serpiştirmiyor.
Rust'a geçiş sarmalamak değil, yeniden yazmak anlamına geliyor
Her eşin Rust tarafında, on altı projeden on beşi bağımsız yeniden uygulamalar. Tek istisna sodiumoxide; libsodium-sys crate'i üzerinden özgün libsodium'a bağlanıyor. Yinelenen bir mühendislik sorusuna popülasyon düzeyinde cevap olarak ifade edildiğinde bu, yüzde 93,75 tam yeniden yazım karşısında yüzde 6,25 FFI bağlaması demek.
Pratik sonucu şu: bir proje kendini eski bir aracın Rust sürümü olarak tanıttığında, bu neredeyse her zaman kendi hataları, performans profili ve API yüzeyi olan yeni bir kod tabanı — alttaki sınanmış C kütüphanesinin üzerine ince, bellek güvenli bir katman değil.
Bilinmesi gereken sınırlar
Sayımın kendisi bir boşluğa işaret ediyor: PostgreSQL, MySQL ve Nginx'in karşılaştırılabilir konumda, bakımı yapılan bir Rust karşılığı olmadığı için veritabanları ve web sunucuları hariç tutulmuş; dolayısıyla çalışma yalnızca C-Rust eşlerinin gerçekten var olduğu dört alanı kapsıyor. Doğrulama matrisi de 36 hücreyle küçük ve yayım mekanının ajan tabanlı hakemlik süreci, bağımsız bir doğrulamanın rakamları güçlendireceği kadar alışılmadık.
Neden önemli
2024'ten bu yana düzenleyiciler ve tedarikçiler — "Back to the Building Blocks" rehberiyle CISA ve ONCD, çekirdekte Rust ile Google, kendi benimsemesiyle Microsoft — bellek güvenli dilleri öncelik olarak dayatıyor. Bu sayım o sohbete kod düzeyinde bir gerçeklik sağlıyor: göçün gözlemlenebildiği yerlerde bileşen bileşen ilerliyor, dosya dosya değil; ve git'in nesne deposu ile BoringSSL'in kriptografisi gibi güvenlik açısından kritik iç kısımlarda yoğunlaşıyor. Bir C bileşenini Rust'ta yeniden yazıp yazmamayı tartan ekipler için veri, baskın desenin kendi liyakatiyle benimsenmek zorunda olan paralel ve eksiksiz bir yeniden uygulama olduğunu ima ediyor — bu alanlardaki amiral gemisi projeler ise en azından şimdilik dönüştürmeye yeni başlamış durumda.
- #rust
- #memory-safety
- #systems-programming
- #open-source
- #code-analysis