1 points par GN⁺ 2023-12-19 | 1 commentaires | Partager sur WhatsApp
  • Wasm3 est un interpréteur WebAssembly rapide et vise à être un runtime WASM généraliste, mais il cesse le développement de nouvelles fonctionnalités et entre en phase de maintenance minimale
  • Le développeur explique qu’il ne peut plus poursuivre le développement de nouvelles fonctionnalités après la destruction de sa maison lors de l’invasion russe, mais qu’il maintiendra le projet en vie et examinera/fusionnera les Pull Request reçues
  • wasm3 passe la WebAssembly spec testsuite et peut exécuter de nombreuses applications WASI ; les exigences minimales utiles sont d’environ 64 KB de code et 10 KB de RAM
  • Il prend en charge de nombreuses architectures comme x86, x86_64, ARM, RISC-V, PowerPC, MIPS, Xtensa et ARC32, ainsi que Linux, Windows, OS X, FreeBSD, Android, iOS, les MCU, les navigateurs, et peut même s’exécuter lui-même
  • L’approche interprétée offre des avantages en taille d’exécutable, consommation mémoire, latence de démarrage, portabilité, sécurité et facilité d’intégration ; dans des environnements comme iOS ou WebAssembly lui-même, où il est impossible de créer des pages de code exécutables à l’exécution, le JIT ne peut pas être utilisé

Changement d’état de maintenance

  • Wasm3 entre en phase de maintenance minimale
    • Il devient difficile de poursuivre le développement de nouvelles fonctionnalités
    • Le projet sera maintenu, et les Pull Request reçues seront examinées et fusionnées activement
    • Les contributions de la communauté deviennent plus importantes qu’auparavant
  • Le développeur indique qu’il ne peut actuellement plus continuer à développer de nouvelles fonctionnalités après la destruction de sa maison lors de l’invasion russe

Ce que propose Wasm3

Environnements d’exécution et exigences

  • wasm3 passe la WebAssembly spec testsuite
  • Il peut exécuter de nombreuses applications WASI
  • Les exigences minimales utiles du système sont les suivantes
    • Code : environ 64 KB
    • RAM : environ 10 KB
  • La plage d’architectures prises en charge est large
    • x86, x86_64, ARM, RISC-V, PowerPC, MIPS, Xtensa, ARC32, etc.
  • Les plateformes et environnements pris en charge sont également variés
    • Linux, Windows, OS X, FreeBSD, Android, iOS
    • Routeurs et modems basés sur OpenWrt, Yocto et Buildroot
    • SBC comme Raspberry Pi et Orange Pi
    • MCU comme Arduino, ESP8266, ESP32 et Particle
    • Exécution possible dans le navigateur via WebAssembly lui-même
    • Self-hosting possible, où wasm3 exécute wasm3

Prise en charge des fonctionnalités WebAssembly

  • Fonctionnalités proposées de WebAssembly prises en charge
    • Import/Export of Mutable Globals
    • Non-trapping float-to-int conversions
    • Sign-extension operators
    • Multi-value
    • Prise en charge partielle de Bulk memory operations
    • Custom page size
  • Fonctionnalités supplémentaires
    • Traçage d’exécution structuré
    • Prise en charge des systèmes Big-Endian
    • Self-hosting de Wasm et WASI
    • Gas metering
    • Limite de mémoire linéaire : moins de 64KiB
  • Certains éléments sont encore en cours ou non pris en charge
    • En cours : Multiple memories, Reference types
    • Non pris en charge : Tail call optimization, Fixed-width SIMD, Exception handling, Stack Switching

