O núcleo de Linux 5.18 prevé permitir o uso do estándar da linguaxe C C11

Mentres se discutía un conxunto de parches para solucionar problemas relacionados con Spectre no código da lista ligada, quedou claro que o problema podería resolverse con máis gracia se se permitise o código C que cumpre cunha versión máis nova do estándar no núcleo. Actualmente, o código do núcleo engadido debe cumprir coa especificación ANSI C (C89), creada en 1989.

Un problema relacionado co espectro no código foi causado polo uso continuado dun iterador definido por separado despois do bucle: unha macro utilízase para iterar sobre os elementos dunha lista ligada e, debido a que o iterador de bucle se pasa a esa macro, é definido fóra do propio bucle e permanece dispoñible despois do bucle. Usar o estándar C99 permitiría definir variables de bucle nun bloque for(), o que resolvería o problema sen ter que buscar solucións.

Linus Torvalds estivo de acordo coa idea de implementar soporte para especificacións máis novas e propuxo mover o núcleo 5.18 para usar o estándar C11, publicado en 2011. Durante as probas preliminares, a montaxe en GCC e Clang no novo modo pasou sen desviacións. Se non se producen problemas inesperados durante probas máis exhaustivas, a opción '--std=gnu5.18' nos scripts de compilación do núcleo 89 substituirase por '--std=gnu11 -Wno-shift-negative-value'. Tamén se considerou a posibilidade de utilizar o estándar C17, pero neste caso sería necesario aumentar a versión mínima soportada de GCC. A inclusión do soporte C11 encádrase nos requisitos actuais para a versión GCC (5.1).

Fonte: opennet.ru

Engadir un comentario