17 puntos por GN⁺ 2025-09-18 | Aún no hay comentarios. | Compartir por WhatsApp
  • El estándar Wasm 3.0 fue anunciado oficialmente e incluye funciones de gran escala preparadas durante 6 a 8 años
  • Con espacio de direcciones de 64 bits, recolección de basura, referencias tipadas, tail calls y manejo de excepciones, ahora es más fácil compilar lenguajes de alto nivel a Wasm
  • Las principales novedades ayudan a crear aplicaciones de alto rendimiento, runtimes para múltiples lenguajes, mayor seguridad y escalabilidad
  • También es adecuado para casos fuera del entorno web, donde se necesita manejar mayores volúmenes y conjuntos de datos más grandes
  • Ya cuenta con soporte en los principales navegadores web y pronto estará completo también en motores independientes como Wasmtime, consolidando aún más a Wasm como una plataforma de ejecución de propósito general

Resumen del lanzamiento de Wasm 3.0

  • La versión 3.0 del estándar WebAssembly se lanzó el 17 de septiembre de 2025
    • Es la primera gran actualización en 3 años desde la versión 2.0 (finalizada en 2022), que introdujo instrucciones vectoriales, operaciones masivas de memoria, múltiples valores de retorno y tipos de referencia simples
    • Mientras el Community Group y el Working Group del W3C siguieron desarrollándolo, esta versión incorpora grandes funciones preparadas durante 6 a 8 años, por lo que representa un cambio de gran magnitud
    • Wasm mantiene su filosofía como lenguaje de bajo nivel, pero refuerza su sistema de memoria y de tipos para dar mejor soporte a la compilación de lenguajes de alto nivel
  • Las funciones desarrolladas después de la versión 2.0 ya quedaron cerradas y pasan a formar parte del estándar Live, mientras se amplía su soporte en navegadores web y motores independientes

Cambios principales y nuevas funciones

  • Espacio de direcciones de 64 bits
    • Se pueden declarar memorias y tablas con el tipo i64
    • El espacio de direcciones de las aplicaciones Wasm puede expandirse desde unos 4 GB hasta el límite físico (teóricamente 16 exabytes)
    • En la web se aplica un límite de 16 GB, pero en el ecosistema no web resulta útil para soportar aplicaciones y conjuntos de datos a gran escala
  • Múltiples memorias
    • Es posible declarar y acceder directamente a múltiples objetos de memoria dentro de un mismo módulo
    • Puede aprovecharse para fusión de módulos, separación del espacio de direcciones, buffering, seguridad y otros usos
    • Herramientas de enlace estático como wasm-merge pasan a poder usarse con todos los módulos Wasm
  • Recolección de basura (GC)
    • Además de la memoria lineal, se admite almacenamiento administrado automáticamente por el runtime de Wasm
    • Los compiladores declaran directamente layouts de datos como tipos struct/array y enteros unboxed
    • Solo se proporcionan los bloques fundamentales para administración de memoria, mientras que sistemas de objetos de alto nivel o closures pueden diseñarse de forma independiente según el lenguaje de implementación
  • Referencias tipadas
    • El sistema de tipos de Wasm se amplía para describir con mayor precisión la forma de los valores en heap y las referencias a funciones
    • Soporta subtyping y recursión de tipos, y con la nueva instrucción call_ref permite llamadas indirectas seguras a funciones sin verificación de tipos en runtime
  • Tail calls
    • Se admite la estructura de tail call, que retorna directamente sin usar espacio adicional en la pila de la función existente
    • Puede aprovecharse en lenguajes funcionales o en optimizaciones internas de runtimes
  • Manejo de excepciones
    • Introduce un sistema nativo de manejo de excepciones dentro de Wasm
    • Permite declarar etiquetas y payloads de excepción, captura opcional y manejadores de excepciones a nivel de bloque
    • Mejora la portabilidad y el rendimiento sin recurrir a métodos ineficientes que antes se desviaban hacia JS
  • Instrucciones vectoriales relaxed
    • Para responder a diferencias de hardware en instrucciones SIMD, se ofrecen variantes relaxed que dejan ciertos detalles de comportamiento a libertad de la implementación
    • Esto permite diversas optimizaciones dentro del conjunto de comportamientos válidos
  • Perfil determinista
    • Incluso en situaciones donde el resultado de una misma instrucción puede no ser determinista (como operaciones de punto flotante o relaxed SIMD), se define una ejecución determinista entre plataformas
    • Esto permite garantizar reproducibilidad y portabilidad en blockchain, sistemas reproducibles y casos similares
  • Sintaxis de anotaciones personalizadas
    • Se agrega una sintaxis de anotaciones legible y escribible por humanos dentro del código fuente
    • Aunque el estándar no la interpreta directamente, podrá aprovecharse en futuras implementaciones del estándar y sus extensiones

Integración con JavaScript y compatibilidad

  • JS string builtins
    • Los valores de cadena de JS pueden pasarse y manipularse en Wasm como externref
    • Importando nuevas funciones integradas, Wasm puede usar directamente cadenas externas de JS en su interior

Utilidad y perspectivas de Wasm 3.0

  • Proporciona una base esencial para la compilación hacia Wasm de lenguajes de programación avanzados
  • Lenguajes principales como Java, OCaml, Scala, Kotlin, Scheme, y Dart también han comenzado a aprovechar activamente las funciones de GC

Estado de creación de la especificación y despliegue

  • Wasm 3.0 es el primer estándar creado con la nueva cadena de herramientas SpecTec
  • La mayoría de los principales navegadores web ya soportan Wasm 3.0, y motores independientes como Wasmtime también estarán completos pronto
  • El estado de soporte por motor puede consultarse en la página de Wasm feature status

Aún no hay comentarios.

Aún no hay comentarios.