Nova versión de parches para o núcleo de Linux con soporte para a linguaxe Rust

Miguel Ojeda, autor do proxecto Rust-for-Linux, propuxo o lanzamento de compoñentes v5 para desenvolver controladores de dispositivos na linguaxe Rust para a consideración dos desenvolvedores do núcleo de Linux. Esta é a sexta edición dos parches, tendo en conta a primeira versión, publicada sen número de versión. 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, cuarta e quinta edición dos parches. Na nova versión:

  • O conxunto de ferramentas actualizouse para lanzar Rust 1.59.0. Tamén se sincroniza unha variante da biblioteca alloc coa nova versión de Rust, eliminando a posible xeración dun estado de "pánico" cando se producen erros, como falta de memoria. Estabilizouse a capacidade de usar insercións do ensamblador ("feature(global_asm)").
  • Engadido soporte para a creación de programas host en Rust que se usan durante a compilación do núcleo.
  • En lugar de entregar ficheiros de especificación da plataforma de destino xerados previamente, xéranse dinámicamente en función da configuración do núcleo.
  • Engadiuse o parámetro do núcleo HAVE_RUST para habilitar as arquitecturas que admitan Rust.
  • Propóñense abstraccións para o seu uso no código Rust para un xerador de números pseudoaleatorios de hardware.
  • Permitiuse o uso de códigos de erro sen o prefixo "Erro::" (por exemplo, "return Err(EINVAL)") para aproximar o manexo dos códigos de erro en C.
  • Engadiuse o tipo "CString" para as cadeas C personalizadas. Combináronse os tipos Formater e Buffer.
  • Engadíronse os tipos Bool e LockInfo.
  • Simplificouse a implementación de bloqueos de rotación.

Fonte: opennet.ru

Engadir un comentario