El soporte de Rust para el kernel de Linux enfrenta críticas de Torvalds

Linus Torvalds revisó los parches que implementaban la capacidad de crear controladores en el lenguaje Rust para el kernel de Linux e hizo algunos comentarios críticos.

Las mayores quejas fueron causadas por la posibilidad potencial de pánico() en situaciones de error, por ejemplo, en una situación de poca memoria, cuando las operaciones de asignación dinámica de memoria, incluso dentro del núcleo, pueden fallar. Torvalds declaró que tal enfoque en el kernel es fundamentalmente inaceptable y, si no se entiende este punto, puede DESNUDAR completamente cualquier código que intente utilizar dicho enfoque. Por otro lado, el desarrollador del parche estuvo de acuerdo con este problema y lo considera solucionable.

Otro problema fueron los intentos de utilizar tipos de punto flotante o de 128 bits, que no son aceptables para entornos como el kernel de Linux. Esto resultó ser un problema más grave, ya que por el momento la biblioteca principal de Rust es indivisible y representa una gran burbuja: no hay forma de solicitar solo algunas de las funciones, lo que impide el uso de una u otra funcionalidad problemática. Resolver el problema puede requerir cambios en el compilador y las bibliotecas de Rust, aunque por el momento el equipo aún no tiene una estrategia sobre cómo implementar la modularización de las bibliotecas del lenguaje.

Además, Torvalds notó que el ejemplo de controlador proporcionado era inútil y nos aconsejó usar como ejemplo algún controlador que resuelva uno de los problemas reales.

Actualización: Google ha anunciado su participación en la iniciativa para impulsar el soporte de Rust en el kernel de Linux y ha proporcionado razones técnicas para introducir Rust para combatir los problemas derivados de errores de memoria. Google cree que Rust está listo para unirse a C como lenguaje para desarrollar componentes del kernel de Linux. El artículo también proporciona ejemplos del uso del lenguaje Rust para desarrollar controladores de kernel, en el contexto de su uso en la plataforma Android (Rust es reconocido como un lenguaje oficialmente admitido para el desarrollo de Android).

Cabe señalar que Google ha preparado un prototipo inicial de un controlador escrito en Rust para el mecanismo de comunicación entre procesos de Binder, que permitirá una comparación detallada del rendimiento y la seguridad de las implementaciones de Binder en C y Rust. En su forma actual, el trabajo aún no está completo, pero para casi todas las abstracciones básicas de la funcionalidad del kernel necesarias para que Binder funcione, se han preparado capas para usar estas abstracciones en el código Rust.

Fuente: opennet.ru

Añadir un comentario