Arriba la vuitena versió dels pegats per al suport de controladors Rust a Linux

Miguel Ojeda, autor del projecte Rust-for-Linux va donar a conèixer el vuitè llançament del desenvolupament de pegats per al kernel de Linux amb suport per al llenguatge Rust perquè els desenvolupadors del kernel de Linux els considerin.

Aquest es posiciona com el novè llançament dels pegats (tenint en compte la primera versió publicada sense número de versió). El suport de Rust es considera experimental, però ja està inclòs a la branca linux-next, afirma per a la integració a la versió de tardor de 5.20/6.0 i està prou avançat com per començar a treballar en la creació de capes d'abstracció sobre els subsistemes del nucli, així com a la escriptura de controladors i mòduls.

El desenvolupament està finançat per Google i l'ISRG (Internet Security Research Group), que és el fundador del projecte Let's Encrypt i promou HTTPS i el desenvolupament de tecnologies per augmentar la seguretat d'Internet.

Els canvis proposats fan possible l'ús de Rust com a segon llenguatge per desenvolupar controladors i mòduls del nucli. El suport de Rust es presenta com una opció que no està habilitada per defecte i no dóna com a resultat la inclusió de Rust entre les dependències de compilació requerides per al kernel. L'ús de Rust per desenvolupar controladors us permetrà crear controladors millors i més segurs amb un esforç mínim, sense problemes com accedir a una àrea de memòria després d'alliberar-la, desreferenciar punters nuls i desbordaments de memòria intermèdia.

La seguretat de la memòria es proporciona a Rust en temps de compilació mitjançant la verificació de referències, el seguiment de la propietat de lobjecte i la vida útil de lobjecte (abast), així com mitjançant lavaluació de la correcció de laccés a la memòria durant lexecució del codi.

Què hi ha de nou en aquest vuitè llançament?

En aquesta nova proposta que es va donar a conèixer s'esmenta que la variant de la biblioteca alloc, que va eliminar la possible generació d'estat de panic en els errors, es va actualitzar a la versió Rust 1.62. En comparació amb la versió anterior, el kit d'eines de Rust ha estabilitzat el suport per a la funcionalitat const_fn_trait_bound utilitzada als pegats del nucli.

A més d'això el codi d'enllaços se separa en un paquet de caixes de bindings separat, cosa que facilita la reconstrucció si només es canvia el paquet principal del nucli.

També es destaca la implementació de la macro «concat_idents!», reescrit en forma de macro de procediment, no vinculat a la funcionalitat de concat_idents i que permet lús de referències a variables locals.

A més, s'esmenta que la macro static_assert! ha estat reescrita per permetre que «core::assert!()» es faci servir en qualsevol context en lloc de constants, mentre que la macro «error_construcció!» s'ha adaptat per funcionar en configurar el mode «RUST_BUILD_ASSERT_{WARN,ALLOW}» per a mòduls.

S'ha afegit el mòdul fs que proporciona enllaços per treballar amb sistemes de fitxers. Es proposa un exemple d'un sistema de fitxers simple escrit a Rust, així com també es va afegir el mòdul de cua de treball per treballar amb les cues del sistema.

Dels altres canvis que es destaquen d'aquesta nova proposta:

  • S'ha afegit un fitxer de configuració separat kernel/configs/rust.config.
  • Els fitxers "*.i" processats en substitucions de macros s'han anomenat "*.rsi".
  • Es va eliminar la compatibilitat amb la creació de components de Rust amb nivells d'optimització diferents dels utilitzats per al codi C.
  • El desenvolupament del mòdul kasync va continuar amb la implementació de mètodes de programació asíncrona (async).
  • Es va afegir un exemple d'un servidor TCP a nivell de nucli escrit a Rust i es va afegir la capacitat de manejar interrupcions a Rust.
  • S'ha afegit una macro de procediment per facilitar el treball amb taules de punters de funcions, com ara l'estructura file_operations.
  • S'ha afegit la implementació de llistes enllaçades bidireccionals unsafe_list::List.
  • S'ha afegit suport inicial per a RCU i el tipus Guard per verificar si un bloqueig de lectura està vinculat al fil actual.
  • S'ha afegit la funció Task::spawn() per generar i iniciar automàticament els subprocessos del nucli.
  • També s'ha afegit el mètode Task::wake_up().
  • S'ha afegit un mòdul de retard

Finalment si estàs interessat en conèixer més a l'respecte, Pots consultar els detalls en el següent enllaç.


Deixa el teu comentari

La seva adreça de correu electrònic no es publicarà. Els camps obligatoris estan marcats amb *

*

*

  1. Responsable de les dades: AB Internet Networks 2008 SL
  2. Finalitat de les dades: Controlar l'SPAM, gestió de comentaris.
  3. Legitimació: El teu consentiment
  4. Comunicació de les dades: No es comunicaran les dades a tercers excepte per obligació legal.
  5. Emmagatzematge de les dades: Base de dades allotjada en Occentus Networks (UE)
  6. Drets: En qualsevol moment pots limitar, recuperar i esborrar la teva informació.