WebAssembly: ¿el futuro?

¿será WebAssembly la muerte de JavaScript ?

Ultimamente he visto y escuchado muchos artículos, comentarios y platicas de WebAssembly, muchas con el morboso titulo “WebAssembly: La muerte de JavaScript”. Y así como el cómic de La muerte de Supermán, despertó mi curiosidad.

La muerte de Superman.

Muchos lenguajes han amenazado la existencia de JavaScript, aún a pesar de todo, existe. Así que eso nos lleva a un par de preguntas:

  • ¿Qué es WebAssembly y como es que va a matar a JavaScript esta vez ?
  • ¿por qué JavaScript no ha sido derrotado aún en en esta grande y complejo ring ?

¿Qué es WeAssembly?

Logo de Web Assembly

Del sitio oficial extraemos la siguiente definición:

WebAssembly (abbreviated Wasm) is a binary instruction format for a stack-based virtual machine.

WebAssembly (de manera abreviada Wasm) es un formato de instrucción binaria para una maquina virtual apilada.

Google, Microsoft, Mozilla y otros participantes más han estado, sin hacer mucho ruido, trabajando a la distancia en un nuevo Grupo, el W3C WebAssembly Community Group, y lo que han estando haciendo no es poca cosa.

La web principalmente consiste en documentos representados en HTML & CSS. Javascript le da a HTML el soporte para interactuar entre diferentes componentes.

JS es ejecutado en el navegador en un ambiente de caja de arena segura llamada JVM o JavaScript runtime.

¿ Donde se ubica WebAssembly en este escenario ?

Credito: Pluralsight — Barry Luijbregts

WebAssembly(WASM) se ubica junto con JS en la JVM o runtime y se ejecuta de la misma forma. Debido que esta en el sandbox tiene las mismas consideraciones de seguridad que JS. Es representado como una sintaxis de árbol abstracto (AST) y construido en un formato binario. El formato de archivo de WebAssembly es wasm. Ya esta en un formato binario que el Runtime de JavaScript puede entender sin interpretar el lenguaje, Este tiene acceso a WebAPI, por lo cual puede acceder a cosas como el DOM, Audio y los Web Sockets.

WebAssembly es:

  • Una mejora de JavaScript: Implementar las casas importantes o criticas que deban tener alto desempeño en wasm e importarlas como un modulo estándar de JavaScript
  • Un nuevo lenguaje: El código de WebAssembly define un ASY (Abstract Syntax Tree) representado en un formato binario. Uno puede escribir y depurar en un formato de texto que es legible,.
  • Una implementación en el navegador: los navegadores entenderán el formato binario, lo que significa que seremos capaces de compilar paquetes binarios que se compriman de de formas menor que el JavaScript que usamos hoy en día.
  • Cargas útiles más pequeñas significan entregas más rápidas. Dependiendo de las oportunidades de optimización en tiempo de compilación. Los paquetes de WebAssembly pueden corren más rápido que JavaScript también.
  • Un objetivo (target) de compilación: Una forma de que otros lenguajes obtengan soporte binario de primera clase soportado a través de toda el stack de plataforma web.
Del twitter de Daniel Zavala

WebPerl

Por ejemplo WebPerl usa el poder de WebAssembly y Emscripten para permitirnos correr Perl 5 en el navegador.

WebPerl no traduce tu código Perl a JavaScript, en lugar de esto, es una adecuación del binario a WebAssembly, asó que tienes todo el poder de Perl a tu disposición.

Nota: WebPerl esta en primeras etapas beta. Algunas cosas pueden no funcionar aún y partes del API seguramente van a cambiar.

Podemos ver ya una lista impresionante de implementaciones, con compilación a WASM en más de 20 lenguajes diferentes incluyendo algunos tan populares como:

¿entonces, si es el final de JavaScript?

La pregunta ha estado en boca de muchos desarrolladores desde que WebAssembly comenzó a ser una realidad. Mientras que muchos han especulado que WebAssembly significaría el final de JavaScript, aquellos involucrados en su creación y desarrollo niegan tales intenciones.

Dentro de la sección de preguntas frecuentes del sitio oficial webassembly.org esta pregunta se responde claramente “WebAssembly esta diseñador para ser un complemento a, no un reemplazo de JavaScript”. Expertos como Brendon Eich, antiguo CEO de Mozilla, han vislumbrado un futuro donde WebAssembly y JavaScript evolucionan juntos.

El Futuro del Desarrollo Web

Probablemente no será el final de JavaScript, tomemos las cosas con calma, lo que si es muy seguro es que WebAssembly va a cambiar la cara del desarrollo web front-end. Aún es temprano para ver todas las formas en que estos cambios se darán y estamos lejos de hacer solidas predicciones acerca de este futuro no tan lejano.

Solo le están quitando el monopolio.

Cheerleader in chief for KMMX, RPA Enthusiast, DevOps, Technical Writer & International Speaker, Dad & 2 cats.

Cheerleader in chief for KMMX, RPA Enthusiast, DevOps, Technical Writer & International Speaker, Dad & 2 cats.