Los drivers Rust del kernel de Linux alcanzan estado estable en mainline
Tras años de discusión, los primeros subsystems escritos en Rust se integran de forma definitiva.
Es un cambio simbólico tan importante como técnico. Los primeros drivers Rust del kernel de Linux han alcanzado estado estable en mainline, lo que significa que el kernel deja de ser exclusivamente C después de más de tres décadas. Para quienes llevan siguiendo este proceso desde los primeros parches de Linus aceptando Rust en 2022, el momento tiene cierto peso histórico.

Los drivers que han llegado a stable son el driver para dispositivos de entrada NovaStar y el driver de red para Apple Silicon de Asahi Linux — este último especialmente significativo porque es un driver de producción que ya usa gente real en hardware real.
Qué ha tardado tanto
El camino desde "Rust está en el árbol del kernel" hasta "los drivers Rust son estables" ha sido más largo de lo que muchos esperaban, y vale la pena entender por qué.
El proceso de revisión del kernel de Linux es extremadamente riguroso, con razón. Un bug en un driver que corra en millones de máquinas tiene consecuencias muy reales. Los maintainers tuvieron que desarrollar no solo el soporte de Rust en sí, sino también abstracciones seguras sobre las APIs internas del kernel — que fueron diseñadas para C y no siempre tienen una traducción directa limpia a Rust.
// Abstracción segura sobre una API del kernel en Rust
use kernel::prelude::*;
use kernel::net::{self, Device, Namespace};
#[vtable]
impl net::DeviceOperations for MyNetDevice {
fn open(dev: &Device) -> Result {
// El compilador garantiza que dev es válido aquí
dev.start_queue();
Ok(())
}
}
El camino por delante
Este hito abre la puerta a más contribuciones. Ahora que hay un precedente de drivers Rust en mainline stable, otros maintainers tienen más confianza para empezar nuevos drivers en Rust en lugar de C. El subsistema de drivers de GPU y el de almacenamiento son los que más interés están generando en la comunidad.
Lo que no va a pasar es una migración masiva del código existente. Los drivers C funcionan y nadie va a reescribirlos solo por el placer de usar Rust. El cambio será gradual, dirigido por casos donde la seguridad de memoria sea especialmente crítica o donde los drivers sean nuevos de todas formas.
TAGS
Dax Reyes
Sistemas y Kernel
// Related

Por qué la memory safety se ha convertido en prioridad de seguridad nacional

Open-Weights vs Open-Source: la guerra de definiciones se calienta
