De todos los lenguajes de programacion que cada año causan interes, Rust es uno de los que siempre se mantiene en los primeros puestos.
Claro no hay muchas ofertas de trabajo en este lenguaje si lo comparamos con otros lenguajes de programacion (Java, C#, Javascript, etc) que han sido utilizado ampliamente durante años, pero se nota que su uso va aumentado.
De hecho un area en donde se ve esto, es el desarrollo web. Es decir que Rust se esta volviendo de a pocos, en una parte importante de las herramientas que utilizamo a diario, y en este articulo te daré algunos ejemplos de como se esta empezando a usar.
Si tienes prisa, esta es la lista de Herramientas que mencionaré:
Aunque tambien daré a conocer otras como editores de código, y emuladores que ya podrias empezar a usar.
Empecemos con SWC.
Babel y SWC
Cuando los Frameworks de Javascript se empezaron a convertir en una opcion popular para crear aplicaciones web, estos ademas de sus funcionalidades y paradigmas de codigo, ofrecian tambien la posiblidad de poder usar codigo moderno de Javascript.
Es decir que en un framework puedes usar las ultimas caractersiticas del lenguaje, y al final cuando pases a produccion (build) estas son convertidas a codigo soportado por el navegador o el entorno que uses.
La herramienta que hizo esto posible en todos los frameworks fue Babel, que basicamente convierte codigo de una version de Javascript a otra, con unos cuantos modulos de npm.
Sin embargo como Babel se ejecuta encima de Node, y transpilar codigo puede ser un proceso muy costoso en tiempo, una mejor opcion seria usar lenguajes de más bajo nivel como Rust, de hecho esta es la idea de SWC.
que hace exactamente el mismo trabajo que Babel, de hecho las configuraciones son compatibles, solo que el tiempo para transformar codigo es mucho menor, y consume menos recursos.
Proyecots como Nextjs ya lo estan usando, e incluso tambien puede ser usado en Vitejs, haciendo que su rendimiento sea incluso más rapido que esbuid en ciertos casos.
https://swc.rs/docs/benchmarks#es2020-2
Webpack y Turbopack
Todos los Frameworks de Javascript modernos, necesitan una herramienta que permita optimizar el código a produccion, minificando el codigo de javascript (compression), separando en multiples archivo (chunks), minificando CSS, imagenes y asi.
Una de las herramientas que se ocupo para esto durante años fue Webpack, que esta creada usando Nodejs, es decir esta escrita en Javascript.
Si llegaste a usar comandos como:
create-react-app
@angular/cli
@vue/cli
Para crear proyectos en el pasado, estabas usando Wepback. Sin embargo como los Frameworks cada vez van mejorando y sus herramientas tambien, actualmente una mejor opcion es usar Vitejs, que permite hacer lo mismo, pero en lugar de usar Nodejs, hace uso de Go, haciendo que no solamente la creacion de proyectos sea rapida sino que el ejecutar codigo consuma menos. con VIte puedes crear proyectos en react, vue, svelte, y demas. Y si usas angular en su ultima version tambien esta haciendo uso de esbuild, que es lo mismo que usa vitejs.
Pero actualmente aparte de Vite tambien hay una nueva herramienta que ne lugar de usar Go, hace uso de Rust, y esta siendo promovida por el framework de Nextjs, llamado Turbopack.
Este permite hacer lo mismo que Webpack, solo que mucho más rapido, de hecho esta creado por el mismo creador de webpack.
Tambien aseguran que es mucho más rapido que Vite más SWC:
https://turbo.build/pack/docs/comparisons/vite
Sin embargo, el creador de Vite, asegura que esta no es uan comparacion justa, al tener dos entornos que no son equivalantes.
https://github.com/yyx990803/vite-vs-next-turbo-hmr/discussions/8
Ademas que tambien este aun esta en alpha, asi que de momento esta muy ligado solo a Nextjs. Asi que habra que esperar un poco para que pueda ser usado en otros Frameworks.
Deno
Ahora hasta aqui hemos hablado de herramientas que basicamente compilan codigo, esta es un area donde se usa mucho Rust. pero tambien hay herramientas como Deno, que es basicamente un interprete de Javascript y Typecsript escrito en Rust, alternativo a Nodejs, el cual sirve par acrear aplicaciones backend usando Typescript.
Deno un poco más rapido que Node, pero lo importante es que los que crean el entorno tiene ahora herramientas que les facilitan la creacion de codigo seguro.
Ademas que tambien reemplazan bibliotecas de C y C++ con biblitoecas de Rust (por ejemplo usar Tokio en lugar de Libuv)
Y como el entorno es moderno, este permite ejecutar codigo de typescirpt nativamente, y ultimas caracteristias del Javascript, ademas que no hace uso de npm
Para saber más de esto dejo el video Deno esta cambiando en la descripcion.
Rome y Prettier (y ESlint)
Romejs es una biblioteca que seria equivalante a lo que es Prettier, es decir es un formateador de codigo, solo que es mucho más rapido
ademas de esto tambien viene incluido con un Linter, similar a lo que seri eslint solo que sus errores son mas descriptivos:
Aunque la idea principal de Rome es ser un conjutno de herramientas que permitan minificar codigo de css, formatear, hacer lint, converitr markdown, htmly json. sin tener ue estar usando multiples herramientas como serian babel, wepback, prettier y eslint. Todas estan serian reemplazadas solo por Rome.
Otro Proyectos
Y finalmente tambien tenemos herramientas que si bien no son ampliamente conocidas, estas son otros ejemplos de como tambien se estan creando otros proyectos en Rust, enfocados en el desarrollo web
- Lapce, Un editor de código escrito en Rust, que es una altenativa a Visual Studio Code, solo que con mejor rendimiento, y menor consumo de recursos.
- [Alacritty][] o WezTerm, un emulador de terminal con aceleracion de GPU
- [mdBook][https://crates.io/crates/mdbook] un Generador de sitios estaticos, que puedes usar para crear documentaciones de proyectos en la web
- [Servo], un prototipo de motor para navegadores
- [Shuttle], que es una plataforma de la nube para desplegar proyectos en Rust
De hecho aqui tambien he dejado afuera el uso de WebAssembly que es otra forma de usar Rust, pero eso lo dejare para un siguiente video.
conclusion
En fin, Rust no es un lenguaje con el que vayamos a crear interfaces para el navegador, porque para eso tenemos lenguajes mas simples, pero como es un muy buen lenguaje para crear herramientas de bajo nivel, es muy comun que sigamos viendo más interpretes, compiladores o transpiladores que sean usados con herramientas web como las que te he mencionado.
Y al dia de hoy, estos aun estan siendo desarrollados, as que a futuro veremos si estas realmente cambiaron algo para bien el desarrollo.