Dans systemd Git, il est désormais possible d'écrire les programmes systemd en langage Rust, en alternative au C, sans modifier le code existant ni l'architecture du projet
Le projet systemd a officiellement introduit la prise en charge du développement de programmes en Rust, à la suite de l'intégration d'une pull request soumise par Christian Brauner, développeur du noyau Linux. Cette modification offre une nouvelle option de développement pour systemd tout en conservant intacte son architecture existante basée sur le langage C. Les responsables du projet se sont mis d'accord sur une approche délibérément limitée : Rust ne pourra être utilisé que pour de nouveaux composants autonomes dont les autres parties de systemd ne dépendent pas. Le code C existant restera inchangé. La prise en charge de Rust est facultative et détectée automatiquement lors de la configuration. Les premiers tests montrent qu'un utilitaire Rust en ligne de commande allégé occupe environ 32 Ko, contre 20 Ko pour son équivalent en C.
Rust est un langage de programmation polyvalent qui met l'accent sur les performances, la sécurité des types, la concurrence et la sécurité de la mémoire. Rust prend en charge plusieurs paradigmes de programmation. Il s'inspire de concepts issus de la programmation fonctionnelle, notamment l'immuabilité, les fonctions d'ordre supérieur, les types de données algébriques et la correspondance de motifs. Il prend également en charge la programmation orientée objet via les structs, les énumérations, les traits et les méthodes. Rust garantit la sécurité de la mémoire sans recourir à un ramasse-miettes classique ; à la place, les erreurs de sécurité de la mémoire et les conflits d'accès sont évités par le « vérificateur d'emprunt », qui suit la durée de vie des objets référencés dès la phase de compilation.
En juillet 2026, Linux s'apprêtait à connaître une transformation majeure, son responsable de la maintenance du noyau stable, Greg Kroah-Hartman, prônait Rust plutôt que le C comme futur langage de programmation pour le développement du noyau Linux. Expliquant son évolution, passant du scepticisme à un soutien fervent de Rust, Kroah-Hartman avait mis en avant la capacité de Rust à éliminer diverses vulnérabilités courantes et à rationaliser le processus de programmation, facilitant ainsi la tâche des développeurs. Il expliquait que le système de propriété et de types de Rust réduisait considérablement les bogues mineurs qui affectaient souvent le code C, tels que les pointeurs non vérifiés et les fuites de mémoire.
systemd est une suite logicielle destinée à la gestion du système et des services sous Linux, conçue pour harmoniser la configuration et le comportement des services entre les différentes distributions Linux. Son composant principal est un système d'initialisation utilisé pour démarrer l'espace utilisateur et gérer les processus utilisateur. Il fournit également divers démons et utilitaires, notamment pour la gestion des périphériques, la gestion des connexions, la gestion des connexions réseau et la journalisation des événements. Le nom « systemd » respecte la convention Unix consistant à nommer les démons en leur ajoutant la lettre « d », et fait également référence à l'expression française « Système D » (la capacité d'une personne à s'adapter rapidement et à improviser face à des problèmes).
Récemment, le projet systemd a officiellement introduit la prise en charge du développement de programmes en Rust, à la suite de l'intégration d'une pull request soumise par Christian Brauner, développeur du noyau Linux. Cette modification, intégrée à la branche principale du projet, offre une nouvelle option de développement pour systemd tout en conservant intacte son architecture existante basée sur le langage C. Et avant que quelqu’un ne suppose que systemd s’apprête à être entièrement réécrit en Rust, ce n’est pas le cas.
Les responsables du projet se sont mis d’accord sur une approche délibérément limitée : Rust ne pourra être utilisé que pour de nouveaux composants autonomes dont les autres parties de systemd ne dépendent pas. Le code C existant restera inchangé. Une autre décision importante concerne le processus de compilation. Plutôt que d’introduire Cargo, le gestionnaire de paquets et l’outil de compilation standard de Rust, systemd continue d’utiliser Meson pour toutes les compilations. Cela permet de maintenir le développement en Rust intégré à l’infrastructure de compilation existante du projet.
La mise en œuvre impose également des limites strictes en matière de dépendances. Les programmes Rust utilisent l’approche no_std, ce qui signifie qu’ils ne s’appuient ni sur la bibliothèque standard de Rust ni sur des crates externes tierces. À la place, ils interagissent avec les bibliothèques C existantes de systemd via des liaisons générées. En matière de gestion de la mémoire, systemd fournit ses propres implémentations en Rust des types de conteneurs courants, les échecs d'allocation étant gérés de manière explicite plutôt que d'entraîner l'interruption du programme.
La nouvelle infrastructure comprend également des wrappers pour la journalisation, la gestion des arguments de ligne de commande, le traitement des événements et la gestion des erreurs, ce qui permet aux utilitaires Rust de se comporter de manière cohérente avec leurs équivalents en C. La prise en charge de Rust est facultative et détectée automatiquement lors de la configuration. Les développeurs souhaitant l’activer doivent disposer de Rust 1.85 ou une version ultérieure, de bindgen 0.71.1 ou une version ultérieure, et de Meson 1.4 ou une version ultérieure. Les systèmes ne disposant pas de la chaîne d’outils requise peuvent continuer à compiler systemd sans prise en charge de Rust.
Il est intéressant de noter que les premiers tests montrent qu’un utilitaire Rust en ligne de commande allégé occupe environ 32 Ko, contre 20 Ko pour son équivalent en C compilé avec optimisation à la liaison. Cela donne une première indication de la surcharge supplémentaire, bien que la comparaison ne porte que sur un petit programme de test. La première application concrète prévue de cette infrastructure est systemd-keyring-setup, un nouvel utilitaire destiné à faciliter la gestion des certificats dans les trousseaux de clés du noyau Linux. Son implémentation est développée séparément, parallèlement à des wrappers Rust supplémentaires pour les bibliothèques partagées de systemd.
Pour les distributions Linux, ce changement implique des considérations relatives aux paquets. Les compilations activant toutes les fonctionnalités disponibles nécessiteront le compilateur Rust approprié et les dépendances bindgen, ou devront désactiver la prise en charge de Rust pour éviter les échecs de compilation. L’adoption généralisée de Rust au sein de systemd dépendra de son développement futur, mais les bases nécessaires sont désormais en place.
En mai 2026, Greg Kroah-Hartman, responsable de la maintenance du noyau stable de Linux, affirmait que Rust pouvait aider Linux à faire face à un afflux de failles de sécurité détectées par l'IA (notamment Dirty Frag, Copy Fail et Fragnesia) en prévenant les erreurs courantes en C liées à la gestion de la mémoire, au verrouillage, à la gestion des erreurs et aux données non fiables dès la phase de compilation, plutôt que lors de la révision par les mainteneurs. Sa sortie était de nature à donner un coup de neuf au débat sur la comparaison entre les langages Rust et C en matière de programmation système.
Et vous ?
Pensez-vous que cette information est crédible ou pertinente ?
Quel est votre avis sur le sujet ?
Voir aussi :
C'est désormais officiel : Rust dans le noyau Linux sort du cadre expérimental, le Rust vient de faire l'objet d'intégration comme partie essentielle du kernel aux côtés du toujours présent langage C
Linus Torvalds souligne une bonne avancée du langage Rust dans le développement du noyau Linux, et aurait qualifié le C++ de « langage de m... », après le message de Google
« Les développeurs Linux sont des mégalomanes pédants et condescendants », d'après le créateur de redox_os, remonté contre les habitués du C qui freinent les mises à jour de la base de code du noyau vers Rust








Pensez-vous que cette information est crédible ou pertinente ?
Répondre avec citation
Partager