Fuchsia F26 版本说明

日期:2025 年 4 月 8 日

版本:F26

已实现以下更改:

无障碍设置

我们对无障碍功能进行了以下更新:

  • 添加了一个新配置,允许产品从场景图中移除 A11y 视图,这提供了更大的灵活性,同时保留了平台代码的默认启用状态。

音频

我们对音频进行了以下更新:

  • 通过新的使用枚举和灵活的协议增强了音频流管理:引入了 AudioRenderUsage2AudioCaptureUsage2 枚举以及 Usage2 联合体,以改进音频流分类和管理。这包括为屏幕阅读器引入了新的 ACCESSIBILITY 流用法,并对 AudioCore 进行了内部迁移,以使用这些新类型。相关协议和方法也已转换为灵活协议和方法,以提高自适应能力。
  • 添加了实时音频设备通知:在 Rust 共享支持库中,添加了 AudioDeviceRegistry 设备事件订阅,以便 Rust 客户端在有音频设备被添加和移除时收到通知。
  • 修复了各种 bug 并进行了多项改进:解决了与 aml-g12 driver 中的 VMO 大小计算相关的问题,提高了音频测试中检查顺序的稳定性,更新了 build 目标可见性以确保正确性,并解决了对临时数组引用的更严格的 LLVM 检查问题。
  • 移除了未使用的音频驱动程序:删除了未使用的 aml-dsp 驱动程序和库,以简化代码库并避免日后发生重构冲突。

蓝牙

蓝牙进行了以下更新:

  • 更新了 ffx bluetooth peer 子工具,以添加 listlist --detailsshow 命令,取代了之前在 bt-cli 中提供的功能。
  • 改进了将大型 Snoop 积压分解为较小数据块的方式,以遵守 FIDL 消息大小限制。
  • 更新了 Uuid 类型以派生 EqHash,从而简化了集合运算和比较。
  • 更新了 fuchsia-bluetooth 目标,使其可在主机上使用,从而允许 ffx 访问所需类型。
  • 修复了因滥用 vec! 而导致的构建错误。
  • 更新了 bt-transport-uart,使其仅将一个读取任务加入队列,从而防止出现多个 HciTransport 连接请求的问题。
  • 更新了请求 UUID,以便在扫描过滤条件列表中使用。
  • 更新了 BCM4381 的 UART 标志,以便正确配置,从而启用 UART 流量。
  • 更新了 bt-hci-broadcom 中的固件加载,以避免潜在的堆栈溢出。

构建

Build 进行了以下更新:

  • 添加了对 bazel_test_package_group 的支持,并引入了针对共享库的每个 API 级别的 .ifs 文件。这些更改增强了测试中的模块化程度,并支持迭代接口开发。
  • 提高了构建系统的稳健性,并在为 Bazel 集成做好准备方面取得了进展。重构工作区逻辑并在 fx gen 期间生成 remote_services.bazelrc 有助于实现这些改进。
  • 向 Rust 构建配置添加了配置文件支持。现在,profile-rust 变体和在 rustc 输入中添加配置文件路径已可供使用,这增强了性能分析功能。
  • 修复了序列化问题:此修复提高了构建系统的稳定性和易用性。
  • 简化了 SDK 构建流程。要求为所有类别提供 SDK 区域、重新定位工具链定义、将指标记录器配置添加到汇编,以及移除 emu_dimensions 可改进 SDK 构建体验。
  • 改进了 linkmap 功能:修复了 generate_linkmap 中的问题,包括标志和命名更正。

钴蓝

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

  • 将 Cobalt 改为了 Rust 日志:Cobalt 的模拟对象使用 Rust 日志进行日志记录,而不是跟踪。
  • 改进了配置验证器测试:在配置验证器中添加了针对包含报告的指标的测试。
  • 引入了原型 STRUCT 指标注册表、验证和观察,包括使用示例来定义包含字段、类型和报告的结构体指标以进行数据汇总。
  • 通过改用参数化测试,改进了对整数直方图报告的测试。
  • 实现了浮点步长乘数,并验证了 step_multiplier 大于 1。
  • 更新了 Tink、Abseil-cpp、Protobuf 和 Protobuf-gn 子模块,并解决了已废弃的 Tink API 用法问题。
  • 在配置验证器中添加了针对包含报告的指标的测试,以提高测试覆盖率。

组件框架

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

  • 更新了组件管理器,使其能够从其公开的根目录中找到轨迹功能。
  • 改进了重复商品的错误消息的清晰度。
  • 修复了组件调试中的不可访问模式 lint 和组件框架中的 clippy lint。
  • 更正了正常停止时的 on_terminate=reboot 处理方式,并通过重复待处理的关闭日志改进了捕获功能。
  • 更新了组件管理器,以使用诊断字典中的 LogSink,并使用通用 Echo 服务器代码改进了 incoming_integration_test

