本页面提供了一个起点,可用于浏览“FIDL”领域的 RFC。它以各种方式整理这些提案,并提供每项提案的最新状态,让读者快速了解 FIDL 的历史和当前方向。
以前,这些设计文档称为 FTP 或 FIDL 调优提案。FTP 流程后来合并到 RFC 流程中。由于 FTP 重新编号为 RFC 的方式,RFC 编号并不表示时间顺序。不过,此页面上的每个列表都会按时间顺序显示 RFC:对于从 FTP 转换为 RFC 的文档,按提交日期排序;对于所有后续 RFC,按审核日期排序。
按主题
本部分按主题整理了 FIDL RFC。即使每个 RFC 涉及多个主题,也只会列出一次,并归入其主要主题下。
治理
可演化性
- RFC-0047:表格
- (已拒绝)RFC-0063:OrdinalRange
- RFC-0058:引入已弃用的属性
- RFC-0061:可扩展的联合
- RFC-0020:接口序号哈希
- RFC-0021:为方法添加和移除添加了软过渡
- RFC-0033:处理未知字段和严格性
- RFC-0029:增加方法序号
- RFC-0037:事务性消息头文件 v3
- RFC-0024:强制性源代码兼容性
- RFC-0040:标识符唯一性
- RFC-0048:显式联合序号
- RFC-0083:FIDL 版本控制
- (已拒绝)RFC-0116:支持稀疏 FIDL 表的线格式
- RFC-0132:FIDL 表大小限制
- RFC-0138:处理未知互动
表现力
- RFC-0019:使用别名的类型
- RFC-0022:结构体成员的默认值
- RFC-0066:程序员建议的明确默认值
- (已拒绝)RFC-0065:无可选字符串或向量
- (已拒绝)RFC-0064:Box<Knox>
- RFC-0023:协议的组合模型
- (已拒绝)RFC-0042:不可为 null 的类型
- RFC-0041:支持统一服务和设备
- (已拒绝)RFC-0044:可扩展的方法实参
- RFC-0054:参数属性
- RFC-0052:类型别名和新类型
- RFC-0137:在 FIDL 中舍弃未知数据
- RFC-0160:移除对 FIDL 结构体默认值的支持
语法
- (已拒绝)RFC-0036:更新了结构体声明
- (已拒绝)RFC-0038:将布局与限制分开
- (已拒绝)RFC-0039:类型位于第二位
- RFC-0050:语法改版
- RFC-0086:对 RFC-0050 的更新:FIDL 属性语法
- (已拒绝)RFC-0088:对 RFC-0050 的更新:FIDL 位、枚举和约束语法
- RFC-0087:对 RFC-0050 的更新:FIDL 方法参数语法
工效学设计
- RFC-0053:墓志铭
- RFC-0056:空结构体
- RFC-0060:错误处理
- RFC-0025:位标志
- (已拒绝)RFC-0031:带类型的墓志铭
- RFC-0057:默认情况下不处理
- RFC-0196:FIDL 大消息
网域
性能
- (已拒绝)RFC-0045:零大小的空结构
- (已拒绝)RFC-0026:随处可见的信封
- RFC-0027:只需为实际用量付费
- (已拒绝)RFC-0032:高效信封
- (已拒绝)RFC-0035:自动流量跟踪
- RFC-0113:高效信封
- RFC-0114:在 FIDL 信封中内嵌小值
- RFC-0149:FIDL 编码验证不是强制性的
安全保障
工具
文档
简化设计空间
按语言功能
本部分列出了引入了可在 FIDL 语言中轻松看到的新功能的 RFC。它仅包含当前功能,不包含已过时的功能。
| 功能 | RFC | 注意 |
|---|---|---|
table |
RFC-0047 | 向前和向后兼容的数据类型 |
/// |
RFC-0055 | 文档注释 |
struct Empty {}; |
RFC-0056 | 空结构体 |
error |
RFC-0060 | 方法错误结果语法 |
union |
RFC-0061 | 最初称为 xunion,取代了旧的静态联合体 |
@selector |
RFC-0020 | 使用显式选择器替换方法哈希 |
@transitional |
RFC-0021 | 用于软过渡方法添加/移除的属性 |
compose |
RFC-0023 | 已将 interface 重命名为 protocol,并添加了 compose 功能 |
bits |
RFC-0025 | 位标志类型 |
strict、flexible |
RFC-0033 | 严格类型和灵活类型 |
| 处理权 | RFC-0028 | 注释必需或排除的影音平台使用权 |
service |
RFC-0041 | 服务是协议的集合 |
alias、type |
RFC-0052 | 将 using 别名替换为 alias 和 type |
resource |
RFC-0057 | 值和资源类型 |
| 匿名布局 | RFC-0050 | 内嵌类型定义,根据上下文命名或使用 @generated_name |
@available |
RFC-0083 | 版本注释 |
Method(table { ... }) |
RFC-0087 | 将表和联合用作顶级请求/响应类型 |
open、closed、ajar |
RFC-0138 | 开放式和封闭式互动 |
当前状态
此部分提供了所有 FIDL RFC 的当前状态。
图例:
| 状态 | 含义 |
|---|---|
| 已取消发布 | 从未公开或正式审核 |
| 已取消 | 已公开,但从未正式审核 |
| 审核中 | 已公开,待审核 |
| 已实施 | 已接受、已实现、仍准确 |
| 已实施一部分 | 已接受并部分实施,但未计划完成 |
| 正在实施 | 已接受,正在实施 |
| 已修正 | 已接受,仍基本准确,但已通过后续 RFC 进行修订 |
| 已取代 | 已接受但不再准确,已被后续 RFC 取代 |
| 已拒绝 | 正式拒绝 |
| RFC | 标题 | 状态 |
|---|---|---|
| RFC-0018 | FTP 流程:一个适度的提案 | 已被 RFC-0017 取代 |
| RFC-0019 | 使用 using 的类型别名 | 已被 RFC-0052 取代 |
| RFC-0022 | 结构体成员的默认值 | 已被 RFC-0160 取代 |
| RFC-0051 | 更安全的 C++ 结构体 | 已拒绝 |
| RFC-0062 | 方法不可能 | 已拒绝 |
| RFC-0053 | 墓志铭 | 已实现 |
| RFC-0066 | 程序员建议的明确默认值 | 已实施 |
| RFC-0047 | 表格 | 由 RFC-0116、RFC-0132 修订 |
| RFC-0055 | 文档注释 | 由 RFC-0043 修正 |
| RFC-0063 | OrdinalRange | 已拒绝;已被 RFC-0020 取代 |
| – | FIDL 中的 FIDL | 未发布;Protobuf 可以执行此操作 |
| RFC-0056 | 空结构体 | 已实施 |
| RFC-0058 | 引入已弃用的属性 | 已被 RFC-0083 取代 |
| RFC-0060 | 错误处理 | 已实施 |
| RFC-0061 | 可扩展的联合 | 已实施 |
| RFC-0065 | 没有可选的字符串或矢量 | 已拒绝 |
| RFC-0064 | Box<Knox> | 已拒绝;另请参阅“FIDL 大消息支持” |
| – | 序列 | 未发布;“Streams”的早期版本 |
| – | 信息流 | 未发布;另请参阅卷尺 |
| RFC-0020 | 接口序号哈希 | 已实施 |
| RFC-0021 | 为添加和移除方法添加了柔和过渡效果 | 已实施 |
| RFC-0023 | 协议的组合模型 | 已实施 |
| RFC-0045 | 零大小的空结构体 | 已拒绝 |
| RFC-0025 | 位标志 | 已实施 |
| RFC-0026 | 红包无处不在 | 已拒绝 |
| RFC-0027 | 只需为实际用量付费 | 已实施 |
| RFC-0030 | FIDL 采用小端字节序 | 已实施 |
| RFC-0031 | 类型化墓志铭 | 已拒绝 |
| RFC-0032 | 高效信封 | 已拒绝;已被 RFC-0113 取代 |
| RFC-0033 | 未知字段的处理和严格性 | 由 RFC-0137 修订 |
| RFC-0034 | 以 null 结尾的字符串 | 已拒绝 |
| RFC-0029 | 增加方法序号 | 已被 RFC-0037 取代 |
| RFC-0035 | 自动流程跟踪 | 已拒绝 |
| RFC-0036 | 结构体声明更新 | 已拒绝 |
| RFC-0037 | 事务性消息标头 v3 | 已实施 |
| RFC-0038 | 将布局与限制条件分离 | 已拒绝;已被 RFC-0050 取代 |
| RFC-0039 | 类型排在第二位 | 已拒绝;已被 RFC-0050 取代 |
| RFC-0028 | 处理权利 | 已实施 |
| RFC-0042 | 不可为 null 的类型 | 遭拒(愚人节) |
| RFC-0024 | 强制性源代码兼容性 | 已实施 |
| RFC-0040 | 标识符的唯一性 | 已实现(最初被拒绝,后来被接受) |
| RFC-0041 | 支持统一服务和设备 | 已部分实现:仅在 C++、Rust 中 |
| RFC-0044 | 可扩展的方法实参 | 已拒绝;已被 RFC-0087 取代 |
| RFC-0043 | 文档注释格式 | 已实施 |
| – | 版本控制 | 已取消发布;已被 RFC-0083 取代 |
| – | 必需的表字段 | 已取消发布 |
| RFC-0048 | 显式并集序数 | 已实施 |
| RFC-0049 | FIDL 调优流程的演变 | 已被 RFC-0017 取代 |
| – | 统一视图的选填性 | 已取消发布 |
| – | 迭代器 | 未发布;另请参阅卷尺 |
| RFC-0054 | 参数属性 | 已被 RFC-0050 取代 |
| RFC-0052 | 类型别名和新类型 | 正在实施 |
| – | 限制非数字浮点值 | 已取消发布 |
| – | 常量表达式 | 已取消发布 |
| RFC-0057 | 默认无手柄 | 已实施 |
| RFC-0050 | 语法改版 | 由 RFC-0086、RFC-0087 修正 |
| – | FIDL 文本格式 | 已取消发布 |
| RFC-0059 | 向量、字符串和数组计数字段中的预留位 | 已实现;LLCPP 不再使用预留位 |
| RFC-0017 | FTP 流程已死,RFC 流程万岁! | 已实施 |
| – | FIDL 大型消息支持 | 已撤消;已被 RFC-0196 取代 |
| RFC-0076 | FIDL API 摘要 | 已实施 |
| RFC-0083 | FIDL 版本控制 | 正在实施 |
| RFC-0086 | 更新了 RFC-0050:FIDL 属性语法 | 已实施 |
| RFC-0088 | 更新了 RFC-0050:FIDL 位、枚举和约束语法 | 已拒绝 |
| RFC-0087 | 更新了 RFC-0050:FIDL 方法参数语法 | 正在实施 |
| RFC-0097 | FIDL 工具链 | 正在实施 |
| RFC-0113 | 高效信封 | 已实施 |
| RFC-0114 | 在 FIDL 信封中内嵌小值 | 已实施 |
| RFC-0116 | 对稀疏 FIDL 表的线格式支持 | 已拒绝 |
| RFC-0120 | 独立使用 FIDL 有线格式 | 正在实施 |
| RFC-0131 | FIDL 线格式的设计原则 | 已实施 |
| RFC-0132 | FIDL 表大小限制 | 已实现 |
| RFC-0137 | 舍弃 FIDL 中的未知数据 | 正在实施 |
| RFC-0138 | 处理未知互动 | 正在实施 |
| RFC-0149 | FIDL 编码验证不是强制性的 | 已实施 |
| RFC-0160 | 移除对 FIDL 结构默认值的支持 | 已实施 |
| RFC-0190 | 针对系统调用的 FIDL 支持 | 正在实施 |
| RFC-0196 | FIDL 大型消息 | 正在实施 |
| – | FIDL 的 JSON 表示法 | 审核中 |
| – | FIDL 复杂常量 | 审核中 |
| – | FIDL 语言支持计划 | 审核中 |
| – | 终端活动 | 审核中 |