Linux Adictos Darkcrizt  

Rust en Linux: avances, desafíos y estado actual

Controladores Rust en Linux

Desde que Linus Torvalds incluyó Rust en la versión 6.1 del Kernel de Linux, el lenguaje ha estado ganando terreno gradualmente y son cada vez más los desarrolladores que se unen a este movimiento.

Sin embargo, algunos de los desarrolladores del Kernel de Linux resaltan que los avances cada vez más supondrán más trabajo y desafíos, ya que dentro de sus comentarios dan a entender que es posible que surja un estancamiento.

Cabe aclarar que no mencionamos que la implementación llegue a un punto muerto, sino que dados los comentarios de diversos desarrolladores y como ya mencionamos, en el estado actual, ha comenzado a surgir la necesidad de disminuir el ritmo de trabajo, o al menos eso es lo que nos sugiere el siguiente artículo de LWN.net.

Y es que hace ya varias semanas me encontré con este artículo en donde se trata de abordar el estado actual del uso de Rust en Linux y analizar si el experimento con este lenguaje de programación ha sido exitoso.

Se menciona que desde hace algunos años, Rust ha sido un tema que no ha dejado de tocarse en la «Kernel Maintainers Summit» y la celebrada en este 2023 no fue la excepción, ya que desde la implementación oficial de Rust como segundo lenguaje de programación en Linux, Miguel Ojeda, desarrollador de Rust-for-Linux, destacó el creciente interés en el uso de Rust para el desarrollo del kernel durante la sesión dedicada a este tema.

Miguel Ojeda menciona que el proyecto Rust-for-Linux ha experimentado un impulso significativo en el último año, ya que se ha sumado un ingeniero a tiempo completo y un desarrollador estudiantil y que diversas empresas se han sumado al respaldado del trabajo. Además, se está trabajando para integrar la herramienta Coccinelle con el código Rust. Sin embargo, no todo es color de rosa, ya que uno de los desafíos actuales es reclutar más revisores para el código que se está desarrollando.

En el artículo se menciona qué los problemas han comenzado a ser notorios en la cadena de herramientas, ya que el progreso del compilador Rust basado en GCC, conocido como gccrs, se ha ralentizado. Por otro lado, el generador de código GCC para rustc muestra avances prometedores y ha sido fusionado con el compilador, lo que permitirá expandir el soporte de Rust a arquitecturas que no son compatibles con LLVM.

Dentro del kernel, se están realizando avances en varios subsistemas, tal es el caso de la implementación en Rust del binder de Android que ha demostrado un rendimiento comparable a la implementación en C, con una cantidad mínima de código inseguro. Además, se está trabajando en vinculaciones de sistemas de archivos con el objetivo de lograr soporte de solo lectura en Rust, con la visión de implementar un sistema de archivos completamente seguro en Rust.

Dave Airlie, el mantenedor del subsistema DRM (gráficos), dijo que, si se sale con la suya, habrá un controlador Rust DRM fusionado en los próximos lanzamientos. Christoph Hellwig respondió que Airlie estaba dispuesta a «hacer la vida de todos un infierno» para poder jugar con su juguete favorito. Hellwig dijo que fusionar Rust obligaría a otros a lidiar con un segundo lenguaje, nuevas cadenas de herramientas y «envoltorios con semántica extraña». Dan Williams dijo que la situación actual «es lo que parece el éxito» y que la comunidad del kernel ya estaba comprometida con Rust.

Aunque se observa un creciente interés por parte de los mantenedores en adoptar Rust, surgen desafíos, ya que se ha debatido la necesidad de tener controladores de referencia en el kernel escritos en Rust para mostrar cómo pueden escribirse controladores en este lenguaje. Sin embargo, la duplicación de funcionalidad entre controladores en Rust y C ha generado desconfianza entre los mantenedores.

La discusión sobre la inclusión de Rust ha tomado diferentes direcciones, pues algunos mantenedores abogan por la fusión de controladores Rust autónomos, como el controlador de binder, para demostrar su viabilidad, mientras que por el otro lado de la moneda otros expresan preocupaciones sobre la complejidad de mantener un kernel con dos lenguajes de programación.

Airlie continuó diciendo que gran parte del trabajo de Rust está actualmente bloqueado en una especie de problema del huevo y la gallina. Las abstracciones no se pueden fusionar hasta que haya un usuario para ellas, pero el código que necesita esas abstracciones se bloquea esperando que el código llegue a múltiples subsistemas. Como resultado, los desarrolladores que trabajan en Rust están arrastrando grandes cantidades de parches que necesitan para que su código funcione. Romper ese obstáculo requerirá permitir la entrada de algunas abstracciones sin usuarios inmediatos.

A pesar de los desafíos, la comunidad del kernel reconoce el potencial de Rust para mejorar la seguridad y la estabilidad del código. Se plantea la posibilidad de fusionar controladores más ampliamente utilizados en Rust en el futuro, una vez que se resuelvan las preocupaciones sobre la capacidad de revisión y mantenimiento.

Ojeda estuvo de acuerdo en que este problema ha ralentizado el progreso, pero dijo que ha tratado de no presionar a los mantenedores para que fusionen el código rápidamente. En el caso de las redes, irónicamente, los desarrolladores de Rust tuvieron que pedir a los encargados de la red que ralentizaran la fusión del código Rust.

Finalmente cabe mencionar que el camino hacia la adopción generalizada de Rust en Linux presenta desafíos, el interés y el progreso en este espacio son evidentes. Con el tiempo, se espera que Rust juegue un papel importante en la mejora de Linux.

Fuente: https://lwn.net/

Leave A Comment

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.