Linux kernel 5.18 prevede di permette l'usu di u standard di lingua C C11

Mentre discute un inseme di patches per risolve i prublemi di Spectre in u codice di a lista ligata, hè diventatu chjaru chì u prublema puderia esse risoltu più grazia se u codice C chì cunforma cù una versione più nova di u standard era permessu in u kernel. Attualmente, u codice di u kernel aghjuntu deve cunfurmà cù a specificazione ANSI C (C89), furmatu in u 1989.

Un prublema legatu à Spectre in u codice hè statu causatu da l'usu cuntinuu di un iteratore definitu separatamente dopu à u ciclu - una macro hè usata per iterà nantu à l'elementi di una lista ligata, è perchè l'iteratore di loop hè passatu in quella macro, hè definitu fora di u ciclu stessu è resta dispunibule dopu à u ciclu. Utilizà u standard C99 permetterà e variabili di loop per esse definite in un bloccu for (), chì risolve u prublema senza avè da vene cun solu solu.

Linus Torvalds accunsenu cù l'idea di implementà u supportu per e specificazioni più recenti è hà prupostu di trasfurmà u kernel 5.18 per utilizà u standard C11, publicatu in 2011. Durante a prova preliminare, l'assemblea in GCC è Clang in u novu modu passava senza deviazioni. Se ùn ci sò micca prublemi inaspettati durante una prova più approfondita, l'opzione '--std=gnu5.18' in i script di creazione di u kernel 89 serà rimpiazzata cù '--std=gnu11 -Wno-shift-negative-value'. A pussibilità di usà u standard C17 hè stata ancu cunsiderata, ma in questu casu hè necessariu di aumentà a versione minima supportata di GCC. L'inclusione di u supportu C11 si adatta à i requisiti attuali per a versione GCC (5.1).

Source: opennet.ru

Add a comment