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

Miguel Ojeda, autor do proxecto Rust-for-Linux, propuxo unha versión actualizada 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. A nova versión elimina os comentarios feitos durante a discusión da primeira versión dos parches. Linus Torvalds xa se uniu á discusión e propuxo cambiar a lóxica para procesar algunhas operacións de bits.

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.

Os cambios máis notables na nova versión dos parches:

  • O código de asignación de memoria é liberado de xerar potencialmente un estado de "pánico" cando se producen erros como a falta de memoria. Inclúese unha variante da biblioteca Rust alloc, que reelabora o código para xestionar fallos, pero o obxectivo final é transferir todas as funcións necesarias para o núcleo á edición principal de alloc (os cambios xa foron preparados e transferidos ao estándar). Biblioteca Rust).
  • En lugar de compilacións nocturnas, agora podes usar versións beta e versións estables do compilador rustc para compilar un núcleo con compatibilidade con Rust. Actualmente, rustc 1.54-beta1 úsase como compilador de referencia, pero despois de que se publique a versión 1.54 a finais de mes, será compatible como compilador de referencia.
  • Engadiuse compatibilidade para escribir probas usando o atributo estándar "#[test]" para Rust e a capacidade de usar doctests para documentar probas.
  • Engadido soporte para arquitecturas ARM32 e RISCV ademais dos x86_64 e ARM64 compatibles anteriormente.
  • Implementacións melloradas de GCC Rust (GCC frontend para Rust) e rustc_codegen_gcc (rustc backend para GCC), que agora supera todas as probas básicas.
  • Proponse un novo nivel de abstracción para o seu uso nos programas Rust dos mecanismos do núcleo escritos en C, como árbores vermellas-negras, obxectos contados por referencias, creación de descritores de ficheiros, tarefas, ficheiros e vectores de E/S.
  • Os compoñentes de desenvolvemento de controladores melloraron a compatibilidade co módulo file_operations, a macro module!, o rexistro de macros e os controladores rudimentarios (sondear e eliminar).
  • Binder agora admite o paso de descritores de ficheiros e ganchos LSM.
  • Proponse un exemplo máis funcional dun controlador Rust: bcm2835-rng para o xerador de números aleatorios de hardware das placas Raspberry Pi.

Ademais, menciónanse proxectos dalgunhas empresas relacionados co uso de Rust no núcleo:

  • Microsoft expresou o seu interese en participar no traballo para integrar o soporte de Rust no núcleo de Linux e está preparado para ofrecer implementacións de controladores para Hyper-V en Rust nos próximos meses.
  • ARM traballa para mellorar a compatibilidade de Rust para os sistemas baseados en ARM. O proxecto Rust xa propuxo cambios que farían dos sistemas ARM de 64 bits unha plataforma de nivel 1.
  • Google ofrece soporte directamente para o proxecto Rust para Linux, está a desenvolver unha nova implementación do mecanismo de comunicación entre procesos de Binder en Rust e está a considerar a posibilidade de reelaborar varios controladores en Rust. A través do ISRG (Internet Security Research Group), Google proporcionou financiamento para traballar para integrar o soporte de Rust no núcleo de Linux.
  • IBM implementou soporte do núcleo para Rust para sistemas PowerPC.
  • O laboratorio LSE (Laboratorio de Investigación de Sistemas) desenvolveu un controlador SPI en Rust.

Fonte: opennet.ru

Engadir un comentario