在核心 Linux 5.18 版本計劃允許使用 C11 語言標準

在討論修復鍊錶程式碼中與 Spectre 相關的問題的補丁集時,很明顯,如果允許符合較新版本標準的 C 程式碼進入內核,則可以更優雅地解決該問題。目前,加入核心的程式碼必須符合 89 年形成的 ANSI C(C1989)規範。

程式碼中與 Spectre 相關的問題是由於在循環後繼續使用單獨定義的迭代器引起的 - 使用宏來迭代鍊錶的元素,並且由於循環迭代器被傳遞到該宏中,因此它是在循環本身之外定義並在循環後保持可用。使用 C99 標準將允許在 for() 區塊中定義循環變量,這將解決問題而無需提出解決方法。

Linus Torvalds 同意實現對新規範的支援的想法,並建議將 5.18 核心遷移到使用 11 年發布的 C2011 標準。在初步測試期間,在新模式下使用 GCC 和 Clang 的構建順利通過,沒有任何偏差。除非進一步測試發現任何意外問題,否則 5.18 核心建置腳本將以「--std=gnu89 -Wno-shift-negative-value」取代「--std=gnu11」選項。也考慮過使用 C17 標準的可能性,但在這種情況下就需要增加 GCC 的最低支援版本。啟用 C11 支援符合 GCC 版本 (5.1) 的當前要求。

來源: opennet.ru

為具有 DDoS 保護、VPS VDS 服務器的站點購買可靠的主機 🔥 購買具備 DDoS 防護的可靠網站寄存服務,包括 VPS 和 VDS 伺服器 | ProHoster