RFC-0019:使用演進 = uint64;

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

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

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

摘要

新增機制,為原始類型提供更描述性的名稱。移除語言內建功能的狀態。推出 zx 程式庫,以納入 <zircon/types.h> 的原始類型。

與其他 RFC 的關係

這個 RFC 已由以下因素取代:

提振精神

開發人員通常會希望為原始類型指派更明確的名稱。舉例來說,status 是比較容易理解的 int32 名稱,但 status 內建於語言中,其他類型無法以相同方式使用。

設計

本提案只會影響 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);

回溯相容性

這項變更會移除 status 原始類型,因此對於 FIDL 來源語言不具回溯相容性。不過,遷移 status 的現有用戶端相當複雜,因為只需改用 zx.status

效能

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

安全性

提議的變更不會對安全性造成任何影響。

測試

系統會新增 FIDL 檔案 (使用 zx 程式庫中的每個類型),在 Zircon 的 fidl-test 套件中測試這項功能。

缺點、替代方案和未知

本提案可直接在 FIDL 前端實作,且無須變更語言專屬後端。

替代方法是未解決問題,並繼續使用原始類型。

先前的圖片和參考資料

在程式設計語言中,此功能非常常見。語法直接從 C++ 借用。