En el núcleo de Linux 5.18 se planea permitir el uso del estándar del lenguaje C C11

Durante la discusión sobre el conjunto de parches para corregir los problemas de vulnerabilidades de clase Spectre en el código para trabajar con listas vinculadas, se hizo evidente que el problema podría resolverse de manera más elegante si se permitiera código en lenguaje C correspondiente a una versión más nueva del estándar en el núcleo. Actualmente, el código agregado al núcleo debe cumplir con la especificación ANSI C (C89), que fue formulada en 1989.

El problema relacionado con Spectre en el código fue causado por el uso continuo de un iterador definido por separado después del ciclo; se utiliza un macro para iterar sobre los elementos de la lista vinculada y, dado que el iterador del ciclo se pasa a este macro, se define fuera del propio ciclo y sigue estando disponible después de este. Usar el estándar C99 permitiría definir variables del ciclo en el bloque for(), lo que resolvería el problema sin necesidad de soluciones alternativas.

Linus Torvalds estuvo de acuerdo con la idea de implementar soporte para especificaciones más nuevas y propuso cambiar en el núcleo 5.18 al uso del estándar C11, publicado en 2011. En una verificación preliminar, la compilación en GCC y Clang en el nuevo modo se realizó sin inconvenientes. Si no surgen problemas imprevistos durante pruebas más exhaustivas, en los scripts de compilación del núcleo 5.18, la opción ‘—std=gnu89’ se reemplazará por ‘—std=gnu11 -Wno-shift-negative-value’. También se consideró la posibilidad de usar el estándar C17, pero en este caso habría que elevar la versión mínima soportada de GCC. La inclusión del soporte para C11 se ajusta a los requisitos actuales de versión de GCC (5.1).

Fuente: opennet.ru

Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS 🔥 Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS | ProHoster