This page provides a starting point for navigating RFCs in the “FIDL” area. It organizes them in various ways and gives an updated status on each, bringing the reader up to speed with FIDL's history and current direction.
Previously, these design documents were called FTPs or FIDL Tuning Proposals. The FTP process was later merged into the RFC process. Because of the way FTPs were renumbered as RFCs, RFC numbers do not imply chronology. However, each individual list on this page shows RFCs in chronological order.
This section organizes FIDL RFCs by theme. Each RFC is listed once, under its primary theme, even if it touches on multiple themes.
This section lists RFCs that introduced new feature that are easily visible in the FIDL language. It only includes current features, not obsolete ones.
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 |
This section gives the current status of all 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<Knox> | 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 |