诊断

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

显示

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

  • 显示驱动程序堆栈正在迁移到现代 Fuchsia 平台基础架构,例如 DFv2 和 FIDL。

驱动程序框架

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

  • 向驱动程序管理器添加了 RestartWithDictionary FIDL 方法,以重启具有自定义功能的节点。
  • 在驱动程序管理器中添加了对总线拓扑的支持,允许客户端查询总线段。
  • 通过 fake-btifake-object 组件扩展了 SDK,以增强驱动程序开发功能。
  • driver_index 启用了 on_terminate: reboot,以实现干净的组件退出。
  • 改进了构建时对驱动程序组件清单的验证。

FIDL

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

固件

固件进行了以下更新:

  • 为 NUC 和 VIM3 添加了“slot-unbootable-reason”快速启动变量,用于指明槽位被标记为不可启动的原因

GPU

GPU 进行了以下更新:

  • 改进了多个领域的日志记录和错误处理。HangRecovery 添加了更多日志记录,以更清晰地显示函数行为,在 MagmaTestDriverBase 中将默认测试状态设置为 NOT_FOUND 以捕获缺失的测试,并改进了 Magma 错误日志以显示状态字符串而非数字。
  • 简化了 Magma 组件并修改了命令缓冲区提交。 移除了未使用的 CachePolicy 参数和 magma::ZirconPlatformDevice 类。向 msd_c.h 添加了上下文 API 和信号量导入/释放函数。修改了命令缓冲区提交,以支持可变数量的命令缓冲区,并修复了零资源处理。
  • 改进了 Vulkan 和交换链实现。将 flatland_view 迁移到了新的 C++ 绑定,为 Vulkan 交换链层添加了分片,并修改了 vkcube 以使用通用交换链分片。
  • 修复了崩溃和不稳定问题。为 image-pipe-swapchain-tests 在非密封和模拟器环境中停用了 ForceQuitAcquireZeroTimeout 测试,以解决崩溃问题。重新添加了误删的 DFv2 驱动程序单元测试。将 msd-arm-mali 的终止超时时间延长到了 10 秒,以减少掉片。将 zx_bit_pin 分块大小缩减为 32MB,以避免固定内存时出错。
  • 添加并更新了 Magma 平台测试。向 Mali 测试驱动程序添加了测试,包括大映射测试,并更新了性能分析器和 MMIO 测试。

IOT、Matter 和 Thread

我们对 IoT、Matter 和 Thread 进行了以下更新:

内核

内核进行了以下更新:

  • 引入了用于衡量内存暂停的新框架,可深入了解系统性能瓶颈。这包括向 zx_object_get_info 添加 ZX_INFO_MEMORY_STALL,以及用于管理卡顿测量系统调用的专用卡顿资源。

平台驱动程序

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

电源管理

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

  • 为驱动程序添加了 Inspect 集成,包括电源驱动程序的元素运行程序和尝试时间记录,以及用于验证驱动程序 Inspect 公开范围的新测试。
  • 在 USB 端点中添加了对可选唤醒租约和与完成相关联的租约的支持,从而改进了电源管理。
  • 实现了用于测试的虚假功耗传感器,在未集成 ODPM 的设备上模拟 ODPM 行为。
  • 实现了用于启动设备重新启动的新的 Admin.PerformReboot API,同时保留了对已废弃的 Admin.Reboot 的支持。
  • 改进了功耗管理调试和指标,为元素运行程序提供了检查集成,并添加了新的多步挂起/恢复延迟时间指标。
  • 通过停用租赁优化功能来增强了电源管理。
  • 通过使用更高级别的电源方法简化了 SDMMC 驱动程序。

Rust

Rust 进行了以下更新:

Starnix

Starnix 进行了以下更新:

存储

我们对“存储空间”进行了以下更新:

  • 向虚拟文件系统 (VFS) 添加了对 Get/SetFlags2 的支持,并将 SetFlags 更改为使用 io2 标志。特征方法已从 update_flags 重命名为 set_flagsfuchsia.io/Flags 取代了 OpenFlags
  • 增强型 UFS 驱动程序:向 UFS 驱动程序添加了 UFS 服务,引入了写入保护和后台操作支持。
  • 更新了 VFS:在 VFS (Rust) 中实现了 Get/SetFlags2 支持,并更新了 SetFlags 以使用 io2 标志。
  • 改进了 Blob 和分块处理:Fxblob 现在会记录已损坏的传送 Blob 数据以供分析,并修复了 ChunkedArchiveError 根本原因映射。
  • 增强了 Fxfs 并修复了 bug:启用了 fallocate,改进了截断时的覆盖 extent 处理,并解决了预留对齐问题和计算错误。
  • 更新了 FVM 和 Fshost:解决了 FVM 卷移除竞态问题,改进了 fshost 中的 FVM 匹配,并修复了存储主机的 CML 配置。
  • 改进了存储和基准测试:存储基准测试现在在具有存储主机支持的专用领域中运行。

