Fuchsia F21 版本说明

日期:2024 年 7 月 26 日

版本:F21

已实现以下更改:

蓝牙

蓝牙进行了以下更新:

  • 在将蓝牙堆栈迁移到 DFv2 并改进其 API 方面取得了重大进展
    • bt-hci-intelbt-fct-hcibt-hci-passthrough 驱动程序已迁移到 DFv2 和新的 HciTransport 协议。
    • fuchsia.hardware.bluetooth.VirtualControllerfuchsia.hardware.bluetooth.Peerfuchsia.hardware.bluetooth.Emulator API 已过时。
    • fuchsia.bluetooth.snoop FIDL API 进行了现代化改造。
  • 改进了蓝牙功能和可靠性
    • 实现了 AudioOffloadController.Stop 方法和 bredr.Connection 协议。
    • 添加了对在模拟控制器中设置 LE 连接角色的支持,并修复了 BrEdrDynamicChannel 中的崩溃问题。
    • 实现了 IsoStreamServer
  • 增强了蓝牙测试和开发功能
    • 所有 bt-host Bazel 单元测试都合并到一个软件包中,以加快 Fuchsia Bazel 构建速度。
    • EmulatorDevice 中实现了 HciTransport API。

开发者

我们对“开发者”进行了以下更新:

ffx

组件框架

我们对组件框架进行了以下更新:

  • 稳定性增强

连接驱动程序

Connectivity Drivers 进行了以下更新:

  • 通过解决启动期间可能发生的崩溃问题,提高了 SDIO 驱动程序的稳定性。

诊断

我们对“诊断”进行了以下更新:

  • 优化了 LogTracer,以防止在 Rust 中使用日志 crate 时创建不必要的日志记录。
  • 防止在异常中阻塞兴趣监听,这会导致关闭期间出现问题。
  • 增强型经纪人在“检查”中添加了租赁记录。
  • 对 C++ syslog API 进行了各种改进。

显示

我们对展示广告进行了以下更新:

驱动程序框架

我们对驱动程序框架进行了以下更新:

  • 移除了 syslog 依赖项:从驱动程序运行时共享库中移除了 syslog 依赖项。这还解决了在某些情况下,当 Bazel 驱动程序请求原本不存在的 libsyslog.so 时,运行时出现的链接错误。

FIDL

我们对 FIDL 进行了以下更新:

  • 改进了 FIDL 性能和工具
    • 优化了 FIDL Rust 客户端唤醒器,并在 C++ 中的断言检查中添加了句柄计数。
  • 为多 API 级别 FIDL 绑定实现了 RFC-0232
  • 改进了 FIDL API 设计和文档
  • 在 FIDL 中针对平台和外部组件强制执行 ABI 检查。
  • API 级别引用标准化ZX_*_SINCE() 宏现在支持 HEAD 关键字,从而实现一致的 API 级别引用并确保 API 更改适用于未来。

本地化

我们对 I18n 进行了以下更新:

  • 通过移除空的迁移组来清理了构建系统。

IOT

我们对 IoT 进行了以下更新:

  • 修复了发现代理权宜解决方法的问题并防止添加错误的 IPv4 地址,从而提高了 IoT 堆栈的可靠性。

内核

内核进行了以下更新:

  • 改进了计时器功能platform_set_oneshot_timer 函数现在使用原始计数作为输入,并且支持 Sstc 功能,可在监督器模式下直接设置计时器比较值。
  • 增强了系统调用日志记录和调试功能:系统调用现在会在 LTRACE 中按名称记录,并且改进了针对挂起失败的内核日志记录。
  • 解决了竞态条件和稳定性问题:修复了在 hotplug 期间挂起和线程调度后与 CPU 空闲状态相关的竞态条件,并还原了对页面分配和脏页处理所做的更改,以提高稳定性。
  • 引入了新的 VMO 系统调用:添加了 zx_vmo_get_stream_sizezx_vmo_set_stream_size,它们最终将取代使用 VMO 内容大小的属性。
  • 修复了其他 bug:解决了 std::find 中的断言失败问题,并改进了页面缓存行为。

平台驱动程序

我们对平台驱动程序进行了以下更新:

  • 增强型 GPIO 实用程序:GPIO 实用程序工具现在支持设置引脚功能,并包含中断功能。
  • 改进了 USB 功能和稳定性:USB 连接检测现在可以正常运行,fusb302 驱动程序更新可防止重复的 GoodCRC 消息,从而解决了 VIM3 电源循环问题。
  • 驱动程序运行时优化:驱动程序运行时共享库不再依赖于 syslog 库,从而解决了运行时链接错误。
  • Amlogic 显示屏增强功能:调用 SetDisplayPower(false) 时,Amlogic 显示屏编码器颜色会变为绿色,以便于调试。
  • 节点拓扑验证sherlockastro device-enumeration-test 已迁移,以使用来自驱动程序开发服务的标识符来验证节点拓扑。
  • ElementControl 渠道配置Topology.AddElement 现在允许客户提供自己的 ElementControl 渠道。虽然客户端目前仍可使用返回的通道,但此行为将被废弃。

