WebAssembly, también conocido como Wasm, es una arquitecturas de conjuntos de instrucciones (ISA) que puede ejecutarse a velocidades prácticamente nativas. Una de las grandes ventajas de Wasm es que integra mecanismos de aislamiento para proteger los sistemas.
¿Y qué significa todo esto? Pues que un desarrollador puede escribir un programa en cualquier lenguaje fuente y compilarlo en WebAssembly o, en el caso de los lenguajes interpretados como JavaScript, compilar el intérprete en WebAssembly. Una vez compilados, estos archivos binarios se pueden ejecutar con seguridad en todo tipo de sistemas.
WebAssembly ofrece numerosas ventajas a los desarrolladores porque no está vinculado a ningún lenguaje de programación. Estas son algunas de ellas:
Mayor flexibilidad a la hora de elegir el lenguaje que mejor se adapte a la aplicación en desarrollo.
Posibilidad de utilizar un lenguaje con el que tienen experiencia. Esto resulta especialmente útil para las organizaciones con varios equipo de desarrollo especializados en distintos lenguajes.
Capacidad de reutilizar bases de código escritas en otros lenguajes y compilarlas en WebAssembly.
Acceso a un ecosistema diverso de herramientas, bibliotecas y entornos. Además, la existencia de iniciativas comunitarias y proyectos de código abierto que contribuyen al crecimiento continuo del ecosistema ponen más recursos y opciones al alcance de los desarrolladores.
En un principio, WebAssembly se diseñó para aplicaciones de navegadores web. De esta forma, era posible ejecutar código de alto rendimiento o cargas de trabajo con un consumo elevado de recursos, como programas de edición de imágenes y videojuegos, directamente en un navegador. El caso es que los desarrolladores no tardaron en darse cuenta de lo útil que resultaba WebAssembly fuera del navegador, razón por la que su uso para desarrollar en el lado del servidor está cada vez más extendido.
Además de las ventajas que ya hemos mencionado, los desarrolladores que utilizan WebAssembly fuera del navegador también disfrutan de lo siguiente:
Alto rendimiento: WebAssembly permite compilar directamente en código máquina, por lo que es una opción excelente para el desarrollo de aplicaciones y la ejecución de cargas de trabajo que requieren una gran velocidad.
Seguridad superior: los tiempos de ejecución de WebAssembly suelen imponer entornos aislados que separan los módulos de WebAssembly entre sí e impiden que interfieran con otros programas o accedan a recursos importantes del sistema. Por si fuera poco, el control de la memoria por parte de los módulos de WebAssembly es limitado, así que es difícil que corrompan los datos o provoquen fugas de memoria.
Un tiempo de ejecución es algo así como un motor que ejecuta código de WebAssembly. Básicamente, traduce o interpreta el código de forma que sea comprensible para un ordenador o servidor. En la actualidad existen muchos entornos de ejecución, cada uno con sus puntos fuertes y casos de uso. Veamos algunos de los más habituales.
Wasmtime: Wasmtime es un tiempo de ejecución seguro, de código abierto y de alto rendimiento creado por la Bytecode Alliance. Destaca por su conformidad con la interfaz de sistema de WebAssembly (WASI), un estándar que define la ejecución de módulos de Wasm fuera del navegador, su compatibilidad con numerosos lenguajes de programación y su versatilidad.
Tiempos de ejecución en navegador: como su propio nombre indica, estos tiempos de ejecución están diseñados para funcionar en navegadores web. Entre ellos están V8 y SpiderMonkey, unos motores de JavaScript y WebAssembly que se usan en Google Chrome y Mozilla Firefox, respectivamente.
Fastly lleva mucho tiempo trabajando con WebAssembly y la Bytecode Alliance, y eso nos ha permitido sentar las bases de nuestra plataforma en el edge. La plataforma Compute de Fastly puede ejecutar programas de WebAssembly compilados en lenguajes como Rust, JavaScript y Go. Nuestro apoyo a WebAssembly (Wasm) es fiel reflejo de nuestro compromiso con un estándar de código abierto que fomenta la colaboración. Un buen ejemplo de esta colaboración es Wasmtime, un tiempo de ejecución rápido y seguro para WebAssembly. En Fastly creemos que apostar por WebAssembly será muy beneficioso para nuestros productos de programación a la larga, por eso trabajamos con otros miembros de la Bytecode Alliance en la creación de un ecosistema más rápido, potente y basado en estándares comunes.
Ponte en marcha con Compute de Fastly hoy mismo e infórmate en nuestro Developer Hub. No te pierdas este vídeo en el que Lin Clark, Senior Principal Engineer de Fastly y cofundadora de la Bytecode Alliance, habla sobre el futuro de WebAssembly en Fastly.