“Rust es más grande que Mozilla”, afirmaba en agosto de 2020 Steve Klabnik, uno de los responsables del desarrollo de Rust, cuando se supo que la situación económica de Mozilla iba a obligar a conformar una Fundación Rust independiente.
Eso quedó confirmado el pasado mes de febrero, cuando Mozilla anunció la puesta en marcha de dicha Fundación… de la mano de Google, Microsoft, Huawei y AWS. Y ahora, tres meses después, Facebook se suma también al equipo.
En palabras de Joel Marcey, responsable del ecosistema open source de Facebook y, desde ahora, miembro de la directiva de la Fundación Rust,
“Nos unimos a la Fundación Rust para ayudar a mejorar y hacer crecer un lenguaje que se ha vuelto muy valioso tanto para nosotros como los desarrolladores de todo el mundo.
Esperamos colaborar con los otros miembros de la fundación y con la comunidad de Rust para convertir éste en un lenguaje mainstream”.
Así se subió Facebook al tren de Rust
Facebook empezó a usar Rust en 2016, cuando decidió reescribir los dos proyectos (Mononoke y Mercurial) que conforman su backend de control de cambios de código fuente. Fue entonces una decisión arriesgada, porque requería que el equipo aprendiese a usar un nuevo lenguaje después de haber invertido largas horas en desarrollar los proyectos en otros lenguajes más usados.
En el caso de Mononoke, habían decidido dejar de lado C++ por razones de estabilidad; en el de Mercurial, preferían abandonar el Python de las versiones previas en favor de un lenguaje compilado, por razones de seguridad. Y se decidieron por recurrir al lenguaje creado por Mozilla.
¿El motivo? La capacidad de Rust para detectar errores importantes en tiempo de compilación en lugar de tener que esperar a tener el software en producción, un aspecto fundamental que consideraron que haría rentable la transición a largo plazo.
Pudo haber quedado en un mero experimento para un par de proyectos muy concretos de la compañía, pero la notable mejora de rendimiento que se apreció en el software desarrollado en Rust aumentó también su popularidad dentro de la compañía.
Más tarde, también confió en Rust para desarrollar algunas funciones centrales de su criptodivisa Libra, de nuevo gracias a las garantías que ofrecía en el apartado de la seguridad. En palabras de Ben Maurer, responsable tecnológico de Novi (la filial de Facebook encargada del desarrollo de Libra),
“Durante el año pasado, descubrimos que aunque Rust tiene una alta curva de aprendizaje, es una inversión que ha dado sus frutos. Rust ha ayudado a Libra a construir una implementación limpia de blockchain”.
También fue en 2020 cuando Facebook creó un equipo específicamente dedicado a Rust dentro de su unidad de lenguajes de programación. Una de sus tareas es garantizar la interoperabilidad segura de Rust con el código C++ ya desarrollado.
“Tenemos una gran cantidad de código C++ que es necesario para comunicarnos con los sistemas back-end en los que se basan nuestros servicios [y] necesitamos que los desarrolladores puedan utilizar estas bibliotecas de forma segura y sencilla desde Rust sin sacrificar los beneficios que ofrece Rust”.
Microsoft presenta ‘Rust for Windows’
Pero el apoyo por parte de Facebook a la Fundación Rust no es la única novedad que ha traído la semana en lo relativo a este prometedor y pujante lenguaje: Microsoft también anunció hace unos días el lanzamiento de ‘Rust for Windows’, que no sólo ofrece un ‘crate’ (componente) que permite al software desarrollado en Rust comunicarse con cualquier API de Windows, sino que lo acompaña de todo un pack de herramientas para desarrollar con Rust en Windows.
La versión para Windows del compilador de Rust está disponible en la web de este último, pero si vamos a usar ‘Rust for Windows’ necesitaremos usarlo conjuntamente con Visual Studio o con Visual Studio Code (acompañado, en este último caso, de las extensiones Rust-Analyzer y CodeLLDB).
Sin embargo, dado que estos componentes aún están en fase de desarrollo, en ocasiones los usuarios se verán obligados a salir fuera de su entorno de desarrollo habitual: los nuevos proyectos deben crearse desde Cargo (el gestor de paquetes de Rust), utilizando instrucciones en línea de comandos.