Miguel Ojeda, responsable del soporte de Rust en el kernel, ha enviado la solicitud de integración (pull request) con el nuevo código Rust para Linux 7.4, unas 17.000 líneas según Phoronix. El bloque principal es una actualización grande de Zerocopy, la biblioteca que el kernel incluye en su propio árbol, acompañada de nuevos módulos mem y ratelimit y de mejoras en el crate pin-init.
Las claves del código Rust de Linux 7.4 en 20 segundos
- Phoronix cifra el envío de Miguel Ojeda en unas 17.000 líneas.
- Zerocopy avanza ocho versiones de golpe dentro del árbol del kernel.
- Llegan los módulos
memyratelimit, y pin-init admite estructuras tupla. - Más código Rust entra por otros subsistemas, como el controlador Nova de NVIDIA.
La cifra de 17.000 líneas procede del titular de Phoronix, que no aclara si son líneas añadidas o el saldo neto del cambio. Una parte corresponde a código de terceros que el kernel copia en su repositorio (lo que en la jerga se llama vendorizar), así que no equivale a 17.000 líneas de lógica nueva escrita para Linux. Aun así, Phoronix describe esta tanda como «una grande», y llega en un momento en que Rust ya no es una curiosidad dentro del kernel. Sobre ese recorrido hablamos en Rust en Linux: la transición que ya no se puede frenar.
Zerocopy da un salto de ocho versiones
Zerocopy es una biblioteca que proporciona rasgos (traits) y macros para convertir de forma segura entre secuencias de bytes en bruto y tipos estructurados. En un kernel, esa conversión es constante: cabeceras de paquetes de red, estructuras que llegan del firmware, registros de dispositivos o datos que comparte el espacio de usuario. En C se resuelve con conversiones de punteros y mucha confianza en que el tamaño y la alineación cuadran. Zerocopy permite que el compilador compruebe esas condiciones y evita copias innecesarias de memoria.
Según Phoronix, la versión que el kernel incluye en su árbol avanza ocho versiones en Linux 7.4. El artículo no detalla de qué versión a qué versión ni qué cambios concretos aporta. También se actualizan otros crates que el kernel trae consigo, sin que la fuente los enumere.
Nuevos módulos y mejoras en pin-init
El crate kernel, la capa que expone las interfaces del núcleo a los controladores escritos en Rust, gana dos módulos: mem y ratelimit, además de mejoras en algunos existentes. Phoronix no explica su contenido. Por el nombre, ratelimit apunta a la limitación de frecuencia que el kernel ya usa en C para no inundar el registro con el mismo mensaje, pero el envío consultado no da más detalles.
Pin-init, el crate que gestiona la inicialización de objetos que no pueden moverse de posición en memoria, añade soporte para estructuras tupla y la creación segura de autorreferencias, es decir, estructuras que contienen punteros a sí mismas. Es un problema clásico en el kernel, donde muchas estructuras (listas enlazadas, cerrojos) dejan de funcionar si se copian a otra dirección. Pin-init también mejora sus mensajes de diagnóstico.
En la cadena de herramientas, el envío habilita la característica inestable proc_macro_span de Rust para mejorar los diagnósticos de todas las macros procedimentales. En la práctica, cuando una macro falla, el compilador puede señalar con más precisión la parte del código que provoca el error, algo útil en un proyecto que usa macros para buena parte de su infraestructura Rust.
Nova y DRM llegan por su propio camino
El pull request de Ojeda no recoge todo el Rust que entrará en Linux 7.4. Otros subsistemas envían su propio código a Linus Torvalds por separado. Phoronix menciona las mejoras del controlador Nova, el controlador en Rust para GPU de NVIDIA, y el trabajo en la infraestructura Rust de DRM (Direct Rendering Manager, el subsistema gráfico del kernel).
En el caso de Nova, los cambios para Linux 7.4 incluyen una interfaz para controladores hijos, un ioctl que informa al espacio de usuario de la arquitectura de la GPU, el identificador del chip y la memoria de vídeo, asignación de VRAM, vaciado de la TLB, tipos de tablas de páginas MMU v2 y v3, y acceso desde la CPU a la VRAM mapeada a través de BAR1. Son piezas de base: Nova sigue en desarrollo y todavía no es un controlador para uso general.
Linux 7.4 está en su ventana de integración, el periodo de dos semanas en el que Torvalds acepta las novedades. Hasta la versión final pueden cambiar detalles, aunque lo habitual es que lo que entra en esta fase llegue a la versión estable. Quien quiera ver otro ejemplo de Rust en el arranque de Linux puede leer cómo un desarrollador logró arrancar Linux en x86 con Rust y KVM.
Preguntas frecuentes
¿Cuánto código Rust trae Linux 7.4?
Phoronix habla de unas 17.000 líneas en el pull request de Miguel Ojeda, sin aclarar si son líneas añadidas o netas. Una parte importante es la actualización de Zerocopy.
¿Qué es Zerocopy en el kernel de Linux?
Es una biblioteca de Rust que permite convertir de forma segura entre bytes en bruto y tipos estructurados. En Linux 7.4 avanza ocho versiones.
¿Qué novedades trae pin-init en Linux 7.4?
Añade soporte para estructuras tupla, la creación segura de autorreferencias y mejores diagnósticos.
¿El controlador Nova de NVIDIA forma parte de este envío?
No. Las mejoras de Nova y de la infraestructura Rust de DRM llegan a Linux 7.4 mediante solicitudes de integración separadas de sus subsistemas.
Fuentes:







