WebAssembly nedir?
- WebAssembly, web tarayıcılarında güvenilmeyen istemci tarafı kodunu neredeyse yerel hızda çalıştırmak için tasarlanmış standartlaştırılmış bir komut kümesi ve bayt kodu biçimidir.
- Emscripten'in C/C++'tan JavaScript'e derleyicisinden evrilmiştir; ilk aşamada LLVM IR'yi JavaScript'e dönüştürerek C ve C++ kodunun web üzerinde çalışmasını sağlamıştır.
- Zamanla tarayıcı geliştiricileri, performans optimizasyonu için JavaScript'in basit bir alt kümesini oluşturmak üzere Emscripten projesiyle iş birliği yaptı ve bu daha sonra asm.js olarak standartlaştırıldı.
- Ardından JavaScript'in ek yükünden kaçınmak için bağımsız bir bayt kodu biçimi tasarlandı; bu da Wasm oldu.
- Son dönemde WebAssembly, tarayıcı dışındaki alanlarda da popülerlik kazanıyor; Fastly ve Shopify, WebAssembly motorlarını temel alan Edge Compute ve Functions ürünleri geliştiriyor.
- WebAssembly, çok çeşitli kaynak diller tarafından hedeflenebilmesi sayesinde eklenti ekosistemleri kurmak için cazip bir platformdur.
Neden bir WebAssembly yorumlayıcısı?
- Birçok yazılım mühendisi gibi, yeni bir yan proje başlatıp birkaç hafta sonra ilgisini kaybetme döngüsüne kapılmıştım.
- Daha uzun süre boyunca emek verebileceğim, aynı zamanda bilgi işlem yığınının daha alt seviyelerine maruz kalmamı sağlayacak büyük bir projeye ihtiyacım vardı.
- WebAssembly etrafındaki heyecan ilgimi çekti ve özel sistem çağrıları tasarlamaya imkân veren bir platform mühendisliği aracı olarak cazip göründü.
Semblance
- WebAssembly Core Specification'a aşina olmak için bir WebAssembly yorumlayıcısı yazmaya karar verdim.
- Projenin amacı öğrenmek olduğu için tüm opcode'ları uygulamayı ya da çekirdek test paketini geçmeyi planlamıyordum.
"Hello, World!" çalıştırabilirsem memnun olacaktım.
Sonuç
- Proje büyük bir başarı olarak değerlendiriliyor. Opcode kapsamı tam olmasa da basit bir
"Hello, World!" programını çalıştırabiliyor.
- Kod dağınık, yavaş, bellek sızıntıları var ve kötü niyetli modüllere karşı savunmasız olabilir ama çalışıyor.
- WebAssembly'nin çekirdek spesifikasyonu hakkında çok şey öğrendim ve bir mühendis olarak konfor alanımın dışına çıkabildim.
- Artık Wasmtime gibi endüstriyel düzeyde çalışma zamanlarına katkıda bulunabilecek kadar WebAssembly bilgisine sahip olduğumu hissediyorum.
1 yorum
Hacker News görüşleri
Bir Wasm yorumlayıcısını Scheme ile yazma deneyimim var; başkalarının bunu doğrudan yazdığını görmek sevindirici. Wasm sanıldığından daha az zor ve tüm komutları uygulamak gerekmiyor; sadece keyif alacak kadar denemenizi tavsiye ederim
Acemi sorusu:
WASM'i doğrudan yorumlama hakkında ilginç bir makale buldum
İlginç bir yaklaşım ve harika bir iş
Wasm-C-API'yi standart arayüz olarak benimsemek iyi bir fikir olurdu diye düşünüyorum
Tartışmalı bir nokta:
Orca'ya göz atmanızı tavsiye ederim. Katkı sunmak için iyi bir fırsat olabilir: https://orca-app.dev
WebAssembly'yi derinlemesine inceleyip sıfırdan bir yorumlayıcı kurma sürecini görmek gerçekten çok güzel
Harika bir yazı; WASM uygulamasına geri dönme motivasyonu veriyor
Gerçekten çok güzel bir çalışma