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。

沒有任何使用者會以 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++14C++17C++20 等簡寫字詞來指稱此版本。

SDK C++ 版本C++ 版本清單,這些版本已記錄為 Fuchsia SDK 所支援,並由 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++ 版本

您可以撰寫 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++ 版本政策的說明文件。

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

既有技術與參考資料