Nouvelle version 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 la sortie de v5 des composants pour le développement de pilotes de périphériques en langage Rust. Il s'agit de la sixième édition des correctifs, tenant compte de la première version publiée sans numéro de version. Le support de Rust est considéré comme expérimental, mais il est déjà intégré dans la branche linux-next et suffisamment avancé pour commencer à travailler sur la création de couches d'abstraction au-dessus des sous-systèmes du noyau, ainsi que pour écrire des pilotes et des modules. Le développement est financé par Google et l'organisation ISRG (Internet Security Research Group), fondatrice du projet Let’s Encrypt, qui favorise la promotion du HTTPS et le 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 émis lors des discussions des première, deuxième, troisième, quatrième et cinquième éditions des correctifs a été poursuivie. Dans la nouvelle version :

  • L'outil a été mis à jour vers la version Rust 1.59.0. La nouvelle version de Rust a également synchronisé la version de la bibliothèque alloc, éliminant les potentielles générations d'état "panic" lors de l'apparition d'erreurs, telles que le manque de mémoire. La possibilité d'utiliser des insertions assembleur (« feature(global_asm) ») a été stabilisée.
  • Ajout du support de la création d'applications hôtes en langage Rust, utilisées lors de la compilation du noyau.
  • Au lieu de fournir des fichiers pré-créés avec la spécification des plateformes cibles, une génération dynamique basée sur la configuration du noyau a été mise en place.
  • Un paramètre noyau HAVE_RUST a été ajouté, activé pour les architectures qui supportent Rust.
  • Des abstractions pour l'utilisation dans le code en langage Rust du générateur matériel de nombres pseudo-aléatoires ont été proposées.
  • L'utilisation de codes d'erreur sans le préfixe « Error:: » (par exemple, « return Err(EINVAL) ») est autorisée pour se rapprocher du traitement des codes d'erreur en C.
  • Un type « CString » a été ajouté pour les chaînes C. Les types Formatter et Buffer ont été fusionnés.
  • Les types Bool et LockInfo ont été ajoutés.
  • L'implémentation des verrous spin a été simplifiée.

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