Tarayıcıların destekledikleri yeni bir teknoloji olarak uzun süredir beklenen bir teknolojik atılım olarak nitelendirilen WebAssembly konusunda hem kısa bir tanım yapmak, hem de gelişmelelerin konuyu bilenler tarafından buradan aktarılmasını sağlamak amacıyla bu soruyu açıyorum. Az önce açtığım Blazor Nedir sorusu da paralel teknolojiler oldukları için birbirleri ile iç içe ele alınması gereken konular.
Mozilla'nın yaptığı tanıma göre WebAssembly, güncel tarayıcıların destekledikleri ve özellik+performans anlamında yenilikler getiren bir web teknolojisi. Burada bir parantez açmakta da fayda var çünkü WebAssembly'yi henüz tamamlanmış bir teknoloji olarak nitelendirmek için biraz erken ve geliştirmeler devam ediyor. işlevsel olarak ise low level (C++ ya da Rust gibi) olarak bile yazılmış olan bir kodu Assembly hızında tarayıcıda çalıştırabilmenize imkan veriyor.
Normalde javascript ile kodlayarak tarayıcı üzerinde gerçekleştirebildiğimiz bu işlemleri artık javascript'in adımsal prosedürünün yol açtığı yavaşlamaya takılmadan gerçekleştirebiliyor olacağız. Tabi production seviyesinde bir uygulama çıkartıp ne zaman kullanılır emin değilim ama bekleyip göreceğiz. Haliyle burada akla gelen diğer soru da, node.js sayesinde her şeyi javascript kullanarak yapabilir hale gelmişken şimdi javascript'in pabu dama mı atılacak? Elbette hayor ama native masaüstü uygulaması hızında bir uygulamayı (oyun, hesap makinesi, artık aklınıza ne gelirse) tarayıcıda çalıştırmak isterseniz low-level bir dil bilmeniz ve bu şekilde kodlamanız gerekecek.
Kullanımı olarak ise, wasm (low-level programlama dili ile yazılmış kodların derlenmiş hali) dosyanızı javascript içerisinde fetch etmeniz (async de olabiliyor) gerekiyor. Sonrasında da geri dönen response ile kodlarn tarayıcı tarafına çalışır olarak geçmesini sağlamış oluyorsunuz.