Quinta edición de parches para o núcleo de Linux con soporte para a linguaxe Rust

Miguel Ojeda, autor do proxecto Rust-for-Linux, propuxo unha quinta versión de compoñentes para desenvolver controladores de dispositivos na linguaxe Rust para a súa consideración polos desenvolvedores do núcleo de Linux. O soporte de Rust considérase experimental, pero xa está incluído na rama linux-next e está suficientemente desenvolvido para comezar a traballar na creación de capas de abstracción sobre subsistemas do núcleo, así como a escritura de controladores e módulos. O desenvolvemento está financiado por Google e o ISRG (Internet Security Research Group), que é o fundador do proxecto Let's Encrypt e promove o HTTPS e o desenvolvemento de tecnoloxías para mellorar a seguridade en Internet.

Lembre que os cambios propostos permiten utilizar Rust como segunda linguaxe para desenvolver controladores e módulos do núcleo. O soporte de Rust preséntase como unha opción que non está activada por defecto e non fai que Rust se inclúa como unha dependencia de compilación necesaria para o núcleo. Usar Rust para o desenvolvemento de controladores permitirache crear controladores máis seguros e mellores cun mínimo esforzo, libre de problemas como o acceso á memoria despois da liberación, desreferencias de punteiro nulo e desbordamentos do búfer.

O manexo seguro para a memoria ofrécese en Rust no momento da compilación mediante a comprobación de referencias, o seguimento da propiedade do obxecto e a súa vida útil (alcance), así como a través da avaliación da corrección do acceso á memoria durante a execución do código. Rust tamén ofrece protección contra desbordamentos de enteiros, require a inicialización obrigatoria dos valores variables antes do seu uso, manexa mellor os erros na biblioteca estándar, aplica o concepto de referencias e variables inmutables por defecto, ofrece unha forte escritura estática para minimizar os erros lóxicos.

A nova versión dos parches segue eliminando os comentarios realizados durante a discusión da primeira, segunda, terceira e cuarta edición dos parches. Na nova versión:

  • Engadíronse as probas de compoñentes para compatibilidade con Rust ao sistema de integración continua baseado no bot 0DAY/LKP compatible con Intel e comezou a publicación de informes de proba. Estamos preparándonos para integrar o soporte Rust no sistema de probas automatizadas KernelCI. As probas baseadas en GitHub CI foron transferidas ao uso de contedores.
  • Os módulos do núcleo de Rust están liberados da necesidade de definir os atributos de caixa “#![no_std]” e “#![función(…)]”.
  • Engadido soporte para obxectivos de montaxe únicos (.o, .s, .ll e .i).
  • As directrices do código definen regras para separar os comentarios ("//") e documentar o código ("///").
  • O script is_rust_module.sh foi reelaborado.
  • Engadido soporte para primitivas de sincronización estáticas (variables compartidas globais) baseadas na implementación "CONFIG_CONSTRUCTORS".
  • Simplifícase a xestión do bloqueo: Guard e GuardMut combínanse e un tipo parametrizado.
  • É posible definir parámetros adicionais ao rexistrar dispositivos.
  • Engadida a abstracción "RwSemaphore", que actúa como un envoltorio sobre a estrutura C rw_semaphore.
  • Para usar mmap, engadiuse un novo módulo mm e unha abstracción VMA (un envoltorio sobre a estrutura vm_area_struct).
  • O controlador GPIO PL061 cambiouse a usar a macro "dev_*!".
  • Realizouse unha limpeza xeral do código.

Fonte: opennet.ru

Engadir un comentario