Cuarta edición de parches para el núcleo de Linux con soporte para el lenguaje Rust.

Miguel Ojeda, autor del proyecto Rust-for-Linux, ha propuesto para consideración de los desarrolladores del núcleo de Linux una cuarta variante de componentes para el desarrollo de controladores de dispositivos en el lenguaje Rust. El soporte para Rust se considera experimental, pero ya está acordado para su inclusión en la rama linux-next y está lo suficientemente desarrollado para comenzar a trabajar en la creación de capas de abstracción sobre las subsistemas del núcleo, así como para escribir controladores y módulos. El desarrollo está financiado por Google y la organización ISRG (Internet Security Research Group), que es la fundadora del proyecto Let’s Encrypt y promueve el uso de HTTPS y el desarrollo de tecnologías para mejorar la seguridad de Internet.

Recordemos que los cambios propuestos permiten usar Rust como segundo lenguaje para el desarrollo de controladores y módulos del núcleo. El soporte para Rust se presenta como una opción, no activada por defecto y no provoca la inclusión de Rust entre las dependencias de construcción obligatorias del núcleo. Usar Rust para el desarrollo de controladores permitirá crear controladores seguros y de mayor calidad con un esfuerzo mínimo, libre de problemas como el acceso a áreas de memoria después de su liberación, la desreferencia de punteros nulos y la salida de los límites del búfer.

El manejo seguro de la memoria se garantiza en Rust durante la compilación a través de la verificación de referencias, el seguimiento de la propiedad de los objetos y la consideración del tiempo de vida de los objetos (áreas de visibilidad), 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 proporciona medios para proteger contra desbordamientos 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 inmutabilidad (immutable) de referencias y variables por defecto, y ofrece una fuerte tipificación estática para minimizar errores lógicos.

En la nueva variante de los parches se han continuado resolviendo las observaciones hechas durante la discusión de la primera, segunda y tercera versiones de los parches. En la nueva versión:

  • Se ha realizado la transición al uso como compilador de referencia de la versión estable de Rust 1.58.0. Entre los cambios necesarios para el proyecto, que aún no están incluidos en el conjunto principal de herramientas de Rust, se destacan la bandera “-Zsymbol-mangling-version=v0” (esperada en Rust 1.59.0) y el modo “maybe_uninit_extra” (esperado en Rust 1.60.0).
  • Se han añadido verificaciones automáticas de la disponibilidad de las herramientas adecuadas de Rust y se han ampliado las capacidades de prueba del soporte de Rust en el sistema.
  • Se han propuesto nuevas abstracciones para acceder desde el código en Rust a las tablas de identificadores de dispositivos (“IdArray” e “IdTable”).
  • Se han añadido capas para acceder a funciones relacionadas con el temporizador (framework de reloj).
  • Los controladores para plataformas ahora se definen a través de la implementación de traits.
  • Se ha añadido un nuevo macro para simplificar el registro de controladores de plataformas, así como se ha propuesto una nueva plantilla para controladores típicos.
  • Se añadieron macros para las estructuras «dev_*».
  • Se añadieron métodos «{read,write}*_relaxed» para el tipo IoMem.
  • Se eliminó la propiedad FileOpener para simplificar las operaciones con archivos.
  • Se añadió el parámetro «ThisModule» a la lista de argumentos que se pasan al registrar el controlador.
  • Se propuso una plantilla estándar para crear módulos del núcleo en el lenguaje Rust.

Fuente: opennet.ru

Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS 🔥 Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS | ProHoster