Asm.js kodu zamanında derlenip çalıştırılıyor mu? Neye derledim?
Farklı tarayıcılar asm.js kodunu farklı şekillerde derler. Ağustos 2015 itibariyle:
- Firefox, asm.js'yi makine koduna derler (ve aynı asm.js'nin gelecekteki yükleri için makine kodunu önbelleğe alır) [ 1 ].
- Windows 10'da deneysel bir bayrak olarak, Edge ayrıca asm.js [ 2 ] için bazı Zaman Öncesi doğrulama ve derleme yapacaktır .
- Chrome, kodu daha hevesle ayrıştırmak ve analiz etmek ve derleme buluşsallarını ayarlamak için asm.js'nin başlangıcındaki "asm kullan" yönergesini özellikle tanır.
- Safari, asm.js için özel bir işlem yapmaz.
Asm.js'nin metin ve wasm (web derlemesi) ikili olması dışında, 2 arasındaki farklar nelerdir?
asm.js yalnızca JavaScript'tir ve bu nedenle tam olarak JavaScript spesifikasyonuna göre davranmalıdır. Yeni bir standart olarak WebAssembly, JavaScript davranışının ideal olmadığı (performans veya derleme açısından) [ 3 ] bazı köşe durumlarını düzeltebilir . Gelecekte [ 4 ], WebAssembly aksi takdirde JavaScript'te ifade edilmesi zor olan özellikler ekleyebilecek.
Tarayıcıda çalışan diğer komut dosyası dilleri için bu ne anlama geliyor? Örneğin python alın,
- python kodu wasm için derlendi mi? veya
- python yorumlayıcısı (Cpython) wasm'de derlenmiş ve python'u yorumluyor mu?
V.1'de, Python'u bir tarayıcıda çalıştırmanın en basit yolu, söylediğiniz gibi bir Python yorumlayıcısını wasm'ye derlemek olacaktır. Bu, örneğin, Python GC'nin wasm kodunda çalıştığı ve wasm doğrusal belleğini manuel olarak yönettiği anlamına gelir. PyPy [ 5 ] ' e bir asm.js arka ucu eklemek için deneysel projeler zaten var (wasm için de işe yarayabilir). Şu anda, wasm'nin dinamik bağlanma gelecekteki özelliği tarafından ele alınabilecek asm.js sınırlamalarıyla karşılaşmaktadır. İleri giderek, wasm hem sağlamaya çalışır GC entegrasyonu ve JIT derleme desteği Web platformu daha etkin ve doğal entegrasyonunu sağlayacak her ikisi de.