日期:2026 年 7 月 22 日
版本:F31
音频
针对音频进行了以下更新:
- PacketStream API 和设备注册表支持 在音频设备注册表和虚拟音频驱动程序中引入了
fuchsia.audio.device.PacketStreamAPI,以处理比特率范围。 - 移除了已废弃的 ActivityReporter API 从音频服务中移除了已废弃的
ActivityReporterFIDL 方法和数据结构,为移除fuchsia.media/AudioRenderUsage枚举做准备。 - 音频驱动程序检查指标增强:通过跟踪缓冲区事件和计算未完成的缓冲区数量来增强驱动程序诊断,同时通过省略非必要字段来优化输出。
- audio-driver-ctl 实用程序改进 升级了
audio-driver-ctl工具,以支持 64 位 devfs 条目,并在未明确指定音频设备的情况下自动选择第一个可用的音频设备。- 更改: fxr/1567739、 fxr/1567738
- 唯一 ID FIDL 定义:根据 Zircon 音频头文件添加了
unique_id.fidl结构,并将BUILTIN_SPEAKERS属性重命名为BUILTIN_SPEAKER,以确保正确性。 - FDomain 库添加:引入了 Rust 音频库和
ffx_optional_moniker逻辑的 FDomain 版本。- 更改: fxr/1535252、 fxr/1535253
蓝牙
针对蓝牙进行了以下更新:
- 自动 HCI 核心转储收集 现在,受监控的 HCI 流量会自动收集核心转储作为 PCAP 文件,并将其提交给
CrashReporter以进行特定于供应商的诊断。 - 渠道 FIDL 和 Sink/Stream 迁移 从
Channel中移除了旧版读取/写入实现,要求组件迁移到Sink/Stream特征或现代渠道 FIDL API。 - 蓝牙 FIDL API 添加项 添加了
fuchsia.bluetooth.test库以进行树外测试,引入了套接字分流功能,并更新了ScanData,添加了可选字段。 - 移除 C FFI 辅助功能:继续弃用旧版 C FFI,方法是移除冗余的辅助功能 API,包括
set_discoverability、set_discovery和connect_peer。 - 蓝牙核心和硬件配置 添加了产品级配置,用于设置广播、扫描参数和 HCI 超时,并增加了主机初始化超时时间,以防止出现虚假故障。
- 更改: fxr/1579193、 fxr/1559706、 fxr/1470860
- bug:b/486414672
- HFP 通话处理和 AT 命令解析修复:修复了在手机通话期间建立 HFP 连接时发生的断开连接问题,并改进了 AT 响应解析,以提高 iOS 设备的兼容性。
- 更改: fxr/1470822、fxr/1342886
- bug:b/474646528
- Broadcom 和 UART 驱动程序电源集成:将 Broadcom 控制器驱动程序与电源框架集成,以实现硬件系统唤醒功能,并调整 UART 读取滞后,以提高串行传输性能。
- 变更: fxr/1469801、 fxr/1469800、 fxr/1506238
- bug:b/443254797
- 主动主机关闭崩溃预防 修复了以下严重 bug:将无效主机 ID 传递给
set-controller会关闭活动主机并中断系统。- 变更: fxr/1568555
- bt-fct-hci 工具迁移:通过将
bt-fct-hci工具的底层发现逻辑从已弃用的devfs迁移到fuchsia.hardware.bluetooth.Service,恢复了该工具中的发现功能。- 变更: fxr/1533752
- 蓝牙 CLI 迁移 扩展了
ffx bluetooth,包含用于对等设备管理、发现和控制器配置的众多子命令。 这会继续弃用旧版bt-cli工具并逐步改用新版工具。- 更改: fxr/1518757、 fxr/1493156、 fxr/1524576、 fxr/1495996、 fxr/1495177、 fxr/1523137、 fxr/1523138、 fxr/1555860、 fxr/1555861、 fxr/1538840、 fxr/1538841、 fxr/1558820、 fxr/1577593、 fxr/1519096、 fxr/1538740
- bug:b/479623897、b/481916173、b/480827351、b/481834286、b/488961259、b/488961301、b/496006349、b/496005496、b/492377832、b/492378046、b/496742939、b/503209369
- Broadcom 蓝牙增强功能:实现了快速固件下载模式,以最大限度缩短启动时间,并添加了对检索硬件崩溃参数的支持。
构建
针对 build 进行了以下更新:
- 针对 FIDL 和 IDK 的 Bazel 迁移:将大量 FIDL 库迁移到 Bazel,并扩展了 IDK Bazel 规则以支持静态库和多架构预构建。此外,还通过舍弃
_tool后缀简化了宿主工具目标名称。 - Bazel 主机测试规则 引入了用于定义 Bazel 主机测试的新规则(
host_test、host_go_test、host_rust_test、host_py_test)。这些封装容器可确保与fx test等 Fuchsia 测试运行程序的兼容性,从而简化将现有测试迁移到 Bazel 图的过程。 - 编译器和链接器设置更新:默认情况下为 Clang 构建的 ELF 目标启用了调用图部分,并为 LTO 下的 Rust 和共享库强制执行了 TLSDESC。驱动程序现在会动态链接到
libc++,从而显著减小二进制文件的大小。 - 问题排查和错误报告功能增强:通过解析
fint中的 Ninja 错误日志,简化了 CI 失败消息;默认情况下,将fxtdump捆绑在一起以供检查轨迹文件。此外,还添加了一个实验性buildminderTUI 工具,用于以交互方式监控 build 事件。- 更改: fxr/1539600、 fxr/1565975、 fxr/1569377
- bug:b/487240814
组件框架
针对组件框架进行了以下更新:
- SDK 中提供的 Realm Builder 子软件包分片。现在,
realm_builder_subpackage.shard.cml分片已导出,开发者可以在其配置中使用 realm builder 子软件包。- 变更: fxr/1592114
- bug:b/42070500
- 为子软件包提供启动解析器支持。启动解析器现在支持解析子软件包,从而允许具有
fuchsia-boot方案的组件利用子软件包子项。- 变更: fxr/1517179
- bug:b/406846517
- Scudo 环境变量的系统级配置。组件管理器现在支持
scudo_options字段来注入运行时设置,从而让开发者可以更精细地控制各个设备的内存分配器行为。- 变更: fxr/1487617
- 平台和 SDK 现在都使用编号句柄来路由日志接收器。在大多数情况下,日志接收器现在通过
PA_LOG_SINK句柄(而非命名空间)进行路由,这应能缩短组件启动延迟时间。- 变更:fxr/1599364
- bug:b/442638676
- 组件开发者工具和 CLI 增强功能。
route命令已添加到设备端component二进制文件中,ffx component show现在会列出用于构建组件的源文件,ffx component storage delete,中修复了删除子目录中项的 bug,并重构了ffx component doctor以显示字典的内容。 - Rust 中的结构化配置序列化。
fuchsia-componentRust crate 现在支持序列化结构化配置,以改进驱动程序组件测试。- 变更: fxr/1550600
- 会话框架 API 迁移和调试更新。会话组件已软迁移到
ShutdownWatcherRegister,并添加了一个新的调试快捷方式,可通过连续按 5 次侧边按钮来触发崩溃报告并重新启动。
诊断
针对“诊断”功能进行了以下更新:
- 日志记录增强功能和 FXT 格式更新:完全改用新的 FXT 日志格式,弃用了
--dump标志,并发布了LogStream作为ArchiveAccessor的未来替代项。 - 诊断持久性组件升级:在不活动时,托管持久性组件以节省内存和 CPU,并使用先写入后重命名的 JSON 策略来提高文件损坏恢复能力。
- Archivist 性能和可靠性增强功能:实现了限时块,以防止组件快照超时阻止日志检索,并针对重复的 Inspect 名称添加了警告。
- 日志的组件网址配置:添加了一个选项,用于在日志中使用组件网址而不是组件名称的别名,从而保持了对树外 build 的兼容性。
显示
针对展示广告进行了以下更新:
- 帧缓冲区和 Flatland 支持:添加了新的 AMD 帧缓冲区显示驱动程序 (
framebuffer-amd-display),并更新了帧缓冲区显示,以支持使用双缓冲 sysmem VMO 的 Flatland。- 变更: fxr/1574170、 fxr/1574169
- bug:b/503046797、b/503064084
- 简化了平铺模式:从 Intel 显示驱动程序中移除了旧版非线性平铺和硬件旋转,以严格强制在整个 Vulkan 交换链和显示堆栈中执行线性平铺。
- 硬件层限制强制执行驱动程序现在会主动拒绝超出硬件层限制的配置,并公开
max_layer_count以允许 Scenic 等客户端实现 GPU 合成回退。 - CreateLayer API 客户端分配的 ID
CreateLayerFIDL API 现在需要客户端分配的LayerId输入,从而为 Scenic 和 Vulkan 等客户端实现异步流水线。- 变更: fxr/1517316
- bug:b/430976567
- 客户端优先级和 SetVirtconMode 移除:旧版
SetVirtconMode已被统一的ClientPriority枚举取代,从而使诊断工具能够以高优先级连接,而不会中断主要客户端。- 更改: fxr/1556627、 fxr/1548003、 fxr/1546840、 fxr/1534904、 fxr/1541859
- bug:b/408475481
- Display SDK 的 C++20 要求 Display SDK 现在严格要求使用 C++20,并已放弃所有 C++17 支持,以实现内部类型和 API 定义的现代化。
- DFv2 迁移和 FIDL 绑定 所有显示驱动程序都已成功将旧版 devfs 依赖项替换为与协调器的原生 FIDL 服务绑定。
- 遥测和检查功能新增内容:显示 Vsync 检查功能已升级,可提供启动时间戳和配置时长指标,以便进行高级效果跟踪。
- Bug 修复和图片重用安全性:解决了因图片步幅不正确而导致的
virtio-gpu-display黑屏问题,并修复了安全图片重用期间出现的错误调试断言。- 更改: fxr/1538604、 fxr/1538603、 fxr/1510097
- bug:b/483520638
驱动程序框架
针对驱动程序框架进行了以下更新:
引入 fdf::DriverBase2:添加了
fdf::DriverBase2,这是一个新的基类,通过将可选参数移至组合对象中来简化驱动程序开发。- 更改: fxr/1448750、 fxr/1595757、 fxr/1588557、 fxr/1585355
- bug:b/505119738
绑定规则关键字迁移:绑定编译器现在严格要求使用
parent关键字,如果使用已弃用的node关键字,编译将会失败。- 变更: fxr/1580493、 fxr/1544801、 fxr/1544306
- bug:b/402549684
扩展了 Rust 驱动程序支持:引入了元数据库 Rust 绑定,为
fx create driver添加了--lang rust模板,并通过运行时调度程序选项启用了对非 Send future 的支持。驱动程序框架 API 重构:将
ParentSpec替换为ParentSpec2,弃用了fdf::MakeProperty(),并添加了PDev::Connect以简化客户端代码。- 更改: fxr/1567575、 fxr/1566138、 fxr/1574095、 fxr/1584393、 fxr/1491600
- bug:b/361852885
驱动程序堆栈轨迹调试:添加了
fuchsia.driver.token/Debug协议,以允许系统组件从特定驱动程序主机请求堆栈轨迹转储,从而改进死锁诊断。电源元素集成:迁移了存储和 SDMMC 驱动程序以使用框架电源元素,将所有驱动程序元素映射到 SAG CPU 元素,并添加了挂起/恢复功能。
日志记录和生命周期优化:将驱动程序日志记录迁移到 C++20
fdf::logger功能,并通过引入两阶段初始化和提高线程限制来解决调度程序创建竞争条件。添加了驱动程序管理器重启 API。通过新的
RestartWithDictionaryAndPowerDependencies方法扩展了fuchsia.driver.developmentFIDL 协议,从而允许在运行时进行电源依赖项替换,以进行高级硬件测试。
FIDL
针对 FIDL 进行了以下更新:
C++ 绑定增强功能。减少了核心 C++ 绑定类型的内存占用空间,以提高分配效率,并移除了
vector<bool>索引以实现 C++23 兼容性。为驱动程序传输绑定生成了新的test_base.h模板。Rust 绑定现代化。通过移除“Wire”前缀来使 Rust 线缆类型现代化,以严格遵循 FIDL 命名,并以原生方式将单元类型生成为
()。在自定义字段转换器中添加了对本地执行器和任意错误类型的支持。API 工具和 build 系统迁移。将核心 FIDL 库和 C++/Rust 绑定构建规则迁移到了 Bazel。改进了 API 工具,具体方法是在 API 摘要中正确包含类型别名,并修复了
fidldoc中的标准说明解析。
反馈
我们针对反馈功能进行了以下更新:
- 提高了报告上传可靠性和快照管理功能。对于较慢的连接,上传超时时间已增加到 3 分钟,并且反馈现在仅保留最旧和最新的每小时快照,同时自动清理无效条目,从而优化存储空间。
- 添加了新的重启和关机原因分类。反馈现在会跟踪
SUSPENSION_FAILURE和BATTERY_DRAINED事件,并系统地记录关机操作,以在冷启动时保留安全关停和恢复出厂设置 (FDR) 状态。 - 增强了运行时和正常运行时间持久性,以提高可靠性。系统正常运行时间现在会在关机期间定期持久保存并以原子方式保存,从而在内核的重启日志丢失时提供可靠的后备方案,并防止在突然断电期间发生数据损坏。
- 改进了组件的重启能力。在主进程崩溃时重新开始反馈,并将重新启动日志信息持久保存到 /tmp,以便在首次启动后轻松提取。
- 更改: fxr/1574167、 fxr/1539562
- 扩大了配置覆盖范围,并添加了诊断注释。反馈引入了
build.compilation_mode注释以实现更清晰的诊断,将remote_device_id_provider迁移到结构化配置,为外部检查器提供渠道更新,并保留最小的启动 ID 时间轴以排查短启动问题。- 更改: fxr/1578593、 fxr/1518140、 fxr/1502054、 fxr/1487063
- bug:b/329519711
固件
固件进行了以下更新:
- 系统映像哈希保护 隔离的 pkg-cache 现在使用
system.base_merkle来保护主要产品 blob 免受垃圾回收的干扰,以实现系统映像哈希保护。- 变更: fxr/1583170
- Gigaboot Fastboot TCP6 改进 gigaboot fastboot TCP6 服务器现在会根据 MAC 地址动态选择有效网卡,以提高网络可靠性。
- 变更: fxr/1556639
- 恢复参数解析修复恢复参数解析现在会忽略空值和初始“恢复”字符串,以防止出现错误的未知实参错误。
- 变更: fxr/1567747
- GBL 预建版本和 NUC 更新 更新了 GBL 预建版本,并使 NUC 目标与新 API 保持一致,以成功恢复 fastboot 功能。
- Android 恢复功能对齐:添加了
--prompt_and_wipe_data恢复实参,以显示包含重试和恢复出厂设置选项的启动失败菜单。- 更改: fxr/1521145、 fxr/1483099
- bug:b/479827872
图形和 GPU
针对图形和 GPU 进行了以下更新:
- Magma API 和安全性增强功能:添加了
magma_buffer_constraints_set_formatAPI,并移除了未使用的magma_sysmem_connection_importAPI。此外,还通过将对象指针替换为随机 ID 并添加严格的有效设备检查,改进了 Starnix Magma 安全性。 - Vulkan 和显示行为更新:Vulkan 显示交换链现在默认采用线性平铺,并且显示协调器(Carnelian、virtio-gpu、goldfish)会安全地拒绝超出硬件层限制的配置。
- Mali 和 Vulkan 更新:将 ARM Mali ICD 推送到 SDK 30 并移除了未使用的
vulkan_loader_for_intel软件包。
本地化
针对 I18n 进行了以下更新:
- 简化了 ICU build 配置。Bazel ICU 代码库已更新为直接读取生成的
icu_build_config.gni文件,从而不再依赖于 shell 脚本。- 变更: fxr/1570483
- bug:b/501088885
IoT、Matter 和 Thread
我们针对 IOT、Matter 和 Thread 进行了以下更新:
- 在 Inspect 中扩展了线程遥测和诊断功能:在 Inspect 和
telemetry.fidl中扩展了 OpenThread 诊断数据,以纳入深层网络事件历史记录、活跃路由状态和节点可观测性指标。这可让开发者全面了解 Thread 网络行为,从而更轻松地调试 Thread 现场问题。- 更改: fxr/1577838、 fxr/1577837、 fxr/1577836、 fxr/1577835、 fxr/1577834、 fxr/1577833、 fxr/1578073、 fxr/1574355、 fxr/1574354、 fxr/1573715、 fxr/1573714、 fxr/1580515、 fxr/1573713、 fxr/1570856、 fxr/1571173、 fxr/1573473、 fxr/1553316、 fxr/1535800、 fxr/1533479、 fxr/1533478、 fxr/1533477、 fxr/1533476、 fxr/1533475、 fxr/1497496、 fxr/1496116
- Thread 多播转发支持:更新实现以支持 Wi-Fi 和 Thread 网络之间的多播转发。这样一来,便可在网络边界之间实现无缝多播通信和设备发现。
- 变更: fxr/1360776
- Thread 前缀委托 (PD) 稳定性修复 修复了因 Wi-Fi 接口在离线和在线状态之间切换而导致的 Thread 前缀委托客户端崩溃问题。这可确保在网络连接发生变化时,前缀请求稳定且会话清理得当。
- 变更: fxr/1566993
- 针对 IPv6 链路本地 RDNSS 的 DNS 解析修复:在使用 IPv6 链路本地 RDNSS 时,通过将范围 ID 正确附加到上游 DNS 服务器地址,解决了 DNS 查询传输失败的问题。这可恢复 IPv6 链路本地网络的可靠 DNS 解析。
- 变更: fxr/1587548
- 升级到 Thread 1.4 并启用网络诊断 TLV 将 OpenThread 堆栈升级到版本 1.4,并启用了动态网络诊断供应商 TLV。这样可以准确填充供应商软件版本,从而改进网络诊断和遥测日志记录。
- 改进了 mDNS 服务发布可靠性:通过引入具有重试机制的状态化重新发布,消除了 meshcop mDNS 发布系统中的竞态条件。这可确保 Thread 设备可靠地传播和发现 mDNS 服务。
- OpenThread 更新:将 OpenThread 更新为 2026 年 3 月 23 日的上游提交。
- 更改: fxr/1558423、 fxr/1561515
内核
针对内核进行了以下更新:
- 可重启序列 (RSEQ) 支持 在 x86、arm64 和 riscv64 架构中添加了
zx_thread_set_rseq系统调用。rseq 关键部分中被抢占的线程现在可以通过中止处理程序正确重启。- 更改: fxr/1518339、 fxr/1488921
- bug:b/449980934
- 关键截止时间调度程序配置文件:为截止时间配置文件添加了“关键”标志,以便在 CPU 超额订阅期间优先处理这些配置文件,而不是正常的截止时间配置文件。
- 更改: fxr/1554670、 fxr/1553181、 fxr/1578835
- bug:b/496206663、b/502293150
Netstack
针对 Netstack 进行了以下更新:
- Netstack3 中的数据包捕获支持:添加了新的
fuchsia.net.debugFIDL 协议和用于原生数据包捕获的环形缓冲区。开发者现在可以直接在 Netstack3 中轻松捕获、解析和序列化 pcapng 格式的网络流量。 - 过滤 API 和拒绝操作:在
fuchsia.net.filter中实现了Reject操作,以支持 iptablesREJECT目标。这样一来,系统就可以主动响应 ICMP 错误,而不是默默地丢弃数据包。 - DHCP 客户端鲁棒性:通过安全处理格式不正确的服务器响应并匹配旧版配置顺序,增强了客户端互操作性。这样可确保在各种非标准网络环境中可靠地获取 IP。
- 更改: fxr/1547740、 fxr/1517977、 fxr/1505896、 fxr/1521097
- bug:b/480946805
- Netlink 兼容性增强:通过使错误代码与 Linux 标准保持一致并支持全面的邻居操作,扩展了 Netlink 协议支持。这可显著减少开发者将 Linux 网络工具移植到 Fuchsia 时遇到的阻力。
- TCP 早期解复用:添加了 TCP 早期解复用,以将必要的套接字元数据原生传递到本地入站过滤钩子。这极大地提高了整体数据包路由效率和性能。
- 更改: fxr/1483568、fxr/1475524
- bug:b/473819144
- 设备、路由和协议配置:为路由器发现添加了 RFC 4191 路由偏好设置处理,并增强了 ARP 以防范即时 IP 欺骗。这些更改提高了网络路由灵活性和安全性。
- 网络设备 API 简化:通过移除旧版多会话多路复用并启用多 VMO 支持的会话,简化了驱动程序架构。这可减少开销并简化网络驱动程序开发者的实现过程。
- 更改: fxr/1594354、 fxr/1588426、 fxr/1566547
- bug:b/438527741、b/371574128
- 可靠性和崩溃修复:解决了严重崩溃和漏洞,包括 DAD 计时器竞态条件、TCP 算术下溢和 UDP 套接字 panic。这样可确保更长的正常运行时间和更出色的恶意数据包恢复能力。
- 可观测性和遥测:通过将可达性跟踪、DNS 诊断和深层网络详细信息导出到时序检查节点,升级了可观测性。运营商和开发者现在可以获得较高保真度的数据,以便排查系统网络问题。
平台驱动程序
平台驱动程序进行了以下更新:
- 输入设备遥测增强功能。向
fuchsia.input.report.DeviceDescriptor添加了设备遥测字符串(制造商、产品、序列),以提高输入设备识别能力。- 更改: fxr/1594747、 fxr/1595270、 fxr/1594745
- bug:b/501530383
- USB 堆栈 FIDL 迁移和 DFv2 更新。将 USB 堆栈迁移到了 DFv2,并使用新的
UsbFunctionFIDL 接口替换了 Banjo 协议。这包括 USB 功能的异步拆解,以消除重新配置竞态条件。 - USB 政策和 Starnix 集成。添加了 USB 政策组件和 Starnix 模块,以跟踪 USB 设备状态。此功能通过 sysfs 节点将 USB 状态变化正确地公开给 Android 应用。
- 外围设备驱动程序增强功能。推出了支持有效电源域的
dw-spi驱动程序,并发布了用于高级电压调节器交互的vreg-ctlCLI 工具。此外,还在 SDHCI 中启用了加密 IO 请求,并优化了 I2C 核心请求以异步运行。
电源管理
针对电源管理进行了以下更新:
- 引入了直接租用 API 和 ElementControl 功能:添加了直接
LeaseTokenAPI 以打开没有关联元素的租用,以及一个initial_lease_token以在创建时立即获取租用。 此外,ElementControl.AddDependency现在允许安全地向现有元素添加依赖项,而不会中断正在进行的租约。 - 简化了电源框架 API 并移除了机会性依赖项:通过标准化所有依赖项并消除
DependencyType枚举,移除了机会性依赖项机制。将租赁 API 迁移到了Topology.Lease(停用LeaseHelper和Lessor.Lease),将GetApplicationActivityLease替换为了GetWakeLease,并引入了AcquireLongWakeLease。 - 改进了系统活动管理器 (SAG) 暂停转换:SAG 现在使用
TerminalStateWatcherAPI 在关机、mexec 或重启进程期间明确阻止暂停。还改进了挂起逻辑,以在关闭渠道时丢弃待处理的阻塞器,并在挂起时请求 CPU 提升,从而提高恢复性能。 - 重新设计了电池计算并引入了 CPU 能耗跟踪:全面改进了电池计算(欺骗、拼接和完全充电时间),以提供更准确的充电估计值,并在 FIDL 中将
remaining_capacity_uah重命名为remaining_charge_uah。在CpuManager中添加了CpuStatsRecorder,以通过 Inspect 公开 CPU 负载和能耗指标。 - 添加了唤醒锁定监控功能并增强了暂停驱动程序 API:Starnix 现在会跟踪唤醒源的活跃时间,以便提供对长时间运行的唤醒锁定的可观测性。此外,还引入了
DeviceDidNotSuspendError以便轻松检测到暂停失败,并要求驱动程序明确初始化其暂停行为,而不是使用默认行为。- 更改: fxr/1553306、 fxr/1586188、 fxr/1585355
- bug:b/505119738
- 改进了电池用户体验和诊断功能:修复了电量耗尽的设备开始充电时界面电池电量突然跳动的问题,并为电量极低事件添加了
CrashReporter功能。Inspect 现在会同时记录原始电池电量和处理后的电池电量,以提高诊断能力。 - 改进了系统活动调控器 (SAG) 的稳定性。通过防止在关机和重新启动转换期间暂停,提高了电源管理功能的稳健性。SAG 现在会自动针对卡住的暂停阻塞器或重复的暂停失败提交崩溃报告。
Rust
针对 Rust 进行了以下更新:
- 已迁移的第三方 crate。通过将组件迁移到
rkyv、vt100和regex-lite等轻量级替代方案,减少了依赖项占用空间。
软件交付
我们针对软件交付进行了以下更新:
- 存储主机迁移已完成:Paver 和存储依赖项已完全迁移到现代
storage-host架构,从而可以完全移除所有旧版非存储主机代码路径和测试。 - 移除了过时的 WriteVolumes 接口:
WriteVolumes接口和关联的PayloadStream协议已从 Paver API 中移除,因为它们不再用于当前设备。- 变更: fxr/1572994
- 针对子软件包重构了 Fuchsia 网址类型:引入了特定的启动网址类型,并分离了软件包和组件网址,以在启动解析器中实现子软件包解析支持。
- 更改: fxr/1517178、 fxr/1517177、 fxr/1532555、 fxr/1518836、 fxr/1517176
- bug:b/406846517
- 无软件包更新使用已签名的清单:无软件包更新已迁移为使用已签名的 protobuf 清单格式,而不是之前的旧版 OTA 清单格式。
- 更改: fxr/1523918、 fxr/1455221、 fxr/1518416
- bug:b/479282494
- 系统更新程序的配置功能迁移:将
concurrent_package_resolves和concurrent_blob_fetches设置迁移到配置功能,以简化更新配置管理。- 变更: fxr/1567633
- bug:b/329519711
- 在更新程序中支持范围限定的 IPv6 地址:系统更新程序已从
url::Url迁移到http::Uri,以正确解析和处理范围限定的 IPv6 地址。- 变更: fxr/1546608
- bug:b/479282471
- 系统映像 OTA 恢复回退:软件包缓存现在可确保即使系统映像损坏,OTA 仍可在恢复模式下继续进行,仅在明确需要时才会失败。
- 变更: fxr/1585179
- 针对软件包解析器的沙盒 HTTP 连接:软件包解析器 TUF 客户端和自动客户端现在使用
fuchsia.net.http/Loader.Fetch进行 HTTP 连接,从而提供更好的网络隔离和沙盒化。- 更改: fxr/1455468、 fxr/1453908
- 为更新扩展程序添加了 FDomain 支持:在软件包更新 FIDL 扩展程序、模拟安装程序和服务器套接字中引入了 FDomain 支持。
- 将 serve-archive 标记为实验性:
ffx repository serve-archive命令已重命名为 kebab-case 并标记为实验性。- 变更: fxr/1574315
- 系统映像哈希保护 隔离的 pkg-cache 现在使用
system.base_merkle来保护主要产品 blob 免受垃圾回收的干扰,以实现系统映像哈希保护。- 变更: fxr/1583170
Starnix
针对 Starnix 进行了以下更新:
- eBPF 增强功能和安全修复 添加了新的 eBPF 网络辅助程序和
sk_storage映射支持,以扩展套接字级可观测性。通过严格的边界检查、功能强制执行和除以零预防措施,强化了 eBPF 验证程序,以缓解本地权限升级问题。- 更改: fxr/1595234、 fxr/1591628、 fxr/1588131、 fxr/1586729、 fxr/1585097、 fxr/1583375、 fxr/1577870、 fxr/1576256、 fxr/1574700、 fxr/1574702、 fxr/1550171、 fxr/1575913、 fxr/1558421、 fxr/1545120、 fxr/1560093、 fxr/1519337、 fxr/1519336、 fxr/1517736、 fxr/1517616
- bug:b/496701234、b/494018486、b/503810313、b/496639039、b/496316619、b/485685969、b/485971506
- VFS 和文件系统改进:使用流水线路径查找功能改进了文件系统性能,并实现了同步系统调用(
sys_sync、sys_syncfs、sys_msync),以实现可靠的数据持久性。安全远程文件连接,并为截断和分配实现了原子写入锁定。 - 核心系统和安全功能 修复了 UID/GID 管理和通过 Unix 套接字验证凭据中的本地提权漏洞。通过并发缓存增强了 SELinux/SEStarnix 性能,并将执行功能正确绑定到
no-new-privs。 - WaitQueue、Futex 和 Binder 性能:通过消除线程唤醒争用、修复锁反转以及为跨事务的 Futex 等待添加优先级继承,优化了 Binder 性能。改进了
FUTEX_REQUEUE公平性,以强制执行严格的 FIFO 排序并解决了相关的内存泄漏问题。 - KGSL、Magma 和 GPU 子系统 扩展了 KGSL 设备支持,以包含上下文、缓冲区、信号量和命令执行,从而改进图形渲染。通过将直接 Magma 缓冲区对象公开替换为随机连接和缓冲区 ID,确保 GPU 子系统的安全性。
- WLAN 和网络增强功能:通过 Qualcomm IPC 路由器套接字 (
AF_QIPCRTR) 和用于 TCP/IP 调优的基本网络 sysctl 扩展了网络功能。通过实现能感知电量的预定扫描 (PNO) 和增强的接口统计信息遥测,提高了 Wi-Fi 可靠性。 - USB 子系统 引入了初始 Starnix USB 模块,用于将 Android USB 设备状态转换为 Fuchsia USB 设备状态。应用现在可以通过新的 sysfs 节点读取配置,并在 USB 状态发生变化时接收
uevent通知。- 变更: fxr/1521527
- 指标重启原因更新 现在,导致会话重启的 Starnix 崩溃在 Fuchsia 重启原因中会正确报告为“Starnix Crash”,而不是通用的“kernel_panic”。
- 变更: fxr/1551540
存储
存储空间进行了以下更新:
- 默认启用存储主机:新的
storage-host架构现已在全球范围内强制执行,使用统一的 Rust 实现取代了旧版 DFv1 块驱动程序(包括 C++fvm、gpt和ramdisk)。 - Fxfs 性能和压缩升级:Fxfs 现在支持 LZ4 blob 压缩,并引入了后台刷新功能,可显著提升繁重写入操作期间的性能。动态预读也已更新为恒定的 128KiB 目标。
- 存储驱动程序现代化:存储驱动程序已迁移到
fdf::logger框架,并且块服务器引入了新的无线程跳跃 Rust 回调接口,以实现更高性能的集成。 - 关键存储 bug 修复:解决了存储层中的主要稳定性问题,包括异步块服务器释放后重用、F2FS 解析崩溃和 GPT VMO 泄漏。
- IO 和存储 FIDL API 变更 移除了
fuchsia.io中的DeprecatedOpen和OnOpen,并删除了已废弃的fuchsia.hardware.block库。在符号链接上启用了流水线式Open请求,以在保持连接的同时安全地关闭对象实参。- 变更: fxr/1584813、 fxr/1549741、 fxr/1588508
- bug:b/324080864、b/470449582
测试
针对测试进行了以下更新:
- fx test 开发者体验增强功能
fxtest现在会自动启动无头模拟器以进行设备测试(如果没有连接设备),并添加了--show-affected-tests和--run-affected-tests标志,以便轻松测试本地更改。现在,测试输出中包含系统日志。它还通过在端到端测试中省略--e2e时尽早失败来提高执行安全性,同时扩展了对 Python、Mobly 和 Bazel 主机测试的测试枚举支持。 - Honeydew 和 Lacewing 架构变更 基于 Mobly 的测试框架已迁移到异步架构,引入了
AsyncFuchsiaBaseTest并要求控制流使用异步函数。为防止在端到端测试中滥用 API,FuchsiaDevice抽象基类已重命名为DeviceKnobs,并且现在可以准确地将测试跳过报告为测试失败。 - 覆盖率和 ResultDB 洞见更新:开发者现在可以使用
ffx coverage中的--export-json和fx coverage中的--json-output-path导出原始 JSON 覆盖率数据。此外,通过将嵌入式失败原因提升到顶级测试并填充DisplayName元数据,还可提高 ResultDB 可见性,从而减少对深层日志分析的需求。 - 性能和测试 CLI 工具 新的 CLI 工具可简化本地工作流程,引入
fx test-category来查询目录元数据,并引入test_filterer来动态构建经过过滤的任务请求,以用于预提交重试。此外,perfcompare脚本还开源了用于下载和提取性能指标的工作流辅助程序。
计时
针对时间管理功能进行了以下更新:
- 向
PullSourceFIDL 协议添加了Shutdown方法。这样,Timekeeper 就可以在停止之前请求时间源托管其检查数据。- 变更: fxr/1418655
- 修复了 Starnix
HrTimerManager启动期间出现的系统级挂起问题。 现在,初始化失败会记录在日志中并以清晰的方式发出信号,从而防止计时器子系统无限期地阻塞命令。- 更改: fxr/1576303、 fxr/1576301
- 将 Starnix 时钟操作性能提升了大约 3 倍。
Starnix 现在使用内存映射时钟进行标准 UTC 查找,以显著降低 CPU 使用率。
- 变更: fxr/1510017
- 新增了对定期实时时钟 (RTC) 更新和实验性初始化策略的支持。Timekeeper 现在可以保持最新的 RTC 读数,并且可以选择接受次优的 UTC 值。
- 修复了时间轴初始化引用不正确的问题。现在,RTC 读取会无条件刷新,以防止在系统启动期间使用过时的正常运行时间参考。
- 变更: fxr/1488041
- 为时钟实现启用了 Rust Next 绑定。这使时钟组件现代化,并允许
clockimpl与供应商树中的最新 Rust 绑定一起使用,同时将 Amlogic RTC 驱动程序迁移到 Rust。- 更改: fxr/1574673、 fxr/1566423
- bug:b/500729232
工具链
针对工具链进行了以下更新:
- 修复了
fx roll-compiler行为:更新了脚本,以正确包含之前被省略的linux-arm64Clang 工具链。- 变更: fxr/1553182
- 改进了 Bazel 和 Clang 工具链集成:增强了 Bazel
fuchsia_clang_ext模块以支持 CIPD 确保文件,并使 Bazel Clang 警告与 GN 保持一致。 - 切换到 NS2 的预构建 Go 工具链:更新了构建流程,以严格使用由滚动器提供的支持 Fuchsia 的预构建 Go 工具链。
工具
工具进行了以下更新:
- V2 二分引擎和自动化 将实验性 v2 二分引擎提升为默认引擎,引入了
--script标志,用于在每个步骤中进行自动化验证测试。还添加了对将 PIB 和 BIB 集直接传递到ffx product-bundle create的支持。 - 对 Check-Licenses 工具 V2 进行大修:将
check-licensesCLI 重构为具有隔离子命令的模块化流式传输流水线。此次大修显著提高了内存用量、并发安全性和可维护性,同时还添加了一个新的指标框架。
fx
- FX 构建和工作流程改进:改进了
fx签出处理和问题排查,并通过fx build --fuchsia_platform添加了 Bazel 制品支持。此外,fx dis现在支持多个匹配项和 Unix 文件名模式。 - 推出了
fx repro --minimal命令。此命令会重现仅限于失败测试目标的 infra build,从而显著加快调试工作流程。- 变更: fxr/1586099
- bug:b/484005938
ffx
- FFX 和 Fuchsia 控制器 FDomain 迁移 移植了大量
ffx插件和fuchsia-controller,以使用 FDomain 作为底层传输。 此迁移可改进核心工具的内部架构和稳定性。 - 模拟器 (ffx emu) 改进:模拟器进程现在以守护式会话运行,以便在终端关闭后继续运行。此外,x64 输入强制执行 VirtIO,arm64 QEMU 安全启动,并且
ffx emu show支持新的--instance标志。 - FFX 驱动程序诊断和拓扑 添加了
ffx driver doctor以诊断绑定问题,并将详细的驱动程序列表拆分为专用show命令。驱动程序工具现在会公开完整的拓扑路径,并包含用于管理复合设备的命令。 - FFX 组件和代码库改进:现在,运行
ffx component run会在需要时自动启动临时软件包服务器。添加了ffx repository serve-archive,以便通过前台服务器轻松提供软件包归档 (.far)。- 更改: fxr/1571520、 fxr/1547147
- bug:b/498747360
- 增强了
ffx log输出格式和稳定性。该命令现在会遵循log_cmd.color配置,在严格模式下停用颜色,并在输出流关闭时干净地终止。 - FFX 插件简称 FFX 现在支持缩写的子命令名称(例如,
ffx t l代表ffx target list,ffx c s代表ffx component show)。这可大幅提升 CLI 人体工程学设计和整体开发者速度。- 变更: fxr/1496904、 fxr/1509324
- bug:b/481711081
- 为
fx test和ffx test添加了 syslog 捕获支持。新的--capture-syslog标志可在测试作业期间捕获系统日志(默认情况下为fx test启用)。- 变更: fxr/1583261
- bug:b/493306982
zxdb
- 调试器 (zxdb) 增强功能:添加了进程范围的
until命令、切换帧时自动打印源代码上下文,以及在设置中扩展主目录路径。此外,还改进了异步回溯呈现,并解决了结构体字段的命名空间冲突问题。
跟踪记录
针对跟踪功能进行了以下更新:
- 跟踪数据传输压缩:在跟踪数据传输期间添加了 zstd 压缩支持,将平均下载速度提高了 2.6 倍,并将传输的数据大小减少了 5.3 倍。
- 变更: fxr/1488043
- 手动缓冲区刷新 API 在
TraceControllerFIDL 中添加了RequestBufferFlush方法,并在NEXT中添加了新的刷新 API,以允许客户端更稳定地流式传输较小的数据块。 - Trace Provider V2 协议 引入了提供程序 V2 协议和用于协商共享内存版本的注册 API,使跟踪会话能够同时支持 V1 和 V2 提供程序。
- 中止正在运行的轨迹会话:向
ffx trace stop添加了--abort选项,用于强制终止正在运行的会话而不保存结果,从而确保干净的内部拆解。 - Tracefs 性能改进 通过在所有 CPU 之间条带化事件,改进了 tracefs 性能,显著缩短了平均读取和写入时间。
- 变更: fxr/1567894
- 归一化 CPU 使用率指标:添加了用于计算归一化 CPU 利用率的解析和结构,方法是在跟踪性能指标中跟踪动态电压和频率调节 (DVFS) 处理速率。
- LargeBlob 解析修复 修复了 FXT 解析器中 32 位大小字段被错误截断的问题,该问题之前导致大型分析器堆栈转储失败。
LargeBlob- 变更: fxr/1529698
- 跟踪会话生命周期和终止可靠性 通过防止异步循环关闭竞争和在断开连接时一致地丢弃状态来提高跟踪会话终止可靠性,以避免会话挂起。
- 更改: fxr/1571027、 fxr/1556472、 fxr/1529792
- bug:b/501462987
- 类别跟踪功能增强:默认启用
kernel:power类别以跟踪可变的 CPU 速度,并修复了starnix类别的事件计数和误报警告问题。 - 内存压力跟踪记录:为
pressure_signaler组件启用了跟踪记录,以正确发出memory_pressure计数器。- 更改: fxr/1529188
- 启动时 Starnix 轨迹连接 为 Perfetto 消费者线程实现了重试逻辑,以处理在 Starnix 完全启动之前启动轨迹会话的情况。
- 变更: fxr/1486558
界面
界面进行了以下更新:
- 输入流水线性能优化:通过批量处理事件、尽早过滤和移除不必要的内存分配来优化输入流水线处理。这可显著缩短处理时长并提高整体输入响应速度。
- Scenic 中的异步 Sysmem 交互 重构了 Sysmem 交互(例如令牌验证和图片导入),使其能够异步运行。这样可以防止阻塞主线程,从而缓解 VSync 停滞并提高系统响应速度。
- 移除了 Escher 旧版 3D 流水线。移除了旧版
PaperRenderer和关联的 3D 组件。这可简化代码库并显著缩短编译时间。- 更改: fxr/1547405、 fxr/1550981、 fxr/1551088
- bug:b/494718197
- Flatland 版本栅栏和调度增强功能:添加了对
zx::counter版本栅栏的支持,并允许TrustedFlatlandClients选择不接收OnFramePresented事件。这些 API 更改可减少冗余计算并简化帧调度。
视频
以下是针对视频功能进行的更新:
- 打开了 CodecFactory 和 StreamProcessor 协议。将协议标记为开放,并添加了
handle_unknown_method支持,以确保向后兼容性。- 更改: fxr/1497179、 fxr/1488642
- bug:b/478359574
- 从 TimelineFunction FIDL 中移除了默认值。从
fuchsia.media.TimelineFunction中移除了@allow_deprecated_struct_defaults,以支持 Python FIDL 绑定和媒体端到端测试。- 变更: fxr/1551463
- bug:b/495658021
- 为最低配置提供媒体会话支持。将
fuchsia.media.UsageReporter设置为可选,以便media_session可以在最低配置下运行,而无需全栈音频。- 更改: fxr/1487076、 fxr/1487896
WLAN 和连接
WLAN 和连接方面进行了以下更新:
- Scheduled Scanning API 向
wlan_mlme.fidl和fullmac.fidl添加了StartScheduledScan和StopScheduledScan,以启用预定扫描功能。 - 机会性无线加密 (OWE) 添加了对 OWE 连接的支持,包括握手实现和过渡元素解析,以提高无线安全性。
- 唤醒租约和电源管理 集成了唤醒租约,以防止系统在关键 WLAN 操作期间进入休眠状态,并在 SuspendMode 期间启用 APF 执行。
- WLAN 驱动程序重写和日志记录迁移:使用 Rust 重写了
wlanif驱动程序,以消除 C-FFI 开销;将连接驱动程序迁移到fdf::DriverBase2,并采用了现代fdf::logger框架。 - WLAN FIDL API 重组 将类型从
fuchsia.wlan.common移至专用库,以在 Policy 层和 Core 层之间建立更清晰的 API 边界。- 更改: fxr/1577035、 fxr/1577034
- 驱动程序稳定性和崩溃缓解 (brcmfmac) 解决了
brcmfmac中涉及设备关机、固件恢复和并发 PHY 重置的多项崩溃风险,以提高驱动程序稳定性。 - 遥测和指标增强功能:扩展了遥测功能,可将首选网络分流 (PNO) 扫描指标、Wi-Fi 停止错误和连接尝试记录到 Inspect 工具中。
- WLAN 连接修复:通过缓存无序 EAPOL 指示并准确转发硬件国家/地区代码变更,提高了连接可靠性。
- 更改: fxr/1510096、 fxr/1482944、 fxr/1578896、 fxr/1322614
- bug:b/485660049
重构了 UWB 供应商 API 重构了
fuchsia.hardware.uwb.VendorAPI,以使用新的Device协议通过渠道状态进行显式生命周期管理。- 变更: fxr/1481924
已更正的 wlanix 指标摘要统计信息。针对 wlanix 指标停用了总结功能,以确保对具有多个样本的指标进行准确计算。
- 变更: fxr/1567436