RFC-0019:使用进化 = uint64;

RFC-0019:使用 evolution = uint64;
状态已接受
领域
  • FIDL
说明

添加一种机制,以便为基元类型提供更多描述性名称。移除作为语言内置功能的状态。引入一个 zx 库以包含来自 .

作者
提交日期(年-月-日)2018-07-17
审核日期(年-月-日)2018-08-03

摘要

添加一种机制,以便为基元类型提供更多描述性名称。 移除作为语言内置功能的状态。引入 zx 库包含 <zircon/types.h> 中的基元类型。

与其他 RFC 的关系

此 RFC 已被:

设计初衷

开发者经常希望为基元分配更多描述性名称 。例如,statusint32 的描述性名称, 但 status 是内置于该语言中的,其他类型无法使用 。

设计

此方案仅影响 FIDL 源语言。

  1. 扩展 using 关键字,以便能够分配描述性名称 基本类型。具体来说,请将以下生产内容添加到 FIDL 语法:
using-list = ( using | using-declaration )* ;
using-declaration = "using" , IDENTIFIER ,  "=" , primitive-type , ";" ;
  1. 从语言中移除 status 基元类型。status 原语类型现在可改为使用语言本身进行定义 因为这是一项内置功能

  2. 移除 status 保留字。现在,我们不再需要 单词 status 现在我们可以在语言中定义名称了。 添加一个 zx 库,其中包含基元的声明 由 Zircon 系统接口定义。理想情况下 库将会通过未来的 syscalls.abigen 生成, 包含这些信息。例如:

library zx;

using status = int32;
using time = uint64;
using duration = uint64;
[...]

请注意,这些声明必须出现在 using-list 中, 直接引用基元类型。这种方法避免了 因为对它们的使用可以立即转化为 底层基元类型。

此外,请注意,我们并未对生成的 任何目标语言的代码。这些类型在 定位语言。

文档和示例

用法示例

    1: AdvanceTime(zx.duration duration) -> (zx.status status);

向后兼容性

此变更是对 FIDL 源代码的不向后兼容更改 语言,因为它移除了 status 基元类型。不过, 迁移 status 的现有客户非常简单,因为它们 只需改用 zx.status 即可。

性能

所提议的更改不会对效果产生任何影响。

安全

提议的更改对安全性没有影响。

测试

该功能将在 Zircon 的保真测试套件中进行测试,方法是添加 一个使用 zx 库中每种类型的 FIDL 文件。

缺点、替代方案和未知问题

此方案可直接在 FIDL 前端实施, 无需更改特定语言的后端。

另一种方法是不解决问题,继续使用 原始类型。

先验技术和参考资料

此功能在编程语言中很常见。语法如下: 也是从 C++ 泛泛而来的。