La cinquième version des correctifs pour la prise en charge du pilote Rust sous Linux a été publiée

Récemment Miguel Ojeda, auteur du projet Rust-for-Linux a publié la cinquième proposition Développeurs de noyau Linux de choix pour les composants de développement Pilotes de périphériques Rust à eux de considérer.

Pour ceux qui ignorent encore cette série de propositions publiées depuis plusieurs mois maintenant, sachez que l'idée qui la sous-tend tient au fait que le support de Rust est actuellement considéré comme expérimental, mais est déjà inclus dans la branche linux-next et est suffisamment mature pour commencer à travailler sur la création de couches d'abstraction sur les sous-systèmes du noyau, ainsi que sur l'écriture de pilotes et de modules.

Actuellement, La commission de développement de Miguel Ojeda est financée 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.

Il est important de mentionner que les changements proposés ils 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. Rust fournit également une protection contre le débordement d'entier, nécessite que les variables soient initialisées avant utilisation, gère mieux les erreurs dans la bibliothèque standard, applique le concept de variables et de références immuables par défaut et offre un typage statique fort pour minimiser les erreurs logiques. .

Principales nouveautés de la cinquième proposition

Dans la nouvelle version des correctifs, continué à supprimer des commentaires faites lors de la discussion des correctifs de la première, deuxième, troisième et quatrième édition.

Dans la partie des modifications et des améliorations qui ont été apportées, nous pouvons constater que le validation des composants pour la compatibilité avec Rust a été ajouté au système d'intégration continue basé sur le bot 0DAY/LKP compatible Intel et des rapports de test ont commencé à être publiés.

En plus de cela, il est souligné que l'intégration du support de Rust est en cours de préparation dans système de test automatisé KernelCI, De plus, les tests basés sur GitHub CI ont été remplacés par des conteneurs.

Il est également souligné que ajouté la possibilité de définir des paramètres supplémentaires lors de l'enregistrement des appareils, ainsi que le script is_rust_module.sh a été repensé et que la prise en charge des primitives de synchronisation statiques (variables globales partagées) basées sur l'implémentation "CONFIG_CONSTRUCTORS" a été ajoutée.

De l' d'autres changements qui se démarquent dans cette nouvelle proposition de contrôleurs :

  • Les modules Rust Core n'ont pas besoin de définir les attributs : "#![no_std]" et "#![feature(...)]".
  • Ajout de la prise en charge des cibles de construction uniques (.o, .s, .ll et .i).
  • Les directives de code définissent maintenant des règles pour délimiter les commentaires ("//") et documenter le code ("///").
  • Gestion simplifiée des serrures : Guard et GuardMut sont combinés en un seul type paramétré.
  • Ajout de l'abstraction "RwSemaphore", qui agit comme un wrapper sur la structure C rw_semaphore.
  • Pour utiliser mmap, un nouveau module mm et une abstraction VMA (liaison sur la structure vm_area_struct) ont été ajoutés.
  • Le contrôleur GPIO PL061 a été modifié pour utiliser la macro "dev_*!".
  • Nettoyage général du code.

Enfin si vous souhaitez en savoir plus sur cette nouvelle proposition, vous pouvez consulter 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.