RFC-0038:將版面配置與限制分開

RFC-0038:將版面配置與限制區隔開來
狀態已遭拒
領域
  • FIDL
說明

我們提議變更語法,以傳達版面配置與限制之間的差異。

作者
提交日期 (年-月-日)2019-03-07

拒絕原因

這份提案草擬版並完成社會化後,一致地: 想一次處理所有語法變更,而不是逐一處理 (請參閱 RFC-0039)。我們也會 希望將一個人做為語法仲裁 委員會。

這項提案最終已由以下人員淘汰: 符合的 RFC-0050 同時符合兩項條件

摘要

我們建議變更語法,以準確傳達 限制。

提振精神

版面配置和限制

快速:

  • 如果兩種型別使用不同的版面配置,就無法進行柔和轉換 彼此之間,反之亦然 (至少簡單)。
  • 版面配置說明位元組的配置方式,以及位元組的解讀方式。
  • 類型的限制是指編碼/解碼期間執行的驗證步驟。
  • 限制可能不斷演變,只要編寫者的限制比 而且一切都相容

不同事物的語法都相同

具有不同版面配置的類型,以及具有相同版面配置的類型 (但 就會看起來一樣

相同的版面配置:

  • vector<T>:6vector<T>:10
  • T?,其中Tunionvectorstring
  • handlehandle<vmo>handle<channel>

不同版面配置:

  • array<T>:6array<T>:10
  • S?,其中Sstruct

設計

語法對齊

layout:constraint

如果是類型,也就是任何會控製版面配置的行為,都位於冒號之前 控制項限制位於冒號後方。

建議的變更:

    array<T>:N    becomes            array<T, N>

    S?            becomes            box<S>:nullable       (S is a struct)

    T?            becomes            T:nullable            (T is a vector, or union)

    string        is an alias for    vector<uint8>:utf8

    handle<K>     becomes            handle:K

注意:

  • 並非所有限制都對所有類型都有意義的,例如,沒有 將 struct 標示為可為空值。
  • 並非所有事物都會裝箱,起初只有結構體 (目標是 並未推出更多可選性的方法)。

人體工學

本提案能讓開發人員瞭解 ABI 的影響,從而改善人體工學 經由語法進行檢查

說明文件和範例

須符合以下條件:

回溯相容性

這與來源層級回溯不相容。