RFC-0193:支援的 C++ 版本 | |
---|---|
狀態 | 已接受 |
區域 |
|
說明 | 可從 SDK 捨棄 C++14 支援,並闡明日後將如何決定及支援 C++ 版本。 |
變更 | |
作者 | |
審查人員 | |
提交日期 (年/月) | 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++ 版本清單,這些 C++ 版本已由 Fuchsia SDK 記錄為支援,並供做為 SDK 一部分的建構系統使用。該清單目前包含 C++14 和 C++17。
捨棄 C++14
為了反映系統不再支援 C++14,SDK 說明文件和 Zircon 中的 C++ SHALL 即將更新。
Fuchsia Tree C++ 版本
在 Fuchsia 樹狀結構中,用於編譯大多數程式碼的 C++ 版本必須是 SDK C++ 版本。其他 C++ 版本可能用於 Fuchsia 樹狀結構,用於小型的獨立程式碼集或僅限主機的程式碼,但我們不建議這麼做。
C++ 版本測試
「必須」為每個 SDK C++ 版本建構並執行一組核心測試,這是 Fuchsia 修訂佇列的一部分。這組測試包含 C++ 針對 C++ FIDL 繫結的 CTS 和 API 測試中的所有 C++ 測試,但可能包含更多測試。
新增 C++ 版本
您可以編寫 RFC 來新增 SDK C++ 版本,藉此取得該版本並獲得核准。
只有 ISO C++ 修訂版本發布的 C++ 版本可以新增至 C++ 版本。
新增 SDK C++ 版本時,必須更新 Fuchsia 版本,才能使用新增 C++ 版本來建構及執行上述 C++ 測試。
移除 C++ 版本
_SDK C++ version_s 可以編寫 RFC 提議將其移除並獲得核准。
移除 SDK C++ 版本時,必須從 SDK 說明文件中移除該版本,且應從 Fuchsia 建構系統中移除。
實作
捨棄 C++14
這只是說明文件變更。
C++ 版本測試
捨棄 C++14 後,C++17 將是唯一 SDK C++ 版本。測試都已透過 C++17 建構並執行。
您必須先更新 Fuchsia 建構系統,才能新增其他版本,以便使用多個 C++ 版本建構及執行測試。
效能
無
人體工學
更新 SDK 中隨附的 C++ 程式碼會更簡單,因為每項變更都會依據每個支援的 C++ 版本進行測試。
回溯相容性
目前 (2022 年 10 月) 的 Fuchsia 使用者使用 C++17 進行建構,因此沒有回溯相容性問題。
安全性考量
無
隱私權注意事項
無
測試
請參閱上述說明。
說明文件
我們將更新 SDK 說明文件和 Zircon 中的 C++,以反映不再支援 C++14。
這個 RFC 可做為日後新增及移除 C++ 版本的政策說明文件。