RFC-0193:支援的 C++ 版本 | |
---|---|
狀態 | 已接受 |
區域 |
|
說明 | 從 SDK 中移除 C++14 支援,並說明日後如何決定及支援 C++ 版本。 |
Gerrit 變更 | |
作者 | |
審查人員 | |
提交日期 (年-月-日) | 2022-07-29 |
審查日期 (年-月-日) | 2022-10-03 |
摘要
從 SDK 中移除 C++14 支援,並說明日後如何決定及支援 C++ 版本。
提振精神
C++ SDK 目前聲稱支援 C++14,但 Fuchsia 樹狀結構中沒有有效的測試,無法防止 C++14 不相容的程式碼進入 SDK。這會導致使用者無法正常使用,並導致回溯。
Fuchsia 樹狀結構是使用 C++17 建構而成。Fuchsia 樹狀結構中的許多程式庫和架構都會依賴 C++17 功能,這些程式庫和架構對樹狀結構外的開發人員來說非常實用。特別是,新的 FIDL C++ 繫結需要 C++17。
沒有任何使用者會以 C++14 編譯 SDK,因此變更支援的版本只需變更說明文件即可。
相關人員
講師:cpu@google.com
審查者:johngro@google.com、dschuyler@google.com、abarth@google.com
諮詢對象:yifeit@google.com、sebmarchand@google.com、phosek@google.com、eieio@google.com、schottm@google.com、jamesr@google.com、gevalentino@google.com、jyknight@google.com
設計
術語
C++ 版本是指 ISO C++ 標準的修訂版本。我們會以 C++14、C++17、C++20 等簡寫字詞來指稱此版本。
SDK C++ 版本是C++ 版本清單,這些版本已記錄為 Fuchsia SDK 所支援,並由 SDK 中提供的建構系統使用。這份清單目前包含 C++14 和 C++17。
捨棄 C++14
SDK 說明文件和 Zircon 中的 C++ 應更新,以反映 C++14 已不再受支援。
Fuchsia Tree C++ 版本
用於編譯在 Fuchsia 樹狀結構中 Fuchsia 上執行的大部分程式碼的 C++ 版本,必須是 SDK C++ 版本。其他 C++ 版本 可用於 Fuchsia 樹狀結構中的小型隔離程式碼集或主機專用程式碼,但不建議這麼做。
C++ 版本測試
您必須為每個 SDK C++ 版本建構並執行一組核心測試,做為 Fuchsia 提交佇列的一部分。這組測試包含 CTS 中的所有 C++ 測試,以及 C++ FIDL 繫結的 API 測試,但可能會包含更多測試。
新增 C++ 版本
您可以撰寫 RFC 來提議新增 SDK C++ 版本,並獲得核准。
只有 ISO C++ 委員會發布的 C++ 版本才能加入 C++ 版本。
在新增 SDK C++ 版本的過程中,Fuchsia 版本必須更新,以便使用新增的 C++ 版本建構並執行上述的 C++ 測試。
移除 C++ 版本
如要移除 _SDK C++ 版本_,您可以撰寫 RFC 來提出移除要求並獲得核准。
移除 SDK C++ 版本時,必須從 SDK 說明文件中移除,並應從 Fuchsia 建構系統中移除。
實作
捨棄 C++14
這只是說明文件的變更。
C++ 版本測試
C++14 停用後,C++17 將是唯一的 SDK C++ 版本。測試已使用 C++17 建構及執行。
在新增其他版本之前,您必須先更新 Fuchsia 建構系統,才能使用多個 C++ 版本建構及執行測試。
成效
無
人體工學
每項變更都會針對每個支援的 C++ 版本進行測試,因此更新 SDK 中提供的 C++ 程式碼會變得更加容易。
回溯相容性
目前 (2022 年 10 月) 所有 Fuchsia 使用者都使用 C++17 進行建構,因此不會發生回溯相容性問題。
安全性考量
無
隱私權注意事項
無
測試
請參閱上述說明。
說明文件
SDK 說明文件和 Zircon 中的 C++ 將會更新,以反映我們已不再支援 C++14。
這份 RFC 是日後新增及移除 C++ 版本政策的說明文件。