Quatrième édition des patches pour le noyau Linux avec support du langage Rust.

Miguel Ojeda, auteur du projet Rust-for-Linux, a proposé aux développeurs du noyau Linux une quatrième version des composants pour le développement de pilotes d'appareils en langage Rust. La prise en charge de Rust est considérée comme expérimentale, mais a déjà été convenue pour inclusion dans la branche linux-next et est suffisamment développée pour commencer à travailler sur la création de couches d'abstraction au-dessus des sous-systèmes du noyau, ainsi que pour l'écriture de pilotes et de modules. Le développement est financé par Google et l'organisation ISRG (Internet Security Research Group), qui est à l'origine du projet Let's Encrypt et contribue à la promotion du HTTPS et au développement de technologies pour renforcer la sécurité d'internet.

Rappelons que les modifications proposées permettent d'utiliser Rust comme deuxième langage pour le développement de pilotes et de modules du noyau. Le support de Rust est présenté comme une option, non activée par défaut et ne conduisant pas à l'inclusion de Rust parmi les dépendances de construction obligatoires du noyau. L'utilisation de Rust pour le développement de pilotes permettra de créer des pilotes sûrs et de meilleure qualité avec un minimum d'efforts, en évitant des problèmes tels que l'accès à une zone mémoire après sa libération, la déréférenciation de pointeurs nuls et le dépassement de tampon.

La sécurité de la mémoire est assurée dans Rust au moment de la compilation par la vérification des références, le suivi de la propriété des objets et la prise en compte de la durée de vie des objets (portée), ainsi que par l'évaluation de l'accès à la mémoire lors de l'exécution du code. Rust fournit également des moyens de protection contre les débordements d'entiers, exige l'initialisation obligatoire des variables avant leur utilisation, gère mieux les erreurs dans la bibliothèque standard, applique le concept de références et de variables immuables par défaut, et propose une forte typage statique pour minimiser les erreurs logiques.

Dans la nouvelle version des correctifs, la correction des commentaires formulés lors de la discussion des première, seconde et troisième éditions des correctifs se poursuit. Dans la nouvelle version :

  • La transition vers l'utilisation de la version stable de compilation de Rust 1.58.0 a été effectuée. Parmi les modifications nécessaires pour le projet, qui ne sont pas encore incluses dans l'outil Rust principal, on note le drapeau « -Zsymbol-mangling-version=v0 » (prévu dans Rust 1.59.0) et le mode « maybe_uninit_extra » (prévu dans Rust 1.60.0).
  • Des vérifications automatiques de la présence des outils Rust appropriés ont été ajoutées et les capacités de test en ce qui concerne le support de Rust dans le système ont été élargies.
  • De nouvelles abstractions pour l'accès depuis le code en langage Rust aux tables d'identifiants d'appareils (« IdArray » et « IdTable ») ont été proposées.
  • Des couches pour accéder aux fonctions liées aux minuteries (clock framework) ont été ajoutées.
  • Les pilotes pour les plateformes sont désormais définis par l'implémentation de typages.
  • Un nouveau macro a été ajouté pour simplifier l'enregistrement des pilotes de plateforme, et un nouveau modèle de pilote a été proposé.
  • Des macros pour les structures « dev_* » ont été ajoutées.
  • Des méthodes « {read,write}*_relaxed » pour le type IoMem ont été ajoutées.
  • La propriété FileOpener a été supprimée pour simplifier les opérations sur les fichiers.
  • Un paramètre « ThisModule » a été ajouté aux arguments passés lors de l'enregistrement du pilote.
  • Un modèle de base pour la création de modules de noyau en langage Rust a été proposé.

Source : opennet.ru

Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS 🔥 Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS | ProHoster