WebAssembly (Wasm): Rust Kodunu Tarayıcıda Çalıştırma

  • Konbuyu başlatan Konbuyu başlatan irfo
  • Başlangıç tarihi Başlangıç tarihi

irfo

Moderatör
Top Poster Of Month
Katılım
7 Ocak 2026
Mesajlar
234
Tepkime puanı
2
Puanları
18
Rust ve WebAssembly (Wasm) birlikteliği, modern web geliştirme dünyasının en heyecan verici "güç birliği" olarak kabul edilir. Rust, bellek güvenliği ve performans odaklı yapısı sayesinde, JavaScript'in hız sınırlarını zorladığı yerlerde devreye girerek tarayıcı üzerinde "native" hızında uygulamalar çalıştırmanızı sağlar.

1. WebAssembly Nedir?​

WebAssembly, web tarayıcıları için geliştirilmiş, düşük seviyeli, ikili (binary) bir format dizisidir. JavaScript'in yerini almak için değil, onunla yan yana çalışmak için tasarlanmıştır.
  • Hız: Derlenmiş bir format olduğu için JavaScript'ten çok daha hızlı yüklenir ve çalışır.
  • Güvenlik: Tarayıcının güvenli "sandbox" ortamında çalışır.
  • Taşınabilirlik: Donanım veya işletim sistemi fark etmeksizin her modern tarayıcıda çalışır.

2. Neden Wasm için Rust?​

C++ veya Go gibi diller de Wasm'a derlenebilir, ancak Rust'ın iki büyük avantajı vardır:
  1. Garbage Collector (Çöp Toplayıcı) Yoktur: Bu, Wasm dosya boyutunun çok küçük olmasını ve bellek yönetiminin çok daha öngörülebilir olmasını sağlar.
  2. wasm-bindgen: Rust ve JavaScript arasındaki karmaşık veri alışverişini (string'ler, nesneler, diziler) basitleştiren muazzam bir araç setine sahiptir.

3. Temel Araç Seti​

Rust ile Wasm dünyasına girmek için üç ana araca ihtiyacınız vardır:
  • wasm-pack: Kodunuzu derleyen, npm paketi haline getiren ve JavaScript ile bağlanmasını sağlayan "hepsi bir arada" araçtır.
  • wasm-bindgen: Rust fonksiyonlarını JS tarafından çağrılabilir hale getiren kütüphanedir.
  • web-sys / js-sys: Tarayıcı API'larına (DOM, Fetch, Canvas, WebGL) Rust içinden erişmenizi sağlar.

4. İlk Wasm Modülünüz​

Rust tarafında kodunuzu şu şekilde hazırlarsınız:
Rust
Kod:
use wasm_bindgen::prelude::*;

// JavaScript'teki 'alert' fonksiyonunu içeri aktarır
#[wasm_bindgen]
extern "C" {
    fn alert(s: &str);
}

// Bu fonksiyonu JavaScript'ten çağrılabilir hale getirir
#[wasm_bindgen]
pub fn selamla(isim: &str) {
    alert(&format!("Merhaba WebAssembly, {}!", isim));
}

5. Kullanım Alanları​

Wasm her yerde kullanılmak için değildir. Şu senaryolarda Rust + Wasm fark yaratır:
  • Görüntü/Video İşleme: Tarayıcıda video editleme veya filtreleme.
  • Oyun Motorları: Unity veya özel motorların web üzerinde yüksek FPS ile çalışması.
  • Kriptografi: Karmaşık şifreleme algoritmalarının hızlı çalıştırılması.
  • Veri Görselleştirme: Milyonlarca veri noktasının Canvas/WebGL ile işlenmesi.

Özet​

ÖzellikJavaScriptRust (Wasm)
Tip SistemiDinamikStatik (Güvenli)
Performansİyi (JIT ile)Mükemmel (Native-like)
BoyutKüçük (Metin tabanlı)Küçük (Binary, GC yok)
DOM ErişimiDoğrudanweb-sys üzerinden
 
Geri
Üst