Linux-kernelversie 6.19 heeft ondersteuning voor Microsoft C Extensions ingeschakeld in de hoofdlijn Git, en de kernel wordt verenigd tijdens de build-fms-extensiescompileeroptie die de deur opent voor het gebruik van deze niet-standaard extensie. De wijziging werd zonder bezwaar door Linus Torvalds doorgevoerd en markeerde de officiële voltooiing van werk dat al vele malen eerder was geprobeerd.

afbeelding-1.webp

De zogenaamde Microsoft C-extensies zijn een reeks niet-standaard C/C++-taalfuncties die GCC en LLVM/Clang optioneel ondersteunen tijdens het compileren. Ze zijn genoemd omdat ze oorspronkelijk werden gebruikt in Microsoft-headerbestanden en worden ondersteund door de Microsoft Visual C/C++-compiler. Deze extensies maken het gebruik van bepaalde schrijfmethoden buiten de standaard C-specificatie in de code mogelijk, waardoor het handiger wordt bij het porten of hergebruiken van bepaalde interface- en structuurdefinities in het Microsoft-ecosysteem.

De focus van het inschakelen van Microsoft C-extensies in Linux 6.19 ligt deze keer op het anoniem inbedden van gelabelde structuren/verenigingen binnen een structuur of vereniging, waardoor de toegang wordt vereenvoudigd terwijl de type-informatie behouden blijft. Ontwikkelaars zijn van mening dat deze manier van schrijven de kernelcode "mooier" en tot op zekere hoogte gemakkelijker te onderhouden kan maken, maar eerdere pogingen om -fms-extensies globaal in te schakelen, slaagden er niet in om door te dringen tot de hoofdlijn.

Deze optie bevindt zich momenteel in de hoofdkernelboom en wordt in sommige subsystemen getest, waarbij de Btrfs-bestandssysteemcode een van de early adopters is. Het officiële Btrfs-conversievoorbeeld laat zien hoe u deze extensie kunt gebruiken om de structuurdefinitie te reconstrueren om de veldtoegang directer te maken terwijl de oorspronkelijke semantiek ongewijzigd blijft, waardoor een referentiesjabloon wordt geboden voor de follow-up van meer subsystemen.

Meer technische details en codeaanpassingen over deze wijziging kunnen worden bekeken in deze Kbuild-samenvoeginzending. De bijbehorende inzending is openbaar gemaakt in de broncoderepository van de kernel, zodat ontwikkelaars deze kunnen bekijken:

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

Omdat Linux 6.19 ook verbeteringen introduceert in andere aspecten zoals planning, encryptieprestaties en energiebeheer, zal deze verandering in de C-taalextensie een nieuw startpunt worden in de evolutie van de onderhoudbaarheid van de kernel en de codeerstijl.