Como sabemos Linux es un modelo secundario del lenguaje C. Pero los tiempos cambian. El lenguaje Rust esta ganando terreno lentamente para su uso como lenguaje de sistema en Linux. Por ejemplo, en la Conferencia de Plomeros de Linux 2020 , los desarrolladores pensaron seriamente en usar el lenguaje Rust para el nuevo código en línea de Linux. Para entender que es lo que pasa con el lenguaje se le ha consultado al creador de Linux, Linus Torvalds, y al mantenedor del kernel estable de Linux, Greg Kroah-Hartman, su opinión y recompilamos las de otros jugadores.

Esta no es solo una teoría impulsada por los entusiastas de Rust. Una gran cantidad de Rust en Linux ya se está lanzando al mercado. Amazon Web Services (AWS) lanzó recientemente Bottlerocket Linux para contenedores y tiene una gran cantidad de Rust.

Sylvestre Ledru, directora de Mozilla de día y desarrollador de Debian Linux de noche, ha portado una versión Rust de Coreutils a Linux utilizando la infraestructura del compilador LLVM y su interfaz de usuario Clang C y su infraestructura de herramientas. Las Coreutils son las utilidades principales del shell de GNU. Con estos, Ledru ha arrancado Linux y ha ejecutado los paquetes Debian más populares. Ledru admite que esto aún no está listo para la producción, pero con mucho esfuerzo, funciona hoy. Eventualmente, puede reemplazar a GNU Coreutils.

¿Por qué hacer algo de esto en primer lugar? Rust es popular porque se presta más fácilmente a escribir software seguro. Samartha Chandrashekar, gerente de productos de AWS, dijo que «ayuda a garantizar la seguridad de los subprocesos y evita errores relacionados con la memoria, como desbordamientos de búfer que pueden provocar vulnerabilidades de seguridad». Muchos otros desarrolladores están de acuerdo con Chandrashekar.

En los círculos de Linux, Alex Gaynor y Geoffrey Thomas en la Cumbre de Seguridad de Linux de 2019 dijeron que aproximadamente dos tercios de las vulnerabilidades del kernel de Linux provienen de problemas de seguridad de la memoria. Rust, en teoría, puede evitarlos por completo utilizando las interfaces de programación de aplicaciones (API) inherentemente más seguras de Rust.

El desarrollador de Linux Nelson Elhage en su resumen de la reunión de plomeros sobre Rust en Linux , agregó que los defensores de Linux Rust no están «proponiendo una reescritura del kernel de Linux en Rust; están enfocados solo en avanzar hacia un mundo donde se pueda escribir nuevo código. en Rust. Las tres áreas de posible preocupación para el soporte de Rust son el uso de las API existentes en el kernel, el soporte de arquitectura «y el manejo de la compatibilidad de la interfaz binaria de aplicaciones (ABI) entre Rust y C.

¿Qué opina Torvalds de todo esto?

Él está en «el campo de ‘esperar y ver’. Estoy interesado en el proyecto, pero creo que está impulsado por personas que están muy entusiasmadas con Rust, y quiero ver cómo realmente termina funcionando en la práctica».

«Personalmente», Torvalds «de ninguna manera» está presionando «por Rust, [pero] esta abierto a ello considerando las ventajas prometidas y evitando algunos problemas de seguridad, pero también sé que a veces las promesas no se cumplen».

Torvalds piensa que «el primer objetivo principal de Rust parecen ser los controladores, simplemente porque ahí es donde se encuentran muchos objetivos posibles diferentes, y tienes estas 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 la más obvia «.

Otro punto es tomar los controladores primero para «cualquier prueba inicial con los controladores es simplemente el lado de la arquitectura», dijo Torvalds. «Muchos controladores solo son relevantes en un par de arquitecturas de destino, por lo que todo el problema con el código Rust que no es compatible con algunas arquitecturas es un problema menor».

Kroah-Hartman está de acuerdo en que «los controladores son probablemente el primer lugar para un intento como este, ya que son las ‘hojas finales’ del árbol de dependencias en el código fuente del núcleo. Dependen de la funcionalidad del núcleo del núcleo, pero nada depende de ellos».

Torvalds sabe que a algunas personas no les gusta en absoluto la idea de Rust en el espacio de usuario. «La gente que se queja de «Rustificación» en el espacio de usuario no es una buena señal para el uso futuro del kernel, pero bueno, ya veremos. El kernel es diferente de los proyectos del espacio de usuario, más difícil en algunos aspectos (usamos mucho de 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 aspectos (principalmente en el sentido de que el kernel es bastante autónomo, y luego no depende de otros proyectos para el binario final) «.

Desde donde se sienta Kroah-Hartman, «todo se reducirá a qué tan bien la interacción entre las estructuras del núcleo del kernel y las reglas de vida que están escritas en C se pueden mapear en las estructuras de Rust y las reglas de vida para que los controladores en Rust puedan usarlas correctamente. Eso va a requerir mucho trabajo cuidadoso por parte de los desarrolladores que quieran conectar todo esto y les deseo la mejor de las suertes «.

Por lo tanto, aunque es casi seguro que no verá Linux portado de C a Rust en el corto plazo, hay mucho interés y acción en llevar programas de espacio de usuario basados ​​en Rust, controladores y, finalmente, kernels de Linux basados ​​en Rust en Linux. Sistema operativo.

Deja un comentario