日期:2025 年 10 月 9 日
版本:F28
已实现以下更改:
音频
针对音频进行了以下更新:
- 使用新的 FIDL API(使用 Zircon 套接字进行主机驱动的测试)对
audio_recording
服务进行了现代化改造,并对其进行了重构,以提高可靠性和简洁性。- 更改: fxr/1259507、 fxr/1292548
- 增强了音频驱动程序
signalprocessing
协议的测试覆盖范围。 这包括为拓扑、元素和状态管理添加全面的验证,以及更新虚拟音频测试驱动程序以促进这些更严格的测试。 - 改进了
ffx audio
开发者工具,使其具有更强大的play
命令、用于诊断的数据路径跟踪功能,以及更直观的device info
命令输出。 - 通过在测试用例后添加延迟来缓解间歇性
ZX_ERR_ALREADY_BOUND
失败,从而提高了audio_driver_admin_tests
的可靠性。- 更改: fxr/1279375、 fxr/1301624
- 更新了音频驱动程序测试,以验证仅支持立体声
DaiFrameFormats
(例如,I2S)正确通告仅立体声支持。- 变更: fxr/1288524
蓝牙
针对蓝牙进行了以下更新:
- 对免触摸操作配置文件 (HFP) 免触摸角色进行了重大改进
- 更改: fxr/1294025、 fxr/1292774、 fxr/1006612、 fxr/1002861、 fxr/990257、 fxr/1257844
- bug: b/42081254
- 通过以下方式改进了 RFCOMM 的稳定性和性能:实现反压机制、分离 RX/TX 数据路径,以及优化信用水位,以防止在高吞吐量场景中出现数据包丢失问题。
- 更改: fxr/1317645、 fxr/1310426、 fxr/1309362、 fxr/1309305
- bug:fxb/428738649
- 引入了新的测试功能库和
bt-affordances-server
组件,允许通过ffx bluetooth
控制蓝牙。- 更改: fxr/1273999、 fxr/1252446、 fxr/1222506
- bug:fxb/409779607
- 重构了蓝牙主机初始化,以动态方式向特定
bt-host
组件提供 HCI 驱动程序,而不是公开共享设备目录,从而提高了安全性和灵活性。- 更改: fxr/1323485、 fxr/1312284、 fxr/1321904、 fxr/1310865
- bug:fxb/369597375
- 添加了新的 FIDL API,以允许客户端与 LE 定期广播序列同步。
- 变更: fxr/1307249
- 在启动时启用低功耗模式,以减少总体功耗。
- 变更: fxr/1271388
- 通过允许更多并行测试执行,加快 A2DP 源集成测试速度。
- 变更: fxr/1328367
- bug:fxb/42148322
- 修复并启用了之前停用的 AT 命令测试,以确保这些测试作为持续集成检查的一部分运行。
- 变更: fxr/1329344
- 修正了测试
HostServer
中WatchState
的行为,使其能够作为挂起 Get 正常运行,从而提高了 GAP 测试的可靠性。- 变更: fxr/1322704
- 启用
bt-snoop-from-snapshot
工具以处理来自 Starnix bug 报告的数据- 变更: fxr/1310205
构建
针对 build 进行了以下更新:
- 使用 Bazel 而不是 GN 构建 Fuchsia IDK(可集成开发者套件),这是构建系统迁移过程中的一个重要里程碑。此变更包括移除旧版
meta.json
生成脚本,并为 SDK Atom 类别、API 区域和头文件添加新的验证。 - 修复了因 Clang 工具链版本文件跟踪方式不正确而导致增量 Bazel build 失败的严重 bug。
- 变更: fxr/1326824
- bug:fxb/432809101
- 通过将多线程 Rust 和 C++ ThinLTO 链接作业定向到更大的工作器并提高缓存命中率,改进了远程构建执行 (RBE) 性能。
- 通过在单个简化的操作中执行图片组装和产品包创建,提高了产品的 build 性能。
- 变更: fxr/1317731
- 更新了 build 再生器,以打印缓慢步骤的时序,帮助识别性能回归,并修复了导致每个 build 上不必要再生的 bug。
- 变更: fxr/1313624、fxr/1308884
- bug:fxb/427689271
- 为 RISC-V build 启用了帧指针,现在在 LTO build 期间正确使用原子(“A”)ISA 扩展。
- 变更: fxr/1265864、 fxr/1266384
- bug:fxb/42086180
钴蓝
针对 Cobalt 进行了以下更新:
- 通过将
SetSoftwareDistributionInfo
函数替换为更直接的SetChannel
,简化了渠道设置逻辑。- 变更: fxr/1330621
- 在报告定义中引入了 Cookie 桶支持,用于计算置信区间。此更改还通过将
COOKIE_BUCKET_ID
重命名为COOKIE_BUCKET
来明确命名。- 更改: fxr/1297673、 fxr/1290824
组件框架
针对组件框架进行了以下更新:
- 添加了一个新的内置调度程序组件,该组件可以动态启动工作器组件以响应功能请求。
- 变更: fxr/1245065
- bug:fxb/415968290
- 向
fuchsia.component.Realm
协议添加了GetChildOutput
函数,允许父级使用基石 API 访问子级的输出字典。- 变更: fxr/1269705
- bug:fxb/415965735
- 通过优化(例如更高效的 moniker 数据表示、延迟对象实例化和按需请求生成),显著减少了
component_manager
中的内存使用量。- 更改: fxr/1282667、 fxr/1262564
- 改进了开发者工具和可观测性。
ffx component doctor
命令现在可以检查字典内容,可以为组件启用堆转储插桩,并且组件实例 ID 现在通过检查公开。 - 修复了以下崩溃问题:当组件向不同来源(例如
parent
和framework
)公开两个具有相同目标名称的功能时,会发生崩溃。- 变更: fxr/1294625
- 将从 bootfs 创建的 VMO 标记为不可调整大小,从而提高效率并防止映射失败。
- 变更: fxr/1328664
- bug: b/293969808
- 使
fuchsia.time.UtcClock
可进行内存映射,以便从对性能敏感的组件(如 Starnix)更高效地读取时钟。- 变更: fxr/1295066
- 更新了组件管理器的沙盒实现,以使用现代
fuchsia.io/Directory.Open
方法,从而提高了与最新fuchsia.io
服务器的兼容性。- 变更: fxr/1319626
- bug:fxb/324111518
- 将
full-resolver
组件合并到了pkg-resolver
中。此合并通过从核心集中移除一个组件来减少 eng build 的内存占用。- 变更: fxr/1274091
诊断
针对“诊断”功能进行了以下更新:
- 通过以下方式改进了 Archivist 的可靠性和性能:使用新的 panic 钩子、为内部日志缓冲区使用更高效的
IOBuffer
,以及将串行日志写入移至专用线程以防止阻塞。- 更改: fxr/1329884、 fxr/1291128、 fxr/1319904
- bug:fxb/319500512
- 为日志记录服务实现了一个新的
Flush
方法,以确保写入所有缓冲的日志,同时还解决了 Archivist 中潜在的终止问题。- 更改: fxr/1322376、 fxr/1324244
- 增强了读取检查数据的功能,使其能够更好地应对无响应的组件。 现在,超时会应用于延迟节点的各个 FIDL 连接,从而防止单个缓慢节点阻塞整个快照。
显示
展示广告方面进行了以下更新:
- 将
ti-lp8556
和vim3-pwm-backlight
驱动程序迁移到 DFv2,用已公布的 FIDL 服务替换了 devfs 节点,以改进组件交互。- 更改: fxr/1323445、 fxr/1323684
- 通过以下方式提高了显示屏协调器的稳定性:统一其线程处理模型,确保同步客户端拆解以防止出现释放后使用错误,并修复了映像清理竞态条件。
- 更改: fxr/1328164、 fxr/1328809、 fxr/1329630
- bug:fxb/336394440
- 通过引入多个 FIDL 适配器(
EngineListener
、DisplayEngine
)和一个统一的EngineListener
接口来抽象化底层协议,进一步推进了从 Banjo 到 FIDL 的显示驱动程序接口迁移。 - 通过重命名不明确的类型(例如将
DisplayMode
重命名为DisplayTiming
)、移除冗余的BufferId
结构体以及简化CheckConfig()
方法,简化了显示 FIDL 和 Banjo API。 - 通过以下方式增强了 VSync 处理:要求所有显示驱动程序的所有 VSync 事件都具有有效的配置戳记,并移除了客户端在启用 VSync 后选择停用 VSync 的未使用功能。
- 变更: fxr/1329640、 fxr/1332953
- bug:fxb/401388764、fxb/316631158
- 通过拒绝空配置、强制执行驱动程序声明的
max_layer_count
并添加对为颜色层指定display_destination
的支持,加强了配置验证。 - 通过向众多显示 API 类型添加
std::format
支持,并使用更好的类型安全性和转换模式对内部api-types
C++ 库进行现代化改造,改善了开发者体验。- 变更: fxr/1332459、 fxr/1319064
- bug:fxb/314126494、fxb/430957800
驱动程序框架
针对驱动程序框架进行了以下更新:
- 通过移除许多已弃用的 DDK 函数和元数据 ID,继续从 DFv1 迁移。这包括移除
device_add_metadata
、configure_auto_suspend
和旧版元数据常量(例如DEVICE_METADATA_WIFI_CONFIG
)。 - 修复了驱动程序节点稳定性方面的问题,方法是确保在驱动程序宿主意外关闭时,驱动程序节点能够得到妥善隔离。
- 变更: fxr/1319550
- 继续将驱动程序迁移到 DFv2,包括
aml-pwm
、aml-nna
和aml-meson-power
。i2c-channel
库也已更新为与 DFv2 兼容的版本,以支持新式驱动程序。 - 启用驱动程序组件以实现新的
Suspendable
特征,从而添加可选的挂起和恢复生命周期钩子。- 变更: fxr/1307009
- 通过移除多个已弃用的子命令(包括
device
、lspci
、lsusb
和run-tool
)并添加一个符合人体工程学的新node
子命令,简化了ffx driver
插件。 - 通过以下方式增强了 Rust 驱动程序生态系统:使用新的
PlatformDevice
特征来改进对伪平台设备的测试;使用辅助方法来解析启动实参中的驱动程序配置;使用mock-mmio
crate 来支持模拟 MMIO 操作。- 更改: fxr/1315256、 fxr/1304086
- 通过主动生成新线程来检测和缓解停滞线程,以确保向前进展,并将停滞计时器检查与实际停滞时长对齐。
- 更改: fxr/1153333、 fxr/1327293、 fxr/1309497
- bug:fxb/42085539
- 修复了平台总线驱动程序中默认 IRQ 模式未正确配置的问题,该问题可能会导致电平触发中断失败。
- 变更: fxr/1294323
- 为互连引入了新的核心驱动程序和 FIDL 库。该系统可管理和汇总来自多个客户端的带宽请求,并将其发送给单个供应商驱动程序,从而简化硬件交互。
- 变更: fxr/1261365、 fxr/1261364
反馈
我们针对反馈功能进行了以下更新:
- 产品现在可以通过配置文件从快照中排除特定注释。这样可以减少不相关的数据,并避免收集不可用的注释时出现错误。
- 添加了多个新注解以改进诊断,包括
device.total-suspended-time
、system.last-reboot.total-suspended-time
、system.last-reboot.runtime
和build.platform.utc-backstop
。 - 使用
weight
参数增强了crash_reporter
FIDL API,从而允许单个崩溃报告表示多次发生。- 变更: fxr/1286646
- 还原了从 JSON 到 FXT 格式的切换,以解决提取日志时的性能问题。
- 变更: fxr/1275450
- bug:fxb/389545819
- 通过以下方式改进了诊断功能:在系统日志记录器的关机消息中添加时间戳,并在因缓存空间不足而暂时存储报告时进行记录。
- 为
sysinfo_feedback_id
添加了新的配置选项。- 变更: fxr/1326965
- bug:fxb/427264599
- 修复了向 Cobalt 报告的重启原因不正确的问题。
- 变更: fxr/1322850
- bug:fxb/424646831
- 更新了反馈,以根据当前注释数量(而非旧注释数量)进行检查。
- 变更: fxr/1294865
- bug:fxb/422177087、fxb/373463212
- 重构了编辑测试,以提高清晰度和可维护性。
- 更改: fxr/1329428、 fxr/1328804
- bug:fxb/383378552
FIDL
针对 FIDL 进行了以下更新:
- 通过将生成的函数正文移出头文件并移入单个源文件,优化了 C++ FIDL 代码生成,以缩短构建时间。此更改可显著加快 C++ 目标的编译速度。
- 变更: fxr/1265227
- bug:fxb/361634289
- 扩展了 ABI 兼容性检查器,使其可针对所有类别的 SDK FIDL 库运行,从而提高 API 稳定性保证。
- 变更: fxr/1261524
固件
固件进行了以下更新:
- 实现了一种用于传递引导加载程序文件的标准机制。现在,可以使用
/chosen/google/bootloader-files
devicetree 节点将引导加载程序文件(例如 SSH 密钥)传递给 Fuchsia。一项相关修复可确保这些文件的暂存区得到正确对齐。
GPU 和图形
针对 GPU 和图形进行了以下更新:
- 为 GPU 客户端引入了可信路径,允许 Scenic 等可信组件请求更高的 GPU 调度优先级。这包括新的
fuchsia.vulkan.loader.TrustedService
、可信的 Magma FIDL 协议,以及用于简化设备发现的新magma_enumerate_devices
API。 - 在整个图形堆栈中添加了对
STRAIGHT_ALPHA
混合模式的支持,从而可以渲染未与 Alpha 预乘的源像素。这包括 Flatland 中的新BlendMode2
和对 Vulkan 命令缓冲区流水线的更新。- 更改: fxr/1317804、 fxr/1326845
- 通过将
msd-arm-mali
驱动程序迁移到 ElementRunner 协议并在 Magma sys_driver 中创建通用电源管理器来处理电源状态请求,改进了 GPU 驱动程序的电源管理。- 更改: fxr/1327299、 fxr/1303184
- 为 Vulkan 交换链添加了对立即呈现模式的支持,该模式允许客户端以渲染帧的速度推送帧,因此非常适合用于基准比较。
- 变更: fxr/1234054
- 更新了预构建的 Arm Mali ICD,以纳入各种改进,包括支持
VK_FORMAT_A2B10G10R10_UNORM_PACK32
格式和其他稳定性修复。 - 通过修复 use-after-free bug 并添加逻辑来主动取消反复导致硬件错误的客户端连接,提高了
msd-arm-mali
驱动程序的稳定性。 - 已迁移 Magma 驱动程序测试以使用标准驱动程序测试夹具和
fdf::AddOwnedChild()
,从而使测试更易于编写和读取。- 变更: fxr/1290424
- bug:fxb/328305994
本地化
针对 I18n 进行了以下更新:
- 更新了 Fuchsia 的本地化导出。
- 变更: fxr/1273986
IoT、Matter 和 Thread
针对 IoT、Matter 和 Thread 进行了以下更新:
- 着陆低 pan ePSKc(用于调试的增强型预共享密钥)已更改,包括更新 OpenThread 依赖项、添加 Rust 绑定和与 FeatureConfig 服务集成。不会为 F28 启用该功能。
- 更新了 LoWPAN 无线电平台以处理 OpenThread 状态变化,并启用了 CSL(协调采样监听)发射器功能。
- 更改: fxr/1316006、fxr/1315585
- bug:fxb/424092850
- 通过在发布服务失败时实现重试机制,提高了 LoWPAN 边界代理的可靠性。
- 变更: fxr/1255430
- 通过将 Weave 中的虚假目录文件设为只读来提高安全性。
- 变更: fxr/1327164
- bug: b/334892038
内核
针对内核进行了以下更新:
- 增强了 ARM64 上的 CPU 暂停和恢复功能。通过与 PSCI
CPU_SUSPEND
接口集成,并为 GICv3 中断控制器和平台计时器添加挂起/恢复钩子,引入了对 CPU 挂起的支持。为了改进诊断,引入了一个用于报告系统唤醒源的新 API。 - 引入了更高效的压缩网页存储系统。将
VmTriPageStorage
实现替换为新的基于 slot 的系统,该系统可将内存存储开销从约 24% 大幅减少到约 5%。
Netstack
针对 Netstack 进行了以下更新:
- 针对 IPv4 实现了重复地址检测 (DAD)。DHCP 客户端现在使用此功能来防止新获取的地址发生 IP 冲突。
- 引入了
fuchsia.net.settings
FIDL API,用于动态配置网络设置,例如接口默认值和套接字缓冲区大小。- 变更: fxr/1298364
- bug:fxb/423607755
- 在 Netstack3 中为入站和出站数据包启用了 eBPF 过滤条件支持,从而可以进行高级数据包检查和操作。
- 变更: fxr/1291250
- bug: b/407809292
- 将 socket-proxy 组件设为关键组件,导致设备在终止时重新启动,以确保套接字可用性和系统稳定性。
- 变更: fxr/1329389
- 添加了用于管理接口本地路由表的 FIDL 支持,从而实现更精细的路由控制。
- 变更: fxr/1286598
- Bug:fxb/417225664
- 在 Netstack3 中实现有序关闭路径,以确保组件干净可靠地终止。
- 变更: fxr/1255691
- 在 Netstack3 中为非关键传输协议引入了动态序列化程序,显著缩短了编译时间并减小了二进制文件大小。
- 变更: fxr/1324946
- 为 json5 配置文件启用了 Netcfg 支持,通过注释和尾随逗号等功能提高了可读性和可维护性。
- 变更: fxr/1309304
- 阻止 Netstack3 转发具有链路本地地址的 IPv6 数据包,符合 RFC 4291。
- 变更: fxr/1318785
- 修正了 TCP 窗口大小计算中的一个 bug,该 bug 可能会导致出现窗口大小过大的 panic。
- 变更: fxr/1282284
- 修复了快速停止和启动重复地址检测时可能导致出现紧急状况的竞态条件。
- 变更: fxr/1306724
- 增强了 Netlink 子系统,以支持非受管的接口本地路由表。现在,当添加 IP 地址时,它不再安装
/0
和/32
子网路由,从而更贴近 Linux 行为。- 变更: fxr/1329160、 fxr/1316944
- bug:fxb/427226662、fxb/430063324
平台驱动程序
平台驱动程序进行了以下更新:
- 将 DWC3 USB 驱动程序大幅重构为单线程模型,以简化锁定并接收端点状态跟踪方面的修复。添加了对互连资源上的调节器绑定和投票的支持。
- 引入了新的核心互连驱动程序,用于管理和汇总总线带宽请求。还改进了时钟和中断的 Devicetree 访问者,以实现更强大的硬件发现功能并支持可唤醒的中断。
电源管理
针对电源管理进行了以下更新:
- 迁移了多个电源驱动程序和组件以使用
ElementRunner
协议,该协议反转了与 Power Broker 的客户端/服务器关系,从而简化了电源电平管理。这包括 UFS、msd-arm-mali、aml-sdmmc、sdmmc 和 timekeeper 组件。 - 增强了电源管理和暂停功能,新增了用于报告系统唤醒源的 API,通过 PSCI 支持更深层次的省电状态,并实现了更精细的 CPU 电源控制。为了改进诊断,系统活动调节器现在会跟踪累计暂停时间。
- 改进了 SDMMC 驱动程序,以实现更好的电源管理和暂停/恢复处理。它现在可以发送关机通知、正确探测 eMMC 设备并在恢复时重置总线设置,并且
aml-sdmmc
驱动程序已迁移到ElementRunner
电源管理协议。 - 对驱动程序电源管理库进行了重构,以显著改进唤醒租用,从而提高清晰度、正确性和易用性。这包括重命名类、明确手动租约和基于超时的租约之间的责任,以及修复与暂停/恢复周期中的租约失效相关的 bug。
- 通过向 Inspect 添加更多数据,增强电源管理可观测性和诊断能力。这包括历史温度传感器读数、Starnix 唤醒锁定的来源和有效 epoll 计数,以及 FSH 驱动程序的启动/单调时钟偏差。
- 引入了新的
poweroff_for_shutdown
配置,以允许电源管理器在关机过程中关闭设备,而不是重新启动。- 变更: fxr/1270326
- 使存储电源管理依赖于
fuchsia::suspending_token
,以防止设备进入不可挂起状态。- 变更: fxr/1307644
Rust
Rust 进行了以下更新:
- 对
fuchsia-async
进行了重大改进,包括用于创建执行器的新构建器模式、对Scope
中协同取消的支持,以及用于处理硬件中断的OnInterrupt
流。将任务取消方法从cancel()
重命名为abort()
,以与新的取消语义保持一致。- 更改: fxr/1333172、 fxr/1319645、 fxr/1252944、 fxr/1266484
- bug:fxb/379944929
- 增强型工具:
fx clippy
现在接受 glob 模式和额外的标志,并且主机端 Rust 测试在失败时会生成符号化回溯,以便更轻松地进行调试。
软件交付
我们针对软件交付进行了以下更新:
- 启用了一种新的“无软件包”无线下载 (OTA) 更新流程。系统更新程序现在可以从 HTTP/S 网址提取清单,以下载、暂存和提交更新,从而无需使用传统的更新软件包。
- 在软件包清单和
assembled_system.json
中添加了 ABI 修订版本,以便更轻松地识别哪些软件包使用了哪些 ABI 修订版本。- 变更: fxr/1328584
- 将
pkg-cache
内存用量优化了 690 KiB 以上。这是通过切换到更节省内存的内部数据结构并避免不必要的数据复制来实现的。- 更改: fxr/1313808、 fxr/1312425
- 引入了新 API,以便更直接地控制 Blob。
pkg-cache
和pkg-resolver
组件现在具有新的 API(RetainedBlobs
、WriteBlobs
、FetchBlob
),可更直接地控制 blob 提取和垃圾回收。- 更改: fxr/1311006、fxr/1297504
- bug:fxb/423063230
Starnix
针对 Starnix 进行了以下更新:
- 为崩溃报告引入了节流机制,以减少崩溃循环进程造成的系统负载。如果某个进程在 8 分钟内崩溃超过 8 次,后续报告将受到节流限制。
- 变更: fxr/1286224
- 添加了对
io_cancel
系统调用的支持,从而实现异步 I/O 取消。- 变更: fxr/1322639
- 在
FileObject
上针对get-memory
和mmap
强制执行了noexec
装载选项。- 变更: fxr/1319384
- 针对 FsNode 访问检查实现了
CAP_DAC_READ_SEARCH
功能- 变更: fxr/1329465
- 通过为众多操作(包括信号继承 (
siginh
)、文件系统装载 (mounton
) 以及各种套接字和 binder 操作)实现权限检查,加强了 SELinux 执行。- 更改: fxr/1325222、 fxr/1319305
- 修正了与 syslog 相关的操作(
/dev/kmsg
、/proc/kmsg
、syslog(2)
)的权限检查,以与现代 Linux 行为保持一致。- 变更: fxr/1304324
- 为私有匿名内存启用了 VMO 优化。还修复了
smaps
生成,以支持此功能,从而提高内存效率。- 变更: fxr/1275449
- 通过多项更改提高了性能并改进了内存使用情况,包括启用链接时优化 (LTO)、减小内部
Mapping
结构的大小,以及添加clean_stack
函数以取消提交未使用的堆栈页面。 - 更新了
devpts
文件系统,以支持多个独立实例,每个实例都使用newinstance
装载选项拥有自己的一组伪终端。- 变更: fxr/1320144
- 通过基于启动时间轴(包括在挂起状态下花费的时间)来报告
/proc/uptime
中的系统正常运行时间,使其与 Linux 行为保持一致。- 变更: fxr/1263064
- 增强了 eBPF 支持,并添加了多项新功能,包括 32 位内存操作、UDP 发送/接收钩子、套接字选项钩子和多项新的辅助函数。
- 修复了 binder 错误回复的罕见问题,即这些回复可能会被无序处理,导致从堆栈中弹出错误的事务。
- 变更: fxr/1273164
- 通过在单个
ioctl
调用中收集所有要返回的写入内容,优化了远程 Binder 通信,从而减少了 FIDL 流量。- 变更: fxr/1309944
- 更新了任务优先级和 nice 值处理,以更好地与 Linux 行为保持一致,包括适当的
RLIMIT_RTPRIO
强制执行,现在默认值为零。- 变更: fxr/1286324
- 为
fastrpc
和dmaheap
添加了新模块,以向 Starnix 应用提供跨处理器 RPC 功能。- 变更: fxr/1249785
存储
存储空间进行了以下更新:
storage-host
改进。这项工作包括在装载之前使用 fsck 检查数据卷、在恢复出厂设置期间添加对粉碎加密卷的支持,以及将核心存储驱动程序移至程序集软件包以减小映像大小。- 启用 Fshost 以支持使用语义标签匹配和路由块设备。这样,就可以将特定分区静态路由到组件,从而无需直接访问
/dev/class/block
。- 更改: fxr/1322865、 fxr/1298085
- bug:fxb/417772975
- 对 fxfs 进行了多项性能和可靠性改进,包括根据内存压力动态调整预读大小、更高效的刷新逻辑,以及确保正确发出 I/O 屏障。
- 为 fxfs 添加了新功能,包括支持通过
BlobCreator
协议覆盖现有 blob,以及初步支持将 blob 卷流式传输到磁盘。- 更改: fxr/1284252、 fxr/1288725、 fxr/1263965
- bug:fxb/397501864
- 将 C++ VFS 和存储一致性测试迁移到现代
fuchsia.io
(io2) API,弃用旧版 io1 方法。 - 改进了 F2FS,初步支持在 FVM 上运行、基于映像的 Linux 兼容性测试,并增加了默认的最小文件系统大小。
- 增强了块层和相关驱动程序。这包括重新启用直通 I/O、在块协议和 ramdisk 驱动程序中添加对 I/O 屏障的支持,以及将 UFS 电源管理迁移到
ElementRunner
。- 更改: fxr/1324984、 fxr/1281444、 fxr/1264004、 fxr/1263624
- Bug:fxb/402515764
- 为只读 ext4 驱动程序添加了对
64bit
标志的基本支持,使其能够装载具有更大块组描述符的文件系统。- 变更: fxr/1298007
- bug:fxb/42073143
测试
以下是针对测试进行的更新:
- 对 Honeydew 端到端测试框架进行了多项增强,包括用于控制 USB 电源的
UsbPowerHub
设备、用于测量电源的重命名powerserver
库、新的音频和场景功能、改进的会话清理机制,以及在修复了不稳定性来源后重新启用了屏幕截图断言。 - 对调试器端到端测试进行了多项改进,以提高稳定性,包括改进命令-输出同步、支持无序输出匹配、添加更多日志记录,以及暂时停用 DebugAgent 集成以减少日志垃圾内容。
- 添加了新的 Lacewing 端到端测试,以验证设备在收到重启指令时是否会以预期原因重启。
- 变更: fxr/1319705
- 添加了新的 IPC 基准,用于比较传输大型消息的不同方法,包括
BatchStream
的特定基准。- 更改: fxr/1317707、 fxr/1298804
- bug:fxb/424251793
计时
针对时间管理功能进行了以下更新:
- 引入了唤醒闹钟模拟,以便在缺少硬件支持的平台上提供一致的
fuchsia.time.alarms
API。- 更改: fxr/1278651、 fxr/1278650
- 添加了
WakeAlarms.Set()
API,该 API 使用监听器模式作为SetAndWait
的替代方案,以更好地支持可托管的组件安排唤醒。- 更改: fxr/1312970、 fxr/1297351
- bug:fxb/424009669
- 更新了 Timekeeper 以使用网络可达性服务,从而避免在没有网络连接时尝试同步时间,进而减少耗电量。
- 更改: fxr/1263009、 fxr/1274168
- 通过修改
SetAndWait
签名来改进唤醒租约管理,并移除了未使用的GetProperties
和CancelSync
方法,更新了fuchsia.time.alarms.Wake
API。- 更改: fxr/1286527、fxr/1289365
- Bug:fxb/419860677
- 通过修复潜在的计时器比较溢出问题、确保 Timekeeper 等待
hrtimer
枚举以及防止因时钟 ID 重复而导致的启动失败,提高了时间和闹钟服务的稳健性。 - 启用了从已供电的外围设备获取启动时间的功能,从而允许时间在重新启动后保持不变。
- 变更: fxr/1289542
- 将 Timekeeper 迁移到新的
ElementRunner
协议,以改进电源管理集成。- 变更: fxr/1241004
工具链
针对工具链进行了以下更新:
- 将 Clang 和 Rust 工具链更新到了最新版本。
- 变更: fxr/1327414
- bug:fxb/432745920
工具
针对工具进行了以下更新:
ffx
针对 ffx 进行了以下更新:
- 通过
-d
或--direct
标志启用了一种新的直接连接模式,从而允许许多命令在没有守护程序的情况下连接到目标。这包括改进了ffx target list
的行为,并针对特定于守护程序的命令进行了适当的错误处理。 - 添加了用于管理窗口的新
ffx wm
工具,其中包含用于list
、focus
、cycle
和set_order
窗口的子命令。- 变更: fxr/1115713
- 更新了
ffx target flash
命令以显示进度指示器,并向ffx target snapshot
添加了新的--upload
选项,以将快照上传到 GCS 存储分区。- 变更: fxr/1311604、 fxr/1303306
- 移除了用于管理默认目标的旧版方法,并废弃了
ffx target default {set, unset}
命令和fx -d
标志。- 变更: fxr/1326187
- 修复了多个稳定性问题,包括并发 SSH 连接可能出现的死锁以及等待远程控制代理时出现的超时问题。
- 移除了
ffx agis
命令。- 变更: fxr/1314044
fx
针对 fx 进行了以下更新:
- 增强了用于管理产品套装的
set-main-pb
工具,提供基于文本的用户界面 (TUI),以便更轻松地进行选择,并按字母顺序对套装列表进行排序。- 变更: fxr/1294864、 fxr/1332954
- 启用
fx
以针对输入错误的命令提供实用建议。- 更改: fxr/1271284
- bug:fxb/402762037
- 添加了新的命令行标志,包括
fx build
的--quiet
、fx create-pb-zip
的压缩级别标志 (-c
) 以及用于在fx qemu
中跳过 SSH 密钥修补的选项。 - 使用预构建版本的
jq
并修复了fx rbe auth
的身份验证问题,使fx
环境更加可靠。- 变更: fxr/1307764、 fxr/1322424
- 移除了
fx create
的已弃用标志--with-base
。- 变更: fxr/1316251
- 改进了开发者工作流程:在
fx serve
中实现了自动端口转发,并提供了一个共享库来消除打包工具之间重复的网址提取逻辑。- 更改: fxr/1272397、fxr/1322724
- bug:b/430504024
zxdb
针对 zxdb 进行了以下更新:
- 改进了 zxdb 调试器,添加了对
std::span
的 PrettyType 支持,并修复了display
命令以遵循配置的整数格式。- 更改: fxr/1312304、 fxr/1312344
- bug:fxb/427471530
跟踪记录
以下是针对跟踪功能进行的更新:
- 针对流式模式显著优化了
ktrace_provider
,可减少延迟时间、实现更一致的轮询、加快启动速度,并更高效地读取内核缓冲区,从而提高轨迹数据可靠性。 - 通过
ffx trace
为流式跟踪记录启用设备端缓冲,以便在会话结束时传输数据,从而减少收集期间的 CPU 开销。- 更改: fxr/1260408、 fxr/1260407
- bug:fxb/413106095
- 为 FXT 轨迹格式添加了新的 blob 实参类型,用于嵌入不透明数据。此外,还提供了一个新的
fxtdump
主机工具,用于检查和调试 FXT 文件。- 更改: fxr/1277747、 fxr/1313809
- bug:fxb/433532694
- 优化了
trace2json
工具,使其通过采用双遍读取方法和缓冲输出流,可显著减少内存使用量并提高高达 40% 的运行速度。- 更改: fxr/1328611、 fxr/1319010
- 通过启用实参内部化来减小轨迹大小,并通过优化锁使用来缩短 ATrace 事件的写入时间,提升了 Rust 轨迹记录性能。
- 更改: fxr/1314092、 fxr/1304684
- 更新了轨迹引擎,以使用新的、更正确且可测试的滚动缓冲区实现,从而修复竞态条件。
- 变更: fxr/1307311、 fxr/1307310
- bug:fxb/303666620
界面
界面方面进行了以下更新:
- 显著改进了 Scenic 的性能和诊断功能。
这包括新的跟踪工具(
scenic_session_present
、run_graphics_metrics
)、针对直接显示故障的更出色的诊断功能、对帧预测逻辑的修复,以及通过增加 Escher 的清理间隔来提升性能。 - 添加了对新 Vulkan 映像格式的支持。Scenic 现在支持
A2B10G10R10UnormPack32
和R8Unorm
。- 变更: fxr/1298006
- 为 Flatland 添加了帧计数器叠加层,以便进行可视化调试。可以通过组件配置或设置
visual_debugging_level
来启用该功能。- 更改: fxr/1295168、 fxr/1321784
- bug:fxb/423066970
- 将 Scenic 支持的硬件显示层数量上限从 1 增加到硬件支持的上限,因为之前的软件限制已得到解决。
- 变更: fxr/1275807
- bug:fxb/42078234、fxb/370839049
- 通过从后台线程发出信号,修复了 Escher 外部信号量测试中的死锁,从而提高了 Lavapipe 和 Goldfish 上的测试可靠性。
- 变更: fxr/1330684
视频
视频功能进行了以下更新:
- 移除了对已弃用的
ulib/syslog
的依赖项。- 变更: fxr/1329004
WLAN 和连接
针对 WLAN 和连接进行了以下更新:
- 对 WLAN PHY 重置和恢复机制进行了重大改进,现在允许
wlancfg
在系统处于降级状态时触发重置,从而提高整体稳定性。- 更改: fxr/987896、 fxr/1283689
- 引入了对 WLAN PHY 关闭和开启的支持。这包括用于电源管理的新 FIDL 方法,以及确保驱动程序在启动后正确重新初始化。
- 变更: fxr/1263044
- 启用
netcfg
以通过新的fuchsia.net.policy.properties
FIDL API 向socket-proxy
报告网络状态,包括默认网络更改和 DNS 配置。- 更改: fxr/1306906、 fxr/1165212、 fxr/1211044
- bug:fxb/385368910
- 通过使用正确的信道带宽来减少
NO_NETWORK
失败,并使用更有效的取消身份验证命令来清除失败后的连接状态,改进了 Broadcom Wi-Fi 驱动程序的连接稳定性。 - 修复了导致 Wi-Fi 扫描在繁忙环境中无法正常运行的 bug。
扫描结果现在以 VMO 形式发送,以避免达到 FIDL 消息大小限制。
- 变更: fxr/1305664
- 通过过滤潜在的漫游目标来确保兼容的安全保护,并修复了阻止漫游到 WPA1/WPA2 混合模式网络的 bug,使 WLAN 漫游更加可靠。
- 更改: fxr/1295065、 fxr/1281584
- 显著增强了 WLAN 遥测功能,可记录更详细的指标,包括断开连接原因、扫描性能、连接时长、RX/TX 统计信息和恢复事件。