Llega la décima versión de Rust for Linux, lista para su inclusión en Linux 6.1

septiembre 28, 2022 0 Comments

Controladores Rust en Linux

Hace unas pocas semanas compartimos aquí en el blog la noticia sobre la confirmación que se realizó durante la Open Source Summit Europe, por parte de Linus Torvalds anunció que, salvo problemas imprevistos, se incluirán los parches para respaldar el desarrollo del controlador Rust en el kernel Linux 6.1, que se espera que se lance en diciembre.

La razón de hacer mención de ello, es que Miguel Ojeda, autor del proyecto Rust-for-Linux dio a conocer hace poco el lanzamiento de la decima propuesta de los componentes para el desarrollo de controladores de dispositivos Rust para que los desarrolladores del kernel de Linux los consideren.

Como tal esta es la undécima edición de los parches, teniendo en cuenta la primera versión publicada (sin número de versión). Linus Torvalds aprobó la inclusión de la compatibilidad con Rust en el kernel de Linux 6.1, a menos que surjan problemas imprevistos.

Cabe mencionar que el desarrollo está financiado por Google y el ISRG (Internet Security Research Group), que es el fundador del proyecto Let’s Encrypt y promueve HTTPS y el desarrollo de tecnologías para aumentar la seguridad de Internet.

Algunos de los beneficios de obtener soporte de Rust en el kernel son facilitar la escritura de controladores de dispositivos seguros al reducir las posibilidades de errores de memoria y alentar a los nuevos desarrolladores a involucrarse en el kernel.

«Rust es una de esas cosas que creo que traerá caras nuevas… nos estamos volviendo viejos y grises», dijo Linus.

Las notas de la versión de Linux 6.0 brindan una actualización sobre el progreso del proyecto Rust para Linux: existe un grupo de trabajo relacionado, está disponible un controlador preliminar para medios de almacenamiento NVMe desarrollado con dicho lenguaje, así como un controlador para un servidor previsto para el protocolo de red 9P.

Aprovechando la mención sobre la versión 6.1 del kernel Linus también anunció que la versión 6.1 del kernel mejorará algunas de las partes más antiguas y fundamentales del kernel, como la función printk().

En cuanto a lo relacionado con esta nueva propuesta de los parches Rust, al igual que la última versión de los parches, la décima versión se reduce al mínimo, suficiente para construir un módulo kernel simple escrito en Rust.

Las diferencias con la versión anterior se reducen a correcciones menores, reemplazando sizeof con ARRAY_SIZE en kallsyms.c y adaptando parches al kernel v6.0-rc7.

El soporte de Rust aún debe considerarse experimental. Sin embargo,
El soporte es lo suficientemente bueno como para que los desarrolladores del kernel puedan comenzar a trabajar en el.

Se espera que el parche mínimo, que se ha reducido de 40 000 líneas de código a 13 000 líneas de código, facilite la adopción de la compatibilidad con Rust en el núcleo. Después de brindar un soporte mínimo, se planea aumentar gradualmente la funcionalidad existente, transfiriendo otros cambios de la rama Rust-for-Linux.

Los cambios propuestos hacen posible el uso de Rust como segundo lenguaje para desarrollar controladores y módulos del kernel. El soporte de Rust se presenta como una opción que no está habilitada de forma predeterminada y no da como resultado la inclusión de Rust entre las dependencias de compilación requeridas para el kernel.

El uso de Rust para desarrollar controladores le permitirá crear controladores mejores y más seguros con un esfuerzo mínimo, sin problemas como acceder a un área de memoria después de liberarla, desreferenciar punteros nulos y desbordamientos de búfer.

El manejo seguro de la memoria se proporciona en Rust en tiempo de compilación mediante la verificación de referencias, el seguimiento de la propiedad del objeto y la vida útil del objeto (alcance), así como mediante la evaluación de la corrección del acceso a la memoria durante la ejecución del código.

Rust también brinda protección contra desbordamientos de enteros, requiere la inicialización obligatoria de los valores de las variables antes de su uso, maneja mejor los errores en la biblioteca estándar, aplica el concepto de referencias y variables inmutables de forma predeterminada, ofrece tipado estático fuerte para minimizar los errores lógicos.

Finalmente si estás interesado en poder conocer más al respecto sobre la nota, puedes consultar las listas de correo sobre el tema, en el siguiente enlace.


Some say he’s half man half fish, others say he’s more of a seventy/thirty split. Either way he’s a fishy bastard.