FIDL设计历史

本页面提供了在RFCs中“FIDL”部分的开始引导。本章采用不同方式集合来展现其每个阶段的更新状态,带领读者快速了解FIDL的相关历史和当前方向。

首先,这些设计文件被称为FTPs(FIDL Tuning Proposals)或者FIDL调试方案。FTP流程后续将合入到RFC(request for comments)流程中。因为FTPs被以RFCs方式进行重新编码,所以RFC编号并不代表着时间顺序。但是本页面上的每个列表都按时间顺序显示RFCs。

按主题分类

本章节按照主题组织FIDL RFCs。每个RFC即使涉及多个主题,但在本章内仅列出一次。

管理

可进化性

表现性

语法

工效学

性能

功能安全和信息安全

工具

文档

简化设计空间

按语言特性分类

本章列出在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