Firefox 52 publié avec le support WebAssembly


Rendu 3D de la démo Zen Garden dans Firefox 52 avec support WebAssembly

Mozilla a publié Firefox 52 , le dernier navigateur prenant en charge le système d'exploitation Windows XP. Un certain nombre de modifications importantes ont été apportées : la connexion aux hotspots a été simplifiée, où vous devez d'abord vous connecter au navigateur, des avertissements de danger sont apparus si la page demande un mot de passe pour une connexion non sécurisée (pas HTTPS), la prise en charge des plugins NPAPI a disparu (sauf Flash, et la prise en charge complète restera dans la version ESR) fermé 28 vulnérabilités .

Mais rien ne peut se comparer à l'innovation principale et fondamentale - la prise en charge du langage de programmation de bas niveau WebAssembly (wasm) tel que l'assembleur, qui est appelé l' une des innovations les plus importantes de la plate-forme Web au cours de la dernière décennie. C'est ce qui manquait à JavaScript.

Webassembly



Les développeurs expliquent pourquoi il était nécessaire de créer WebAssembly . Le fait est que JavaScript a été initialement conçu comme un langage léger pour des scripts simples. Personne n'imaginait dans quoi il évoluerait et comment il commencerait à être appliqué. Il a été inventé pour les débutants en programmation - pour des choses simples comme écrire un formulaire sur une page Web.

Depuis lors, beaucoup de choses ont changé. Les applications Web modernes sont des programmes informatiques complexes avec du code client et serveur, dont la plupart sont écrits en JavaScript. Malgré les progrès dans le développement de JavaScript lui-même et toutes les tentatives des développeurs pour créer des moteurs efficaces pour une exécution rapide de JavaScript, rien n'en est sorti, c'est tout simplement physiquement impossible. JavaScript a des limites inhérentes. Le navigateur ne peut tout simplement pas exécuter ce code au moins aussi vite que le code natif du système d'exploitation.

Mozilla a été le premier à mûrir avant de développer une sorte de machine virtuelle dans un navigateur où vous pouvez exécuter du code de bas niveau - et il y a quelques années, asm.js a été publié en tant que démonstration (Google a expérimenté l' API Native Client ). La sous-langue asm.js s'est avérée si bonne qu'elle est devenue claire: nous devons nous associer à toutes les plus grandes sociétés de développement pour un projet commun qui fera avancer le Web.

Le langage WebAssembly de bas niveau peut fonctionner en conjonction avec JavaScript et permettre aux applications Web de s'exécuter avec des performances bien supérieures - presque comme les applications natives du système d'exploitation.

Maintenant, dans un navigateur, vous pouvez exécuter des jeux 3D haute performance, des systèmes de conception assistée par ordinateur (CAO), des éditeurs vidéo, des éditeurs graphiques, des visualisations scientifiques, une informatique gourmande en ressources, un encodage vidéo - tout.

Au fil du temps, de nombreuses applications Web existantes - messagerie, réseaux sociaux, éditeurs de texte - et frameworks JavaScript sont plus susceptibles de commencer à utiliser WebAssembly, ce qui augmentera considérablement la vitesse de téléchargement et augmentera considérablement leurs performances tout en travaillant.

Contrairement à d'autres approches, telles que Flash, qui nécessitent l'installation d'un plug-in dans un navigateur afin d'exécuter des applications à une vitesse comparable aux applications natives, WebAssembly s'intègre parfaitement dans la plate-forme Web standard. Il s'agit d'une norme ouverte et compatible intégrée aux navigateurs. Cela signifie que les développeurs peuvent intégrer les bibliothèques WebAssembly pour le calcul intensif en CPU (compression, détection des visages, physique) directement dans les applications Web existantes qui utilisent JavaScript.

WebAssembly est un standard ouvert développé par Mozilla, Google, Microsoft et Apple. Comme vous pouvez le voir, ce groupe représente les développeurs des quatre navigateurs les plus courants, vous pouvez donc compter sur devenir le wasm en tant que norme universelle. Google promet d'implémenter la prise en charge de WebAssembly dans la prochaine version de Chrome (57), Microsoft travaille déjà sur une implémentation dans Edge.

Le langage de bas niveau deviendra une sorte d'ajout à JavaScript et devrait finalement fonctionner partout où JS fonctionne: dans tous les navigateurs et dans tous les environnements d'exécution comme Node.js.

Qui bénéficiera de l'utilisation de WebAssembly? Il ne s'agit pas seulement d'écrire de nouvelles applications dans wasm. Grâce à des compilateurs comme Emscripten, des jeux entiers et des applications natives prêtes à l'emploi peuvent être portés sur le Web. Le code C / C ++ porté utilisant ce compilateur s'exécutera dans le navigateur à presque la même vitesse que l'application native. En plus de C / C ++, Rust fournit également un support préliminaire pour WebAssembly.

Par exemple, vous pouvez jouer à la démo Zen Garden (nécessite le navigateur Firefox 52, seule la version de bureau est actuellement prise en charge).


Les fonctions JavaScript appellent les fonctions WebAssembly et vice versa. Autrement dit, vous pouvez écrire dans un seul programme dans un langage JavaScript de haut niveau et parfois basculer vers C / C ++ / Rust selon les besoins.

Les développeurs commenceront à distribuer et à réutiliser les modules WebAssembly de bas niveau sans avoir à comprendre leur appareil, car ils utilisent désormais des bibliothèques JavaScript minifiées.

Mozilla note que par le niveau de réutilisation du code et de l'architecture logicielle, le mur entre les applications natives et Web commence à s'effondrer, et ce n'est que le début. Les outils de développement, les débogueurs et les compilateurs continueront d'évoluer, tout comme la compatibilité, les performances et les fonctionnalités de WebAssembly. Par exemple, le plan de Mozilla consiste désormais à implémenter la prise en charge du multithreading SIMD et de la concurrence.

«D'une certaine manière, WebAssembly change ce que signifie un développeur Web», écrit David Bryant, responsable du développement de la plate-forme chez Mozilla, «car il modifie les propriétés fondamentales du Web.»

En fait, il est désormais possible de porter des programmes C / C ++ pour les exécuter dans un navigateur, et dans un avenir proche, la même chose peut être faite pour les langages dans lesquels les applications mobiles sont écrites - Java, Swift, C #. Tous deviendront compatibles avec la plate-forme Web standard. Il s'avère que, dans un sens, tous les programmeurs deviendront éventuellement des développeurs Web.

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


All Articles