Pourquoi choisir un interpréteur et le WASM embarqué

  • La vitesse n’est pas toujours l’exigence principale, et l’approche interprétée présente des avantages dans de nombreux cas
    • Elle peut améliorer la taille de l’exécutable du runtime, l’usage mémoire et la latence de démarrage
    • Elle facilite l’obtention et le maintien de la portabilité et de la sécurité
    • Une bibliothèque simple comme Wasm3 est facile à compiler et à intégrer dans un projet existant, et la compilation se termine en quelques secondes
  • Sur certaines plateformes, le JIT ne peut pas être utilisé
    • Sur iOS et dans WebAssembly lui-même, il est impossible de créer à l’exécution des pages de code exécutables
  • Les raisons d’exécuter du WASM sur des appareils embarqués sont également évoquées
    • Wasm3 a commencé comme projet de recherche, et l’évaluation du moteur dans divers environnements fait partie de cette recherche
    • Alors que des MCU exécutent déjà Lua, JS, Python, Lisp, etc., WebAssembly peut aussi constituer une alternative
    • WebAssembly fournit une séparation de la toolchain ainsi qu’un environnement entièrement sandboxé, bien défini et prévisible
    • Parmi les cas d’usage pratiques figurent l’edge computing, le scripting, les systèmes de plugins, les IoT rules et les smart contracts

Documents de référence et licence

1 commentaires

 
GN⁺ 2023-12-19
Commentaires Hacker News
  • Je suis l’OP, prêt à répondre aux questions s’il y en a
    • Cela n’a rien à voir avec le projet Wasm, mais j’espère que vous, vos amis et votre famille êtes en sécurité. Gloire à l’Ukraine, que les occupants dégagent
    • En tant que membre de la première heure de NAFO, je vous envoie tout mon soutien
      Comme c’est un compte anonyme, je peux le dire sans avoir l’impression de me vanter : j’ai fait ce que je pouvais, en donnant, en signalant des trolls, en répondant à la désinformation, en mettant la pression sur des responsables politiques, etc. Malgré tout, j’ai encore l’impression d’avoir une dette envers les Ukrainiens
      Vous n’êtes pas seul, et j’aimerais que d’autres fassent eux aussi de petits gestes : solliciter des responsables politiques, aider par des dons les civils et les héros du front, signaler la désinformation, etc.
    • Êtes-vous en sécurité en ce moment ?
    • Avez-vous le temps de vous reposer ou de faire des choses agréables, ou êtes-vous constamment sous stress ?
  • Le fil Twitter de Wasm3 apporte davantage de contexte : https://x.com/wasm3_engine/status/1736712528883769670?s=20
  • Franchement, cette nouvelle m’attriste. Wasm3 était un excellent interpréteur Wasm, en avance côté performances : environ 3 à 5 fois plus lent que le natif, mais environ 3 fois plus rapide qu’un interpréteur Wasm classique
    J’espère que Volodymyr tiendra bon pendant qu’il tente de maintenir le projet malgré l’invasion de l’Ukraine par la Russie, et que la guerre prendra bientôt fin
    • D’accord. C’est l’un des meilleurs interpréteurs WASM, et à mon avis il est même meilleur que certains runtimes qu’on trouve ici ou là
      Ses performances sont très bonnes, et la beauté de son architecture comme de son code est vraiment impressionnante
  • L’explication est la suivante : comme la Russie a envahi le pays et que sa maison a été détruite, Wasm3 entre en phase de maintenance minimale ; le développement de nouvelles fonctionnalités ne peut pas se poursuivre, mais les Pull Requests entrantes seront activement examinées et fusionnées afin de garder le projet en vie
    Le tweet lié date de septembre 2022 et montre une vidéo de la maison détruite, avec un appel aux dons pour ceux qui souhaitent aider
    • C’est horrible. Slava Ukraini
    • Pour arrêter la pluie et la neige, cette maison semble avoir besoin d’un nouveau toit le plus vite possible
    • J’espérais vraiment que, d’ici maintenant, quelqu’un en Russie aurait éliminé Poutine. Je suis sûr qu’il y a pas mal de gens qui ne l’apprécient pas particulièrement
      L’UE devrait débloquer davantage d’argent pour aider l’Ukraine