Ana içeriğe geç
Programlama

NetWasm C# kodlarını Rust'tan daha küçük boyutta derliyor

Öne çıkanlar

  • NetWasm 0.8.0, 47 bin 798 baytlık boyutuyla Rust'ın 53 bin 635 baytlık WebAssembly çıktısını geride bıraktı.
  • Brotli sıkıştırması uygulandığında NetWasm bileşeni Rust mu tengine göre yüzde 20,4 daha küçük paket boyutu sundu.
  • Yeni çöp toplama mimarisi, Mono AOT derlemesine kıyasla bellek temizleme testlerinde yüzde 40'a varan süre kazanımı sağladı.

Bağımsız bir .NET derleyicisi ve çalışma zamanı olarak geliştirilen NetWasm, C# kodlarını doğrudan WebAssembly ikililerine dönüştürerek Rust ile derlenen benzer uygulamalardan daha küçük dosya boyutlarına ulaştı. Yapılan testlerde temel bir WASI Preview 2 bileşeni, çalışma zamanı ve çöp toplayıcı dahil olmak üzere 47 bin 798 bayt boyutunda çıktı verdi. Rust 1.95.0 ile boyut odaklı derlenen eşdeğer senaryo ise 53 bin 635 bayt seviyesinde kalarak NetWasm çıktısının gerisinde kaldı.

NetWasm, standart .NET mimarisinde yer alan masaüstü CLR, Mono, dotnet.js ve uygulama kütüphanelerini dağıtım paketine taşımadan kapalı dünya derleme yöntemi kullanıyor. Sistem, Roslyn tarafından üretilen ara kodu doğrudan WebAssembly formatına dönüştürürken çalışma anı yansıtması gibi ağır bileşenleri dışarıda bırakıyor. Bellek yönetimi tarafında Compact, NetWasmGC ve Bump adında farklı çöp toplama stratejileri sunan altyapı, Mono AOT ile yapılan testlerde bellek ayırma ve temizleme süreçlerini yüzde 26 ile 40 arasında değişen oranlarda daha hızlı tamamladı.

Henüz 1.0 öncesi aşamada bulunan proje, C# 15 desteğinin yanı sıra JavaScript modülleri ve Web Worker entegrasyonu da sağlıyor. Geliştirici paketi standart dotnet arayüzü üzerinden proje oluşturma, test etme ve yayımlama adımlarını desteklerken harici bağımlılık kurulumu gerektirmiyor. Geliştirme ekibi, masaüstü .NET platformunun tamamını taşımak yerine taşınabilir ve küçük boyutlu bir çalışma zamanı hedeflediklerini belirterek WASI uyumluluğunu genişletmeye odaklanıyor.

Kaynak

Bu özet yapay zekâ ile hazırlanmıştır; ayrıntılar ve doğrulama için orijinal kaynağa başvurun.