La version 6.19 du noyau Linux a activé la prise en charge des extensions Microsoft C dans Git principal, et le noyau est unifié pendant la construction-extensions-fmsoption de compilation qui ouvre la porte à l’utilisation de cette extension non standard. Le changement a été intégré sans objection par Linus Torvalds, marquant ainsi l'achèvement officiel de travaux qui avaient été tentés à plusieurs reprises auparavant.

image-1.webp

Les extensions Microsoft C sont un ensemble de fonctionnalités non standard du langage C/C++ que GCC et LLVM/Clang prennent éventuellement en charge au moment de la compilation. Ils portent le nom de leur utilisation initiale dans les fichiers d'en-tête Microsoft et sont pris en charge par le compilateur Microsoft Visual C/C++. Ces extensions permettent l'utilisation de certaines méthodes d'écriture en dehors de la spécification standard C dans le code, ce qui le rend plus pratique lors du portage ou de la réutilisation de certaines définitions d'interface et de structure dans l'écosystème Microsoft.

Cette fois, l'objectif de l'activation des extensions Microsoft C dans Linux 6.19 est de permettre l'intégration anonyme de structures/unions étiquetées au sein d'une structure ou d'une union, simplifiant ainsi l'accès tout en conservant les informations de type. Les développeurs pensent que cette façon d'écrire peut rendre le code du noyau plus « joli » et plus facile à maintenir dans une certaine mesure, mais les tentatives précédentes pour activer les extensions -fms globalement n'ont pas réussi à avancer vers la ligne principale.

Cette option est actuellement dans l'arborescence principale du noyau et est testée dans certains sous-systèmes, le code du système de fichiers Btrfs étant l'un des premiers à l'adopter. L'exemple de conversion officiel Btrfs montre comment utiliser cette extension pour reconstruire la définition de la structure afin de rendre l'accès aux champs plus direct tout en gardant la sémantique d'origine inchangée, fournissant ainsi un modèle de référence pour le suivi d'un plus grand nombre de sous-systèmes.

Plus de détails techniques et d'ajustements de code concernant ce changement peuvent être consultés dans cette soumission de fusion Kbuild. La soumission correspondante a été rendue publique dans le référentiel de code source du noyau pour que les développeurs puissent l'examiner :

https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=2ddcf4962c1834a14340a1f50afafc3276c015bd

Comme Linux 6.19 introduit également des améliorations dans d'autres aspects tels que la planification, les performances de chiffrement et la gestion de l'énergie, ce changement apporté à l'extension du langage C deviendra un nouveau point de départ dans l'évolution de la maintenabilité du noyau et du style de codage.