
A lo largo de los últimos meses se ha intensificado un debate que parecía haberse limitado a simples desacuerdos, y ahora está escalando a niveles críticos dentro de la comunidad de desarrolladores de Linux. Lo que comenzó como una discusión sobre la introducción de Rust en el kernel ha generado tensiones profundas y divisiones entre quienes ven en este lenguaje una solución innovadora y quienes, en cambio, temen que su adopción complique y fragmente una base de código tradicionalmente homogénea.
Cuando se propuso por primera vez integrar Rust en Linux, muchos desarrolladores se mostraron entusiasmados. Tras extensas revisiones y la aceptación del cambio por parte de Linus Torvalds, el lenguaje se incorporó en la versión 6.1 del Kernel. Sin embargo, surgieron comentarios iniciales que, en su momento, fueron minimizados como “simples opiniones”, pero que hoy se evidencian como señales de alarma.
Esos comentarios que menciono hacían referencia a ciertas “costumbres” por asi decirlo, y básicamente mencionaban que habría la posibilidad de que existiera cierta resistencia por parte de los desarrolladores con la introduccion de un nuevo lenguaje y esto podría crear una «división»entre el grupo de desarrollo de Linux y o sorpresa, tal parece que esto se está volviendo una realidad.
En días anteriores habíamos compartido aquí en el blog sobre las discusiones y problemáticas que han surgido en el grupo de desarrollo de Linux, entre ellas la renuncia silenciosa de Christoph Hellwig quien expreso su rechazo a respaldar parches que faciliten el desarrollo de controladores en Rust.
Poco después de ello, ha vuelto a hablar y ahora compartió su pensar acerca de incorporar envoltorios de Rust en el subsistema DMA del kernel de Linux. Hellwig critica las reglas propuestas por el proyecto Rust para Linux, argumentando que resultan inútiles hasta que sean adoptadas y formalizadas en la documentación oficial del kernel por consenso comunitario.
Hellwig señala que dichas reglas erróneamente permiten a los mantenedores decidir unilateralmente sobre la incorporación de código Rust en sus subsistemas, cuando, en una conversación privada, Linus Torvalds dejó claro su compromiso de aceptar código Rust en el núcleo, independientemente de las objeciones planteadas.
Hellwig utiliza una analogía impactante, comparando los envoltorios de Rust con un “tumor canceroso” que se propagará a todos los subsistemas, causando una fragmentación descontrolada. Para él, el kernel está evolucionando de una entidad monolítica a un proyecto escrito en múltiples lenguajes, sin una directriz clara sobre cuál utilizar y en qué momento, lo que genera una necesidad constante de reescribir código de un lenguaje a otro. Este escenario, según Hellwig, complica enormemente el mantenimiento y la coherencia del sistema.
Además, Hellwig cuestiona el propósito de introducir Rust en el kernel. Si la intención es abordar problemas de seguridad relacionados con la gestión de memoria de bajo nivel, el primer paso debería ser modernizar el código existente. Dado que los mantenedores se muestran reacios incluso a implementar controles básicos, como la verificación de desbordamientos de enteros.
Parece poco realista pensar que se pueda cerrar la brecha entre un kernel que ignora normas simples de seguridad y otro que sigue reglas estrictas.
Por otro lado, si el objetivo es simplificar el desarrollo de controladores, introducir un nuevo lenguaje solo incrementará la carga de trabajo sobre quienes ya están sobrecargados manteniendo la infraestructura del kernel.
En cuanto al otro lado de la moneda, los defensores de la adopción de Rust en el kernel destacan las ventajas potenciales ya conocidas al escribir nuevo código en Rust: reducir significativamente el riesgo de errores de memoria, condiciones de carrera y ciertos errores lógicos.
Asimismo, se argumenta que las garantías del lenguaje permitirían a los mantenedores revisar y refactorizar módulos de manera más eficiente, aprovechando abstracciones avanzadas que facilitarían la creación de nuevos controladores y módulos. Además, el uso de un lenguaje moderno podría atraer a nuevos desarrolladores al proyecto y las herramientas de Rust, como los requisitos obligatorios de documentación para APIs públicas, podrían contribuir a elevar los estándares de seguridad y calidad del código.
En definitiva, el debate sobre la inclusión de Rust en el kernel de Linux refleja una tensión profunda entre la necesidad de modernizar y asegurar el sistema y el riesgo de complicar y fragmentar una base de código. Mientras algunos ven en Rust una solución a problemas históricos de seguridad y mantenimiento, otros, como Hellwig, advierten que sin un consenso claro, la mezcla de múltiples lenguajes podría llevar a un caos difícil de manejar en un proyecto tan crítico como el kernel.
Fuente: https://lore.kernel.org
Continúar leyendo...