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

Sis mesos després de la publicació de la segona versió, Miguel Ojeda, autor del projecte Rust-for-Linux, va donar a conèixer la proposta de la tercera opció per al desenvolupament de controladors de dispositius en llenguatge Rust al Kernel de Linux.

El suport de Rust es considera experimental, però ja se n'ha acordat la inclusió a la branca linux-next. El desenvolupament està finançat per Google i l'organització Internet Security Research Group (ISRG), que és la fundadora del projecte Let's Encrypt i contribueix a la promoció de HTTPS i al desenvolupament de tecnologies per millorar la seguretat d'Internet.

Cal recordar que els canvis proposats permeten utilitzar Rust com a segon llenguatge per desenvolupar controladors i mòduls del nucli.

Controladors Rust a Linux
Article relacionat:
Ja va ser enviada la segona versió dels pegats per al suport de controladors Rust a Linux

El suport de Rust s'anuncia com una opció que no està activa per defecte i no dóna com a resultat que Rust s'inclogui a les dependències de compilació bàsiques requerides. L'ús de Rust per al desenvolupament de 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 una vegada alliberada, desreferenciar punters nuls i excedir els límits del memòria intermèdia.

La nova versió dels pegats continua eliminant els comentaris fets durant la discussió de la primera i segona versió dels pegats i dels canvis més notables podrem trobar:

S'ha fet la transició a l'ús de la versió estable de Rust 1.57 com a compilador de referència i s'ha assegurat la vinculació a l'edició estabilitzada del llenguatge Rust 2021. La transició a l'especificació Rust 2021 pva ermitar començar a treballar per evitar l'ús de característiques tan inestables en pegats com const_fn_transmute, const_panic, const_unreachable_unchecked i core_panic i try_reserve.

A més es destaca que s'ha continuat amb el desenvolupament de la versió de l'allot de la biblioteca Rust, a la nova versió, les opcions «no_rc» i «no_sync» s'implementen per deshabilitar la funcionalitat que no es fa servir en el codi de Rust per al nucli, fent que la biblioteca sigui més modular. Continuem treballant amb els principals desenvolupadors d'alloc per portar els canvis necessaris per al nucli a la biblioteca principal. L'opció no_fp_fmt_parse, que és necessària perquè la biblioteca funcioni al nivell del nucli, s'ha mogut a la biblioteca bàsica de Rust (nucli).

Es va netejar el codi per eliminar possibles advertiments del compilador en compilar el nucli en mode CONFIG_WERROR. Quan es crea codi a Rust, s'inclouen modes de compilador de diagnòstic addicionals i advertiments de linter Clippy.

Es proposen abstraccions per utilitzar seqlocks (bloquejos de seqüència), trucades de devolució de trucada per a administració d'energia, memòria d'E/S (readX/writeX), manejadors d'interrupcions i subprocessos, GPIO, accés a dispositius, controladors i credencials en codi Rust.

S'han ampliat les eines per al desenvolupament de controladors amb l'ús de mutex reubicables, iteradors de bits, enllaços simplificats sobre capdavanters, diagnòstics millorats de falles i infraestructura independent del bus de dades.

Es va millorar el treball amb enllaços usant el tipus Ref simplificat, basat en el backend refcount_t, que utilitza l'API central del mateix nom per explicar referències. El suport per als tipus Arc i Rc proporcionats a la biblioteca d'assignació estàndard s'ha eliminat i no està disponible al codi executat a nivell del nucli (per a la biblioteca en si, s'han preparat opcions per deshabilitar aquests tipus).

S'ha afegit als pegats una versió del controlador PL061 GPIO, reescrit a Rust. Una característica del controlador és que la seva implementació gairebé línia per línia repeteix el controlador C GPIO existent. Per als desenvolupadors que vulguin familiaritzar-se amb la creació de controladors a Rust, s'ha preparat una comparació línia per línia, que permet comprendre a quines construccions a Rust s'ha convertit el codi C.

El codi principal de Rust adopta rustc_codegen_gcc , un backend rustc per a GCC que implementa la compilació AOT usant la biblioteca libgccjit. Amb el desenvolupament adequat del backend, us permetrà recopilar el codi Rust involucrat en el nucli usant GCC.
A més d'ARM, Google i Microsoft, Red Hat ha expressat interès a utilitzar Rust al nucli de Linux.

Finalment si estàs interessat en poder conèixer-ne més, 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ó.