La troisième version des correctifs pour la prise en charge du pilote Rust sous Linux est déjà sortie

Six mois après la publication de la deuxième version, Miguel Ojeda, auteur du projet Rust-for-Linux, fait connaître la proposition de la troisième option pour le développement de pilotes de périphériques en langage Rust dans le noyau Linux.

La prise en charge de Rust est considérée comme expérimentale, mais son inclusion dans la branche linux-next a déjà été convenue. Le développement est financé par Google et l'organisation ISRG (Internet Security Research Group), qui est le fondateur du projet Let's Encrypt et contribue à la promotion du HTTPS et au développement de technologies pour améliorer la sécurité d'Internet.

Il ne faut pas oublier que les modifications proposées permettent à Rust d'être utilisé comme deuxième langage pour développer des pilotes et des modules de noyau.

Pilotes Rust sous Linux
Article connexe:
La deuxième version des correctifs pour la prise en charge du pilote Rust sur Linux a déjà été expédiée

La prise en charge de Rust est annoncée comme une option qui n'est pas active par défaut et cela n'entraîne pas l'inclusion de Rust dans les dépendances de construction de base requises. L'utilisation de Rust pour le développement de pilotes vous permettra de créer des pilotes de meilleure qualité et plus sécurisés avec un minimum d'effort, sans avoir à accéder à une zone de mémoire une fois libérée, à déréférencer les pointeurs nuls et à dépasser les limites de la mémoire tampon.

La nouvelle version des correctifs continue d'éliminer les commentaires faits lors de la discussion sur la première et la deuxième version des correctifs et les changements les plus notables que nous pouvons trouver :

Transition vers la version stable de Rust 1.57 en tant que compilateur de référence et lié à l'édition stabilisée du langage Rust 2021 a été sécurisé. La transition vers la spécification Rust 2021 pautorisé à commencer à travailler pour éviter d'utiliser de telles fonctionnalités instables dans des correctifs tels que const_fn_transmute, const_panic, const_unreachable_unchecked et core_panic et try_reserve.

Il ressort également que le développement de la version alloc s'est poursuivi de la bibliothèque Rust, dans la nouvelle version, les options "no_rc" et "no_sync" sont implémentées pour désactiver la fonctionnalité qui n'est pas utilisé dans le code Rust pour le noyau, rendant la bibliothèque plus modulaire. Nous continuons à travailler avec les principaux développeurs d'allocation pour apporter les changements de noyau nécessaires à la bibliothèque principale. L'option "no_fp_fmt_parse", qui est requise pour que la bibliothèque fonctionne au niveau du noyau, a été déplacée vers la bibliothèque de base de Rust (noyau).

Code nettoyé pour supprimer les éventuels avertissements du compilateur lors de la compilation du noyau en mode CONFIG_WERROR. Lorsque le code est créé dans Rust, des modes de compilateur de diagnostic supplémentaires et des avertissements Clippy linter sont inclus.

ils ont proposé abstractions pour utiliser des seqlocks (verrouillages de séquence), appels de rappel pour la gestion de l'alimentation, E/S mémoire (readX/writeX), gestionnaires d'interruptions et de threads, GPIO, accès aux périphériques, pilotes et informations d'identification en code rust.

Les outils de développement de pilotes ont été étendus avec l'utilisation de mutex déplaçables, d'itérateurs de bits, de liaisons simplifiées sur des pointeurs, de diagnostics de panne améliorés et d'une infrastructure indépendante du bus de données.

Le travail avec les liens a été amélioré en utilisant le type Ref simplifié, basé sur le backend refcount_t, qui utilise l'API centrale du même nom pour compter les références. La prise en charge des types Arc et Rc fournis dans la bibliothèque de mappage standard a été supprimée et n'est pas disponible dans le code exécuté au niveau du noyau (pour la bibliothèque elle-même, des options ont été préparées pour désactiver ces types).

Une version du pilote GPIO PL061, réécrite en Rust, a été ajoutée aux correctifs. Une caractéristique du pilote est que son implémentation presque ligne par ligne répète le pilote C GPIO existant. Pour les développeurs qui souhaitent se familiariser avec les contrôleurs de construction dans Rust, une comparaison ligne par ligne a été préparée, qui donne un aperçu des versions de Rust que le code C est devenu.

La base de code principale de Rust adopte rustc_codegen_gcc, un backend rustc pour GCC qui implémente la compilation AOT à l'aide de la bibliothèque libgccjit. Avec un développement approprié du backend, il vous permettra de collecter le code Rust impliqué dans le noyau à l'aide de GCC.
En plus d'ARM, Google et Microsoft, Red Hat a exprimé son intérêt pour l'utilisation de Rust dans le noyau Linux.

Enfin, si vous souhaitez en savoir plus, vous pouvez consulter les détails dans le lien suivant.


Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont marqués avec *

*

*

  1. Responsable des données : AB Internet Networks 2008 SL
  2. Finalité des données: Contrôle du SPAM, gestion des commentaires.
  3. Légitimation: votre consentement
  4. Communication des données: Les données ne seront pas communiquées à des tiers sauf obligation légale.
  5. Stockage des données: base de données hébergée par Occentus Networks (EU)
  6. Droits: à tout moment, vous pouvez limiter, récupérer et supprimer vos informations.