AccueilActualités informatiqueNoyau Linux : une énorme refonte pourrait éliminer "l'enfer des dépendances"

Noyau Linux : une énorme refonte pourrait éliminer « l’enfer des dépendances »

Une délimitation plus claire du code au sein du noyau Linux et un processus de construction considérablement accéléré : tels sont les objectifs déclarés d’une série de près de 2300 modifications du code source du noyau soumise à discussion par le développeur du noyau Ingo Molnar. Ils promettent de mettre de l’ordre dans un « enfer de dépendances » qui s’est développé pendant « 30 ans » dans les fichiers d’en-tête du noyau Linux.

Ce projet « Fast Kernel Headers » est toutefois encore inachevé. Molnar, qui compte parmi les plus importants créateurs de Linux, veut sonder, avec cette présentation à l’heure actuelle, si les autres développeurs seraient même prêts à accepter des modifications aussi importantes et les circonstances qui en résulteraient.

Sommaire

Greg Kroah-Hartman, le deuxième développeur le plus important du noyau, s’est déjà montré ouvert à l’idée. Linus Torvalds ne s’est pas encore exprimé à ce sujet après 24 heures. Mais lui et d’autres développeurs centraux sont typiquement très intéressés par des modifications qui réduisent les temps de compilation, car cela leur facilite le travail quotidien — et ils apprécient aussi beaucoup un code ordonné, plus facile à comprendre par les humains.

Les modifications apportées par Molnar devraient toutefois les faire réfléchir plus longtemps au pour et au contre, car ses correctifs modifient énormément de code. De plus, ils donneraient beaucoup de travail à de nombreux développeurs, à court et à long terme.

Cela commence par une élaboration plus poussée de l’idée, car les correctifs de Molnar ne couvrent pour l’instant que le code pour ARM64 et les versions 32 et 64 bits de MIPS, Sparc et x86. Le code pour les autres architectures ne peut même plus être construit avec succès actuellement après les modifications. Molnar, qui travaille sur le projet depuis fin 2020, veut s’y attaquer ensuite, si sa proposition trouve un écho favorable.

L’intégration dans la branche de développement principale actuelle et le contrôle de qualité qui en résulterait donneraient également du fil à retordre à de nombreux développeurs : En effet, si l’idée est acceptée, l’enregistrement devrait se faire par petites touches, principalement via les mainteneurs de sous-systèmes. L’enregistrement devrait donc s’étaler sur plusieurs versions du noyau, ce qui pourrait prendre des mois, voire des années. Des vitesses plus importantes dans le processus de construction ne devraient apparaître qu’à la fin de cette période, car l’effet n’est apparu que tardivement pendant le développement des modifications de Molnar.

Mais ce n’est pas tout, car tout cela rendrait difficile pour les développeurs de porter en arrière les modifications dans les anciennes versions du noyau encore maintenues pendant des années. Cela ne peut pas être évité, car les correctifs actuels modifient plus de 25.000 des quelque 53.000 fichiers de code source à partir desquels Linux est créé ; ce faisant, le noyau s’accroît de plus de cent mille lignes de code par la transformation, car ils rendent explicite une grande partie de l’implicite. L’annonce de cette idée est donc probablement la plus grande annonce de fonctionnalités dans l’histoire de la liste de diffusion du noyau Linux, comme l’écrit Molnar lui-même – en ajoutant qu’il n’a pas choisi de le faire.

Les modifications concernent surtout près de 10.000 fichiers d’en-tête qui se trouvent dans les sources Linux sous include/ et arch/*/include/. Ils contiennent des déclarations et d’autres parties du code source sur lesquelles le code s’appuie. Les en-têtes peuvent également inclure d’autres fichiers de leur type, c’est pourquoi le compilateur et les autres outils impliqués dans la compilation d’un noyau doivent toujours évaluer cette hiérarchie et les dépendances entre les fichiers. C’est précisément là que se trouvent toutes sortes de « dépendances compliquées et douloureuses, que nous appelons affectueusement ‘l’enfer des dépendances' », écrit Molnar dans l’annonce détaillée de son projet Fast Kernel Headers.

C’est ce même désordre historique que les correctifs nettoient, ce qui facilite considérablement le travail des compilateurs Co. C’est la raison pour laquelle les modifications peuvent accélérer la première compilation d’un noyau Linux de 50 à 80%, selon l’architecture et la configuration du noyau construit. La compilation répétée d’un noyau après de petites modifications du code devrait même parfois être bien plus que deux fois plus rapide.

Outre ces avantages, les transformations assurent également une délimitation plus claire des déclarations de type et des interfaces de programmation (API) entre les différentes zones du code Linux (les sous-systèmes). Le tout ne devrait cependant pas avoir d’impact sur les logiciels fonctionnant sous Linux, car Linux dispose depuis longtemps d’un ensemble séparé de fichiers d’en-tête pour le code de l’espace utilisateur. Certains des changements de Molnar modifient également ces fichiers, mais ils ne devraient pas modifier les interfaces (ABI et API) avec l’espace utilisateur de manière incompatible – car cela est de toute façon tabou sous Linux.

Plus d'articles