测试

测试进行了以下更新:

计时

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

  • 实现了新的 fuchsia.time.alarms FIDL API 来管理唤醒闹钟,并将 hrtimer 设备用作后端。这包括请求 hrtimer 访问权限、为 Starnix 配置 API 的条件式分发,以及将其与 vim3 开发板集成。唤醒闹钟管理器也收到了集成修复程序,包括 GetProperties() 和临时 CancelSync() FIDL API,并且 alarms crate 已分解,以便更好地进行测试。向唤醒闹钟服务添加了跟踪功能,并通过在 hrtimer 驱动程序中实现解决方案修复程序来解决了长时间休眠问题。此外,还向 hrtimer FIDL 添加了有关 max_ticks 的详细信息,并更正了 hrtimer 配置,以实现更广泛的平台支持。
  • 重构了计时器的永久性状态,以适应未来的数据扩展。

工具

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

ffx

ffx 进行了以下更新:

  • 增强了模拟器,使其支持 UEFI,以便进行完整磁盘 GPT 映像启动和 OTA 测试。ffx emu start --uefi 标志可启用此功能。
  • ffx log 中添加了对模糊搜索组件标识名和网址的支持。请使用 --component 标志(取代已废弃的 --moniker 标志)。
  • 改进了模拟器 MAC 地址派生,以确保 UEFI OTA 测试的一致性。 名称为 fuchsia-5254-X-Y 等的模拟器会直接从名称派生 MAC 地址。
  • 延长了 ffx target wait 超时时长。ffx target wait 现在具有 6 秒的超时设置,以便更好地处理运行缓慢的设备。
  • 改进了 ffx 工具中的错误处理和环境变量处理。ffx product 下载的错误消息更具信息性。 ffx config 中更严格的环境变量处理。
  • 修复了 check-goldensffx emu 错误。check-goldens 不再发出 GN 路径警告。现在,使用 QEMU v9 及更高版本时,ffx emu 会正确分配主机端口。

fx

fx 进行了以下更新:

  • 固定了 fx flash-kola 商品套装的选择。fx flash-kola 会在多产品 build 中正确选择产品套装。

界面

界面进行了以下更新:

视频

我们对视频广告系列进行了以下更新:

  • 重新定位了 MPSC 队列:MPSC 队列容器已移至一个通用目录,以便在多个 Scenic 组件中使用。
  • 更新了媒体日志记录:媒体组件中的日志记录现在使用 Rustlog 而非跟踪,以改进日志记录功能。

WLAN

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

  • 通过向“检查”中添加详细的兼容性详细信息,并直接在扫描结果中提供兼容性信息,改进了扫描结果信息。
  • 改进了 WLAN 组件的稳健性和错误处理。添加了 lint 以防止 panic,修复了 Fullmac 中和客户端接口恢复期间的潜在解封装错误,并改进了 PhyManager 中的错误跟踪和报告。WLAN 设备监视器和配置现在会在出现错误时 panic,以触发重新启动行为。
  • 通过简化架构和增强功能,改进了 Watcher 服务和 DeviceMonitor。简化了监视器服务架构,强制对 DeviceWatcher 施加客户端限制,为 DeviceMonitor 服务器采用了惯用样式,整合了新接口处理,并重构了 CreateIface 请求/响应格式。
  • 漫游基础工作。漫游监控器现在可以指定主动或被动扫描,以及更新漫游 syslog 和 SME 代理
  • 在 WLAN 堆栈中实现了各种增强功能。这些改进包括改用 Rust 日志、移除不必要的 WPA3 支持检查、在单独的连接尝试之间添加扫描后退、为遥测计数器使用 LastSample 填充政策、修复 ffx wlan 参数提取问题、添加 SYN4381 芯片支持,以及针对国家/地区代码设置添加新的 API。
  • 在 Devicetree 中添加了对串行设备复合节点和 iommu 名称属性的支持,从而改进了设备管理。
  • 添加了针对 BRCMFMAC 驱动程序的频段功能验证模拟测试。
  • 更新了 BRCMFMAC 驱动程序,以有条件地设置 RSNE IE,修复了关联指示中的 bug。