Ja va ser publicada la setena versió dels pegats per al suport de controladors Rust a Linux

Fa pocs dies, Miguel Ojeda, encarregat del desenvolupament i va enviar aquestes propostes i autor del projecte Rust-for-Linux va donar a conèixer la setena proposta dels components per al desenvolupament de controladors de dispositius Rovell perquè els desenvolupadors del kernel de Linux els considerin.

Aquesta és la setena edició dels pegats ia això encara el suport de Rust es considera experimental, però ja està inclòs a la branca linux-next i és prou madur per començar a treballar en la creació de capes d'abstracció sobre els subsistemes del kernel, així com en l'escriptura de controladors i mòduls. El desenvolupament està finançat per Google i Internet Security Research Group (ISRG), 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.

Principals novetats a la setena proposta

En aquesta nova proposta es destaca que el kit d'eines i una variant de la biblioteca., que va eliminar la possible generació d'estat de panic en els errors, es va actualitzar a la versió Rust 1.60 i que amb això s'estabilitza el suport per al mode «may_uninit_extra» utilitzat en els pegats del nucli.

A més, es destaca que es va afegir la capacitat d'executar proves des de la documentació (proves que es fan servir simultàniament com a exemples a la documentació), en convertir les proves en temps de compilació vinculades a l'API del kernel en proves KUnit que s'executen en el moment de l'arrencada del kernel. Es requereix que les proves no produeixin una advertència de linter de Clippy, igual que el codi central de Rust.

D'altra banda es proposa una implementació inicial del mòdul net amb funcions de xarxa. El codi Rust proporciona accés a les estructures de xarxa del nucli com Namespace (basat en l'estructura del nucli struct net), SkBuff (struct sk_buff), TcpListener, TcpStream (struct socket), Ipv4Addr (struct in_addr), SocketAddrV4 (struct sockaddr_in) i els seus equivalents IPv6.

El backend rustc_codegen_gcc, ha implementat la capacitat d'arrencar el compilador rustc. La posada en funcionament del compilador fa referència a la capacitat de rustc per utilitzar un generador de codi basat en GCC per construir el compilador rustc.

A més, la versió recent de GCC 12.1 inclou correccions a libgccjit necessàries perquè rustc_codegen_gcc funcioni correctament. S'estan fent preparatius per proporcionar la capacitat d'instal·lar rustc_codegen_gcc utilitzant la utilitat rustup.

Dels altres canvis que es destaquen d'aquesta nova versió:

  • Suport inicial implementat per a mètodes de programació asíncrona (async), implementat en forma de mòdul kasync.
  • S'ha afegit el mòdul net::filter per manipular els filtres de paquets de xarxa. Exemple agregat rust_netfilter.rs amb implementació de filtre en llenguatge Rust.
  • S'ha afegit la implementació d'un mutex simple smutex::Mutex que no requereix fixació.
  • S'ha afegit un bloqueig NoWaitLock que mai no espera que s'alliberi i, si està ocupat per un altre subprocés, genera un error en intentar adquirir el bloqueig en lloc d'aturar la persona que truca.
  • S'ha afegit un bloqueig RawSpinLock, identificat amb raw_spinlock_t al nucli, que s'aplica a les seccions que no poden estar inactives.
  • S'hi va afegir el tipus ARef per a les referències d'objectes als quals s'aplica el mecanisme de comptatge de referències (sempre refuntades).
  • S'observen avenços en el desenvolupament del frontend gccrs de GCC amb la implementació del compilador del llenguatge Rust basat en GCC. Actualment hi ha dos desenvolupadors de temps complet treballant a gccrs.

Finalment si estàs interessat en poder conèixer més a l'respecte, pots consultar els detalls a 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ó.