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

Miguel Ojeda, autor del projecte Rust-for-Linux, ha proposat una cinquena versió de 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 està inclòs a la branca linux-next i està prou desenvolupat 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, tercera i quarta edició dels pedaços. A la nova versió:

  • S'han afegit proves de components per al suport de Rust al sistema d'integració contínua basat en el bot 0DAY/LKP compatible amb Intel i ha començat la publicació dels informes de proves. Ens estem preparant per integrar el suport Rust al sistema de proves automatitzades KernelCI. Les proves basades en GitHub CI s'han transferit a l'ús de contenidors.
  • Els mòduls del nucli Rust s'alliberen de la necessitat de definir els atributs de la caixa "#![no_std]" i "#![funció(…)]".
  • S'ha afegit suport per a objectius de muntatge únic (.o, .s, .ll i .i).
  • Les directrius del codi defineixen regles per separar els comentaris ("//") i documentar el codi ("///").
  • L'script is_rust_module.sh ha estat reelaborat.
  • S'ha afegit suport per a primitives de sincronització estàtiques (variables compartides globals) basades en la implementació "CONFIG_CONSTRUCTORS".
  • La gestió del bloqueig es simplifica: Guard i GuardMut es combinen i un tipus parametritzat.
  • És possible definir paràmetres addicionals en registrar dispositius.
  • S'ha afegit l'abstracció "RwSemaphore", que actua com a embolcall sobre l'estructura C rw_semaphore.
  • Per utilitzar mmap, s'ha afegit un nou mòdul mm i una abstracció VMA (un embolcall sobre l'estructura vm_area_struct).
  • El controlador GPIO PL061 s'ha canviat per utilitzar la macro "dev_*!".
  • Es va dur a terme una neteja general del codi.

Font: opennet.ru

Afegeix comentari