WebAssembly y Rust

3min

WebAssembly es una tecnología diferente a las que conocemos tradicionalmente en el mundo de las webs profesionales. Ha venido para llevar el uso de los navegadores a un siguiente nivel, aumentando considerablemente sus prestaciones como plataforma de ejecución de aplicaciones. En este artículo vamos a repasar las posibilidades de WebAssembly, centrándonos también en su combinación con otros lenguajes como Rust.

Índice

Qué es WebAssembly

WebAssembly permite la ejecución de código binario directamente dentro del navegador. Como sabemos, tradicionalmente podemos ejecutar JavaScript en el ámbito frontend y lo cierto es que gracias a este lenguaje hemos llegado a hacer cosas realmente sorprendentes. Sin embargo, todo lo que se puede conseguir mediante JavaScript aún es poco si lo comparamos con lo que se podría conseguir con una aplicación de escritorio. Sobre todo, pensando en aplicaciones que requieran grandes capacidades de procesamiento como juegos o simuladores.

En las aplicaciones que requieren una gran capacidad de cómputo o donde se debe aprovechar dispositivos, como las tarjetas gráficas y su aceleración hardware, es necesario además usar otros lenguajes de programación, más cercanos a la máquina como podrían ser C o C++. WebAssembly viene a cubrir justamente ese hueco: permitiendo la ejecución de binarios portables (lo que se conoce generalmente como bytecodes) en el contexto del navegador.

Los casos de uso de WebAssembly son diversos, como juegos, reproducción de vídeo o audio, realidad virtual, edición de archivos multimedia, etc. Algunas aplicaciones conocidas que lo usan son Google Earth, Figma o Mono. Está disponible ya en la mayoría de los navegadores, como se puede ver en la siguiente imagen de Caniuse.

WebAssembly

Qué es Rust

Rust es un lenguaje de programación bastante moderno (apareció en 2010) que tiene como principal característica ser muy rápido y eficiente. Está impulsado por la organización Mozilla y por supuesto es de código abierto y cuenta con gran participación de la comunidad.

Se trata de un lenguaje de programación multiparadigma. Aunque se conoce principalmente por su paradigma de lenguaje funcional, es posible usarlo mediante programación imperativa, orientada a procesos y orientada a objetos. Por sus características de elevado rendimiento se ha postulado como competidor de lenguajes como C++, aunque su penetración es todavía pequeña en comparación. Sin embargo, los programadores se sienten muy cómodos y siempre sale en buena posición en cuanto a satisfacción de experiencia de desarrollo.

Rust y WebAssembly

El hecho de que Rust sea un lenguaje impulsado por Mozilla y que, a su vez, Mozilla sea uno de los grandes aportadores al proyecto WebAssembly tiene una fácil traducción:  una buena sinergia entre la plataforma web y el lenguaje Rust.

Gracias a WebAssembly ahora es posible usar Rust en el entorno del navegador y beneficiarse de sus características y potencia. Sin duda, se trata de un nuevo punto a favor de la popularidad de este lenguaje. En las últimas versiones de Rust han publicado diversas mejoras en la integración con WebAssembly, por lo que ya se encuentra bastante maduro el proyecto para su uso en el entorno del navegador.

Además gracias a esta nueva asociación han salido proyectos como Rust-WebPlattorm, que permite acceder al DOM desde las aplicaciones realizadas mediante Rust.

Si te interesa profundizar en este tema te recomendamos este libro electrónico disponible en GitHub donde se puede ver la documentación para usar Rust en WebAssembly.

Fernán García de Zúñiga

Productos relacionados: