Linux Kernel Aims to Adopt Microsoft C Extensions by Default in Next Major Release
Linux kernel developers are preparing to implement Microsoft C Extensions (-fms-extensions) as a default feature in the upcoming Linux 6.19 kernel. Linus Torvalds, the project’s lead developer, has not voiced opposition to the change, suggesting the project may soon adopt the extensions system-wide. This move follows discussions emphasizing the potential advantages of these extensions, such as cleaner code and improved memory efficiency, even as concerns remain about the reliance on Microsoft’s coding practices.
According to Phoronix reports, Rasmus Villemoes discussed the implications of enabling -fms-extensions, noting the potential for ‘prettier code’ and others highlighting the benefits of saving stack space. While individual use cases often deemed the changes ‘not too awful,’ the proposal to ‘bite the bullet’ as Linus mentioned, would ensure the availability of the extensions whenever a use case arises without the need for justification. This approach has sparked debate within the community about the trade-offs of adopting Microsoft’s coding paradigms in an open-source project.
The second patch in question, kbuild: Add ‘-fms-extensions’ to areas with dedicated CFLAGS, aims to ensure that -fms-extensions is passed for the CPU architectures that rely on their own CFLAGS being set rather than the main KBUILD_CFLAGS. Linus Torvalds’ previous comments on the mailing list indicate he is not against the adoption of these extensions beginning with the Linux 6.19 kernel. The decision reflects a growing acceptance of cross-platform compatibility and the potential practical benefits of integrating Microsoft’s C extensions into the Linux ecosystem.
This development is expected to influence the broader open-source community, as the adoption of Microsoft’s coding standards could streamline code development and maintenance. However, it raises questions about the balance between practicality and adherence to open-source principles. The Linux project’s choice to integrate these extensions may signal a shift toward greater compatibility with proprietary systems, potentially affecting the project’s long-term direction and community dynamics.