Vista preliminar de WebAssembly en el navegador

18 febrero, 2017 19:58 por

Desde el último hito de WebAssembly alcanzado en marzo, hemos trabajado duro en el WebAssembly Community Group para definir un estándar e implementar ese estándar en nuestros respectivos navegadores.

Estoy contento por poder decir que ahora tenemos un formato binario candidato al lanzamiento y ya hay implementaciones compatibles en SpiderMonkey y V8, con trabajo en curso activo en Chakra y JavaScriptCore. Habiendo alcanzado ya este importante hito, ahora nos gustaría fomentar una retroalimentación más amplia de la comunidad, especialmente a cualquier persona que haya estado esperando que las cosas se normalicen antes de echar un vistazo.

Durante este periodo de “vista preliminar de navegador”, WebAssembly seguirá estando detrás de una bandera y habrá al menos un cambio planeado para restablecer la versión binaria a 1, donde esperamos que permanezca para siempre. Por diseño, nadie debería intentar utilizar binarios WebAssembly en producción todavía. Sin embargo, suponiendo que no se encuentren problemas que requieran un tiempo considerable para solucionarlo, el grupo de la comunidad WebAssembly desearía marcar una versión inicial del estándar como “finalizada” en el primer trimestre del 2017, lo que permitiría a los navegadores comenzar a enviar WebAssembly sin una bandera. Por nuestra parte, en Firefox, esta luz verde significaría incluir WebAssembly en Firefox 52 (marzo de 2017).

¿Qué hay de nuevo desde el último hito?

Si ha estado siguiendo el desarrollo, ha habido un gran progreso desde el último hito en marzo:

Con todo este trabajo, también podemos obtener algunas comparaciones iniciales en las clásicas mediciones Emscripten-internal comparando de extremo a extremo asm.js con WebAssembly [medido en 64-bit Firefox 52 (Nightly), Intel Core i7-2600 @ 3.40GHz, Linux]:

Comparación de desempeño

Las aceleraciones que vemos aquí se deben a una combinación de optimizaciones de Binaryen, optimizaciones de navegador y nuevas capacidades de hardware expuestas por WebAssembly. La optimización de toda la línea está todavía en curso, por lo que se espera mejorar el resultado para el lanzamiento. Pero incluso ahora, podemos ver que WebAssembly es una mejora notable, incluso para los usuarios de Firefox que ya se han beneficiado de optimizaciones con asm.js .

Además, los núcleos computacionales que hacen hincapié en nuevas operaciones de WebAssembly pueden mostrar velocidades mucho mayores. Por ejemplo, utilizando el mismo sistema experimental que el anterior, un núcleo aritmético entero de 64 bits se ejecuta 8.93× más lento que la velocidad nativa en asm.js debido a la emulación utilizando operaciones 32-bit en JS, mientras se ejecuta solo 1.13× más lento que la velocidad nativa en WebAssembly.

Probando

Para probar WebAssembly, ve a webassembly.org que contiene instrucciones para compilar un módulo WebAssembly con Emscripten y después cargar y ejecutar un módulo WebAssembly desde JavaScript.

Dado que esto tiene cosas todavía bastante delicadas, se aplican algunas advertencias:

En primer lugar, para reiterar lo anterior: las cosas van a cambiar hasta que el estándar esté finalizado y WebAssembly esté habilitado en los navegadores (¡y entonces volveremos a no romper la web, como de costumbre!). Para ayudar a comunicar los cambios a la comunidad, publicaremos los cambios realizados o planificados en la página de itinerario. También es una buena idea probar siempre con versiones Nightly.

En segundo lugar, la “especificación” completa de WebAssembly está actualmente dispersa en varios archivos Markdown del repositorio de diseño , y algunos detalles (como las reglas de validación) están únicamente presentes en el intérprete de referencia. Durante la vista preliminar del navegador, recogeremos estos bits dispersos y escribiremos una especificación sencilla y coherente, en el repositorio de especificación.

Finalmente, aunque actualmente se puede ver el formato de texto WebAssembly reproducido en la vista de depurador en Firefox, el depurador completo todavía no funciona (¡aunque estamos muy cerca!). Sin embargo, mientras tanto, los experimentadores necesitarán utilizar la tradicional aplicación de depuración con printf.

Teniendo en cuenta estas advertencias, ya estamos viendo una gran cantidad de emocionante experimentación y esperamos ver más en los próximos meses. Hay unos cuantos lugares que proporcionan información dependiendo si los comentarios pertenecen al diseño general, el intérprete de referencia, o una implementación específica en el navegador; hemos recopilado una lista de enlaces de información en webassembly.org. ¡Feliz hacking!

The following two tabs change content below.

Compartir artículo:

Start the discussion at foro.mozilla-hispano.org

cc-by-sa