Өзекте Linux 5.18 жоспары C11 тіл стандартын пайдалануға мүмкіндік береді

Байланыстырылған тізім кодындағы Spectre-қа қатысты мәселелерді түзететін патч жиынтығын талқылау барысында ядроға стандарттың соңғы нұсқасына сәйкес келетін C коды рұқсат етілсе, мәселені неғұрлым талғампаз түрде шешуге болатыны белгілі болды. Қазіргі уақытта ядроға қосылған код 1989 жылы орнатылған ANSI C (C89) спецификациясына сәйкес келуі керек.

Кодтағы Спектрге қатысты мәселе циклден кейін бөлек анықталған итераторды үздіксіз пайдаланудан туындады. Макрос байланыстырылған тізімнің элементтерін қайталау үшін пайдаланылады және цикл итераторы осы макросқа жіберілгендіктен, ол циклдің өзінен тыс анықталады және циклден кейін қол жетімді болып қалады. C99 стандартын пайдалану циклдік айнымалы мәндерді for() блогында анықтауға мүмкіндік береді, бұл мәселені шешуді қажет етпей шешеді.

Линус Торвальдс жаңа спецификацияларды қолдауды енгізу идеясымен келісті және 2011 жылы 5.18 ядросында жарияланған C11 стандартына ауысуды ұсынды. Алдын ала тестілеу GCC және Clang-те жаңа құрастыру режиміне қатысты мәселелердің жоқтығын көрсетті. Толығырақ тестілеу күтпеген ақауларды таппаса, 5.18 ядро ​​құрастыру сценарийлеріндегі "--std=gnu89" опциясы "--std=gnu11 -Wno-shift-negative-value" мәніне ауыстырылады. C17 стандартын пайдалану да қарастырылды, бірақ бұл ең аз қолдау көрсетілетін GCC нұсқасын көтеруді қажет етеді. C11 қолдауын қосу ағымдағы GCC нұсқасы талаптарына (5.1) сәйкес келеді.

Ақпарат көзі: opennet.ru

DDoS қорғауы бар сайттар үшін сенімді хостинг, VPS VDS серверлерін сатып алыңыз 🔥 DDoS қорғанысы, VPS VDS серверлері бар сенімді веб-сайт хостингін сатып алыңыз | ProHoster