Kernel Linux 5.18 planifikon të lejojë përdorimin e standardit të gjuhës C C11

Gjatë diskutimit të një sërë arnimesh për të rregulluar problemet e lidhura me Specter në kodin e listës së lidhur, u bë e qartë se problemi mund të zgjidhej më me hijeshi nëse kodi C që përputhet me një version më të ri të standardit do të lejohej në kernel. Aktualisht, kodi i shtuar i kernelit duhet të përputhet me specifikimin ANSI C (C89), i formuar në vitin 1989.

Një problem i lidhur me spektrin në kod u shkaktua nga përdorimi i vazhdueshëm i një përsëritësi të përcaktuar veçmas pas ciklit - një makro përdoret për të përsëritur mbi elementët e një liste të lidhur dhe për shkak se përsëritësi i ciklit kalohet në atë makro, ai është përcaktohet jashtë vetë ciklit dhe mbetet i disponueshëm pas ciklit. Përdorimi i standardit C99 do të lejonte që variablat e ciklit të përcaktohen në një bllok for(), i cili do të zgjidhte problemin pa pasur nevojë të dilte me zgjidhje.

Linus Torvalds ra dakord me idenë e zbatimit të mbështetjes për specifikimet më të reja dhe propozoi zhvendosjen e kernelit 5.18 për të përdorur standardin C11, të botuar në 2011. Gjatë testimit paraprak, montimi në GCC dhe Clang në modalitetin e ri kaloi pa devijime. Nëse nuk shfaqen probleme të papritura gjatë testimit më të plotë, opsioni '--std=gnu5.18' në skriptet e ndërtimit të kernelit 89 do të zëvendësohet me '--std=gnu11 -Wno-shift-negative-value'. Mundësia e përdorimit të standardit C17 u konsiderua gjithashtu, por në këtë rast do të ishte e nevojshme të rritet versioni minimal i mbështetur i GCC. Përfshirja e mbështetjes C11 përshtatet në kërkesat aktuale për versionin GCC (5.1).

Burimi: opennet.ru

Shto një koment