---
title: "C# Artık WASM Boyutunda Rust'ı Geride Bırakıyor"
url: https://blog.edumints.com/c-artik-wasm-boyutunda-rust-i-geride-birakiyor
category: "Backend"
date: 2026-10-21T09:04:59.294Z
publisher: Edumints Blog
lang: tr-TR
source_name: "Hacker News"
source_url: https://github.com/zion-sati/NetWasm
---

# C# Artık WASM Boyutunda Rust'ı Geride Bırakıyor

## NetWasm: WebAssembly ve WASI İçin Bağımsız .NET

**NetWasm**, C# ve .NET CIL kodlarını doğrudan küçük ve bağımsız **WebAssembly (Wasm)** çıktılarına derleyen bağımsız bir derleyici, CoreLib, çalışma zamanı (runtime) ve SDK çözümüdür. Geleneksel yaklaşımların aksine üretim ortamına masaüstü CLR, Mono, `dotnet.js` veya uygulama DLL dosyalarını taşımaz. Bu mimari tercih, bulut tabanlı mikroservisler, sunucusuz (serverless) fonksiyonlar ve uç (edge) bilişim senaryoları geliştiren yazılımcılar için başlangıç sürelerini ve dağıtım paketlerini radikal biçimde küçültme fırsatı sunar.

## WASM Boyutunda C# Artık Rust'ı Geçiyor

Aynı "42 yazdırma" (`print-42`) iş yükünde ve boyut odaklı **WASI Preview 2 Bileşeni** ayarlarında **NetWasm**, çalışma zamanı ve hassas (precise) **Compact Garbage Collector (GC)** dahil olmasına rağmen **Rust**'tan daha küçük çıktılar üretmektedir. Ham boyutta **%10,7**, Brotli-11 sıkıştırmasıyla ise **%19,5** daha küçüktür:

- **NetWasm (Compact GC):** 47.895 B ham Wasm, 13.660 B Brotli-11 (WASI P2 Bileşeni; hassas GC dahil)
- **Rust 1.95.0 (Boyut profili):** 53.635 B ham Wasm, 16.963 B Brotli-11 (Eşleştirilmiş WASI P2 Bileşeni referansı)
- **Kotlin 2.4.0 (wasmWasi):** 79.293 B ham Wasm, 22.655 B Brotli-11 (P1 bağlamı; GC ana motor tarafından sağlanır)
- **TinyGo 0.39.0:** 93.043 B ham Wasm, 26.931 B Brotli-11 (P1 bağlamı; hassas GC yapılandırılmış)

Burada **Rust**, aynı iş yükü ve çıktı biçimini kullandığı için ana karşılaştırma noktasıdır. **Kotlin/Wasm** ve **TinyGo** genel ayak izi tablosunu gösterse de hedefleri ve çalışma zamanı sınırları farklıdır. Yazılım mühendisliği perspektifinden bakıldığında bu sonuç, genel bir dil sıralaması değil ölçülü bir iş yükü/profil başarısıdır; ancak yönetimli (managed) ve çöp toplayıcılı bir dilin bile doğru AOT (Ahead-of-Time) tasarımıyla sistem dilleriyle boyut açısından yarışabileceğini kanıtlar.

## Mono AOT'den Daha Hızlı Performans

Apple M1 Max üzerinde **Wasmtime 49.0.3** ile yapılan 15 çalıştırmanın medyan sonuçlarına göre **NetWasm**, aynı C# kaynak kodundan derlenen bellek tahsisi (allocation) ve çöp toplama (GC) testlerinde Microsoft'un varsayılan Release yapılandırmasındaki **Mono AOT** (`wasi-wasm` hedefi) çözümünden belirgin şekilde daha hızlıdır:

- **Tam işlem (Full transaction):** NetWasm ile 43,9 ms iken Mono AOT (.NET 10) ile 59,1 ms (**%26 daha az süre**)
- **Korunan nesne grafiği (Retained object graph):** NetWasm ile 8,8 ms iken Mono AOT (.NET 10) ile 14,2 ms (**%38 daha az süre**)
- **UI değişimi (UI churn):** NetWasm ile 17,6 ms iken Mono AOT (.NET 10) ile 29,1 ms (**%40 daha az süre**)

Ayrıca **NetWasmGC**, ilk iki iş yükünde masaüstü **.NET 11 JIT** derleyicisinden (sırasıyla 49,9 ms ve 9,7 ms) bile daha az zaman harcamaktadır; yalnızca UI değişiminde JIT (8,6 ms) daha hızlı kalmaktadır. Geliştiriciler için buradaki en önemli pratik çıkarım, hedef platforma (WASI/Wasm) özel optimize edilmiş bir çalışma zamanı ve GC tasarımının hem dosya boyutunda hem de çalışma hızında geleneksel genel amaçlı araç zincirlerine kıyasla ciddi verimlilik sağlamasıdır.

---

**Kaynak:** Hacker News (https://github.com/zion-sati/NetWasm)
**Yayıncı:** [Edumints Blog](https://blog.edumints.com) · Alıntılarken bu URL'ye bağlantı verin: https://blog.edumints.com/c-artik-wasm-boyutunda-rust-i-geride-birakiyor
