Ana içeriğe geç

WebAssembly

Okunuşu
vebısembli
Güncellendi 2 dk okuma

Bu sayfayı paylaşın

Bağlantıyı gönderin, tanımı bağlantısıyla birlikte alıntılayın ya da kendi sitenizde bir kart olarak gösterin.

https://softwaredictionary.org/tr/terimler/webassembly

Kısaca

WebAssembly, web tarayıcılarında yerele yakın hızda çalışan ve C++, Rust, Go gibi dillerle hızlı web kodu yazılmasını sağlayan kompakt bir ikili kod biçimidir.

WebAssembly nedir?

Genellikle Wasm diye kısaltılan WebAssembly, tarayıcıların JavaScript ile birlikte çalıştırabildiği düşük seviyeli bir komut biçimidir. Geliştiriciler onu nadiren elle yazar; bunun yerine C, C++, Rust, Go veya C# gibi dillerde yazılmış kodu bir .wasm dosyasına derler; tarayıcı da bu dosyayı indirir, doğrular ve hızlı makine koduna dönüştürür.

Wasm, görsel ve video düzenleme, 3D oyunlar, tasarım ve CAD araçları, ses işleme, bilimsel hesaplama ve tarayıcıda yapay zekâ modelleri çalıştırma gibi tek başına JavaScript için fazla ağır işler için tasarlanmıştır. Ayrıca ekiplerin başka dillerde yazılmış mevcut kütüphaneleri JavaScript'e yeniden yazmak yerine web'de yeniden kullanmasını sağlar.

Bir Wasm modülü, sayfaya, ağa ya da dosyalara doğrudan erişimi olmayan bir sandbox içinde çalışır; yalnızca JavaScript'in ona açıkça verdiklerini kullanabilir. JavaScript modülü yükler, dışa aktarılmış fonksiyonlarını çağırır ve DOM'u yönetir; ikisi böylece ortak çalışır. JavaScript'i müşterilerle konuşan yönetici, WebAssembly'yi ise arka odada ağır hesapları yapan uzman olarak düşünebilirsiniz.

Yaygın bir yanılgı, WebAssembly'nin JavaScript'in yerini almak için tasarlandığıdır. O bir tamamlayıcıdır: web arayüzü kodunun çoğu hâlâ JavaScript ya da TypeScript ile yazılır, Wasm ise performansın kritik olduğu kısımları üstlenir. WebAssembly tarayıcıların dışında da, sunucularda, uç (edge) platformlarında ve eklenti sistemlerinde çalışır; orada WebAssembly System Interface (WASI) ona dosyalara ve diğer sistem kaynaklarına kontrollü erişim verir.

Önemli noktalar

  • WebAssembly (Wasm), yerele yakın hızda çalışan ikili bir biçimdir.
  • C++, Rust ve Go gibi dillerdeki kod Wasm'a derlenebilir.
  • Güvenli bir sandbox içinde çalışır ve JavaScript ile birlikte kullanılır.
  • Oyunlar, medya düzenleme ve tarayıcı içi yapay zekâ gibi ağır işlere uygundur.
  • WASI, Wasm'ın tarayıcı dışında, sunucularda ve uçta çalışmasını sağlar.

Örnek

JavaScript'ten bir WebAssembly modülü yüklemekjavascript
// Load a compiled module (for example, one written in Rust or C++)
const { instance } = await WebAssembly.instantiateStreaming(
  fetch("/math.wasm")
);

// Call a function exported by the module like a normal JS function
const result = instance.exports.add(2, 3);
console.log(result); // 5

Sık sorulan sorular

WebAssembly, JavaScript'in yerini alacak mı?

Hayır. WebAssembly, JavaScript'in yerini almak için değil, onunla birlikte çalışmak için tasarlanmıştır. Arayüz işlerinin ve DOM erişiminin çoğunu hâlâ JavaScript üstlenir; Wasm ise hesaplama yoğun kısımları hızlandırır.

WebAssembly, JavaScript'ten hızlı mıdır?

Sayı işleme, görüntü işleme veya fizik gibi işlemci yoğun işlerde WebAssembly genellikle daha hızlı ve daha öngörülebilirdir. Tipik arayüz kodunda ise modern JavaScript motorları zaten hızlıdır ve ikisi arasında veri taşımanın da kendi maliyeti vardır.

WebAssembly DOM'a erişebilir mi?

Doğrudan erişemez. Bir Wasm modülü yalnızca JavaScript'in kendisine sağladığı fonksiyonları çağırabilir; bu yüzden DOM güncellemeleri, çoğu zaman derleyici araç zinciri tarafından üretilen yapıştırma koduyla JavaScript üzerinden yapılır.

İlgili sayfalar

Bu sayfada bir hata ya da eksik mi gördünüz?Düzeltme önerin

Daha fazla

Ayarlar