La huitième version des correctifs pour la prise en charge du pilote Rust sous Linux arrive

Miguel Ojeda, auteur du projet Rust-for-Linux a publié la huitième version de développer des correctifs du noyau Linux avec la prise en charge du langage Rust pour les développeurs du noyau Linux à prendre en compte.

Il s'agit de la neuvième version des correctifs (en tenant compte de la première version publiée sans numéro de version). Le support de la rouille est considéré comme expérimental, mais il est déjà inclus dans la branche linux-next, prétend être intégré dans la version d'automne 5.20/6.0, et est suffisamment avancé pour commencer à travailler sur la création de couches d'abstraction au-dessus des sous-systèmes du noyau, ainsi que sur l'écriture de contrôleurs et de modules.

Le développement est financé par Google et l'ISRG (Internet Security Research Group), qui est le fondateur du projet Let's Encrypt et promeut le HTTPS et le développement de technologies pour accroître la sécurité sur Internet.

Les modifications proposées permettent d'utiliser Rust comme deuxième langage pour développer des pilotes et des modules de noyau. La prise en charge de Rust est présentée comme une option qui n'est pas activée par défaut et n'entraîne pas l'inclusion de Rust parmi les dépendances de construction requises pour le noyau. L'utilisation de Rust pour développer des pilotes vous permettra de créer des pilotes meilleurs et plus sûrs avec un minimum d'effort, sans problèmes tels que l'accès à une zone mémoire après l'avoir libérée, le déréférencement de pointeurs nuls et les débordements de tampon.

La sécurité de la mémoire est assurée dans Rust au moment de la compilation en vérifiant les références, en suivant la propriété de l'objet et la durée de vie de l'objet (portée), ainsi qu'en évaluant l'exactitude de l'accès à la mémoire pendant l'exécution du code.

Quoi de neuf dans cette huitième version ?

Dans cette nouvelle proposition qui a été publiée, il est mentionné que la variante de bibliothèque alloc, qui a éliminé la génération possible d'état "panique" sur les erreurs, mis à jour vers Rust version 1.62. Par rapport à la version précédente, la boîte à outils Rust a stabilisé la prise en charge de la fonctionnalité const_fn_trait_bound utilisée dans les correctifs du noyau.

à côté le code des liaisons est séparé en un paquet de cases « liaisons » séparément, ce qui facilite la reconstruction si seul le package principal du noyau est modifié.

le implémentation de la macro "concat_idents!", Réécrit comme une macro procédurale, non liée à la fonctionnalité concat_idents et permettant l'utilisation de références de variables locales.

De plus, il est mentionné que la macro "affirmation_statique !" a été réécrit pour autoriser "core ::assert!()" est utilisé dans n'importe quel contexte à la place des constantes, tandis que la macro "construction_error!" a été adapté pour fonctionner lors de la définition du mode "RUST_BUILD_ASSERT_{WARN,ALLOW}" pour les modules.

module fs ajouté qui fournit des liens pour travailler avec les systèmes de fichiers. Un exemple de système de fichiers simple écrit en Rust est proposé, ainsi que le module de file d'attente ajouté pour travailler avec les files d'attente du système.

Des autres changements qui se démarquent de cette nouvelle proposition :

  • Ajout d'un fichier de configuration séparé "kernel/configs/rust.config".
  • Les fichiers "*.i" traités dans les substitutions de macros ont été renommés en "*.rsi".
  • Suppression de la prise en charge de la construction de composants Rust avec des niveaux d'optimisation autres que ceux utilisés pour le code C.
  • Le développement du module kasync s'est poursuivi avec la mise en place de méthodes de programmation asynchrone (async).
  • Ajout d'un exemple de serveur TCP au niveau du noyau écrit en Rust et ajout de la possibilité de gérer les interruptions dans Rust.
  • Ajout d'une macro de procédure pour faciliter le travail avec les tables de pointeurs de fonction, telles que la structure file_operations.
  • Ajout de l'implémentation de la liste liée bidirectionnelle "unsafe_list :: List".
  • Ajout de la prise en charge initiale de RCU et du type Guard pour vérifier si un verrou en lecture est lié au thread actuel.
  • Ajout de la fonction Task::spawn() pour générer et démarrer automatiquement les threads du noyau.
  • La méthode Task::wake_up() a également été ajoutée.
  • Ajout d'un module de retard

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


Le contenu de l'article adhère à nos principes de éthique éditoriale. Pour signaler une erreur, cliquez sur c'est par ici !.

Soyez le premier à commenter

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.

*

*

  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.