WebAssembly (Wasm), 2017'deki ilk sürümünden bu yana önemli ilerlemeler kaydetti. Paylaşılan bellekler, SIMD, istisna işleme, kuyruk çağrıları, 64-bit bellekler ve çöp toplama (GC) desteği gibi özelliklerle genişleyerek C ve C++ gibi düşük seviyeli dillerin yanı sıra birçok başka dilin de web'i hedeflemesini sağladı. Bu gelişmeler, Wasm'ın yerel performansla arasındaki farkı daraltmasına yardımcı oldu ve web'de yeni uygulama türlerinin önünü açtı.
Ancak, tüm bu ilerlemelere rağmen WebAssembly'nin web'de daha geniş çapta benimsenmesini engelleyen temel bir sorun var: Wasm, web'de "ikinci sınıf bir dil" konumunda. Bu durum, geliştirici deneyimini olumsuz etkiliyor ve geliştiricilerin Wasm'ı yalnızca kesinlikle gerekli olduğunda kullanmasına neden oluyor. Genellikle JavaScript daha basit ve "yeterince iyi" bir çözüm olarak görülüyor. Bu da Wasm'ın faydalarını büyük şirketlerle sınırlıyor ve web topluluğunun geneline yayılmasını engelliyor.
WebAssembly'nin ikinci sınıf olmasının temel nedeni, web platformuyla yeterince sıkı entegre olmamasıdır. Wasm, web platformuyla doğrudan etkileşim kurmak yerine, JavaScript'in özel yeteneklerini kullanarak, yani JavaScript aracılığıyla iletişim kurar. Bu durum, kod yükleme ve Web API'lerini kullanma gibi konularda kendini gösterir. Örneğin, JavaScript kodları basit <script> etiketleriyle yüklenirken, Wasm kodları WebAssembly JS API'si kullanılarak manuel olarak yüklenip örneklendirilmelidir. Benzer şekilde, Wasm'ın Web API'lerine erişimi de JavaScript "tutkal kodu" gerektirir, bu da ek karmaşıklık ve performans maliyeti getirir. Makale, WebAssembly Components'ın bu durumu iyileştirebileceğine dair ipuçları veriyor.
WebAssembly'nin teknik yeteneklerindeki ilerlemelere rağmen, web platformuyla entegrasyon eksikliği nedeniyle geliştiriciler için hala zorluklar barındırıyor ve bu da geniş çaplı benimsenmesini engelliyor.