Grâce à une nouvelle technologie de compilation, le navigateur Firefox 58 de Mozilla, dont la sortie est prévue aujourd’hui 23 janvier, permettra de rendre le format de code portable WebAssembly encore plus rapide. Comme l’explique le site de développeurs MDN web docs, « le code WebAssembly est un langage bas niveau, similaire à l'assembleur, qui permet d'atteindre des performances proches des applications natives tout en fonctionnant sur le Web ». Le mode de compilation en continu de Firefox devrait accroître encore la performance du code. Le navigateur est même capable de compiler le code WebAssembly pendant le téléchargement, ce qui signifie que la compilation démarre plus tôt et son exécution s’achève également plus tôt. Firefox 58 dispose aussi d'un compilateur à deux niveaux, et son compilateur de référence compile le code 10 à 15 fois plus vite que le compilateur d’optimisation.

En combinant la compilation en continu avec la compilation à deux niveaux, Firefox arrive à compiler le code WebAssembly plus rapidement qu'il ne peut être fourni par le réseau. Mozilla indique que, sur une machine de bureau, son navigateur a pu compiler 30 à 60 mégaoctets de code WebAssembly par seconde. « Comparativement, sur un périphérique mobile « moyen », le code WebAssembly compile à 8 mégaoctets par seconde, ce qui est déjà plus rapide que la vitesse de téléchargement de n'importe quel réseau mobile », a déclaré Lin Clark, évangéliste senior de Mozilla. Celle-ci explique qu’il est plus simple et plus rapide de décoder WebAssembly que d'analyser JavaScript. En divisant le décodage et la compilation en plusieurs threads, il serait possible d’accélérer encore la compilation de référence.

Optimiser l'execution du code 

Le code de référence compilé peut démarrer l'exécution du code sur le thread principal sans faire de pause pour la compilation. Pendant ce temps-là, les autres threads travaillent sur une version plus optimisée du code, lequel pourra alors être remplacé pour que le code soit plus rapide. Les futurs développements prévoient que le décodage et la compilation seront appliqués au premier chargement de page, le code machine étant mis en cache dans le cache HTTP. Quand l’URL concernée est appelée, le code machine précompilé est envoyé, et le temps de chargement des pages suivantes est réduit. Le bytecode JavaScript sera mis en cache de cette façon dans Firefox 58. Mais, il faudra d’autres développements avant que le navigateur puisse mettre en cache le code machine pour les fichiers WebAssembly.

Les développeurs qui utilisent les versions Nightly ou Beta de Firefox peuvent tester la technologie sur leur propre périphérique en cliquant sur ce lien.