Imagen de cabecera retocada con Editasteic Editasteic

Dos parches que han sido incluidos en el árbol de desarrollo del sistema de construcción del kernel de Linux, kbuild-next, habilitarían el argumento del compilador -fms-extensions en todas partes, permitiendo que GCC y LLVM/Clang utilicen las Microsoft C Extensions al compilar el kernel de Linux. Al estar en kbuild-next, estos parches probablemente se enviarán para la ventana de fusión del kernel Linux 6.19 el próximo mes, aunque queda por ver si habrá objeciones de último minuto a este cambio.

¿Qué son las Microsoft C Extensions?

La opción del compilador -fms-extensions respetada por el GNU Compiler Collection y LLVM/Clang permite habilitar algunas construcciones de C/C++ no estándar utilizadas dentro de los archivos de encabezado de Microsoft y reconocidas por el compilador Microsoft Visual C/C++. Para propósitos de desarrollo del kernel de Linux, habilitar las Microsoft C Extensions permitiría incluir una struct o union etiquetada de forma anónima en otra struct/union.

Un debate de años finalmente llega a su fin

Durante muchos años han existido parches propuestos para habilitar incondicionalmente -fms-extensions para el kernel de Linux, pero no habían logrado pasar la lista de correo del kernel de Linux. Sin embargo, ahora que estos dos parches están en kbuild-next significa que probablemente serán enviados para la ventana de fusión del kernel Linux 6.19, a menos que haya objeciones de desarrolladores prominentes del kernel de Linux o del mismo Linus Torvalds.

Rasmus Villemoes argumentó con el parche Kbuild: enable -fms-extensions que permitiría un «código más elegante» y otros han notado en el pasado el potencial para ahorrar espacio en el stack y ser beneficioso en general al poder aprovechar el comportamiento de Microsoft C:

«De vez en cuando, resulta que habilitar -fms-extensions podría permitir un código ligeramente más elegante. Pero cada vez que ha surgido el tema, el código que tenía que usarse en su lugar se ha considerado ‘no demasiado horrible’ y no vale la pena introducir otra bandera del compilador.

Eso probablemente es cierto para cada caso individual, pero entonces es algo así como una situación de huevo y gallina.

Si simplemente ‘mordemos la bala’ como dice Linus y lo habilitamos de una vez por todas, estará disponible cada vez que surja un caso de uso, y ningún caso individual tiene que justificarlo.»

Los parches incluyen múltiples ejemplos de uso

El desarrollador proporcionó múltiples ejemplos de discusiones previas en la lista de correo donde las Microsoft C Extensions habrían sido útiles, y señaló que «sin duda, hay más lugares en el código donde esto también podría usarse pero donde -fms-extensions simplemente no surgió en ninguna discusión.»

El segundo parche es kbuild: Add ‘-fms-extensions’ to areas with dedicated CFLAGS para asegurar que -fms-extensions se pase para las arquitecturas de CPU que dependen de sus propios CFLAGS siendo configurados en lugar de los principales KBUILD_CFLAGS.

Linus Torvalds no se opone al cambio

Linus Torvalds participó en la discusión previa de la lista de correo y no parece estar en contra de habilitar -fms-extensions comenzando con el kernel Linux 6.19.

Beneficios técnicos y controversia potencial

Habilitar -fms-extensions permitirá un código C de mejor apariencia, aunque algunos pueden sentirse incómodos con el comportamiento de Microsoft C siendo permitido para el código del kernel principal de Linux.

Esta decisión representa un momento significativo en el desarrollo del kernel de Linux, ya que adopta características que tradicionalmente han sido asociadas con el ecosistema de Microsoft, pero que pueden ofrecer beneficios técnicos reales en términos de legibilidad del código y eficiencia del stack.

El cambio, si finalmente se implementa en Linux 6.19, podría abrir nuevas posibilidades para los desarrolladores del kernel y simplificar ciertos aspectos del código que anteriormente requerían soluciones más complejas para evitar las extensiones de Microsoft.

DEJA UNA RESPUESTA

Por favor ingrese su comentario!
Por favor ingrese su nombre aquí