RFC-0019:使用演進 = uint64;

RFC-0019:使用進化 = uint64;
狀態已接受
領域
  • FIDL
說明

新增機制,為原始類型提供更多描述性名稱。移除狀態的內建功能。引入 zx 程式庫以包含 .

作者
提交日期 (年-月-日)2018-07-17
審查日期 (年-月-日)2018-08-03

摘要

新增機制,為原始類型提供更多描述性名稱。 移除狀態的內建功能。加入 ZX 程式庫,其中包含來自 <zircon/types.h> 的原始類型。

與其他 RFC 的關係

這個 RFC 已由以下機構取代:

提振精神

開發人員通常會想為原始版本指定較具描述性的名稱 。例如,statusint32 的描述性名稱。 但 status 已內建於該語言中,因此無法使用其他類型的 建立 Deployment

設計

本提案只會影響 FIDL 原文語言。

  1. 擴充 using 關鍵字,以便指派描述性名稱 原始類型具體來說,請將下列正式環境新增至 FIDL 文法:
using-list = ( using | using-declaration )* ;
using-declaration = "using" , IDENTIFIER ,  "=" , primitive-type , ";" ;
  1. 從語言中移除 status 基本類型。status 現在可以使用語言本身定義基本類型 就會是內建功能

  2. 移除 status 保留字詞。現在我們不必再 現在我們可以使用 status 這個字詞定義名稱了。 新增包含基元宣告的 zx 程式庫 是由 Zircon 系統介面定義的型別。在理想情況下 未來的 syscalls.abigen 會產生這個程式庫 包含這項資訊例如:

library zx;

using status = int32;
using time = uint64;
using duration = uint64;
[...]

請注意,這些宣告必須出現在使用清單內,且必須 直接參照原始類型這種做法可以避免 因為兩者可用來立即轉譯成 基本的基本類型

此外,請注意,系統產生的提案中並沒有建議的變更 任何譯文語言的程式碼這些類型會顯示在 以使用基礎原始型別

說明文件和範例

使用範例

    1: AdvanceTime(zx.duration duration) -> (zx.status status);

回溯相容性

這項變更不可回溯相容至 FIDL 來源 因為系統會移除 status 原始類型。不過 遷移 status 的現有用戶端十分簡單,因為 只要改用 zx.status

成效

提議的變更不會影響成效。

安全性

提議的變更不會影響安全性。

測試

系統將在 Zircon 的 fidl-測試套件中測試此功能,方法是新增 使用 zx 程式庫中每個類型的 FIDL 檔案。

缺點、替代方案和未知

此提案很容易實作在 FIDL 前端,並 且無需變更語言專屬後端。

或者,您也可以繼續使用 原始型別。

既有藝術品和參考資料

這項功能在程式設計語言中非常常見。語法為 借助 C++ 之寬鬆。