Introduction

Firefox 148 marque la fin de l'optimisation par défaut d'asm.js dans SpiderMonkey, avec une suppression complète prévue dans les prochaines versions. Les sites utilisant asm.js ne seront pas affectés, car asm.js est un sous-ensemble de JavaScript qui continuera à fonctionner via le compilateur JIT.

Contexte Technique

asm.js a été créé pour répondre à la question de l'exécution de code à des vitesses natives sur le web, inspiré par les travaux sur NaCl et PNaCl. Il s'agissait d'un sous-ensemble de JavaScript statiquement typé que les moteurs pouvaient reconnaître et compiler en code natif. Cette approche a permis à des projets comme Unity et Unreal d'exécuter du code C/C++ sur le web en utilisant les technologies web standard.

asm.js a ouvert la voie à WebAssembly, qui a été introduit plus tard dans Firefox 52. Aujourd'hui, WebAssembly a réussi et la plupart des utilisations d'asm.js ont migré vers cette nouvelle technologie.

Analyse et Implications

La désactivation d'asm.js est motivée par le succès de WebAssembly et la réduction du temps de maintenance nécessaire pour supporter les deux technologies. De plus, la suppression d'asm.js réduit la surface d'attaque dans la machine virtuelle.

Les développeurs qui utilisent encore asm.js sont invités à recompiler leur code en WebAssembly pour bénéficier d'une exécution plus rapide et de fichiers binaires plus petits.

Perspective

L'avenir est prometteur avec WebAssembly, qui offre des performances et des avantages supérieurs à asm.js. Le compilateur WebAssembly optimisé, BaldrMonkey, est prêt à prendre le relais, tandis que le compilateur de base, RabaldrMonkey, assure une exécution fiable et efficace.