Llega la novena versión de Rust para Linux y dice adiós al soporte para versiones anteriores a Linux 3.2

agosto 09, 2022 , 0 Comments

Vaya que el trabajo del soporte de los controladores Rust para Linux ya se ha encaminado y ha comenzado un desarrollo bastante continuo, pues no tiene mucho que fue anunciada la versión 8 de los parches y ya ahorita tenemos la versión  9.

Y es que en esta novena versión que se ha propuesto, cabe mencionar que como tal es una versión simplificada de la octava edición publicada hace unos días. El kit se distingue por una importante reducción de tamaño y por dejar solo el mínimo más necesario, suficiente para construir un módulo kernel escrito en Rust.

Se supone que el parche mínimo facilitará la adopción del soporte de Rust en el núcleo principal. Después de brindar un soporte mínimo, se planea aumentar gradualmente la funcionalidad existente, transfiriendo otros cambios de la rama Rust-for-Linux.

Esta es la serie de parches (v9) para agregar soporte para Rust como segundo lenguaje al kernel de Linux…

Como de costumbre, un agradecimiento especial para ISRG (Grupo de Investigación de Seguridad en Internet) y Google por su apoyo financiero en este esfuerzo.

En comparación con la versión 8, el tamaño del parche se ha reducido de 40 000 a 13 000 líneas de código. Por ejemplo, la novena versión incluye solo el 3 % del código (500 líneas) del paquete de cajas «kernel» y el 60 % de la biblioteca alloc, lo que le permite crear los módulos de kernel más simples usando el tipo Vec<i32> y mostrando información en el registro del kernel usando la macro «pr_info!».

Por otra parte, en relación con Rust y Linux, vale mencionar que hace poco los desarrolladores del proyecto Rust advirtieron a los usuarios sobre el aumento inminente de los requisitos para el entorno Linux en el compilador, el administrador de paquetes Cargo y la biblioteca estándar libstd.

A partir de Rust 1.64, programado para el 22 de septiembre de 2022, los requisitos mínimos para Glibc se elevarán de la versión 2.11 a la 2.17 y el kernel de Linux de la 2.6.32 a la 3.2. Las restricciones también se aplican a los binarios de Rust creados con libstd.

Las distribuciones RHEL 7, SLES 12-SP5, Debian 8 y Ubuntu 14.04 cumplen con los nuevos requisitos. Se interrumpirá la compatibilidad con RHEL 6, SLES 11-SP4, Debian 7 y Ubuntu 12.04. Entre las razones para desaprobar el soporte para sistemas Linux más antiguos se encuentran los recursos limitados para continuar manteniendo la compatibilidad con entornos más antiguos.

¿Por qué aumentar los requisitos?
Queremos que Rust y los archivos binarios producidos por Rust sean lo más ampliamente utilizables posible. Al mismo tiempo, el proyecto Rust solo tiene recursos limitados para mantener la compatibilidad con entornos antiguos.

Hay dos partes en los requisitos de la cadena de herramientas: los requisitos mínimos para ejecutar el compilador de Rust en un sistema host y los requisitos mínimos para los binarios compilados de forma cruzada.

Los requisitos mínimos para las cadenas de herramientas del host afectan a nuestro sistema de compilación. Rust CI produce artefactos binarios para docenas de objetivos diferentes. La creación de archivos binarios que admitan versiones antiguas de glibc requiere la creación de un sistema operativo con glibc antiguo (para compilaciones nativas) o el uso de una raíz de compilación con una versión anterior de glibc (para compilaciones cruzadas).

En particular, la compatibilidad con Glibcs ​​anteriores requiere el uso de herramientas más antiguas cuando se verifica en un sistema de integración continua, frente a los mayores requisitos de versiones en LLVM y las utilidades de compilación cruzada. El aumento en los requisitos de la versión del kernel se debe a la capacidad de libstd para usar nuevas llamadas al sistema sin necesidad de mantener capas para garantizar la compatibilidad con kernels más antiguos.

Se recomienda a los usuarios que usan ejecutables creados por Rust en entornos con kernels de Linux más antiguos que actualicen sus sistemas, permanezcan en versiones anteriores del compilador o mantengan su propia bifurcación libstd con capas para mantener la compatibilidad.

Finalmente si estás interesado en poder conocer más al respecto, puedes consultar los detalles 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.