RFC-0038:將版面配置與限制區隔開來 | |
---|---|
狀態 | 已遭拒 |
領域 |
|
說明 | 我們提議變更語法,以傳達版面配置與限制之間的差異。 |
作者 | |
提交日期 (年-月-日) | 2019-03-07 |
拒絕原因
這份提案草擬版並完成社會化後,一致地: 想一次處理所有語法變更,而不是逐一處理 (請參閱 RFC-0039)。我們也會 希望將一個人做為語法仲裁 委員會。
這項提案最終已由以下人員淘汰: 符合的 RFC-0050 同時符合兩項條件
摘要
我們建議變更語法,以準確傳達 限制。
提振精神
版面配置和限制
快速:
- 如果兩種型別使用不同的版面配置,就無法進行柔和轉換 彼此之間,反之亦然 (至少簡單)。
- 版面配置說明位元組的配置方式,以及位元組的解讀方式。
- 類型的限制是指編碼/解碼期間執行的驗證步驟。
- 限制可能不斷演變,只要編寫者的限制比 而且一切都相容
不同事物的語法都相同
具有不同版面配置的類型,以及具有相同版面配置的類型 (但 就會看起來一樣
相同的版面配置:
vector<T>:6
或vector<T>:10
T?
,其中T
是union
、vector
或string
handle
、handle<vmo>
或handle<channel>
不同版面配置:
array<T>:6
對array<T>:10
S?
,其中S
是struct
設計
語法對齊
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 的影響,從而改善人體工學 經由語法進行檢查
說明文件和範例
須符合以下條件:
回溯相容性
這與來源層級回溯不相容。