Quarta edició de pedaços per al nucli de Linux amb suport per al llenguatge Rust

Miguel Ojeda, autor del projecte Rust-for-Linux, va proposar una quarta versió de components per desenvolupar controladors de dispositius en el llenguatge Rust per a la consideració dels desenvolupadors del nucli de Linux. El suport Rust es considera experimental, però ja s'ha acordat la inclusió a la branca linux-next i és prou madur per començar a treballar en la creació de capes d'abstracció sobre subsistemes del nucli, així com per escriure 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 millorar la seguretat a Internet.

Recordem que els canvis proposats permeten utilitzar 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à activada per defecte i que no comporta la inclusió de Rust entre les dependències de construcció necessàries per al nucli. L'ús de Rust per desenvolupar controladors us permetrà crear controladors més segurs i millors amb el mínim esforç, lliures de problemes com ara accedir a una àrea de memòria després d'alliberar-la, desreferenciar els punters nuls i desbordar la memòria intermèdia.

La seguretat de la memòria es proporciona a Rust en temps de compilació mitjançant la comprovació de referències, el seguiment de la propietat i la vida útil de l'objecte (abast), així com mitjançant l'avaluació de la correcció de l'accés a la memòria durant l'execució del codi. Rust també proporciona protecció contra desbordaments d'enters, requereix la inicialització obligatòria dels valors de les variables abans de l'ús, gestiona millor els errors a la biblioteca estàndard, aplica el concepte de referències i variables immutables per defecte, ofereix una escriptura estàtica forta per minimitzar els errors lògics.

La nova versió dels pedaços continua eliminant els comentaris fets durant la discussió de la primera, segona i tercera edició dels pegats. En la nova versió:

  • S'ha fet la transició a l'ús de la versió estable de Rust 1.58.0 com a compilador de referència. Entre els canvis necessaris per al projecte, que encara no s'inclouen al conjunt d'eines principal de Rust, destaquen el senyalador “-Zsymbol-mangling-version=v0” (esperat a Rust 1.59.0) i el mode “maybe_uninit_extra” (esperat a Rust 1.60.0). .XNUMX) s'anoten.
  • S'han afegit comprovacions automàtiques de la disponibilitat d'eines Rust adequades i s'ha ampliat la capacitat de provar el suport de Rust al sistema.
  • S'han proposat noves abstraccions per accedir a les taules d'identificador de dispositiu ("IdArray" i "IdTable") des del codi Rust.
  • S'han afegit capes per accedir a funcions relacionades amb el temporitzador (marc de rellotge).
  • Els controladors de plataforma es defineixen ara mitjançant implementacions de trets.
  • S'ha afegit una nova macro per simplificar el registre dels controladors de la plataforma i s'ha proposat una nova plantilla de controlador genèric.
  • S'han afegit macros per a estructures "dev_*".
  • S'han afegit mètodes "{read,write}*_relaxed" per al tipus IoMem .
  • S'ha eliminat la propietat FileOpener per simplificar les operacions dels fitxers.
  • El paràmetre "ThisModule" s'ha afegit als arguments passats en registrar un controlador.
  • Es proposa una plantilla estàndard per crear mòduls del nucli en el llenguatge Rust.

Font: opennet.ru

Afegeix comentari