En la Linux Plumbers Conference de Richmond, Virginia, el desarrollador de Linux y Rust Miguel Ojeda puso al día a los desarrolladores del núcleo Linux sobre el estado de Rust en el núcleo Linux. En resumen, Rust Linux sigue madurando y está recibiendo un fuerte apoyo de desarrolladores y proveedores, como Cisco, Samsung y Canonical.
Por supuesto, Rust ha estado en Linux desde que Linus Torvalds dio su bendición al lenguaje de memoria segura para el lanzamiento de Linux 6.1. Ahora, sin embargo, Rust está dando los pasos necesarios para convertirse, junto con C, en un miembro de pleno derecho de la cadena de herramientas de lenguaje de Linux.
Puede leer también | Lanzamiento de uutils 0.0.21 con más mejoras para GNU Coreutils escrito en Rust
Esa posición evaluada se debe a que, como dijo el ingeniero de software de Microsoft Wedson Almeida Filho, "Creemos que Rust ya está listo para unirse a C como lenguaje práctico para implementar el núcleo. Puede ayudarnos a reducir el número de posibles errores y vulnerabilidades de seguridad en el código privilegiado, a la vez que juega muy bien con el núcleo del kernel y preserva sus características de rendimiento."
Puede leer también | Instalación de Rust paso a paso
En concreto, como explicaron Alex Gaynor y Geoffrey Thomas en la Cumbre de Seguridad Linux 2019, casi dos tercios de los agujeros de seguridad del kernel de Linux provienen de problemas de seguridad de memoria. Y de dónde vienen esos errores? De las debilidades inherentes a C y C++. Rust, por otro lado, evita estos problemas mediante el uso de interfaces de programación de aplicaciones (API) mucho más seguras.
Esto no quiere decir que estemos listos para retirar C de Rust. De hecho, es poco probable que llegue ese día. Pero Rust está definitivamente en camino de convertirse en un lenguaje importante para el desarrollo en Linux.
Puede leer también | Linux 6.1 disponible con la infraestructura de Rust
Antes de llegar a ese destino, hay algunos retos que superar. Como dijo Ojeda en el evento, aunque el "equipo central ha crecido con nuevos miembros", aún queda mucho trabajo por hacer.
Ese esfuerzo comienza con herramientas de programación para Rust en Linux. Algunas distribuciones ya están abrazando Rust con los brazos abiertos. Por ejemplo, Ubuntu proporciona ahora "todos los requisitos necesarios de la cadena de herramientas y el kernel para construir y probar módulos del kernel fuera del árbol."
En la actualidad, existen tres grandes cadenas de herramientas Rust para Linux. La primera de ellas es GCC codegen for rustc. Esta cadena de herramientas compila y puede arrancar Rust mainline y Linux sin cambios en el código fuente.
Luego, está GCC Front-End for Rust, que puede ser cargado por el frontend rustc existente, pero se beneficia de las optimizaciones de GCC. Desgraciadamente, este proyecto sigue siendo en gran medida código alfa. Por último, está Coccinelle para Rust. Coccinelle es una herramienta para crear código fuente C a gran escala para el núcleo de Linux, y Coccinelle para Rust pretende llevar esta potencia a las bases de código de Rust.
Puede leer también | Núcleo Linux 6.1: La versión Rust para el desarrollo del Kernel de Linux
En cuanto al trabajo diario necesario para que Rust se integre plenamente con Linux, el sitio web "oficial" de la iniciativa es ahora el autoexplicativo Rust for Linux. Este sitio es tu única fuente para todo lo relacionado con Rust en Linux.
La rama original del código de Rust, donde se desarrolló durante dos años, ha sido retirada. El código sigue ahí, pero ha sido congelado y archivado. En adelante, rust-next será la rama que contenga las nuevas características de Rust que se presenten durante la próxima ventana de fusión del núcleo de Linux. Esta rama, como su nombre indica, forma parte de Linux Next.
Rust-fixes, por su parte, es la rama que contiene las correcciones de Rust para el ciclo actual del núcleo Linux. Además, Rust-dev es una rama experimental con fines de integración. Es una cola para parches que "parecen lo suficientemente buenos" como para compartirlos y jugar con ellos.
Puede leer también | Instalar y desarrollar una aplicación con Rust
Sin embargo, el avance no ha sido sencillo. Los desarrolladores de Rust en Linux han descubierto algunos problemas por el camino. Por ejemplo, mientras que los deadlocks, cuando dos o más hilos esperan a que el otro termine, son seguros en Rust, porque no dan lugar a un comportamiento indefinido, no lo son en el núcleo Linux. Los programadores están trabajando para solucionar este problema.
Los desarrolladores también se preocupan por cómo hacer frente a las versiones de Rust. Hoy en día, los desarrolladores no pueden garantizar que las nuevas versiones de Rust funcionen en Linux porque la última versión de Rust Linux es compatible con algunas características inestables. ¿Estarán estas características en la próxima versión de Rust? ¿Serán compatibles con versiones anteriores? Permanece atento.
Por ahora, los programadores de Rust Linux están siguiendo la última versión del compilador de Rust. Se trata de un enfoque bastante inusual para el núcleo, donde el nombre del juego suele ser utilizar código antiguo y probado.
Puede leer también | Rust el segundo lenguaje integrado al núcleo de Linux
Un tema relacionado es que hay un creciente interés en el soporte de Rust en las versiones de soporte a largo plazo (LTS) de Linux, específicamente 5.15 y 6.1. Algunas personas están mostrando especial interés en el núcleo Linux 6.1 super LTS. Sin embargo, Linux no suele permitir backports en Linuxes LTS. Así que, si realmente quieres soporte completo para Rust en un kernel LTS antiguo, vas a tener que pagar por ello de una forma u otra.
Otra regla general que los desarrolladores de Rust han decidido que van a intentar "romper" es la regla contra los controladores duplicados. Normalmente, nadie quiere que nadie pierda el tiempo reinventando la rueda, pero algunos mantenedores están abiertos a la idea de experimentar con Rust, empezando de forma sencilla con un controlador con el que ya están familiarizados.
Puede leer también | ¿Qué es Rust y cual es su futuro?
Aún así, otros han expresado su interés en escribir controladores Rust, pero las abstracciones necesarias no están ahí, y la fusión rompería la regla de "ningún código sin un usuario esperado en el árbol". Así pues, Ojeda y su alegre equipo de desarrolladores de Rust han solicitado una excepción para los controladores de Rust.
Estos movimientos son pequeños pasos adelante, pero todos ellos son críticos para hacer que Rust iguale a C como lenguaje de programación Linux. Basándome en el gran interés que he visto en Plumbers, espero que Rust lo consiga.