Mozilla va utiliser WASI pour tous les appareils, ordinateurs et systèmes d'exploitation

Bonjour à tous! Connected TestMace et nous continuons de vous familiariser avec les dernières nouvelles du monde de JavaScript. L'étape suivante est la traduction d'un article sur WASI, une technologie qui permet à WebAssembly d'être utilisé en dehors des navigateurs


Un format pour tout gouverner



Cette semaine, Mozilla a présenté un projet appelé WASI (WebAssembly System Interface) pour normaliser la façon dont le code WebAssembly interagit avec le système d'exploitation. Si le projet réussit, il remplira les mêmes fonctions que la machine virtuelle Oracle Java, mais beaucoup plus efficacement et avec des fonctionnalités avancées.


WebAssembly (WASM) est un format d'instructions binaires pour une machine virtuelle qui peut s'exécuter sur diverses architectures matérielles. Le code écrit dans de nombreux langages comme C / C ++, Go, Rust peut être compilé en code WASM.


De nombreux navigateurs Web ont introduit la prise en charge de WebAssembly, mais jusqu'à présent, il n'existait aucune norme permettant de l'utiliser avec l'extérieur du navigateur. Et maintenant, il y avait WASI.
"Il doit y avoir un moyen pour le code d'interagir avec le système en dehors du navigateur, c'est-à-dire une interface système", a expliqué le développeur de Mozilla, Lin Clark, dans ce billet de blog Mozilla Hacks. "La plate-forme WebAssembly ne dispose pas encore d'une telle méthode."


WASM + WASI


À l'aide de WASI, le code WASM peut être exécuté dans un navigateur ou tout autre environnement compatible, ce qui permet un développement multiplateforme indépendant du langage. Alors que l'interface du système d'exploitation portable (POSIX) vise à assurer la portabilité du code source du programme entre les systèmes d'exploitation de type UNIX, WASI est conçu pour prendre en charge la compatibilité des fichiers binaires compilés sur différents appareils et systèmes d'exploitation. La norme fournit un runtime universel dont la vitesse est proche de la native.


La machine virtuelle Java (JVM) fait la même chose, mais un plugin est requis pour exécuter le code Java dans le navigateur. Bien que la flexibilité du langage, telle que la plate-forme WebAssembly proposée, puisse être obtenue en Java à l'aide de GraalVM , l'écosystème Java est toujours à l'arrière-plan en raison d'événements liés aux allégations d'Oracle de violation de leur propriété intellectuelle.


Le format WASM, offrant un accès sécurisé à la mémoire et une validation pratique, présente un avantage sur les applets Java en termes de sécurité, bien qu'il puisse être attaqué pour modifier le flux de contrôle initial du programme . Il s'entend également bien avec C / C ++ et Rust.


Le chef d'équipe WebAssembly de Mozilla, Till Schneider, explique la différence entre WebAssembly et Java sur Twitter comme suit: "WebAssembly a été conçu pour évoluer des appareils miniatures aux énormes groupes de serveurs ou CDN. Le format est beaucoup plus indépendant du langage que Java, et la mise en œuvre est beaucoup moins gourmande en ressources. "


Si les avantages potentiels de WASI ne sont pas encore évidents pour vous, voici ce que l'un des créateurs de Docker Solomon Hykes a dit de lui: «Si WASM + WASI existait en 2008, il ne nous serait pas venu à l'esprit de créer Docker. L'assemblage Web côté serveur est l'avenir pour cela. Informatique. Il nous manquait une interface système standardisée. J'espère que WASI résoudra ce problème! "


Sur cette vague d'optimisme, Fastly a publié jeudi Lucet , un compilateur natif et un environnement pour exécuter le code WebAssembly WASM dans des environnements cloud. Il complète Mozilla Wasmtime, un environnement d'exécution de code WASM en dehors du navigateur.


Bien sûr, WASI est encore loin d'être idéal. WebAssembly serait également utile d'affiner davantage, par exemple, d'ajouter la possibilité d'accéder au DOM du navigateur . Bien que les développeurs aient déjà fait un excellent travail en fournissant un format binaire indépendant de la plate-forme. En attendant, je vous souhaite une expérience réussie avec Java.

Source: https://habr.com/ru/post/fr449554/


All Articles