Linus Torvalds revisó los parches que implementan la capacidad de crear controladores en el lenguaje Rust para el núcleo de Linux, y expresó algunas críticas importantes.
Las principales preocupaciones surgieron por la potencial posibilidad de entrar en panic() en situaciones de error, por ejemplo, en situaciones de falta de memoria, donde las operaciones de asignación dinámica de memoria, incluso dentro del núcleo, pueden fallar. Torvalds afirmó que tal enfoque en el núcleo es fundamentalmente inaceptable y que, si no se comprende este punto, puede rechazar por completo (totally NAKed) cualquier código que intente utilizar tal enfoque. Por otro lado, el desarrollador que trabaja en los parches coincidió con este problema y considera que es solucionable.
Otro problema surgió al intentar usar cálculos en punto flotante o tipos de 128 bits, lo cual no es aceptable para entornos como el núcleo de Linux. Esto resultó ser un problema más serio, ya que actualmente la biblioteca base (core) de Rust es indivisible y representa un gran blob: no hay forma de solicitar solo algunas de las funcionalidades, evitando el uso de la funcionalidad problemática. Resolver este problema puede requerir modificaciones en el compilador de Rust y en la biblioteca, mientras que, en este momento, el equipo aún no tiene una estrategia sobre cómo implementar la modularidad de las bibliotecas del lenguaje.
Además, Torvalds señaló que el ejemplo de controlador proporcionado es inútil y sugirió adjuntar como ejemplo algún controlador que resuelva uno de los problemas reales.
Adición: La empresa Google anunció su participación en la iniciativa para promover el soporte de Rust en el núcleo de Linux y presentó los aspectos técnicos de la viabilidad de la implementación de Rust para abordar los problemas derivados de errores en la gestión de memoria. Google cree que Rust ya está preparado para unirse a C como un lenguaje para el desarrollo de componentes del núcleo de Linux. El artículo también presenta ejemplos del uso del lenguaje Rust para el desarrollo de controladores del núcleo, en el contexto de su uso en la plataforma Android (Rust ha sido reconocido como un lenguaje oficialmente soportado para el desarrollo de Android).
Se informa que Google ha preparado un prototipo inicial de un controlador escrito en Rust para el mecanismo de comunicación entre procesos Binder, lo que permitirá realizar una comparación detallada del rendimiento y la seguridad de las implementaciones de Binder en C y Rust. En su estado actual, el trabajo aún no está completado, pero ya se han preparado capas para utilizar estas abstracciones en el código Rust para casi todas las abstracciones básicas de funcionalidad del núcleo necesarias para el funcionamiento de Binder.
Fuente: opennet.ru
