I Linux-kernen 5.18 planlægges det at tillade brugen af C11 sprogstandardsproget.

I processen med at diskutere en række patches til at rette de problemer, som relaterer sig til Spectre-klassens sårbarheder i koden til arbejde med kædede lister, blev det klart, at problemet kunne løses mere elegant, hvis der blev givet adgang til kode i C-sprog, der overholder en nyere version af standarden. I øjeblikket skal den tilføjede kernel-kode overholde ANSI C-specifikationen (C89), der blev udformet tilbage i 1989.

Problemet relateret til Spectre i koden blev forårsaget af den fortsatte brug af en særskilt defineret iterator efter løkken – for at gennemgå elementer i den kædede liste bruges en makro, og da iteratoren fra løkken gives til denne makro, defineres den uden for selve løkken og forbliver tilgængelig efter løkken. Brugen af standarden C99 ville muliggøre, at variabler til løkken kunne defineres i for()-blokken, hvilket ville have løst problemet uden at finde på nogen omveje.

Linus Torvalds tilsluttede sig ideen om at implementere støtte til nyere specifikationer og foreslog at overgå i kernel 5.18 til at bruge standarden C11, der blev offentliggjort i 2011. Ved en foreløbig kontrol gik bygningen i GCC og Clang i den nye tilstand uden afvigelser. Hvis der ikke opstår uventede problemer ved mere grundige tests, vil muligheden i bygmescripterne for kernel 5.18 ‘—std=gnu89’ blive udskiftet med ‘—std=gnu11 -Wno-shift-negative-value’. Muligheden for også at bruge standarden C17 blev overvejet, men i så fald ville den minimalt understøttede version af GCC skulle opgraderes. Inkluderingen af støtte til C11 falder dog inden for de nuværende krav til versionen af GCC (5.1).

Kilde: opennet.ru

Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere 🔥 Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere | ProHoster