Nueva versión de parches para el kernel de Linux con soporte para el lenguaje Rust

Miguel Ojeda, autor del proyecto Rust-for-Linux, propuso el lanzamiento de componentes v5 para desarrollar controladores de dispositivos en el lenguaje Rust para que los desarrolladores del kernel de Linux los consideren. Esta es la sexta edición de los parches, teniendo en cuenta la primera versión, publicada sin número de versión. El soporte de Rust se considera experimental, pero ya está incluido en la rama Linux-next y está lo suficientemente desarrollado como para comenzar a trabajar en la creación de capas de abstracción sobre los subsistemas del kernel, así como también para escribir controladores y módulos. El desarrollo está financiado por Google y el ISRG (Internet Security Research Group), que es el fundador del proyecto Let's Encrypt y promueve HTTPS y el desarrollo de tecnologías para mejorar la seguridad en Internet.

Recuerde que los cambios propuestos hacen posible el uso de Rust como segundo lenguaje para desarrollar controladores y módulos del kernel. El soporte de Rust se presenta como una opción que no está habilitada de forma predeterminada y no da como resultado la inclusión de Rust entre las dependencias de compilación requeridas para el kernel. El uso de Rust para desarrollar controladores le permitirá crear controladores mejores y más seguros con un esfuerzo mínimo, sin problemas como acceder a un área de memoria después de liberarla, desreferenciar punteros nulos y desbordamientos de búfer.

La seguridad de la memoria se proporciona en Rust en tiempo de compilación mediante la verificación de referencias, el seguimiento de la propiedad del objeto y la vida útil del objeto (alcance), así como mediante la evaluación de la corrección del acceso a la memoria durante la ejecución del código. Rust también brinda protección contra desbordamientos de enteros, requiere la inicialización obligatoria de los valores de las variables antes de su uso, maneja mejor los errores en la biblioteca estándar, aplica el concepto de referencias y variables inmutables de forma predeterminada, ofrece tipado estático fuerte para minimizar los errores lógicos.

La nueva versión de los parches continúa eliminando los comentarios realizados durante la discusión de la primera, segunda, tercera, cuarta y quinta edición de los parches. En la nueva versión:

  • El kit de herramientas se actualizó para lanzar Rust 1.59.0. Una variante de la biblioteca alloc también está sincronizada con la nueva versión de Rust, eliminando la posible generación de un estado de “pánico” cuando ocurren errores, como falta de memoria. Se ha estabilizado la capacidad de utilizar inserciones de ensamblador (“feature(global_asm)”).
  • Se agregó soporte para crear programas host en Rust que se utilizan durante la compilación del kernel.
  • En lugar de entregar archivos de especificación de plataforma de destino pregenerados, se generan dinámicamente en función de la configuración del kernel.
  • Se agregó el parámetro del kernel HAVE_RUST para habilitar arquitecturas que admitan Rust.
  • Se proponen abstracciones para su uso en código Rust para un generador de números pseudoaleatorios de hardware.
  • Permitió el uso de códigos de error sin el prefijo "Error::" (por ejemplo, "return Err(EINVAL)") para aproximarse al manejo de códigos de error en C.
  • Se agregó el tipo "CString" para cadenas C personalizadas. Se han combinado los tipos Formateador y Buffer.
  • Se agregaron tipos Bool y LockInfo.
  • Se ha simplificado la implementación de bloqueos de giro.

Fuente: opennet.ru

Añadir un comentario