RFC-0193:支援的 C++ 版本

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。

SDK 的使用者不再以 C++14 編譯,因此變更支援版本只需修改說明文件。

利害關係人

講師: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++14C++17C++20 等簡稱。

「SDK C++ 版本」列出 Fuchsia SDK 支援的 C++ 版本,並記錄這些版本,這些版本會由 SDK 隨附的建構系統使用。目前這份清單包含 C++14C++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++ 版本

如要新增 SDK C++ 版本,請撰寫 RFC 提案並獲得核准。

只有 ISO C++ 委員會發布的 C++ 版本可以新增至 C++ 版本。

新增 SDK C++ 版本時,Fuchsia 建構作業必須更新,才能建構及執行上述 C++ 測試,並新增 C++ 版本

移除 C++ 版本

您可以撰寫 RFC 提議移除 _SDK C++ 版本,並獲得核准。

移除 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++ 版本的政策文件。

缺點、替代方案和未知事項

既有技術和參考資料