FIDL设计历史
本页面提供了在RFCs中“FIDL”部分的开始引导。本章采用不同方式集合来展现其每个阶段的更新状态,带领读者快速了解FIDL的相关历史和当前方向。
首先,这些设计文件被称为FTPs(FIDL Tuning Proposals)或者FIDL调试方案。FTP流程后续将合入到RFC(request for comments)流程中。因为FTPs被以RFCs方式进行重新编码,所以RFC编号并不代表着时间顺序。但是本页面上的每个列表都按时间顺序显示RFCs。
按主题分类
本章节按照主题组织FIDL RFCs。每个RFC即使涉及多个主题,但在本章内仅列出一次。
管理
- RFC-0018: FTP process: A modest proposal
- RFC-0049: FIDL tuning process evolution
- RFC-0017: The FTP Process is dead, long live the RFC Process!
可进化性
- RFC-0047: Tables
- (Rejected) RFC-0063: OrdinalRange
- RFC-0058: Introduce a deprecated attribute
- RFC-0061: Extensible unions
- RFC-0020: Interface ordinal hashing
- RFC-0021: Soft transitions for methods add and remove
- RFC-0024: Mandatory source compatibility
- RFC-0029: Increasing method ordinals
- RFC-0033: Handling of unknown fields and strictness
- RFC-0037: Transactional message header v3
- RFC-0040: Identifier uniqueness
- RFC-0048: Explicit union ordinals
- RFC-0083: FIDL versioning
表现性
- RFC-0019: Type aliases with using
- RFC-0022: Default values for struct members
- RFC-0066: Programmer advisory explicit defaults
- (Rejected) RFC-0065: No optional strings or vectors
- (Rejected) RFC-0064: Box\
- RFC-0023: Compositional model for protocols
- RFC-0041: Support for unifying services and devices
- (Rejected) RFC-0044: Extensible method arguments
- RFC-0052: Type aliasing and new types
- RFC-0054: Parameter attributes
语法
- (Rejected) RFC-0038: Separating layout from constraints
- (Rejected) RFC-0039: Types come second
- RFC-0050: Syntax revamp
- RFC-0086: Updates to RFC-0050: FIDL attributes syntax
- RFC-0087: Updates to RFC-0050: FIDL method parameter syntax
工效学
- RFC-0053: Epitaphs
- RFC-0056: Empty structs
- RFC-0060: Error handling
- RFC-0025: Bit flags
- (Rejected) RFC-0031: Typed epitaphs
- RFC-0057: Default no handles
性能
- (Rejected) RFC-0026: Envelopes everywhere
- RFC-0027: You only pay for what you use
- (Rejected) RFC-0032: Efficient envelopes
- (Rejected) RFC-0035: Automatic flow tracing
- (Rejected) RFC-0045: Zero-size empty structs
功能安全和信息安全
- RFC-0051: Safer structs for C++
- (Rejected) RFC-0062: Method impossible
- RFC-0028: Handle rights
- (Rejected) RFC-0034: Null terminate strings
工具
文档
简化设计空间
按语言特性分类
本章列出在FIDL语言中引入的新特性的RFCs。它只包含当前特性,而不包含已被废弃的。
Feature | RFC | Note |
---|---|---|
struct defaults | RFC-0022 | Default values for struct members |
table |
RFC-0047 | Forward and backward compatible data type |
/// |
RFC-0055 | Documentation comments |
struct Empty {}; |
RFC-0056 | Empty structs |
error |
RFC-0060 | Method error result syntax |
union |
RFC-0061 | Initially called xunion , replaced the old static unions |
[Selector] |
RFC-0020 | Override method hashing with an explicit selector |
[Transitional] |
RFC-0021 | Attribute for soft transitioning method addition/removal |
compose |
RFC-0023 | Renamed interface to protocol , added the compose feature |
bits |
RFC-0025 | Bit flags types |
handle rights | RFC-0028 | Annotate required or excluded handle rights |
strict , flexible |
RFC-0033 | Strict and flexible types |
service |
RFC-0041 | Services are collection of protocols |
alias , type |
RFC-0052 | Replaced using aliases with alias and type |
resource |
RFC-0057 | Value and resource types |
当前状态
本章展示了所有FIDL RFCs的当前状态
Legend:
Status | Meaning |
---|---|
Unpublished | Never made public nor formally reviewed |
Withdrawn | Made public, but never formally reviewed |
Implemented | Accepted, implemented, still accurate |
Unimplemented | Accepted but never implemented, no plans to do so |
Partially implemented | Accepted and partially implemented, no plans to finish |
Implementation in progress | Accepted, implementation in progress |
Amended | Accepted, still mostly accurate, but amended by a later RFC |
Superseded | Accepted but no longer accurate, superseded by a later RFC |
Rejected | Formally rejected |
Rejected; Superseded | Formally rejected, then superseded by a later RFC |
RFC | Title | Status |
---|---|---|
RFC-0018 | FTP process: A modest proposal | Superseded by RFC-0017 |
RFC-0019 | Type aliases with using | Superseded by RFC-0052 |
RFC-0022 | Default values for struct members | Partially implemented: only in HLCPP, Dart |
RFC-0051 | Safer structs for C++ | Unimplemented: change was never merged |
RFC-0062 | Method impossible | Rejected |
RFC-0066 | Programmer advisory explicit defaults | Implemented |
RFC-0047 | Tables | Implemented |
RFC-0053 | Epitaphs | Implemented |
RFC-0055 | Documentation comments | Amended by RFC-0043 |
RFC-0063 | OrdinalRange | Rejected; Superseded by RFC-0020 |
– | FIDL in FIDL | Unpublished; Protobuf can do this |
RFC-0056 | Empty structs | Implemented |
RFC-0058 | Introduce a deprecated attribute | Superseded by RFC-0083 |
RFC-0060 | Error handling | Implemented |
RFC-0061 | Extensible unions | Implemented |
RFC-0065 | No optional strings or vectors | Rejected |
RFC-0064 | Box\ |
Rejected; see also “FIDL large message support” |
– | Sequences | Unpublished; earlier version of “Streams” |
– | Streams | Unpublished; see also measure-tape (a pragmatic solution) |
RFC-0020 | Interface ordinal hashing | Implemented |
RFC-0021 | Soft transitions for methods add and remove | Implemented |
RFC-0023 | Compositional model for protocols | Implemented |
RFC-0024 | Mandatory source compatibility | Implemented; see also source_compatibility |
RFC-0025 | Bit flags | Implemented |
RFC-0026 | Envelopes everywhere | Rejected |
RFC-0027 | You only pay for what you use | Implemented |
RFC-0028 | Handle rights | Implementation in progress |
RFC-0029 | Increasing method ordinals | Superseded by RFC-0037 |
RFC-0030 | FIDL is little endian | Implemented |
RFC-0031 | Typed epitaphs | Rejected |
RFC-0032 | Efficient envelopes | Rejected (accepted at first, later rejected) |
RFC-0033 | Handling of unknown fields and strictness | Implemented |
RFC-0034 | Null terminate strings | Rejected |
RFC-0035 | Automatic flow tracing | Rejected |
RFC-0036 | Update to struct declarations | Rejected |
RFC-0037 | Transactional message header v3 | Implemented |
RFC-0038 | Separating layout from constraints | Rejected; Superseded by RFC-0050 |
RFC-0039 | Types come second | Rejected; Superseded by RFC-0050 |
RFC-0040 | Identifier uniqueness | Implemented (rejected at first, later accepted) |
RFC-0041 | Support for unifying services and devices | Implemented |
RFC-0042 | Non nullable types | Rejected (April Fools) |
RFC-0043 | Documentation comment format | Implemented |
RFC-0044 | Extensible method arguments | Rejected; Superseded by RFC-0087 |
RFC-0045 | Zero-size empty structs | Rejected |
– | Versioning | Unpublished; Superseded by RFC-0083 |
– | Required table fields | Unpublished |
RFC-0048 | Explicit union ordinals | Implemented |
RFC-0049 | FIDL tuning process evolution | Implemented |
RFC-0050 | Syntax revamp | Implementation in progress |
– | Unified view of optionality | Unpublished |
RFC-0052 | Type aliasing and new types | Implementation in progress |
– | Iterators | Unpublished; see also measure-tape (a pragmatic solution) |
RFC-0054 | Parameter attributes | Implemented |
– | Restrict non-numeric floating point values | Unpublished |
– | Constant expressions | Unpublished |
RFC-0057 | Default no handles | Implemented |
– | FIDL text format | Unpublished |
RFC-0059 | Reserved bits in vector, string, and array count fields | Implemented; reserved bits no longer used by LLCPP |
– | FIDL Large message support | Withdrawn |
RFC-0076 | FIDL API summaries | Implementation in progress |
RFC-0083 | FIDL versioning | Implementation in progress |
RFC-0086 | Updates to RFC-0050: FIDL attributes syntax | Implementation in progress |
RFC-0087 | Updates to RFC-0050: FIDL method parameter syntax | Implementation in progress |