Durante los Ășltimos meses los desarrolladores de Linux han estado discutiendo la posibilidad de permitir el uso del lenguaje Rust para escribir nuevos controladores de dispositivos para el kernel.
El año pasado, los desarrolladores del kernel de Linux parecen haber llegado a un acuerdo sobre el tema, pues los partidarios de Rust han citado trabajos que muestran que aproximadamente dos tercios de las vulnerabilidades del kernel a las que se les han asignado CVE en Android y Ubuntu estån relacionadas con problemas de seguridad de la memoria.
DespuĂ©s de esta declaraciĂłn, Linus Torvalds, ingeniero de software, creador principal y desarrollador del kernel de Linux, dijo en una entrevista que las discusiones sobre el tema serĂan mucho mĂĄs importantes que una larga publicaciĂłn de Google sobre el lenguaje.
Cuando se le preguntó sobre la sugerencia de utilizar Rust indicó que, «la solución aquà es simple: simplemente use C++ en lugar de Rust».
Después de ello en marzo, fue lanzado el primer soporte que permitió poder colocar en el årbol Linux-Next los controladores Rust para mås pruebas antes de su eventual inclusión en el kernel principal.
Justo detrĂĄs habĂa una «solicitud de comentarios» reeditada en la lista de correo del kernel sobre la perspectiva del cĂłdigo Rust para el kernel de Linux.
Miguel Ojeda, desarrollador del kernel de Linux, iniciĂł una propuesta de Solicitud de comentarios (RFC) en la lista de correo del kernel de Linux.
La publicaciĂłn de la lista de correo describiĂł las creencias de los desarrolladores involucrados en la adiciĂłn de cĂłdigo Rust al kernel, los beneficios como la seguridad mejorada de la memoria y mĂĄs.
âAlgunos de ustedes han notado en las Ășltimas semanas y meses que se estĂĄ forjando un intento serio de traer un segundo idioma al kernel. Finalmente estamos allĂ, con un RFC que agrega soporte para Rust al kernel de Linux â, dijo Miguel Ojeja. âSabemos que existen enormes costos y riesgos involucrados en la introducciĂłn de un nuevo lenguaje en el kernelâ, agregĂł.
El equipo del proyecto Rust para Linux ha pasado del compilador beta de Rust al uso de versiones estables, migrando cada vez que se lanza una nueva versiĂłn.
âNos gustarĂa agradecer a Rust por trabajar con nosotros en estas opciones para que el kernel pueda usarlasâ, dijo Miguel.
Al actualizar el compilador, el equipo pudo eliminar de la lista algunas caracterĂsticas inestables: const_fn_transmute , const_panic , const_unreachable_unchecked , core_panic y try_reserve .
AdemĂĄs de ello se destaca que se han agregado algunas opciones de modularizaciĂłn mĂĄs a alloc para deshabilitar algunas funciones innecesarias: no_rc y no_sync .
Upstream, para que el caso de uso del kernel esté bien soportado, o mås precisamente, la «combinación» de opciones que necesita el kernel, Upstream core también ha agregado no_fp_fmt_parse .
Por otra parte Rust habilitĂł una serie de diagnĂłsticos adicionales para el compilador Rust y Clippy. Una diferencia con C es que los diagnĂłsticos de Rust son un poco mĂĄs fĂĄciles de deshabilitar en el cĂłdigo, que es mĂĄs estricto en el caso general.
TambiĂ©n se han implementado abstracciones y actualizaciones de controladores. El equipo agregĂł abstracciones para bloqueos de secuencia, devoluciones de llamada de administraciĂłn de energĂa, memoria io ( readX/writeX ), chips irq y administradores de flujo de alto nivel, chips gpio (incluidos chips irq ), perifĂ©ricos, perifĂ©ricos amba y controladores.
El soporte del controlador se mejora con una infraestructura independiente del bus, objetos revocables, mutex revocables, iteradores de bits eficientes, mejores diagnĂłsticos de pĂĄnico y envoltorios de punteros simplificados. AdemĂĄs, mejorĂł y simplificĂł los objetos Ref (compatibles con refcount_t ) y reemplazĂł todas las instancias de Rust.
Y se implementĂł un nuevo controlador para dispositivos gpio PL061 y se envĂa como parche RFC.
Finalmente cabe destacar que el soporte de Rust todavĂa se considera experimental. Sin embargo, el soporte es lo suficientemente bueno como para que los desarrolladores del kernel estĂ©n comenzando a trabajar en abstracciones de Rust para subsistemas y controladores de escritura y otros mĂłdulos. La serie actual acaba de llegar a Linux-next, por lo que la primera ejecuciĂłn tendrĂĄ lugar esta semana.
Fuente: https://lkml.org/lkml