日期:2025 年 4 月 8 日
版本:F26
已实现以下更改:
无障碍设置
我们对无障碍功能进行了以下更新:
- 添加了一个新配置,允许产品从场景图中移除 A11y 视图,这提供了更大的灵活性,同时保留了平台代码的默认启用状态。
- 变更:fxr/1177413
音频
我们对音频进行了以下更新:
- 通过新的使用枚举和灵活的协议增强了音频流管理:引入了
AudioRenderUsage2
和AudioCaptureUsage2
枚举以及Usage2
联合体,以改进音频流分类和管理。这包括为屏幕阅读器引入了新的ACCESSIBILITY
流用法,并对 AudioCore 进行了内部迁移,以使用这些新类型。相关协议和方法也已转换为灵活协议和方法,以提高自适应能力。 - 添加了实时音频设备通知:在 Rust 共享支持库中,添加了
AudioDeviceRegistry
设备事件订阅,以便 Rust 客户端在有音频设备被添加和移除时收到通知。- 变更:fxr/1150852
- 修复了各种 bug 并进行了多项改进:解决了与
aml-g12 driver
中的 VMO 大小计算相关的问题,提高了音频测试中检查顺序的稳定性,更新了 build 目标可见性以确保正确性,并解决了对临时数组引用的更严格的 LLVM 检查问题。 - 移除了未使用的音频驱动程序:删除了未使用的
aml-dsp
驱动程序和库,以简化代码库并避免日后发生重构冲突。- 变更:fxr/1162754
蓝牙
蓝牙进行了以下更新:
- 更新了
ffx bluetooth peer
子工具,以添加list
、list --details
和show
命令,取代了之前在bt-cli
中提供的功能。 - 改进了将大型 Snoop 积压分解为较小数据块的方式,以遵守 FIDL 消息大小限制。
- 变更:fxr/1179337
- bug:fxb/369818216
- 更新了
Uuid
类型以派生Eq
和Hash
,从而简化了集合运算和比较。- 变更:fxr/1185556
- 更新了
fuchsia-bluetooth
目标,使其可在主机上使用,从而允许ffx
访问所需类型。- 变更:fxr/1153395
- bug:fxb/352389551
- 修复了因滥用
vec!
而导致的构建错误。- 变更:fxr/1172272
- 更新了
bt-transport-uart
,使其仅将一个读取任务加入队列,从而防止出现多个 HciTransport 连接请求的问题。- 变更:fxr/1178452
- 更新了请求 UUID,以便在扫描过滤条件列表中使用。
- 变更:fxr/1177633
- bug:fxb/42174576
- 更新了 BCM4381 的 UART 标志,以便正确配置,从而启用 UART 流量。
- 变更:fxr/1174939
- 更新了
bt-hci-broadcom
中的固件加载,以避免潜在的堆栈溢出。- 变更:fxr/1174715
构建
Build 进行了以下更新:
- 添加了对
bazel_test_package_group
的支持,并引入了针对共享库的每个 API 级别的.ifs
文件。这些更改增强了测试中的模块化程度,并支持迭代接口开发。- 变更:fxr/1188212、fxr/1177274
- bug:fxb/342032854
- 提高了构建系统的稳健性,并在为 Bazel 集成做好准备方面取得了进展。重构工作区逻辑并在
fx gen
期间生成remote_services.bazelrc
有助于实现这些改进。 - 向 Rust 构建配置添加了配置文件支持。现在,
profile-rust
变体和在 rustc 输入中添加配置文件路径已可供使用,这增强了性能分析功能。 - 修复了序列化问题:此修复提高了构建系统的稳定性和易用性。
- 变更:fxr/1187292
- bug:fxb/389747855
- 简化了 SDK 构建流程。要求为所有类别提供 SDK 区域、重新定位工具链定义、将指标记录器配置添加到汇编,以及移除
emu_dimensions
可改进 SDK 构建体验。 - 改进了 linkmap 功能:修复了 generate_linkmap 中的问题,包括标志和命名更正。
- 变更:fxr/1164755
钴蓝
我们对 Cobalt 进行了以下更新:
- 将 Cobalt 改为了 Rust 日志:Cobalt 的模拟对象使用 Rust 日志进行日志记录,而不是跟踪。
- 变更:fxr/1178820
- bug:fxb/344980783
- 改进了配置验证器测试:在配置验证器中添加了针对包含报告的指标的测试。
- 变更:fxr/1167098
- 引入了原型 STRUCT 指标注册表、验证和观察,包括使用示例来定义包含字段、类型和报告的结构体指标以进行数据汇总。
- 变更:fxr/1154692
- 通过改用参数化测试,改进了对整数直方图报告的测试。
- 变更:fxr/1178562
- 实现了浮点步长乘数,并验证了
step_multiplier
大于 1。 - 更新了 Tink、Abseil-cpp、Protobuf 和 Protobuf-gn 子模块,并解决了已废弃的 Tink API 用法问题。
- 在配置验证器中添加了针对包含报告的指标的测试,以提高测试覆盖率。
- 变更:fxr/1164614
组件框架
我们对组件框架进行了以下更新:
- 更新了组件管理器,使其能够从其公开的根目录中找到轨迹功能。
- 变更:fxr/1159135
- 改进了重复商品的错误消息的清晰度。
- 变更:fxr/1185612
- 修复了组件调试中的不可访问模式 lint 和组件框架中的 clippy lint。
- 更正了正常停止时的
on_terminate=reboot
处理方式,并通过重复待处理的关闭日志改进了捕获功能。 - 更新了组件管理器,以使用诊断字典中的
LogSink
,并使用通用Echo
服务器代码改进了incoming_integration_test
。
诊断
我们对“诊断”进行了以下更新:
- 改进了
ffx inspect
工具,在生成的选择器中添加了树名称,简化了访问器选择和访问器列表,引入了--component
来替换--manifest
。 - 更新了归档程序流水线协议,使其可在字典
diagnostics-accessors
中使用,以简化从汇编中路由和配置它们。Scrutiny 支持动态字典。 - 废弃了
ffx log
中的--select
和--force-select
,取而代之的是--set-severity
和--force-set-severity
。ffx log
现在还支持模糊匹配组件和固定的 adynamic 选择器。 - 更新了 Rust 日志记录,以使用支持键值对的
log
- 更新了分类功能,以支持
CountChildren
。- 变更:fxr/1169237
- bug:b/367365982
- 引入了插桩数据处理组件,用于通过
fuchsia_debugdata::Publisher
发布配置文件。- 变更:fxr/1169956
- bug:fxb/42068707
- 添加了“检查分配”分析工具,用于分析 JSON 输入中的分配大小。
- 变更:fxr/1175804
- bug:fxb/340342858
- 为
ffx
性能分析器添加了buffer_size_mb
参数,以控制每个 CPU 的缓冲区大小。- 变更:fxr/1175519
- 重构了诊断路由,以优先使用特定路由并使用诊断字典。这包括移除
LogSink
和InspectSink
的不必要路线,以及从字典中路由 Inspect。 - 改进了自定义配置文件报告和检查效率。自定义配置文件报告现在会在自定义汇总中汇总非叶节点。检查现在会自动删除 C++ 中的重复字符串引用。
- 变更:fxr/1188614、fxr/1056974
- bug:b/300003477
- 将 LogSink 设为开放协议,以便更轻松地进行 API 演变。
- 变更:fxr/1185852
- bug:fxb/319500512
- 更新了反馈组件,以处理多种重新启动前原因。添加了对
kNetstackMigration
的支持,并在LastReboot
信息中添加了“计划”布尔值。- 变更:fxr/1183312
- 修复了诊断汇编替换项的序列化问题。
- 变更:fxr/1187292
- bug:fxb/389747855
- 添加了
inspect-runner
测试,用于验证驱动程序是否公开了 Inspect。- 变更:fxr/1185918
- 修复了 InspectSink 路由问题。
- 变更:fxr/1185918
显示
我们对展示广告系列进行了以下更新:
- 显示驱动程序堆栈正在迁移到现代 Fuchsia 平台基础架构,例如 DFv2 和 FIDL。
驱动程序框架
我们对驱动程序框架进行了以下更新:
- 向驱动程序管理器添加了
RestartWithDictionary
FIDL 方法,以重启具有自定义功能的节点。- 变更:fxr/1118792
- 在驱动程序管理器中添加了对总线拓扑的支持,允许客户端查询总线段。
- 变更:fxr/1148813
- 通过
fake-bti
和fake-object
组件扩展了 SDK,以增强驱动程序开发功能。- 变更:fxr/1137621、fxr/1137613
- bug:fxb/373444405
- 为
driver_index
启用了on_terminate: reboot
,以实现干净的组件退出。- 变更:fxr/1184778
- 改进了构建时对驱动程序组件清单的验证。
- 变更:fxr/1181593
FIDL
我们对 FIDL 进行了以下更新:
- 对新的 Rust FIDL 绑定进行了原型设计,修复了事件方法的请求参数,并移除了 fidlc 中的
kind
,将其替换为kind_v2
。 - 向 fidlc 添加了
\@no_resource
注解,并为 FIDL 类型定义了可序列化名称。- 变更:fxr/1152357、fxr/1157192
- bug:fxb/378118627
固件
固件进行了以下更新:
- 为 NUC 和 VIM3 添加了“slot-unbootable-reason”快速启动变量,用于指明槽位被标记为不可启动的原因
- 变更:fxr/1173757
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 在非密封和模拟器环境中停用了
ForceQuit
和AcquireZeroTimeout
测试,以解决崩溃问题。重新添加了误删的 DFv2 驱动程序单元测试。将 msd-arm-mali 的终止超时时间延长到了 10 秒,以减少掉片。将zx_bit_pin
分块大小缩减为 32MB,以避免固定内存时出错。 - 添加并更新了 Magma 平台测试。向 Mali 测试驱动程序添加了测试,包括大映射测试,并更新了性能分析器和 MMIO 测试。
- 变更:fxr/1184654
IOT、Matter 和 Thread
我们对 IoT、Matter 和 Thread 进行了以下更新:
- 更新了 IpAddr、Lowpan 和 Weave 的日志记录:Lowpan 和 Weave 现在使用 Rust 日志。
- 解决了 clippy lint 违规问题:现在,build 重构中的 lint 错误已修复。
- 变更:fxr/1167272
- bug:fxb/381896734
- 修复了 Matter 的事件时间估算器。
内核
内核进行了以下更新:
- 引入了用于衡量内存暂停的新框架,可深入了解系统性能瓶颈。这包括向
zx_object_get_info
添加ZX_INFO_MEMORY_STALL
,以及用于管理卡顿测量系统调用的专用卡顿资源。
平台驱动程序
平台驱动程序进行了以下更新:
- 更新了多个驱动程序(包括 sdmmc、sdhci、aml-uart、aml-securemem、vim3-clk 和 pdev),以使用 SDK 库和 FIDL 处理元数据和通信,从而取代旧方法。
- 重构了热管理驱动程序查找表和传感器驱动程序。传感器驱动程序现在使用新的服务监视器和日志记录,而不是跟踪。
- 将 dwc3 和 vim3 驱动程序迁移到了 Bazel。Vim3 页面扫描器参数现已纳入平台配置。
- 通过代码重构和使用描述符结构体,分别改进了传感器管理器和 Starnix nanohub 驱动程序。
- 更新了
aml-uart
驱动程序,以使用单个调度程序和WakeLease
类,并移除了适用于aml-uart
的 DFv1 驱动程序。
电源管理
我们对电源管理进行了以下更新:
- 为驱动程序添加了 Inspect 集成,包括电源驱动程序的元素运行程序和尝试时间记录,以及用于验证驱动程序 Inspect 公开范围的新测试。
- 在 USB 端点中添加了对可选唤醒租约和与完成相关联的租约的支持,从而改进了电源管理。
- 实现了用于测试的虚假功耗传感器,在未集成 ODPM 的设备上模拟 ODPM 行为。
- 变更:fxr/1180113
- 实现了用于启动设备重新启动的新的
Admin.PerformReboot
API,同时保留了对已废弃的Admin.Reboot
的支持。- 变更:fxr/1179339
- 改进了功耗管理调试和指标,为元素运行程序提供了检查集成,并添加了新的多步挂起/恢复延迟时间指标。
- 通过停用租赁优化功能来增强了电源管理。
- 变更:fxr/1185915
- 通过使用更高级别的电源方法简化了 SDMMC 驱动程序。
- 变更:fxr/1185697
Rust
Rust 进行了以下更新:
- 将 libc crate 更新为了 0.2.169。
- 变更:fxr/1187914
- 将 either 和 bitflags crate 分别更新为 1.13.0 和 2.7.0。
- 将 tokio 更新为 LTS 版本 1.38.1。
- 变更:fxr/1185753
- 为跟踪 crate 列入了许可名单中的多个客户端。从诊断/日志中移除了轨迹库的使用,从而缩减了大小。日志记录文档现在引用了日志 crate,并且调整了基准测试。
Starnix
Starnix 进行了以下更新:
- 增强了 sestarnix 中的安全性,添加了多个新钩子并改进了权限检查。这些包括适用于
file_ioctl()
、inode_getattr()
、inode_permission()
、inode_listxattr()
、sb_statfs
、sb_kern_mount
、sb_mount
和sb_umount
的钩子,以及对可配置的todo-deny
条目进行支持、根据政策验证安全级别、通过文件名转换为anon_inodes
的标签,以及在file_permission()
中使用缓存的安全类。此外,file_permission()
现在会出于性能考虑而跳过FsNode
权限检查,并添加了用于诊断的性能分析,强制执行了 readlink 权限检查,并修改了对尚未标记的文件系统的处理方式。 - 添加了模块将目录导出到
/proc/device-tree
的功能,并公开了 sysfs 显示屏面板端点以支持端口显示屏配置初始化。 - 扩展了 cgroup 支持并解决了测试不稳定问题。修复了 cgroup 测试不稳定问题,并支持在 cgroup 中冻结任务。
存储
我们对“存储空间”进行了以下更新:
- 向虚拟文件系统 (VFS) 添加了对 Get/SetFlags2 的支持,并将 SetFlags 更改为使用 io2 标志。特征方法已从
update_flags
重命名为set_flags
,fuchsia.io/Flags
取代了OpenFlags
。- 变更:fxr/1169434、fxr/1175415
- bug:fxb/376509077
- 增强型 UFS 驱动程序:向 UFS 驱动程序添加了 UFS 服务,引入了写入保护和后台操作支持。
- 更新了 VFS:在 VFS (Rust) 中实现了 Get/SetFlags2 支持,并更新了 SetFlags 以使用 io2 标志。
- 变更:fxr/1169434、fxr/1175415
- bug:fxb/376509077
- 改进了 Blob 和分块处理:Fxblob 现在会记录已损坏的传送 Blob 数据以供分析,并修复了
ChunkedArchiveError
根本原因映射。 - 增强了 Fxfs 并修复了 bug:启用了 fallocate,改进了截断时的覆盖 extent 处理,并解决了预留对齐问题和计算错误。
- 更新了 FVM 和 Fshost:解决了 FVM 卷移除竞态问题,改进了 fshost 中的 FVM 匹配,并修复了存储主机的 CML 配置。
- 改进了存储和基准测试:存储基准测试现在在具有存储主机支持的专用领域中运行。
测试
测试进行了以下更新:
- 增强了 Utest 核心:对核心单元测试进行了多项改进,包括超时修复、内存映射调整和增强的崩溃处理。
- 增强型测试基础架构和工具:对测试基础架构和工具进行了各种增强和 bug 修复。
计时
我们对时间记录功能进行了以下更新:
- 实现了新的
fuchsia.time.alarms
FIDL API 来管理唤醒闹钟,并将 hrtimer 设备用作后端。这包括请求 hrtimer 访问权限、为 Starnix 配置 API 的条件式分发,以及将其与 vim3 开发板集成。唤醒闹钟管理器也收到了集成修复程序,包括GetProperties()
和临时CancelSync()
FIDL API,并且alarms
crate 已分解,以便更好地进行测试。向唤醒闹钟服务添加了跟踪功能,并通过在 hrtimer 驱动程序中实现解决方案修复程序来解决了长时间休眠问题。此外,还向 hrtimer FIDL 添加了有关max_ticks
的详细信息,并更正了 hrtimer 配置,以实现更广泛的平台支持。 - 重构了计时器的永久性状态,以适应未来的数据扩展。
- 变更:fxr/1186616
工具
我们对“工具”进行了以下更新:
ffx
ffx
进行了以下更新:
- 增强了模拟器,使其支持 UEFI,以便进行完整磁盘 GPT 映像启动和 OTA 测试。
ffx emu start --uefi
标志可启用此功能。- 变更:fxr/1151236
- bug:b/369407864、b/369410009
- 在
ffx log
中添加了对模糊搜索组件标识名和网址的支持。请使用--component
标志(取代已废弃的--moniker
标志)。- 变更:fxr/1172436
- 改进了模拟器 MAC 地址派生,以确保 UEFI OTA 测试的一致性。
名称为
fuchsia-5254-X-Y
等的模拟器会直接从名称派生 MAC 地址。- 变更:fxr/1170873
- bug:b/383061309
- 延长了
ffx target wait
超时时长。ffx target wait
现在具有 6 秒的超时设置,以便更好地处理运行缓慢的设备。- 变更:fxr/1169238
- 改进了
ffx
工具中的错误处理和环境变量处理。ffx product
下载的错误消息更具信息性。ffx config
中更严格的环境变量处理。 - 修复了
check-goldens
和ffx emu
错误。check-goldens
不再发出 GN 路径警告。现在,使用 QEMU v9 及更高版本时,ffx emu
会正确分配主机端口。
fx
fx
进行了以下更新:
- 固定了
fx flash-kola
商品套装的选择。fx flash-kola
会在多产品 build 中正确选择产品套装。- 变更:fxr/1167112
界面
界面进行了以下更新:
- 在 Scenic 中实现了性能优化。这些优化包括缓存 kiod、替换互斥量队列、避免计算中进行复制、实现新的 DisplayPower 协议以及优化数据处理。
- 对 Escher 和 Vulkan 进行了优化和更新。这包括在 Escher 中预分配结构体、更新 Vkcube 以使用交换链分片,以及为 Vulkan 交换链层添加分片。
- 向 CPU 渲染程序添加了线性混合和多图像支持。
- 改进了界面开发者调试工具。这包括通过将 ui_visual_debugging_level 传递给窗口管理器进行调试,以及通过新的 Cycle、List 和 SetOrder 函数增强窗口管理。
视频
我们对视频广告系列进行了以下更新:
- 重新定位了 MPSC 队列:MPSC 队列容器已移至一个通用目录,以便在多个 Scenic 组件中使用。
- 变更:fxr/1178434
- 更新了媒体日志记录:媒体组件中的日志记录现在使用 Rustlog 而非跟踪,以改进日志记录功能。
- 变更:fxr/1177343
- bug:fxb/344980783
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 驱动程序的频段功能验证模拟测试。
- 变更:fxr/1165055
- 更新了 BRCMFMAC 驱动程序,以有条件地设置 RSNE IE,修复了关联指示中的 bug。
- 变更:fxr/1182452