1 puntos por GN⁺ 2023-12-19 | 1 comentarios | Compartir por WhatsApp
  • Wasm3 es un intérprete rápido de WebAssembly y apunta a ser un runtime WASM de propósito general, pero dejará de desarrollar nuevas funciones y entra en una fase de mantenimiento mínimo
  • El desarrollador explicó que, después de que su casa fuera destruida por la invasión rusa, ya no puede continuar con el desarrollo de nuevas funciones, aunque afirmó que mantendrá vivo el proyecto y revisará e integrará los Pull Requests que lleguen
  • wasm3 pasa la WebAssembly spec testsuite y puede ejecutar muchas aplicaciones WASI; los requisitos mínimos útiles del sistema son aproximadamente 64KB de código y 10KB de RAM
  • Soporta múltiples arquitecturas como x86, x86_64, ARM, RISC-V, PowerPC, MIPS, Xtensa y ARC32, además de Linux, Windows, OS X, FreeBSD, Android, iOS, MCU, navegadores e incluso ejecutarse a sí mismo
  • El enfoque de intérprete ofrece ventajas en tamaño del ejecutable, uso de memoria, latencia de arranque, portabilidad, seguridad y dificultad de integración; además, en entornos como iOS o el propio WebAssembly, no es posible usar JIT porque no se pueden crear páginas de código ejecutable en tiempo de ejecución

Cambio en el estado de mantenimiento

  • Wasm3 entra en una fase de mantenimiento mínimo
    • Es difícil seguir con el desarrollo de nuevas funciones
    • El proyecto se mantendrá y los Pull Requests entrantes se revisarán e integrarán activamente
    • Las contribuciones de la comunidad pasan a ser más importantes que antes
  • El desarrollador señaló que, después de que su casa fuera destruida por la invasión rusa, actualmente no puede continuar con el desarrollo de nuevas funciones

Lo que ofrece Wasm3

Entornos de ejecución y requisitos

  • wasm3 pasa la WebAssembly spec testsuite
  • Puede ejecutar muchas aplicaciones WASI
  • Los requisitos mínimos útiles del sistema son los siguientes
    • Código: aproximadamente 64KB
    • RAM: aproximadamente 10KB
  • El rango de arquitecturas soportadas es amplio
    • x86, x86_64, ARM, RISC-V, PowerPC, MIPS, Xtensa, ARC32, entre otras
  • También soporta una amplia variedad de plataformas y entornos
    • Linux, Windows, OS X, FreeBSD, Android, iOS
    • Routers y módems basados en OpenWrt, Yocto y Buildroot
    • SBC como Raspberry Pi y Orange Pi
    • MCU como Arduino, ESP8266, ESP32 y Particle
    • Puede ejecutarse en el navegador usando el propio WebAssembly
    • También permite self-hosting, donde wasm3 ejecuta a wasm3

Soporte de funciones de WebAssembly

  • Funciones de propuestas de WebAssembly soportadas
    • Import/Export of Mutable Globals
    • Non-trapping float-to-int conversions
    • Sign-extension operators
    • Multi-value
    • Bulk memory operations con soporte parcial
    • Custom page size
  • Funciones adicionales
    • Trazado estructurado de ejecución
    • Soporte para sistemas Big-Endian
    • Self-hosting de Wasm y WASI
    • Gas metering
    • Límite de memoria lineal: menos de 64KiB
  • También hay elementos aún en progreso o no soportados
    • En progreso: Multiple memories, Reference types
    • No soportados: Tail call optimization, Fixed-width SIMD, Exception handling, Stack Switching

Por qué elegir un intérprete y WASM embebido

  • La velocidad no siempre es el requisito principal, y el enfoque de intérprete tiene ventajas en varias situaciones
    • Puede mejorar el tamaño del ejecutable del runtime, el uso de memoria y la latencia de arranque
    • Es más fácil lograr y mantener la portabilidad y la seguridad
    • Una librería simple como Wasm3 es fácil de compilar e integrar en proyectos existentes, y la compilación termina en cuestión de segundos
  • En algunas plataformas no se puede usar JIT
    • En iOS y en el propio WebAssembly no es posible crear páginas de código ejecutable en tiempo de ejecución
  • También se presentan razones para ejecutar WASM en dispositivos embebidos
    • Wasm3 comenzó como un proyecto de investigación, y evaluar motores en distintos entornos forma parte de esa investigación
    • En un contexto donde en MCU ya se ejecutan Lua, JS, Python y Lisp, WebAssembly también puede ser una alternativa
    • WebAssembly ofrece separación del toolchain y un entorno completamente aislado, bien definido y predecible
    • Entre los casos prácticos están edge computing, scripting, sistemas de plugins, IoT rules y contratos inteligentes

Material de referencia y licencia

1 comentarios

 
GN⁺ 2023-12-19
Comentarios de Hacker News
  • Soy el OP; estoy listo para responder preguntas si tienen
    • No tiene que ver con el proyecto Wasm, pero espero que tú, tus amigos y tu familia estén a salvo. Gloria a Ucrania, y que se larguen los ocupantes
    • Como miembro temprano de NAFO, te mando mi apoyo
      Como es una cuenta anónima, puedo decirlo sin que se sienta como presumir: he hecho lo que he podido, como donar, denunciar trolls, contrarrestar la desinformación y presionar a políticos. Aun así, siento que todavía le debo algo al pueblo ucraniano
      Quiero que sepas que no estás solo, y ojalá otras personas también hagan pequeñas acciones como pedirles a sus políticos que actúen, ayudar con donaciones a civiles y héroes del frente, y denunciar la desinformación
    • ¿Estás a salvo ahora?
    • ¿Tienes tiempo para descansar o hacer algo divertido, o sigues bajo estrés constante?
  • Hay más contexto en el post de Twitter de Wasm3: https://x.com/wasm3_engine/status/1736712528883769670?s=20
  • Sinceramente, esta noticia me entristece. Wasm3 era un excelente intérprete de Wasm que iba por delante en rendimiento: era aproximadamente entre 3 y 5 veces más lento que nativo, pero unas 3 veces más rápido que un intérprete de Wasm típico
    Espero que Volodymyr esté bien mientras intenta mantener el proyecto en medio de la invasión rusa de Ucrania, y ojalá la guerra termine pronto
    • De acuerdo. Es uno de los mejores intérpretes de WASM, y me parece mejor que algunos runtimes disponibles por ahí
      Su rendimiento es muy bueno, y la arquitectura y la belleza del código sin duda impresionan
  • La explicación es esta: como Rusia invadió y su casa fue destruida, Wasm3 entra en una etapa de mantenimiento mínimo; no podrá seguir desarrollando nuevas funciones, pero revisará y fusionará activamente los Pull Requests que lleguen para mantener vivo el proyecto
    El tuit enlazado es de septiembre de 2022, muestra un video de la casa destruida y pide donaciones a quienes quieran ayudar
    • Esto es horrible. Slava Ukraini
    • Parece que esa casa necesita un techo nuevo lo antes posible para protegerla de la lluvia y la nieve
    • Para estas alturas, de verdad esperaba que alguien dentro de Rusia ya hubiera eliminado a Putin. Creo que debe haber bastantes personas a las que no les cae precisamente bien
      La UE debería aportar mucho más dinero para ayudar a Ucrania