No núcleo Linux 5.18, planejam permitir o uso do padrão da linguagem C C11

Durante a discussão sobre o conjunto de patches que corrige problemas relacionados a vulnerabilidades da classe Spectre no código para manipulação de listas ligadas, ficou claro que a solução seria mais elegante se o núcleo permitisse código em C, conforme uma versão mais recente do padrão. Atualmente, o código adicionado ao núcleo deve estar em conformidade com a especificação ANSI C (C89), que foi elaborada em 1989.

O problema relacionado ao Spectre no código foi causado pela continuidade do uso de um iterador definido separadamente após o loop — para iterar sobre os elementos de uma lista ligada, é utilizado um macro e, como o iterador do loop é passado para este macro, ele é definido fora do próprio loop e permanece acessível após o loop. O uso do padrão C99 permitiria a definição de variáveis para o loop no bloco for(), o que resolveria o problema sem a necessidade de gambiarras.

Linus Torvalds concordou com a ideia de implementar suporte a especificações mais novas e sugeriu que, no núcleo 5.18, se passasse a utilizar o padrão C11, publicado em 2011. Em uma verificação preliminar, a compilação no GCC e Clang no novo modo ocorreu sem erros. Se não surgirem problemas imprevistos em testes mais rigorosos, a opção ‘—std=gnu89’ nos scripts de compilação do núcleo 5.18 será substituída por ‘—std=gnu11 -Wno-shift-negative-value’. Também se considerou a utilização do padrão C17, mas isso exigiria aumentar a versão mínima suportada do GCC. A inclusão do suporte ao C11 se alinha às exigências atuais da versão do GCC (5.1).

Fonte: opennet.ru

Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS 🔥 Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS | ProHoster