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

Il ya quelques jours, Miguel Ojeda, responsable du développement et de la soumission de ces propositions et auteur du projet Rust-for-Linux a dévoilé la septième proposition de composant pour le développement de pilotes de périphériques Calme pour les développeurs du noyau Linux à considérer.

Ceci est la septième édition des correctifs et pour lequel même le support de Rust est 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 sur les 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 HTTPS et le développement de technologies pour augmenter 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.

Principales nouveautés de la septième proposition

Cette nouvelle proposition souligne que la boîte à outils et une variante de la bibliothèque alloc, qui a éliminé la génération possible d'état "panique" sur les erreurs, mise à jour vers la version Rust 1.60 et qui stabilise ainsi la prise en charge du mode "may_uninit_extra" utilisé dans les correctifs du noyau.

En plus de cela, on note que possibilité supplémentaire d'exécuter des tests à partir de la documentation (tests utilisés simultanément comme exemples dans la documentation), en convertissant les tests de compilation liés à l'API du noyau en tests KUnit qui s'exécutent au démarrage du noyau. Les tests ne doivent pas produire d'avertissement Clippy linter, comme c'est le cas pour le code Rust de base.

Par ailleurs une première implémentation du module «net» avec des fonctions réseau est proposée. Le code Rust donne accès aux structures du réseau du noyau telles que "Namespace" (basé sur la structure du noyau "struct net"), SkBuff (struct sk_buff), TcpListener, TcpStream (struct socket), Ipv4Addr (struct in_addr), SocketAddrV4 (struct sockaddr_in) et ses équivalents IPv6.

l'arrière rustc_codegen_gcc, a implémenté la possibilité de démarrer le compilateur rustc. La mise en service du compilateur fait référence à la capacité de rustc à utiliser un générateur de code basé sur GCC pour construire le compilateur rustc.

De plus, la version récente de GCC 12.1 inclut des correctifs pour libgccjit qui sont nécessaires pour que rustc_codegen_gcc fonctionne correctement. Des préparatifs sont en cours pour fournir la possibilité d'installer rustc_codegen_gcc à l'aide de l'utilitaire rustup.

De l' d'autres changements qui se démarquent de cette nouvelle version:

  • Support initial implémenté pour les méthodes de programmation asynchrone (async), implémenté sous la forme du module kasync.
  • Ajout du module net::filter pour manipuler les filtres de paquets réseau. Ajout de l'exemple rust_netfilter.rs avec implémentation de filtre en langage Rust.
  • Ajout de l'implémentation d'un simple mutex smutex::Mutex qui ne nécessite pas d'épinglage.
  • Ajout d'un verrou NoWaitLock qui n'attend jamais d'être libéré, et s'il est occupé par un autre thread, il échoue en essayant d'acquérir le verrou au lieu d'arrêter l'appelant.
  • Ajout d'un verrou RawSpinLock, identifié par raw_spinlock_t dans le noyau, qui s'applique aux sections qui ne peuvent pas être inactives.
  • Ajout du type ARef pour les références d'objet auxquelles le mécanisme de comptage de références est appliqué (toujours réfuté).
  • Des progrès sont observés dans le développement de l'interface gccrs de GCC avec la mise en œuvre du compilateur de langage Rust basé sur GCC. Il y a actuellement deux développeurs à plein temps qui travaillent sur gccrs.

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.