· kaynak Hacker News – Front Page (native)
Söküm analizi, Windows 11 sistem ikili dosyalarındaki Rust'ın gerçek ayak izini ölçtü
Windows 11 üzerinde yapılan bir ikili dosya sayımı, Microsoft'un Rust ile yeniden yazım çabasına somut sayılar kazandırıyor: neredeyse tamamı Rust olan iki servicing DLL'i, yüzde 57,9 ile DWriteCore ve sembol sayımlarının gözden kaçırdıklarını yakalayan bir yöntem.

Windows 11 kurulumu üzerinde yapılan uygulamalı bir söküm analizi — hunterworks.software'de yayımlanıp Hacker News'te gündeme gelen — yıllardır süregelen Microsoft açıklamalarının yerini ölçümlere bırakıyor: işletim sisteminin ikili dosyalarında gerçekte ne kadar Rust var ve tam olarak nerede.
Sayım nasıl yapıldı
Yazar, C:\Windows altındaki tüm .dll, .exe ve .sys dosyalarını — WinSxS, servicing ve SoftwareDistribution depoları hariç tutulunca 13.988 dosya — standart Rust araç zincirinin genellikle salt-okunur veride bıraktığı izler için taradı: derleyici commit hash'leri içeren /rustc/ yol önekleri, standart kütüphane kaynak yolları ve panic işleme sembolleri. Bu tarama 92 aday çıkardı; her biri Binocular söküm aracıyla tek tek açıldı; ayrıca önceki basın haberlerinde ilgi çeken iki DirectWrite ikili dosyası da incelendi.
Sadece dizgelerle hiçbir şey ölçülemeyeceği için ikinci bir ölçü çubuğu eklendi. Microsoft'un genel sembol sunucusu neredeyse tüm Windows ikili dosyolarının PDB'lerini barındırıyor ve bir genel PDB, her makine kodu bloğunun hangi object file tarafından katkıda bulunduğunu kaydeder. rustc'nin nesneleri MSVC derleyicisininkilerden kolayca ayırt edilebildiğinden — link-time optimizasyonuyla bir ikili dosyadaki Rust tarafı genellikle tek bir codegen unit'e toplanır — kod baytlarını kaynak satırı tahmin etmek yerine her derleyiciye doğrudan atfedebilirsiniz. Yazar sembolleri symchk ile çekti, llvm-pdbutil ile okudu ve nesne başına tabloları ekledi. Hariç tutulan bileşen depoları üzerinde yapılan ikinci bir tarama 44.889 dosyayı daha kapsadı; WinSxS geçersiz kılınan bileşen sürümlerini tuttuğundan, tek bir makinenin sunabileceği tek yapı geçmişi işlevini de görüyor.
Sembol saymak Rust'ı eksik sayar
Metodolojik açıdan tek başına ayakta duran bir bulgu var: Rust-mangled sembol adlarını saymak, dil karışımını ölçmek için neredeyse işe yaramaz. DWriteCore 2.1.1, 8.424 genel sembol açığa çıkarıyor ve hiçbiri Rust-mangled değil; oysa rustc kod baytlarının yüzde 57,9'unu üretmiş. Link-time optimizasyonu neredeyse tüm Rust fonksiyonlarını ikili dosya içinde tutuyor. Bu örneklemdeki istisna win32kbase_rs.sys: bir C++ host içine bağlanmak yerine düz bir C arayüzü dışa aktarıyor ve sembol tablosu 177 Rust fonksiyonunu adlandırıyor. Rust sembollerinin varlığını sürdürüp sürdürmemesi, ikili dosyanın ne kadar Rust içerdiğinin değil, nasıl bağlandığının bir özelliği.
İkili dosyalar ne içeriyor
- Daha önce kamuya açık hiçbir yazıda ele alınmamış iki servicing DLL'i, CloudRecoveryDownloadTool.dll ve UdiApiClient.dll, ilk 24H2 yapısından beri Rust taşıyor ve linker atfına göre yüzde 96,6 ile 96,2 Rust ölçüyor; yedi iç crate paylaşıyorlar.
- DWriteCore, incelenen her iki sevkedilen yapıda da yüzde 57,9 Rust. Buna karşılık System32\DWrite.dll hiç içermiyor: kontrol edilen 30.073 dizger arasında Rust ilişkili hiçbir dizge ve 454 object file arasında hiçbir rustc nesnesi yok — bu da Microsoft'un kendi belgelerindeki, ikisinin ayrı uygulamalar olduğu ifadesiyle tutarlı.
- NarratorMCAT.dll, Neil Soiffer'in açık kaynak crate'i MathCAT: Microsoft'un iç araç zinciriyle derlenmiş, bir Windows bileşeni olarak imzalanmış; genel kayıt defterinden alınmış 26 crate içeriyor ve ayakta kalan hiçbir Microsoft crate yolu yok.
- win32kbase_rs.sys yükleniyor ama kendi özellik tablosu boş; Rust GDI-region yolunun çalışıp çalışmayacağına karar veren anahtar, sürücüde değil C++ host'ta yaşıyor.
- Rust gibi görünen 83 dosya ise öyle değil: her biri bir shader derleyicisi gömülü Intel veya NVIDIA sürücüsü ve eşleşmeleri LLVM tamamen açıklıyor.
Microsoft'un rustc backend'ine dair bir ipucu
MathCAT bileşeni, Microsoft'un rustc_codegen_utc'yi kamuya açık olarak anlatmasından dört ay öncesine tarihli stable-utc adlı bir iç araç zinciri paketiyle derlenmiş. O açıklama 10 Eylül 2026'da geldi: Victor Ciura'nın Rust Foundation'daki konuk yazısı Rust'ı Microsoft'ta Tier-1 dil ilan etti ve backend'i ayrıntılı biçimde anlattı — Rust derleyicisini MSVC'nin UTC backend'ine bağlayan bu yapı, Rust 1.90'dan beri self-hosted; yüzden fazla Microsoft deposunda kullanılıyor; diller arası inlining ve hotpatch desteği sunuyor. Söküm analizi ayrıca utc ile derlenmiş ikili dosyanın, llvm kanalıyla derlenen aynı crate sürümünden yüzde 14 küçük olduğunu belirtiyor; araç zinciri tanımlamasını ise doğrudan bir okuma değil, paket adından çıkarılmış bir çıkarım olarak açıkça işaretliyor.
Neden önemli
Microsoft'un Windows'taki Rust sicili, ölçümlerden çok açıklamalardan ibaretti. The Register'ın Nisan 2023'te David Weston'ın BlueHat sunumuyla ilgili haberi, DWriteCore'da yaklaşık 152.000 satır Rust'a karşılık 96.000 satır C++, ayrıca açılıyordu ama bir bayrağın arkasında kalan 36.000 satırlık bir GDI portundan söz ediyordu. win32kbase_rs.sys, Microsoft'un küçük bir deneme dediği şey olarak Temmuz 2023'te sevkedildi; Check Point 2025'te bunun çalıştığını gösterdi; Sudo for Windows ise Şubat 2024'te açık kaynak Rust olarak geldi. Bu söküm analizi alıntıların yerini sevkedilmiş bitler üzerinde bayt düzeyinde atıfla değiştiriyor ve ortaya çıkan tablo kademeli: Rust gerçekten var ama bir avuç bileşende yoğunlaşmış durumda; kullanıcıların gerçekte yüklediği DirectWrite DLL'i hiç içermiyor ve iki neredeyse tam yeniden yazım, servicing altyapısında fark edilmeden duruyordu. Yöntem de yol kat ediyor — PDB object file atfı, sevkedilmiş herhangi bir ikili dosyadaki dil bileşimini denetlemenin tekrarlanabilir bir yolu ve sembol adı sayımının yarısından fazlasıyla kaçırdığı Rust'ı yakalıyor.
- #rust
- #windows
- #microsoft
- #binary-analysis
- #reverse-engineering