Rust

Rust 进行了以下更新:

电源管理

我们对电源管理进行了以下更新:

  • 电源依赖项管理和术语:移除某个元素时,其依赖项也会一并移除。“主动”依赖项已重命名为“断言”,而“被动”依赖项已重命名为“机会性”。
  • 模拟挂起初始化fake-suspend 现在会被阻塞,直到初始化为止。

SDK

SDK 进行了以下更新:

  • 改进了 IDK 原子生成功能:Fuchsia Bazel SDK 现在使用 //sdk:final_fuchsia_sdk,将 IDK 原子生成功能移到了 Bazel 图表中,并且空的 *.api_summary.json 文件表示特定 API 级别不受支持的 FIDL 库。
  • 增强的功能和测试:SDK 中已移除 fbl/fzl_walk_json 的弹性更强,并且为 structured_config 添加了测试。
  • 添加了 bin_name 支持fuchsia_cc_binary 规则现在支持 bin_name 属性。

软件交付

软件分发进行了以下更新:

  • 软件包目录和缓存优化:软件包目录针对 fxblob 进行了优化,大大提高了 blob 读取速度,并且软件包缓存不再需要存储生命周期权宜解决方法。
  • 改进了日志记录和错误消息:为系统映像软件包哈希添加了日志消息,并增强了与软件包相关的错误消息。

Starnix

Starnix 进行了以下更新:

  • 改进了资源管理和归因:Starnix 程序现在会报告为子级主账号,以便更好地归因内存。
  • 增强了信号处理和暂停/恢复功能:优化了进程定向信号,以便仅中断一个任务,并解决了暂停等待器问题,从而防止在使用有效 shell 恢复后无响应。
  • 文件系统和数据存储方面的改进:在测试中为数据存储功能添加了路由,支持在真实文件系统上进行 xts 测试,并添加了从 tarball 向文件系统传播扩展属性的支持。
  • 图形和输入增强功能:向 GPU 设备添加了基于 Gfxstream 的 Rutabaga 实例,以及用于与输入流水线进行 touch_standby 状态通信的设备。
  • 改进了政策处理、统计信息和地址空间管理:优化了政策索引和权限检查,确保了暂停后统计信息刷新,并修复了 user_new_limit 从错误的地址空间读取数据的问题。
  • 其他 bug 修复和更新:解决了各种问题,包括 bpf 文件描述符处理、唤醒租约重命名、ebpf 帮助函数桩和 FsNode.append_lock 修改。

测试

测试进行了以下更新:

计时

我们对时间记录功能进行了以下更新:

  • 改进了 TTRF 文档和测试:实现了用于修改 Timekeeper 行为的持久测试异步命令(尚未启用),添加了包含 TTRF 示例代码的 README,并移除了过时的 CFv1 参考。
  • 移除了未使用的依赖项:移除了未使用的电源拓扑依赖项令牌。

工具链

工具链进行了以下更新:

  • 对并行虚拟化技术的支持PlatformParavirtualizationConfig 现在默认允许虚拟化(如果受支持)。向“通用模拟 arm64”开发板配置中添加了包括 vsock 服务在内的准虚拟化支持。

工具

我们对“工具”进行了以下更新:

  • 蓝牙控制器增强功能:虚拟蓝牙控制器现在支持设置 LE 连接角色。
  • 测试和工具更新:在 CTF 中添加了 Realm 集成测试。添加了针对 Bazel SDK 的 structured_config 的测试。bt-fct-hci 工具已迁移到 HciTransport。现在,如果发生目标连接错误超时,测试运行程序会重新连接。
  • 测试 Phys VMO 清理和日志记录:测试 phys VMO 现在会在返回之前进行清理,以确保处于已知状态。如果跳过的 ContextSwitch 记录的 records_dropped 超过 0,系统会发出警告。
  • 软件包信息来源:list-packages 工具现在从 all_package_manifests.list 获取软件包信息。改进了 pkgstats 软件包页面的视觉设计。

界面

界面进行了以下更新:

  • 调试增强功能:现在,命中区域和显示屏电源状态会转储到“检查”部分,以便更轻松地进行调试。

WLAN

我们对 WLAN 进行了以下更新:

  • 测试增强功能:添加了在启动期间删除 fullmac 驱动程序以进行测试的支持。解决了 hw-sim 自动连接中可能存在的故障。改进了 Honeydew 测试套件,以检测异常启动。
  • 网络配置迁移:更新了已保存网络配置的格式和存储方式,包括从旧的存储数据迁移。新增了用于跟踪网络配置迁移结果的指标。
  • 漫游功能改进:分离了 RoamManager 的服务函数,以便将来转换为基于服务循环的服务。为提高清晰度,我们更新了内部漫游库类型,移除了不必要的字段。改进了漫游断开连接处理,区分了可忽略的断开连接与漫游尝试失败。
  • “检查”工具的优化InspectBoundedSetNode 结构体可优化“检查”工具中的事件元数据处理。日志记录现在在“检查”中包含断开连接信息。