版本:F25
已实现以下更改:
无障碍设置
我们对无障碍功能进行了以下更新:
- 还原了未宣布节点的无障碍功能焦点操作恢复。
- 变更:fxr/1148337
音频
我们对音频进行了以下更新:
- 更新了
audio_device_registry
,以确保在响应初始WatchDevicesAdded
调用之前检测和初始化现有设备。ADR 现在可以按需启动,而不是始终提前启动。- 变更:fxr/1141292
- 将
aml-g12-tdm
驱动程序转换为新的 GPIO 调用。- 变更:fxr/1140093
- bug:fxb/42082459
- 更新了音频测试的命名方式,以保持一致。请为测试软件包名称使用下划线,为测试组件名称使用连字符,并为这两者添加
audio
前缀。- 变更:fxr/1147339
蓝牙
蓝牙进行了以下更新:
- 完成了向新的 HCI 传输 FIDL 协议的迁移。
- 修复了蓝牙的一些 Rust lint,并将 syn 更新为 v。
- 变更:fxr/1155993、fxr/1140213
- bug:fxb/332277415
- 改进了蓝牙配置文件和 GAP,包括路由更新和针对多余克隆和堆分配问题的修复。
- 添加了
bt-init
eager,在设备启动时启动它,并将一些额外的蓝牙功能路由到会话以供组件使用。- 变更:fxr/1047295
- 实现了
fuchsia.bluetooth.le.Connection/ConnectL2cap
,以支持 LE 连接导向型频道。- 变更:fxr/246713
- 创建了
PrivilegedPeripheral
协议,以便在启用隐私模式时支持具有静态地址的 LE 广告。- 变更:fxr/241712
- 已将 HCI 命令和事件数据包结构体迁移到 Emboss 数据包视图。
- 变更:fxr/247713
- bug:fxb/42167863
钴蓝
我们对 Cobalt 进行了以下更新:
- 更新了系统指标计算,以使用启动时钟提高准确性,并且系统指标守护程序使用 Fuchsia 的时间概念,减少错误并为未来的增强功能做好准备。
- 修改了验证器测试,以使用辅助函数来提高可读性。
- 变更:fxr/1161883
组件框架
我们对组件框架进行了以下更新:
- 更新了
component
CLI 工具和ffx
工具。component show
命令现在会显示运行程序信息,设备端component
CLI 现在包含config
子命令,ffx
的fuchsia-controller
现在使用常见的 SSH 配置。cmc format
现在支持从 stdin 读取数据。 - 更新了组件管理器,以支持在运行嵌套时进行跟踪,并使其通过
fuchsia.pkg.PackageResolver-boot
capability 公开 bootfs 软件包解析器。 - 在组件管理器中实现了
fuchsia.sys2.ConfigOverride
协议以及支持的 CLI 库。这样,开发者就可以替换结构化配置值,并修复了因字段未使用配置功能而被拒的问题。 - 通过清理未使用的服务连接 API 和移除已废弃的函数来清理
fuchsia-component
库,并在传出目录中添加了对服务实例名称的说明。 此外,component::Clone
已迁移到fuchsia.unknown/Cloneable
。
连接驱动程序
Connectivity Drivers 进行了以下更新:
- 增强了 brcmfmac 驱动程序,包括使用新的 GPIO 调用,并降低了非严重错误的日志级别,从而提高了兼容性、功能性和日志清晰度。
诊断
我们对“诊断”进行了以下更新:
- 改进了
ffx inspect
的开发者体验。ffx inspect
现在支持--name
、对标识名和网址进行模糊匹配,并改进了--component supersedes
和--manifest
的使用方式。 - 改进了
ffx log
的开发者体验。-
在第一行中除了 UTC 时间之外还会输出启动时间,以便根据启动时间计算回退时钟时间,移除了
- 变更:fxr/1148934、fxr/1138576、fxr/1153818
--select
和--force-select
,更新了日志兴趣选择器,不再需要在标识符中进行任何类型的转义,并修复了重新连接时的兴趣 - 提升了 Rust 日志编码/解码的性能。在许多基准测试中,速度提升了约 60%。
- 更新了与从单调时间切换到启动时间相关的其他内容。
- 在采样器中添加了电源代理统计信息
- 在归档器中引入了新的
LogStream
协议,用于直接提取带归因的原始 FXT 记录。与使用ArchiveAccessor
相比,这可以提高性能。- 变更:fxr/1159075
- 更新了
SelfProfilesReport
,以支持自定义叶级汇总,以便分析复杂 CUJ 中的 CPU 使用情况。- 变更:fxr/1155217
- 增强了作业过滤功能,以便调试。FIDL 客户端现在可以使用仅限作业的过滤条件,并且向
attach
命令添加了--job-only
标志,以便直接附加作业(仅限 Fuchsia)。 - 改进了内核线程采样器和调试程序,使其更为稳健。采样器现在支持附加到初始化线程,调试程序修复了与行表相关的崩溃问题,并改进了对异步进程终止的处理。
- 改进了归档工具的性能和稳定性。为日志套接字创建专用线程可减少开销,对关闭逻辑和内部缓冲区所做的更改提高了稳定性,并采用了异步作用域。
- 改进了诊断日志和符号化功能。向符号化程序和下载管理器添加了更多调试日志,并修复了与 x64 Zircon 中的负载相关的符号化问题。
- 改进了诊断日志中的严重性 API,提升了开发者体验。
- 变更:fxr/1103655
- bug:fxb/364293789
显示
我们对展示广告系列进行了以下更新:
- 显示驱动程序堆栈正在迁移到现代 Fuchsia 平台基础架构,例如 DFv2 和 FIDL。
驱动程序框架
我们对驱动程序框架进行了以下更新:
- 在 ffx 驱动程序中添加了对显示屏总线段的支持,并允许将
fuchsia_driver_package
导出到 Bazel。 - 改进了
ddk::GetMetadata()
连接处理,向driver_playground
添加了 dev 类目录路由,并迁移了驱动程序 SDK 以使用span<const T>
。 - 在输入驱动程序中定义了
const ToFidlInputReport()
,并将 Phys-iter 库移到了//src/devices/lib/io-buffer
。 - 为驱动程序添加了基于
std::format
的日志记录 API。- 变更:fxr/1137617
- 与
fdio::open
、kRestrictedLibcSymbols
、Node.Clone
处理、driver_context
重命名相关的清理代码。 - 修复了与驱动程序清理、构建驱动程序模板、sdmmc 还原、驱动程序主机迁移、fake-pdev 处理、DFv1 许可名单、fdf/fake-pdev 命名空间、设备监视器遍历、兼容性驱动程序和 cpu-ctrl 序列 ID 相关的问题。
- 添加了对稳定的总线拓扑信息的支持,允许总线驱动程序提供结构化拓扑数据和令牌以进行客户端验证,而基于整数的键不再在 DFv1 中使用,如果使用,则会返回错误。
- 添加了新的属性字典数据类型
NodePropertyDictionary2
,以替换DriverStartArgs
中的NodePropertyDictionary
。- 更改:fxr/1129901
- 添加了对将
fuchsia_driver_package
导出到 Bazel 的支持。- 更改:fxr/1159533
- 为驱动程序添加了基于
std::format
的新日志记录 API。- 更改:fxr/1137617
- 在
ffx driver
中添加了对显示屏总线段的支持。- 更改:fxr/1149312
- 更新了节点的处理方式,以便在驱动程序启动失败后将其置于隔离状态。
- 更改:fxr/1127478
- 修复了 DDK 中的 FIDL 元数据检索问题,并将
fdio::open_deprecated
调用替换为fdio::open
。 - 更新了 SDK 驱动程序,以使用
span<const T>
而非const vector<T>&
,并将phys-iter
移到了//src/devices/lib/io-buffer
。 - 将
driver_context
重命名为thread_context
,并将fake-bti
库更新为符合现代 C++ 标准的库。 - 更新了驱动程序主机以使用 io2 兼容的 Serve 签名,并从
driver_manager
中移除了对已废弃的Node.Clone
方法的处理。- 更改:fxr/1146255、fxr/1160276
- bug:fxb/378924331
GPU
GPU 进行了以下更新:
- 改进了 Vulkan 交换链功能:这包括通过使用
unsquashable
标志、移除显式时间戳并将栅栏重命名为 fence_signalers 来简化交换链呈现逻辑;更改栅栏信号以观察 vsync;从 HLCPP 迁移 Flatland 交换链;以及修复虚假 Flatland 的fuchsia.ui.composition.Allocator.RegisterBufferCollection
实现。 - 改进了 virtio-gpu-display:移除了对 sysmem1 的未使用引用,使用了 DriverLayer 和 ConfigStamp,并简化了 Banjo 适配器 API。
- 已迁移到 open3 fdio:包括与 fdio_open 迁移和常规 open 到 open3 迁移相关的更改。
- 向 msd_c.h 添加了函数:包括添加缓冲区导入/释放、连接创建/释放和映射/释放缓冲区函数。
本地化
我们对 I18n 进行了以下更新:
- 改进了 ICU 构建流程和配置处理。移除了
jiri
钩子,改为在gn gen
期间直接调用生成器脚本,从而提高了效率和icu_root
准确性。引入了由 Jiri hook 管理的build/icu/jiri_generated/config.json
,以优化icu_config_info
读取,并添加了数据完整性验证目标。
IOT
我们对 IoT 进行了以下更新:
- 修复了 GHP 的 bug。
平台驱动程序
平台驱动程序进行了以下更新:
- 改进了 AML CPU 驱动程序日志记录,并将 imx227 驱动程序改为使用
SetBufferMode()
。- 变更:fxr/1148102、fxr/1139773
- bug:fxb/42082459
- 通过将
aml-light
驱动程序迁移到//sdk/lib/driver/platform-device/cpp
SDK 库并重构其构建目标,使其实现了现代化。- 变更:fxr/1147834、fxr/1147833
- bug:fxb/366517646
- 移除了对暂停时长的限制,支持任意长度的暂停时长。
- 变更:fxr/1106200
- 对 SPMI(系统功耗管理接口)框架进行了多项改进。这些更新包括针对异步测试更新了 mock-spmi,启用了对 UnownedClientEnd 的读写访问,并添加了对
SpmiRegisterArray
的支持。此外,还实现了对GetProperties
和WatchControllerWriteCommands
的支持。 - 添加了一种新方法,让 SPMI 驱动程序客户端可以从设备接收控制器写入命令,从而完成 SPMI 的软过渡。这会移除临时 build 文件。
电源管理
我们对电源管理进行了以下更新:
- 改进了可观测性和衡量功能。包括从轨迹文件中删除无效的 Gonk 样本;在 Inspect 数据中使用实际时间;以及 Power Broker 的 Cobalt 指标。
- 改进了平台电源管理。包括通过组件管理器将 shutdown-shim 作为内置组件运行;消除 Power Broker 中的潜在内存泄漏;以及移除唤醒处理和完全唤醒处理电源元素。
- 继续开发 CPU 功耗管理。包含适用于 VIM3 的能耗模型,以及用于通过能耗模型配置内核的平台支持。
Rust
Rust 进行了以下更新:
- 改进了代码质量和 linting。解决了
or_fun_call
和set_contains_or_insert
lint 的处理问题,移除了新工具链检测到的死代码,并启用了clippy::redundant_clone
、clippy::needless_collect
、clippy::collection_is_never_read
和clippy::clear_with_drain
。 - 优化了日志记录解码。从
nom
迁移到了zerocopy
,以提高性能并简化代码。- 变更:fxr/1160813
- 从 async-io 迁移到了 Tokio。为了解决 Tokio 的主机/目标执行器差异问题,系统会延迟初始化计时器。
- 变更:fxr/1159422
- 为 RemoteLike 添加了 Open3 支持。
- 变更:fxr/1158892
- bug:fxb/335769966
SDK
SDK 进行了以下更新:
- 通过新的 FIDL 元数据函数和驱动程序库中的
span<const T>
支持增强了驱动程序开发,提高了灵活性并减少了样板代码。- 变更:fxr/1139394、fxr/1157972
- bug:fxb/373889083
- 添加了
gen-android-starnix-container
托管工具、fuchsia.system.state
和fake-platform-device
,以改进外部开发,从而扩展了合作伙伴 SDK 功能。 - 通过迁移到
Node.Clone2
并在测试中使用Open3
进行服务连接,改进了sys
库中的 io2 兼容性,从而解决了权限问题。- 变更:fxr/1156195、fxr/1156975
- bug:fxb/378924331
- 在
input_report_reader
中添加了对const ToFidlInputReport()
的支持,并在 Rust SDK 中添加了中断确认,从而增强了功能和一致性。- 变更:fxr/1161886、fxr/1152612
- bug:fxb/380354758
- 使用 LLCPP FIDL 绑定、类型安全的 io2 替换项和移除已废弃的函数对 VFS 库进行了现代化改造,简化了 API 并增强了安全性。
- 通过修复
sdk_source_set()
行为、处理fdio
中的 POSIX 标志以及解决fx build --fint-params-path
问题,改进了构建系统。 - 移除了已废弃的
fserve
、fpublish
和pm
命令,以及与时间相关的 FIDL 版本控制库异常,从而清理了 SDK。
软件交付
软件分发进行了以下更新:
- 添加了
FindDynamicDataSink
API 来替换UseBlockDevice
,将块设备查找责任转移到了铺路机服务。添加了AndroidPartitionerTest
和Vim3DevicePartitionerTest
,以提高可靠性并处理多 GPT 设备等极端情况,并防止意外擦除引导加载程序。 - 向 FIDL API 添加了无法启动原因数据,以改进错误报告和诊断功能。
- 变更:fxr/1153492
- 修复了在
GetMetadata
调用期间发生的ResetPartitionTables
断言,提高了 paver 稳定性。正确报告了上次启动尝试次数,修复了无法启动的槽的意外行为。添加了对 Sorrel 的支持。 - 重构了测试,以实现存储空间与主机的兼容性和简化。移除了
AbrClientFactory
,以简化客户端创建流程。删除重复项后的 GUID 查询表。ResetPartitionTables
现在会替换依赖于直接 GPT 访问的函数。添加了针对KolaAbrClient
的单元测试。 - 通过检查公开了
fuzz_percentage_range
。修改了注释,以反映铺路工具在最终启动尝试时报告的待处理状态。 - 已从
Node.Clone
迁移到Node.Clone2
,以进行 io2 迁移。更新了fuchsia_fs
函数。使用了 open3 fdio。对附加的清单和清单列表进行了排序,以实现确定性。 - 重构了
PolicyEngine
并迁移到了QueryConfigurationStatusAndBootAttempts
,以便在成功提交时报告启动尝试。
Starnix
Starnix 进行了以下更新:
- 实现了 fscrypt ioctl,添加了对用户管理的加密密钥的支持。不过,对已锁定的加密目录的操作尚不完全受支持,并且
FS_IOC_REMOVE_ENCRYPTION_KEY
无法正确处理锁定。- 变更:fxr/1096181
- 增强了 SELinux,以提高安全性和访问控制功能。这包括通过
/sys/fs/selinux/avc/cache_stats
报告访问矢量缓存统计信息的基本实现,以及针对安全上下文的类别集归一化。 - 改进了对 cBPF 和 eBPF 的支持。修复了多个 cBPF 兼容性问题,包括实现
BPF_MSH
指令和调整数据包访问指令。增强了 eBPF 验证器,以改进结构体处理并防止数组边界检查绕过。 - 将
cgroup
和cgroup2
文件系统以及cpuset
更新为可挂载的 CgroupV1 文件系统。cgroup.controllers
接口文件也将变得可访问。- 变更:fxr/1139553
- bug:fxb/373898293
- 重新启用了 Starnix 挂起功能。唤醒锁会在内核中跟踪,容器暂停会委托给运行程序,后者会监控已注册的通道以恢复容器。相关修复程序解决了租约获取顺序问题,并提高了运行程序代理的稳健性。
- 添加了对 aarch32 uapi 的支持。还包含相应的 build 参数。
- 修复了
execve
期间的FIONBIO
ioctl 和功能计算问题。FIONBIO
会根据用户输入正确处理NONBLOCK
标志,并且在execve
期间正确计算 set-user-ID 根程序的功能。不过,对于后者,文件功能和SECBIT_NOROOT
尚未得到解决。- 变更:fxr/1146967、fxr/1129940
- bug:b/376246108
测试
测试进行了以下更新:
- 改进了多个方面的测试基础架构:
- 在启动/引导环境中引入了测试支持,使 bootfs 测试能够作为组件运行。
- 变更:fxr/1115963
- 在 arm64 上启用了 crosvm 测试,并将其添加到了官方内核测试环境中。
- 变更:fxr/1144372
- 确保 CTF 工件复制到正确的位置,从而解决从版本加载工件时出现的问题。
- 变更:fxr/1144654
- 在 botanist 中为 Kola 添加了对通过串行预配密钥的支持。
- 变更:fxr/1143877
- 在启动/引导环境中引入了测试支持,使 bootfs 测试能够作为组件运行。
- 添加了一个用于压缩调试数据的新 API,显著加快了使用
ffx
的覆盖率机器人的速度。旧的未压缩 API 已废弃。- 变更:fxr/1160356
- 改进了各种测试:
- 通过延长计时器截止期限,修复了
Timer.Restart
核心测试中的一个不稳定问题。- 变更:fxr/1148133
- bug:fxb/375681700
- 更新了
msd-arm-mali
中的关闭测试,以记录更多错误,有助于调试 flake。- 变更:fxr/1163332
- 移除了
FailEarlyWake
页面浏览器测试中的竞态条件,从而防止无限阻塞。- 变更:fxr/1116952
- 通过确保在 VMO 映射周围填充页面,修复了核心 FIFO 测试中罕见的不稳定问题。
- 变更:fxr/1138832
- 将 msd-arm-mali 测试中的 1 秒超时替换为无限超时,这可能会解决一个问题。
- 变更:fxr/1145312
- 通过延长计时器截止期限,修复了
- 改进了 paver 测试,以提高稳健性和兼容性:
- 使用预初始化的块设备更新了 paver 测试,以便进行存储空间主机兼容性测试。
- 变更:fxr/1161912
- 添加了回归测试
AndroidPartitionerTest
,以确保在 Android 设备上正确识别 GPT。- 变更:fxr/1161913
- 使用预初始化的块设备更新了 paver 测试,以便进行存储空间主机兼容性测试。
- 更新了测试工具和指标处理:
- 更新了核心测试,以支持旧版和新版内核归因模型。
- 变更:fxr/1148177
- bug:fxb/42058561、fxb/338300808
- 从
ConstantMetricsProcessor
中移除了已废弃的参数。- 变更:fxr/1151352
- 使用
ConstantMetricsProcessor
时,必须为自由形式指标提供文件名。- 变更:fxr/1149474
- 增强了 CTF 测试,以利用新的 C++ FIDL 绑定。
- 变更:fxr/1151392
- 更新了核心测试,以支持旧版和新版内核归因模型。
工具
我们对“工具”进行了以下更新:
- 更新了
tunneling
和ninjalog
工具:tunneling
现在包含包含诊断建议的改进版错误消息,ninjalog
现在支持 Ninja 日志格式 v7。 - 在
temperature-cli
工具中添加了对获取、设置和等待温度跳转点的支持。- 变更:fxr/1159452
- 更新了
make-fuchsia-vol
,以使用商品套装作为图片文件的主要来源,并优先使用稀疏图片。 - 增强型
paver
:添加了AndroidPartitionerTest
和Vim3DevicePartitionerTest
。修复了在不受支持的块设备上出现的GetMetadata
错误。改进了测试中的storage-host
兼容性。向 FIDL API 添加了unbootable_reason
。正确报告了last-boot-attempt
并解决了不可靠的测试问题。 - 迁移了
package_manager_test
以使用前台代码库服务器,并修复了一种不稳定的测试。- 变更:fxr/1152419、fxr/1156058
- bug:fxb/372686760
- 由于存在问题,还原了从转移清单中复制 blob 的更改。
- 变更:fxr/1145134
- 改进了
test_list_tool
,以便正确处理软件包清单中的文件相对 blob。- 变更:fxr/1144841
ffx
ffx
进行了以下更新:
- 更新了
ffx
,以便在发生任何非严重的 SSH 错误时重试target add
。- 变更:fxr/1149316
fx
fx
进行了以下更新:
- 向
fx create-pb-zip
添加了对商品套装参数的支持。- 变更:fxr/1157159
- 改进了
fx
命令,在强制清理后自动调用fx gen
,并添加了新命令fx rbe cleanlogs
以从fuchsia-reproxy-wrap.sh
中移除日志。- 变更:fxr/1151936、fxr/1139612
- bug:fxb/359447186
- 引入了
fx generator
,用于在双 build 目标中同步BUILD.bazel
和BUILD.gn
文件。- 变更:fxr/1152797
界面
界面进行了以下更新:
- 添加了新配置
fuchsia.ui.VisualDebuggingLevel
,让开发者能够控制调试功能,包括风景色调、Starnix 紫色屏幕和用于关闭显示屏的驱动程序绿色屏幕。ui_visual_debugging_level
现在使用可用性过渡路由,无需在与 Starnix 相关的测试中进行路由。 - 向 Starnix 添加了一项测试,用于验证在设备未打开时是否会丢弃触摸事件。
starnix-touch-test
已重构以重复使用GetTouchEventSequenceOfLen
。这简化了多读取器和紧密测试。 - 添加了一个屏保组件,该组件隐藏在标志后面,用于展示 Fuchsia 分流。
- 变更:fxr/1139416
- 为屏幕截图添加了 RGBA 支持。
- 变更:fxr/1114632
- 改进了 Scenic 配置日志记录和配置处理:更新了 Scenic 配置日志以在单行中显示,将
ChoosePreferredPixelFormat()
重命名为ChosePreferredRenderTargetFormat()
,并移除了未使用的DisplayManager::SetVsyncCallback()
方法。 - 停用了 CPU 渲染程序测试的显示组合。
- 变更:fxr/1153713
- 暂时停用了直接显示,并移除了依赖于事件的相关代码;显示屏测试现在使用 vsync 而非信号事件。
WLAN
我们对 WLAN 进行了以下更新:
- 改进了
Fullmac
FIDL 接口。我们将一些Fullmac
FIDL 消息转换为使用表格,以提高清晰度和 ABI 兼容性。 - 改进了 WLAN 稳定性和诊断功能。解决了不稳定的测试问题,保留了已移除接口的检查数据,并记录了统计查询超时缺陷。
- 重构了
fuchsia.wlan.common
FIDL。接口和命令已移至更具体的 FIDL。- 变更:fxr/1142592
- 改进了功耗感知管道:改进了对功耗状态的处理,并添加了管道。
- 添加了 WLAN Core 及相关基础架构的端到端测试。这包括直接与
wlandevicemonitor
互动的测试,以及适用于不含政策层的产品套件的新 build 参数。- 变更:fxr/1152113