Cuarta 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 cuarta versión de compoñentes para desenvolver controladores de dispositivos na linguaxe Rust para a consideración dos desenvolvedores do núcleo de Linux. O soporte de Rust considérase experimental, pero xa se acordou para a súa inclusión na rama linux-next e é o suficientemente maduro como 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 feitos durante a discusión da primeira, segunda e terceira edición dos parches. Na nova versión:

  • Fíxose a transición ao uso da versión estable de Rust 1.58.0 como compilador de referencia. Entre os cambios necesarios para o proxecto, que aínda non están incluídos no conxunto de ferramentas principal de Rust, destacan a bandeira “-Zsymbol-mangling-version=v0” (esperado en Rust 1.59.0) e o modo “maybe_uninit_extra” (esperado en Rust 1.60.0). .XNUMX) nótanse. .
  • Engadíronse comprobacións automáticas da dispoñibilidade de ferramentas Rust adecuadas e ampliouse a capacidade de probar a compatibilidade de Rust no sistema.
  • Propuxéronse novas abstraccións para acceder ás táboas de identificadores de dispositivos ("IdArray" e "IdTable") desde o código Rust.
  • Engadidas capas para acceder a funcións relacionadas co temporizador (cadro de reloxo).
  • Os controladores da plataforma agora defínense mediante implementacións de características.
  • Engadiuse unha nova macro para simplificar o rexistro dos controladores da plataforma e propúxose un novo modelo de controlador xenérico.
  • Engadidas macros para estruturas "dev_*".
  • Engadíronse métodos "{read,write}*_relaxed" para o tipo IoMem .
  • Eliminouse a propiedade FileOpener para simplificar as operacións dos ficheiros.
  • O parámetro "ThisModule" engadiuse aos argumentos pasados ​​ao rexistrar un controlador.
  • Proponse un modelo estándar para crear módulos do núcleo na linguaxe Rust.

Fonte: opennet.ru

Engadir un comentario