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

Il paraît que développement de correctifs pour la prise en charge du pilote Rust sous Linux a pris un bon rythme Eh bien, il y a un peu plus d'un mois, la proposition supprimée a été publiée, car depuis la troisième version, une nouvelle proposition a été livrée chaque mois et maintenant la nouvelle proposition a été publiée, il s'agit de la sixième édition.

Miguel Ojeda a proposé la nouvelle version des composants de développement de pilotes de périphériques Rust que les développeurs du noyau Linux doivent prendre en compte. C'est la sixième édition encore considéré comme expérimental mais il est déjà inclus dans la branche linux-next et est suffisamment mature 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 pilotes et de modules.

Pour ceux qui ne sont pas encore au courant de cette évolution, ils doivent savoir que 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.

Rappelez-vous que 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 fournie dans Rust eAu 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. .

Dans la nouvelle version des patchs, les commentaires faits lors de la discussion du premier ont continué à être supprimés, deuxième, troisième, quatrième y ferme éditions des patchs (dont je vous laisse leurs liens correspondants).

Principales nouveautés de la sixième proposition

Avec l'arrivée de cette nouvelle proposition la boîte à outils a été mise à jour avant la sortie de Rust 1.59.0, avec lequel une variante de la bibliothèque alloc il se synchronise également avec la nouvelle version de Rust, éliminant ainsi le potentiel d'un état de "panique" lorsque des erreurs se produisent, comme un manque de mémoire.

Un autre changement qui a été apporté est que maintenant, au lieu de fournir des fichiers de spécification de plate-forme destination pré-créée ils sont générés dynamiquement en fonction de la configuration du noyau.

Il est également à noter que le paramètre de noyau HAVE_RUST a été ajouté pour l'activer pour les architectures compatibles Rust et que des abstractions ont été proposées pour être utilisées dans le code Rust d'un générateur de nombres pseudo-aléatoires matériel.

D'autre part, il est mentionné que la possibilité d'utiliser des inserts assembleur a été stabilisée ("feature(global_asm)") et ajout de la prise en charge de la création de programmes hôtes dans Rust qui sont utilisés dans le processus de construction du noyau.

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

  • L'utilisation de codes d'erreur sans le préfixe "Error ::" (par exemple, "return Err(EINVAL)") était autorisée pour se rapprocher de la gestion des codes d'erreur en C.
  • Ajout du type "CString" pour les chaînes C natives. Types de formateur et de tampon combinés.
  • Ajout des traits Bool et LockInfo.
  • Implémentation simplifiée des spin-locks.

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