¿Linux portado a Rust? Por ahora no, pero no se descarta de cara al futuro
Rust, el lenguaje de programación que nació bajo el paraguas de Mozilla, está para muchos llamado a hacer grandes cosas, entre ellas sustituir a C y C++. Su potencial ha despertado la demanda para que sea incluido en el kernel Linux, uno de los grandes bastiones del lenguaje de programación C (si bien en la actualidad no es C puro, al menos a nivel de proyecto).
A pesar de un interés aparentemente creciente, la inclusión de Rust en Linux depende mucho de lo que decida el jefe y mandamás del kernel, Linus Torvalds. Para saber qué opina el creador de Linux al respecto, el veterano periodista de ZDNet Steven Vaughan-Nichols ha contactado con el mediático ingeniero finlandés y con Greg Kroah-Hartman, que a día de hoy es uno de los principales mantenedores del kernel (si no es el principal) y quien ocupó la posición de liderazgo de manera interina durante el tiempo en el que Torvalds decidió tomarse un respiro.
Linus Torvalds ha respondido a Vaughan-Nichols que por ahora prefiere esperar y ver qué pasa con Rust: “Estoy interesado en el proyecto, pero creo que está impulsado por personas que están muy entusiasmadas con Rust, y quiero ver cómo termina funcionando realmente en la práctica. Personalmente, no estoy impulsando Rust de ninguna manera, pero estoy abierto a ello considerando las ventajas que promete y para evitar algunos problemas de seguridad, pero también sé que a veces las promesas no dan resultado”.
Los problemas de seguridad pueden apuntar hacia algo que expusieron Alex Gaynor y Geoffrey Thomas, dos personas vinculadas a Linux, en el evento Linux Security Summit de 2019, en el que dijeron que aproximadamente dos tercios de las vulnerabilidades halladas en el kernel vienen de problemas de seguridad en la memoria, un punto que podría subsanarse con la utilización de Rust.
Linus Torvalds cree que “el primer gran objetivo de Rust parecen ser los controladores, simplemente porque ahí es donde se encuentran muchos posibles objetivos, y además están esas partes individuales del kernel que son bastante pequeñas e independientes. Puede que ese no sea un objetivo muy interesante para algunas personas, pero es el obvio. Muchos controladores solo son relevantes en un par de arquitecturas, por lo que todo el problema con el código Rust que no es compatible con algunas arquitecturas es un problema menor”.
Por su parte, Greg Kroah-Hartman se muestra bastante de acuerdo con la postura de Torvalds con respecto a Rust: “Los controladores son probablemente el primer lugar para intentarlo, ya que son las ‘hojas finales’ del árbol de dependencias en la fuente del kernel. Dependen de la funcionalidad del núcleo del núcleo, pero nada depende de ellos”.
Otro punto que genera debate en lo que respecta a la inclusión de Rust en Linux es su uso en el espacio de usuario. Aquí Torvalds se limita a recoger el desacuerdo manifestado por algunas personas: “La gente que se queja de ‘rustificación’ en el espacio de usuario no es buena señal para el uso futuro en el kernel, pero bueno, ya veremos. El kernel es diferente de los proyectos del espacio de usuario -más difícil en algunos aspectos (usamos muchos archivos de encabezado muy extraños que empujan el límite de lo que se puede llamar ‘C’), pero más fácil en muchos otros (principalmente en el sentido de que el kernel es bastante autónomo, y luego no depende de otros proyectos para el binario final)”.
Ante esas palabras de Torvalds, Greg Kroah-Hartman ha recalcado la complejidad que conllevaría la incorporación de Rust a Linux: “Todo se reducirá a cuán buena es la interacción entre las estructuras del núcleo del kernel y las reglas permanentes que están escritas en C que se pueden mapear en las estructuras de Rust y las reglas permanentes para que los controladores en Rust puedan usarlas correctamente. Eso va a requerir de mucho trabajo cuidadoso por parte de los desarrolladores que quieran conectar todo esto y les deseo la mejor de las suertes”.
Sin embargo, ¿cuál sería la posible situación de Rust en Linux en un futuro inmediato? De hacerse realidad esa probabilidad, Nelson Elhage, desarrollador de Linux, ha explicado que las personas que han propuesto usar Rust en Linux no tienen la intención de reescribir el kernel, sino que están centradas en avanzar hacia un mundo en el que Rust podría ser una tecnología dominante. Por ahora las tres áreas que más les preocupan son las siguientes: el uso de las API existentes en el kernel, el soporte de la arquitectura y el manejo de la compatibilidad de la ABI entre Rust y C.
En resumidas cuentas, ver Linux, y más si tenemos en cuenta lo grueso del kernel, portado a Rust es a día de hoy más un sueño que algo que pueda hacerse realidad. Sin embargo, el interés por introducir esta tecnología es muy real y todo camino se empieza a recorrer dando el primero paso, así que en un futuro quién sabe si veremos un Linux construido principalmente con Rust. Viendo la creciente importancia de la seguridad, los defensores de Rust tienen ahí un filón para empezar a ganar terreno.