I-Linux kernel 5.18 ihlela ukuvumela ukusetshenziswa kwezinga lolimi C11

Ngenkathi kuxoxwa ngesethi yamapeshi ukuze kulungiswe izinkinga ezihlobene ne-Specter kukhodi yohlu exhunyiwe, kuye kwacaca ukuthi inkinga ingaxazululwa kahle kakhulu uma ikhodi engu-C ehambisana nenguqulo entsha yezinga ivunyelwa ku-kernel. Njengamanje, ikhodi ye-kernel eyengeziwe kufanele ihambisane nencazelo ye-ANSI C (C89), eyakhiwa emuva ngo-1989.

Inkinga ehlobene ne-Specter kukhodi idalwe ukuqhubeka nokusetshenziswa kwe-iterator echazwe ngokwehlukana ngemva kwe-loopβ€”i-macro isetshenziselwa ukuphindaphinda izakhi zohlu oluxhunyiwe, futhi ngenxa yokuthi i-loop iterator idluliselwa kuleyo macro, ichazwe ngaphandle kweluphu ngokwayo futhi ihlala itholakala ngemva kweluphu. Ukusebenzisa izinga le-C99 kuzovumela okuguquguqukayo kwe-loop ukuthi kuchazwe kubhlokhi ye-(), engaxazulula inkinga ngaphandle kokuza nama-workaround.

U-Linus Torvalds uvumelane nombono wokusebenzisa ukusekelwa kokucaciswa okusha nokuhlongozwayo ukushintshela ezingeni le-C5.18, elashicilelwa ngo-11, ku-2011 kernel. Ngesikhathi sokuhlolwa kokuqala, ukwakhiwa kwe-GCC ne-Clang kumodi entsha kudlule ngaphandle kokuphambuka. Uma zingekho izinkinga ezingalindelekile eziphakamayo phakathi nokuhlolwa okuphelele, inketho ye-'--std=gnu5.18' izothathelwa indawo 89 kernel build scripts ngokuthi '--std=gnu11 -Wno-shift-negative-value'. Amathuba okusebenzisa izinga le-C17 nawo acatshangelwa, kodwa kulesi simo kuzodingeka ukuthi kwandiswe inguqulo encane esekelwe ye-GCC. Ukufakwa kosekelo lwe-C11 kufanelana nezidingo zamanje zenguqulo ye-GCC (5.1).

Source: opennet.ru

Engeza amazwana