Segona 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 versió actualitzada dels components per desenvolupar controladors de dispositius en el llenguatge Rust per a la consideració dels desenvolupadors del nucli de Linux. El suport de Rust es considera experimental, però ja s'ha acordat la inclusió a la branca linux-next. La nova versió elimina els comentaris fets durant la discussió de la primera versió dels pedaços. Linus Torvalds ja s'ha sumat a la discussió i ha proposat canviar la lògica per processar algunes operacions de bits.

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.

Els canvis més notables en la nova versió dels pedaços:

  • El codi d'assignació de memòria s'allibera de la generació potencial d'un estat de "pànic" quan es produeixen errors com ara falta de memòria. S'inclou una variant de la biblioteca Rust alloc, que reelabora el codi per gestionar els errors, però l'objectiu final és transferir totes les característiques necessàries per al nucli a l'edició principal d'alloc (els canvis ja s'han preparat i transferit a l'estàndard). Biblioteca Rust).
  • En lloc de les compilacions nocturnes, ara podeu utilitzar versions beta i versions estables del compilador rustc per compilar un nucli amb suport Rust. Actualment, rustc 1.54-beta1 s'utilitza com a compilador de referència, però després del llançament de la versió 1.54 a finals de mes, serà compatible com a compilador de referència.
  • S'ha afegit suport per escriure proves mitjançant l'atribut estàndard "#[test]" per a Rust i la possibilitat d'utilitzar doctests per documentar proves.
  • S'ha afegit suport per a arquitectures ARM32 i RISCV a més de x86_64 i ARM64 suportats anteriorment.
  • Implementacions millorades de GCC Rust (GCC frontend per a Rust) i rustc_codegen_gcc (rustc backend per a GCC), que ara supera totes les proves bàsiques.
  • Es proposa un nou nivell d'abstracció per utilitzar-lo als programes Rust dels mecanismes del nucli escrits en C, com ara arbres vermell-negre, objectes comptats per referència, creació de descriptors de fitxers, tasques, fitxers i vectors d'E/S.
  • Els components de desenvolupament de controladors han millorat el suport per al mòdul file_operations, la macro module!, el registre de macros i els controladors rudimentaris (sondejar i eliminar).
  • Binder ara admet passar descriptors de fitxers i ganxos LSM.
  • Es proposa un exemple més funcional d'un controlador Rust: bcm2835-rng per al generador de nombres aleatoris de maquinari de les plaques Raspberry Pi.

A més, s'esmenten projectes d'algunes empreses relacionats amb l'ús de Rust al nucli:

  • Microsoft ha expressat el seu interès a participar en el treball per integrar el suport de Rust al nucli de Linux i està preparat per oferir implementacions de controladors per a Hyper-V a Rust en els propers mesos.
  • ARM treballa per millorar el suport de Rust per als sistemes basats en ARM. El projecte Rust ja ha proposat canvis que convertirien els sistemes ARM de 64 bits en una plataforma de nivell 1.
  • Google proporciona suport directament per al projecte Rust per a Linux, està desenvolupant una nova implementació del mecanisme de comunicació entre processos de Binder a Rust i està considerant la possibilitat de reelaborar diversos controladors a Rust. Mitjançant ISRG (Internet Security Research Group), Google va proporcionar finançament per treballar per integrar el suport de Rust al nucli de Linux.
  • IBM ha implementat el suport del nucli per a sistemes Rust per a PowerPC.
  • El laboratori LSE (Systems Research Laboratory) ha desenvolupat un controlador SPI a Rust.

Font: opennet.ru

Afegeix comentari