日期:2026 年 4 月 7 日
版本:F30
无障碍设置
针对无障碍功能进行了以下平台更新:
- 增强了无障碍日志记录功能。针对多指和多点按缩放操作扩展了日志记录,以改进放大功能的调试。
音频
针对音频进行了以下平台更新:
PacketStream API 和 FIDL 改进。引入了
PacketStreamAPI,以支持 AAC 和 SBC 等编码音频流式传输格式。为了支持非 PCM 音频格式,更新了 FIDL 协议,引入了可扩展的联合 (Format2/SupportedFormats2),并弃用了Composite协议的封闭版本,转而使用新的开放版本。新增了大量诊断和检查功能。扩展了驱动程序和 AudioDeviceRegistry (ADR) 的检查诊断功能,以纳入环形缓冲区指标、调度延迟和时钟域注释。这些新增内容会按会话保留,并进一步汇总到新的 diagnostics_summary 部分,从而显著改进开发者问题排查和性能分诊。
FFX 音频 CLI 工具改进。增强了
ffx audioCLI 工具,在设备信息输出中显示设备名称,并修复了帮助中的文本渲染错误。此外,ffx audio play现在可以正确地将无障碍输入路由到Accessibility使用模式,而不是Background。性能优化和驱动程序修复。重新为音频目标启用了链接时优化 (LTO),以提升性能。此外,通过在
aml-g12驱动程序中强制执行连续 VMO 大小的页面舍入,修复了驱动程序兼容性问题,以符合更严格的系统调用 API 要求。
蓝牙
针对蓝牙进行了以下平台更新:
可配置的 RFCOMM 最大数据包大小。基于每个 DLC 协商
max_packet_size,以正确符合 RFCOMM 5.5.3 规范。- 变更:fxr/1423394
- bug:b/460778521
在 BondingData 中持久保留设备类。向
BondingDataFIDL 结构体添加了一个可选的设备类别字段,使bt-gap能够在系统重启后保持该字段的值。- 更改:fxr/1448211、fxr/1449228
- bug:b/468338802
AVRCP 连接和音量。通过按需启动 AVRCP 控制和浏览连接来提高效率,并集成
bt-avrcp-vol- control组件以轻松管理客户端的音量控制MAP OBEX 连接稳定性。通过在 MAS 传输连接后立即启动 OBEX
CONNECT并正确等待客户端启动的 OBEXDISCONNECT,提高了设备兼容性。- 变更:fxr/1207450、fxr/1116474
- bug:b/367378534
Sapphire Autosniff bug 修复。通过在主动配对期间和 A2DP 处于活动状态时抑制
autosniff行为,解决了某些头戴式耳机出现的严重音频跳过问题。- 变更:pwrev/367232、pwrev/353273
- bug:b/448184260
Sapphire 数据包过滤增强功能。向
AdvertisingPacketFilter::Config添加了明确的传送模式,并强制执行默认 RSSI 下限,以防止控制器错误地忽略有效对等设备。基础架构和可观测性更新。添加了新的程序集配置,以动态将配置文件请求路由到
bt-rfcomm,并针对 GATT 配置文件发现失败引入了诊断跟踪。
构建
针对 build 进行了以下更新:
为 Rust 启用了 LTO,并清理了优化配置。 默认情况下,将扩展的链接时优化 (LTO) 应用于 Rust 代码库,以提高运行时性能并减小二进制文件大小。还针对特定核心目标启用了 LTO,现在可以单独调整优化级别。
将构建系统迁移到了 Rust 2024 版。更新了全局 Rust 工具链配置,以利用新版并为 Rust 二进制文件设置
max- page-size链接实参。高级 Bazel 迁移和改进的 IDK 工具。引入了新的 Bazel 规则,以简化 IDK 预构建,并从 SDK 中移除了已弃用的
fuchsia_fidl_llcpp_library()规则。调试符号现在在首次bazel build期间生成,以节省开销。从构建系统中移除了旧版 macOS 支持。从工具链、测试脚本、映像定义和 SDK 生成封装容器中移除了 macOS 兼容性配置。
向 Build API 添加了新的客户端命令。引入了
affected_tests和should_file_changes_trigger_build,以识别受影响的测试并智能地触发基础设施构建。我们还改进了file_to_test_package工具,使其使用gn refs以提高精确度。提升了构建图性能和远程执行稳定性。通过使用经验性 build 数据为 Ninja 边权重设定初始值来优化任务调度,并为重复的 GN 输出添加了错误检查。解决了 Breakpad 符号生成方面的增量 build 问题,并支持通过 RBE 在 C++ 编译中远程使用
fsatrace。
钴蓝
Cobalt 进行了以下更新:
Rust 2024 迁移。已将 Cobalt 代码库迁移到 Rust 2024 版。
- 变更:fxr/1451488
- bug:b/461906397
将 STRUCT 字段标记为实验性。将标记为
STRUCT的指标和报告字段标记为实验性,以避免使用混淆;开发者应避免使用这些字段。- 变更:fxr/1426694
修复了同步脚本。解决了
sync_with_fuchsia.py辅助脚本的问题。- 变更:fxr/1451649
组件框架
针对组件框架进行了以下更新:
增强了 fuchsia.component.sandbox。更新了
DirConnectorAPI 以支持传递标志和子目录,并向CapabilityStore添加了CreateServiceAggregate。功能路由需要指定目标。功能路由现在明确要求指定目标 (
WeakInstanceToken),以确保在组件图中始终能够准确识别请求的发起者。- 变更:fxr/1430014
组件控制器更新。向
fuchsia.component.Controller添加了OpenExposedDir,从而可以直接从子组件的控制器打开其公开的目录。- 变更:fxr/1432594
CML target_availability 功能。在
cmc中引入了target_availability,以在编译期间省略功能提供,前提是其目标已从组装的清单中排除。- 变更:fxr/1378207
- bug:b/447668986
检查日志记录中是否存在路由错误。Component Manager 现在公开了一个
routing_errorsInspect 节点,用于捕获最近的路由失败,以便更好地进行设备端诊断。- 变更:fxr/1477081
- bug:b/361087159
严格的 bootfs 条目处理。如果组件管理器无法从
userboot接收bootfs条目,现在会立即退出,而不是继续执行启动序列。- 变更:fxr/1393914
StorageAdmin 协议已弃用。将
fuchsia.sys2.StorageAdmin协议移至fuchsia.component.StorageAdmin协议。此更改允许在 fuchsia.git 之外使用fuchsia.component.StorageAdmin。- 变更:fxr/1449068
默认情况下,在工程 build 上停用了跟踪。在 eng build 的组件管理器中默认停用了跟踪,以防止因阻塞
trace-providerIPC 而导致随机启动停滞。需要此功能的开发者可以通过汇编标志重新启用跟踪。- 变更:fxr/1420222
- bug:b/461878941、b/458746554
诊断
针对“诊断”功能进行了以下更新:
归档程序和日志记录弹性。通过修复组件关闭期间的竞态条件并防止因格式错误的数据导致的缓冲区溢出,提高了日志记录的可靠性。此外,通过将 Syslog 缓冲区移至堆,减少了内存用量。
检查框架增强功能。解决了涉及回调调用的检查死锁问题,并直接向检查添加了组件管理器路由错误跟踪。我们还引入了一个新的
PrintAll测试实用程序,以简化调试检查层次结构。采样器和采样 API 大修。重构了采样器以使用
fuchsia.diagnostics.Sample。这样可将差异比较工作分流到 Archivist,并使用事件代码有效消除具有相同 ID 的指标的歧义。诊断持久性重新设计。弃用了
DataPersistence协议,并将其移除,转而使用fuchsia.diagnostics.Sample。为了更好地保留崩溃调试数据,持久性不再在保存后删除数据,现在可以正确处理生命周期Stop事件,以便更快地终止。内存监控器优化。显著提升了内存收集的性能和准确性,包括压缩内存快照,将载荷大小从 17.5 MiB 减少到 1.2 MiB。通过跳过冗余的 Starnix VMO 枚举并修复重复计数问题,还提高了 CPU 使用率和收集速度。
诊断工具更新。
ffx heapdump工具现在支持同时分析多个进程,而 32 位分析器则获得了基于 DWARF 的堆栈采样功能。此外,ffx diagnostics现在会在 SSH 验证期间将 HTTP 失败显示为警告,而不是严重错误。
显示
针对展示广告进行了以下更新:
修复了显示引擎事件中的竞态条件。添加了同步功能,以防止协调器和引擎驱动程序之间的并发访问导致潜在的驱动程序崩溃。
- 变更:fxr/1462709
- bug:b/472347498、b/473698115
更新了 Intel 显示屏的页面大小确定方式。从
intel-display驱动程序中移除了硬编码的PAGE_SIZE常量,并将其替换为运行时页面大小确定,以支持 RFC 0016。- 变更:fxr/1418928
- bug:b/42146863
驱动程序框架
针对驱动程序框架进行了以下更新:
电源和挂起功能。在
fdf_power::Suspendable混入中添加了对fuchsia.power.broker/ElementRunner的支持,从而允许驱动程序主机主动将电源句柄转发给有能力的驱动程序。司机主机对接。主板驱动程序现在可以通过新配置和驱动程序主机设备树访问器直接指定驱动程序主机并置。
主机端驱动程序日志记录。
fdf::Logger现在由主机端测试中的 syslog 结构化后端提供支持,从而无需在主机编译期间使用 #ifdef 排除FDF_LOG宏。- 变更:fxr/1481463
驱动程序框架 CLI 和性能更新。将已弃用的
list-hosts命令替换为ffx driver host list和show,并通过并发组件加载显著提升了ffx driver命令和驱动程序索引的启动速度。改进了 Rust 驱动程序运行时。添加了基于
libasync的传输,用于在驱动程序调度器上直接运行基于zx::Channel的 FIDL 协议,同时还添加了新的计时器 API future 和专用 Rust 驱动程序测试库。线程和调度程序可靠性。通过统一线程池逻辑并确保严格执行调度程序线程限制,防止了停滞。
支持字典优惠。现在,可以通过组件框架字典(而不是提供驱动程序的传出目录)安全地提供和映射节点功能。
- 变更:fxr/1430335
诊断功能增强。驱动程序管理器现在会针对在关闭序列期间挂起的驱动程序将堆栈轨迹打印到串行控制台,从而显著提高可调试性。
- 更改:fxr/1477637、fxr/1484076
- bug:b/369134124
FIDL
针对 FIDL 进行了以下更新:
FIDL 绑定性能增强。通过移除消息传递标头中的依赖项,将 C++ 驱动程序构建时间缩短了约 36%,并通过消除传入消息的基于堆栈的缓冲区,减少了 Zircon 内存分配。
FIDL 编译器更新。放宽了
@available属性,允许note参数与已移除或替换的参数一起使用,以便更清晰地传达 API 版本信息。Rust 绑定演变。将绑定移至默认使用自然类型而非线类型,并将
Decoded线类型重命名为Owned。此外,还迁移到了 Rust 2024,并改进了驱动程序绑定中的 null 句柄数组处理。
反馈
我们针对反馈功能进行了以下更新:
网域配置迁移。反馈配置已迁移到新的网域配置 (
feedback_config.json),并移除了persisted_logs_num_files等未使用的标志。增强了关停和重新启动跟踪功能。通过以下方式改进了重新启动注释和崩溃签名:跟踪启动过程中的所有关机操作;通过汇编实现可配置的自发重新启动原因;修复了无原因的 Starnix 关机的归因。
优化了采用 FXT 格式的日志提取。反馈现在使用 FXT 格式而非 JSON 从 Archivist 获取日志,从而绕过不必要的序列化,显著优化性能和内存用量。
- 变更:fxr/1397933
可配置的报告存储区大小。报告存储区大小限制现在可通过程序集进行配置,对于 large_disk 产品,该限制已增加到 10 MiB,以防止大型 minidump 超出存储空间。
改进了崩溃快照。从崩溃快照中移除了未使用的
build.snapshot.xml附件,并修复了导致log.kernel.previous_boot.txt被错误排除的 use-after-move bug。
固件
固件进行了以下更新:
恢复:BCB 处理。添加了对
--sideload引导加载程序控制块 (BCB) 实参的支持,恢复功能现在会在启动时从/misc分区读取并清除引导加载程序消息,以防止连续意外启动到恢复映像。恢复:移除了 fastboot 界面。从手动菜单中移除了
fastboot,因为该功能可在恢复模式下原生访问- 变更:fxr/147574
恢复:标准化关机和重启 API 用法。将恢复重新启动处理迁移到关机 API,从而能够准确跟踪关机原因,以改进崩溃报告和指标。
恢复:系统改进。向恢复组件公开了
bootfs实参,以支持在存储操作期间进行启动 slot 识别,并实现了可靠的死锁检测。
图形和 GPU
针对图形和 GPU 进行了以下更新:
GPU 驱动程序中支持的动态页面大小。在图形驱动程序中,将硬编码的
PAGE_SIZE宏替换为运行时方法,以支持动态变化的启动时页面大小。改进了 Mali 驱动程序电源管理。在
msd-arm-mali驱动程序中集成了一个SuspendBlocker,以便在进入系统挂起状态之前正确清空任务队列。- 变更:fxr/1395533
本地化
针对 I18n 进行了以下更新:
- 将迁移的 ICU 数据同步到 fuchsia_sync。ICU 数据库现在使用
fuchsia_sync来改进死锁检测,并通过移除锁中毒来减少内存开销。- 变更:fxr/1440144
IoT、Matter 和 Thread
我们针对 IOT、Matter 和 Thread 进行了以下更新:
线程诊断功能增强。扩展了线程检查功能,使其在一定程度上与其他第一方产品中的线程转储功能保持一致。
ePSKc 和边界代理增强功能。更新了 ePSKc 支持,以修复问题。ePSKc 功能在 F30 中仍处于停用状态。确保边框代理广播的服务名称与其他第一方 TBR 产品类似。
TREL 套接字路由修复。修复了 TREL 与 Netstack 3 的兼容性问题,该问题需要使用
scope_id将数据包发送到链路本地目的地。- 变更:fxr/1446253
内核
Zircon 内核进行了以下更新:
- 强制执行 VMO 页面对齐 (RFC-0238)。强制执行严格的页面对齐大小,以创建物理和连续 VMO,并过渡到安全地将新添加的页面清零。
- 运行时内存页大小支持 (RFC-0016)。从 Zircon 公共头文件中移除了编译时
PAGE_SIZE和ZX_PAGE_SIZE宏,要求开发者使用显式运行时页面大小检查。
Netstack
针对 Netstack 进行了以下更新:
eBPF 过滤器匹配器支持。添加了对通过
fuchsia.net.filterAPI 运行 eBPF 过滤器匹配器的支持,从而能够使用接口索引和套接字 UID 等数据包详细信息。Netdevice Banjo 到 FIDL 和 DFv2 的迁移。将旧版 Banjo 中的迁移网络设备和
network-tun绑定迁移到 FIDL 协议。netdevice驱动程序也已更新为 DFv2,以实现设备通信功能的现代化。性能和内存优化。改进了 UDP 早期解复用,并将 TCP 选项序列化迁移到了更快的自定义框架。添加了舍弃空闲 TCP 缓冲区的功能,以大幅回收内存。
套接字诊断和接口身份。引入了
port_identity_koid和GetIdentity功能,以将设备端口与 API 接口相关联。为 TCP 和 UDP 套接字诊断添加了遥测支持。NDP 邻居广告合规性。通过正确忽略主动请求的组播邻居通告,提高了 IPv6 NDP 协议的稳定性。现在,系统可以正确允许具有未指定源地址的 NA。
TCP 和 UDP 协议修复。修复了不正确的 POSIX 连接超时报告和损坏的部分 UDP 校验和更新。允许在不同设备上共享 4 元组的连接,并正确应用 TCP
USER_TIMEOUT来保持 keep-alive 段。接口遥测和流量计数器。创建了
SamplerStats服务,以通过 Inspect 公开抽样的接口传输和接收字节计数器,从而实现精细的网络归因。- 变更:fxr/1405677、fxr/1409115
- bug:b/456247776
Netlink 处理增强功能。将
NLM_F_DUMP的 Netlink 缓冲区大小扩大到最多 4MiB,以解决消息截断问题。添加了对SIOCGIFNAMEioctl 的支持,并修复了路由移除问题,以使用正确的继承指标。Netcfg 和 Topological API 增强功能。向
InterfaceNamingIdentifier添加了拓扑路径元素,以清晰地处理多设备配置。这样可以消除在逻辑接口之间重复使用物理 MAC 时出现的系统冲突。- 变更:fxr/1477456、fxr/1445952
- bug:b/459456549
改进了网络和 mDNS。更新了 mDNS 以支持以点开头的 DNS 名称标签,扩展了 Netlink 邻居 FIDL 扩展,并更新了
NetworkManager文件系统以支持StarnixNetworks状态转换。
平台驱动程序
平台驱动程序进行了以下更新:
Rust 驱动程序管理器端口。将核心驱动程序管理器组件移植到 Rust,引入了固件崩溃报告和跨驱动程序主机的内存归因跟踪。
电源感知型驱动程序拓扑。为每个驱动程序注册了一个电源元素,并创建了一个专用存储元素,为高级电源感知拓扑跟踪奠定了基础。
USB DWC3 控制器的鲁棒性。解决了多个 DWC3 控制器稳定性问题,修复了传输资源分配问题,并确保持续中断处理,以防止系统挂起阻塞。
网络设备 FIDL 迁移。将
virtio、dwmac和gvnic驱动程序的基础网络设备接口从 Banjo 迁移到 FIDL,同时为virtio添加了 DFv2 端口。Virtio 链接状态修复。修复了
virtio网络驱动程序问题:重启时未读取链路状态,导致netstack在设备挂起后无法接收到错误的状态。- 变更:fxr/1423296
- bug:b/460146006
DWMAC 稳定性增强。通过增加设备重置超时时间消除了极端情况下的故障,并修复了
DWMAC驱动程序中因绑定失败而触发的调度程序崩溃。SDMMC 和 SDIO 系统挂起修复。修正了 SDHCI 总线空闲逻辑,并解决了因错误回退到高速模式而导致 SDIO 中出现严重系统挂起的问题。
存储分区转发。引入了
block-relay组件,该组件通过为每个指定的分区生成节点,将 GPT 分区无缝转发到驱动程序框架。平台总线 IOMMU 支持。向平台总线协议添加了
RegisterIommuAPI,用于配置和构建多个 IOMMU。- 变更:fxr/1429620
- bug:b/462183060
中断唤醒向量政策变更。现在,明确要求主板驱动程序通过元数据设置中断唤醒向量。完全移除了对传递
ZX_INTERRUPT_WAKE_VECTOR标志的客户端驱动程序的支持。Sysmem 填充约束。添加了
pad_for_block_size和pad_beyond_image_size缓冲区限制,以帮助需要超出图片边界的额外字节进行系统优化的参与者。- 变更:fxr/1395453
电源管理
针对电源管理进行了以下更新:
引入了 fuchsia.power.cpu FIDL 库,并重构了 CPU 性能限制。新的
DomainController协议在 Starnix 中将 CPU 作为散热设备公开,而 CPU 提速逻辑现在使用fuchsia.hardware.cpu.ctrl:DeviceAPI 来支持 RPPM。将单个
SetBoostFIDL API 替换为多路复用BoostAPI。 新协议允许通过多个来源同时提升系统,直到返回的EventPair句柄被丢弃。移除了 Power Broker 框架中对机会性依赖项的所有支持。现在,断言依赖项是唯一受支持的要求类型,可简化声明跟踪和租赁突发情况。
提高了电池电量百分比和充电电流指标的准确性。现在,速率限制器可平滑处理电池电量下降,并且 FIDL API 现在会返回以微安 (µA) 为单位的充电电流,并更新“
Charging”字段名称。重构了电池遥测和内部处理。Battery Manager 现在会在内部强制执行事件排序,以防止丢弃更新,并且仅在发生有意义的更改时才会在 Inspect 中记录电压、容量和充电时间估计值。
添加了硬件触发点监控功能,并增强了热日志记录功能。 引入了
TrippointWatcher协议,用于直接监控硬件触发点,并更新了温度记录,以准确跟踪最高温度。将核心电源服务迁移到统一的关机 API。之前的重新启动和关机方法已被弃用,取而代之的是
Shutdown,以确保系统会普遍记录关机原因。添加了检查持久性功能,并改进了系统可观测性。
power_state_recorder现在可以在重启时将检查历史记录持久保存到磁盘,而新的唤醒租约事件和健康节点则可改进时间轴工具和启动监控。在系统活动管理器 (SAG) 中将 Suspender 连接逻辑设为异步。这样可防止 SAG 在等待 Suspender 连接时阻止启动,从而允许在启动驱动程序之前提取驱动程序令牌。
Rust
针对 Rust 进行了以下更新:
Rust 2024 迁移。通过强制执行新的安全 lint(例如
missing_unsafe_on_extern)并解决旧版闭包捕获生命周期问题,开始将源代码树迁移到 Rust 2024。第三方箱子更新。滚动了依赖项,以包含针对
zerocopy的性能优化,并限制了未维护的bincodecrate 的可见性。
安全
针对安全性进行了以下更新:
Scrutiny 配置更新。向 Scrutiny 政策添加了
component_tree_config和启动实参配置,从而能够提取动态字典和内核实参,以进行准确的功能路由审核。Sealing Keys API 更新。针对 Keymint 密封密钥引入了
DeleteAllKeys函数,以支持全面的密钥删除操作。- 变更:fxr/1405533
TEE 管理器依赖项解析。将
tee_manager移至基本软件包集,并将其配置为使用基本解析器,从而防止在软件包解析期间出现无法解锁永久性存储的依赖关系循环。- 变更:fxr/1405675
加密 API 和证书更新。轮替了 TLS 根证书,并将代码库逻辑迁移到了新的
fuchsia-merkleAPI,取代了已弃用的MerkleTree方法。
软件交付
我们针对软件交付进行了以下更新:
移除了铺平目标,并改进了铺平器。已正式从 Fuchsia 中移除铺平支持。
moonflower铺路机现在可以防止因启动分区损坏而导致设备变砖,并支持vbmeta映像和新主板。OTA 和系统更新程序增强功能。系统更新程序和提交程序现在使用 Shutdown API 来确保精确的崩溃报告跟踪。更新程序还添加了对无软件包更新的支持,在恢复期间验证现有 blob,并改进了 Omaha 客户端计时器管理。
软件包解析器沙盒化和 Blobfs API 迁移。不受信任的 HTTP Blob 解析现在在
http-client组件(而非pkg-resolver)中进行沙盒处理。此外,blobfs 客户端已完全迁移到BlobReader和BlobCreatorAPI,并舍弃了旧版文件和目录变体。ELF Runner 配置和 API 公开。ELF Runner 现在公开了一个公共 API,用于独立组装启动信息,并通过自动克隆传出目录权限来修复服务公开问题。它还为
bad_handles作业政策添加了基于例外情况的政策配置。Fuchsia Merkle 树 API 优化。
fuchsia-merkle库使用内存优化的MerkleRootBuilder和MerkleVerifier原语替换了旧版构建器 API。这样可以防止不必要的内部哈希存储,并高效处理流式块未对齐数据。改进了窗口化统计信息检查功能。重新设计了窗口统计信息的时间序列检查,以移除周期性缓冲区写入并防止预先分配大型数组。这包括新的
Simple8bRle解码器、Diff统计信息计算和改进的锁定。
Starnix
针对 Starnix 进行了以下更新:
内核和 Machina 环境更新。将 Starnix 内核版本提升至 6.6.30,并将 Machina 目标的默认 Debian 映像更新为 Bookworm(Linux 内核 6.1.0-42)。
SELinux 和访问控制增强功能。通过新的
ptrace访问权限检查、SECCOMP 审核集成和 NNP/nosuid过渡检查,增强了安全性。添加了memfd_class和cgroup_seclabel等政策功能,以扩大访问权限控制范围。网络和 eBPF 功能。通过在
iptables中添加 BPF 匹配器、实现多个 IPv6 sysctl 并对AF_QIPCRTR套接字进行桩化,扩展了网络功能。通过启用 FIDL 映射共享和添加基本SO_ANDROID_DROP_REASON支持,改进了 eBPF 实用程序。改进了终端线路规程。通过添加对
IXON流控制和各种线路规程标志的支持,提高了终端的正确性。修复了影响换行符后排队的写入操作的 bug。电源、CPU 和散热管理。通过以下方式增强了电源控制:启动时 CPU 提速、新的用户空间充电/冷却设备,以及通过统一的
Shutdown协议实现更准确的关机日志记录。存储和文件系统集成。迁移了 Starnix 以使用真实的块设备而不是 VMO,从而显著提升了性能。增强型文件级加密 (FBE),支持内嵌加密和
fstab指定的密钥位置。核心执行和进程管理。通过将寄存器状态直接映射到受限状态 VMO 来优化系统调用执行,从而消除冗余的数据移动。针对影子进程改进了内存统计,并实现了
PTRACE_SETREGSET。Starnix 文件系统加密升级。Starnix 现在使用
lblk32算法,而不是旧版fxfs来处理fscrypt目录和符号链接密钥。内联加密硬件通信现在是同步的,以防止系统调用期间出现异步问题。
存储
存储空间进行了以下更新:
统一了对 FIDL 协议的屏蔽。已将 Volume、Partition 和 Block 协议统一为单个
fuchsia.storage.block.BlockFIDL 协议,以将块组件与驱动程序框架分离。- 变更:fxr/1456131
Blobfs 停止将 blob 作为文件提供。Blob 不再通过
fuchsia.io/File提供,必须通过BlobReader访问,并通过BlobCreator或BlobWriter写入。此外,还移除了在线压缩和VMEX功能。改进了 Blob 卷刷写性能。通过让客户端对载荷进行非稀疏化处理,刷写新 blob 卷的速度显著提高(从 120 多秒降至 40 秒以下)。
- 变更:fxr/1418919
- bug:b/460510280
公开了 Blobfs 覆盖配置。已向 Blobfs 和 SDK 添加
OverwriteConfigurationFIDL 功能,使产品能够控制 blob 覆盖状态和格式设置。Fxfs 32 位对象 ID 和缓存。新的 Starnix 卷将 inode ID 限制为 32 位(引入了不可回滚的 Fxfs 版本更改),并缓存对象键以大幅提升
GetAttributes性能。Fxfs 内存优化。Fxfs 将 Merkle 验证的内存用量减少了至少 75%,现在将可变文件的后备 VMO 命名为“
fxfs-file”,以帮助进行内存分析。强化了 F2FS 同步。修复了孤立回收期间的竞态条件,并改进了 vnode 层次结构同步,以可靠地为打开的孤立文件保留数据块。
改进了块驱动程序框架。新的
block-relay组件直接将系统 GPT 分区转发到驱动程序框架。块服务器实现还改进了强制单元访问 (FUA) 处理,并将请求处理移至专用线程,以防止并发问题。系统级存储空间行为更新。统一了
read_dirents以便始终为小缓冲区返回ZX_ERR_BUFFER_TOO_SMALL,并移除了硬编码的PAGE_SIZE假设,转而采用动态检查来提高可移植性。
测试
针对测试进行了以下更新:
fx 测试超时、统计信息和可靠性。
fx test现在将超时委托给test_manager以收集回溯,在调试期间自动停用超时,并添加了--pr stats标志。还修复了导致临时软件包服务器在出错后泄漏的 bug。关闭和重新启动 API 迁移。废弃了各个测试接口(例如
honeydew、sl4f)中的PerformReboot,取而代之的是Shutdown和ShutdownOptions。这使客户端能够指定明确的关机原因,从而改进了重启原因跟踪。Lacewing 和 Honeydew 的功能。添加了对在测试期间通过
device.register_for_on_device_ip_change()处理目标 IP 更改的支持。串行接口还新增了一个read方法,用于直接从串行端口读取字节。调试和系统目标改进。更新了
test_manager以递归方式附加DebugAgent,确保测试领域内的所有组件都得到覆盖。此外,debug_block设备现在可以作为系统测试目标公开。
计时
针对时间管理功能进行了以下更新:
Starnix /dev/rtc0 实现。在 Starnix 中添加了被动
/dev/rtc0设备,消除了虚假的rtc0打开错误。- 变更:fxr/1452809
精细的闹钟驱动程序错误。在闹钟 FIDL API 中引入了精细的驱动程序错误,以改进不可恢复的错误报告。
可配置的 Timekeeper 后备。将最低 UTC 参考时间与后备差值作为可调整的产品组装配置公开。
工具链
针对工具链进行了以下更新:
工具链角色。滚动了 Rust、Clang 和 LLVM 工具链软件包,以纳入最新的
libc更新和数学函数改进。C++23 兼容性。修复了缺失的 include 和编译器警告,以提高在 C++23 模式下构建代码库时的兼容性。
工具
我们针对工具进行了以下更新:
fx:正式停用 macOS 支持。
fx和相关 CLI 工具不再针对 macOS 构建,现在会明确报告平台不受支持。新的 fx 调试命令。添加了
fx debug作为ffx debug connect的便捷封装容器,可在需要时自动启动临时软件包服务器。- 变更:fxr/1436314
- bug:b/450890445
已弃用 fx unarchive-package。
fx unarchive-packagedevshell 命令已弃用,并已完全被ffx package archive extract取代。- 变更:fxr/1454908
新的 ffx 目标 shell 插件。引入了
ffx target shell,以通过 RCS 与目标设备建立交互式 shell 会话。- 变更:fxr/1433974
新增了 ffx 驱动程序主机子命令。引入了
ffx driver host list和ffx driver host show,完全取代了已弃用的ffx driver list- hosts命令。针对 ffx 目标列表的地址过滤。添加了
--allow-addrs和--deny-addrs过滤选项,取代了已废弃的--no-ipv4和--no-ipv6标志。- 变更:fxr/1441271
Fastboot 未配置设备刷写。Fastboot 现在会在刷写期间自动检测到具有损坏的系统容器的未配置设备,然后回退到直接覆盖
super或提示进行完全擦除。- 变更:fxr/1434625
- bug:b/464027981
简化了 ffx 轨迹 FIDL 数据。
ffx trace现在默认会舍弃原始 FIDL 数据,以清理 Perfetto 界面,并提供新的--retain-raw-fidl标志来替换此行为。- 变更:fxr/1483556
ffx doctor USB 驱动程序检查。
ffx doctor现在会明确检查ffx-usb-driver进程状态,并在套接字路径与配置的环境不匹配时发出警告。- 变更:fxr/1420157
FDomain Client API 扩展和同步重构。
FDomain客户端 API 在功能方面进行了多项改进,并修复了传输终止时挂起的任务。标准库锁也已迁移到fuchsia_sync,以自动发现锁循环死锁。改进了调试器异常处理。
zxdb现在可以正确跳过异常,捕获常规崩溃的完整堆栈轨迹,并包含用于详细打印异常的新exception-info动词。
跟踪记录
针对跟踪功能进行了以下更新:
默认情况下,FFX Trace 追踪事件结果清理器处于启用状态。
ffx trace工具默认会舍弃 IPC 轨迹事件中的原始 FIDL 数据,以节省空间并清理 Perfetto 界面,但新增了一个--retain-raw-fidl标志来保留这些数据。Trace2json 接口和处理更新。
trace2json工具现在需要--output-file,添加了用于过滤的--category标志,并引入了拆分追踪事件结果格式 (--system-trace-events-file),以减少大型追踪事件结果的 RAM 使用量。改进了 Trace Manager 的存储和稳定性。Trace Manager 现在使用缓存存储,以便在磁盘空间严重不足的情况下进行系统清理;修复了流式传输映射泄漏问题;并通过重构套接字写入解决了超时挂起问题。
Rust API 增强功能和性能优化。Rust 跟踪 API 现在支持
String和&'static str类型,添加了虚拟线程时长支持,并优化了跟踪宏,以防止在热门路径上进行不必要的堆分配。CPU 性能分析器和内核跟踪功能增强。CPU 性能分析器现在以标准 Fuchsia Trace (FXT) 格式发出数据,而内核跟踪添加了
kernel:power类别并修复了kernel:retain启动跟踪行为。
界面
界面进行了以下更新:
防止了空场景的 GPU 回退。在 Scenic 中添加了默认黑色显示层,以防止意外的 GPU 回退,之前在空场景中,这种回退会降低性能。
- 变更:fxr/1453589
- bug:b/399228128
从 Scenic 中移除了
CpuRender。移除了 Scenic 中的CpuRender选项,以简化和优化渲染路径。- 变更:fxr/1419014
启用了 Flatland 显示渲染重用。现在可以重复调用
FlatlandDisplay.SetContent(),从而在测试和应用中更好地重用显示实例。- 变更:fxr/1475736
- bug:b/454715223、b/42156567
优化了 Scenic 组合性能。在不存在差异时,回收
SceneState和跳过ViewTree重新计算,从而显著减少每帧 CPU 分配开销。修复了 Escher 合成器颜色伪影。修正了
RectangleCompositor中的颜色预乘,以防止出现非预乘混合模式的视觉双重乘法伪影。- 变更:fxr/1398913
整合界面输入处理程序。将所有界面输入处理程序移至单个事件循环,避免了 CPU 优先级转移,并显著提高了输入延迟时间的一致性。
- 变更:fxr/1486357
向输入流水线添加了唤醒租约支持。输入流水线中的指针注入器、鼠标、触摸和按钮现在可以完全管理系统唤醒租约。
输入流水线和
virtcon快捷方式。通过确保仅在流水线启动后注册快捷方式,解决了输入流水线竞态崩溃问题。- 变更:fxr/1429441
视频
我们针对视频进行了以下平台更新:
- 支持与页面对齐的 VMO 分配和动态页面大小。更新了相机和媒体组件,以使用运行时页面大小和页面对齐的分配,从而符合严格的
zx_vmo_create_contiguous要求。
WLAN 和连接
针对 WLAN 和连接性进行了以下平台更新:
机会性无线加密 (OWE) 准备工作。添加了 FIDL API、
OweFeature驱动程序功能标志和Protocol::OWE变体,以支持机会性无线加密。支持随机分配 MAC 地址。在多个协议中添加了
factory_addr字段和SetMacAddressFIDL 方法,以启用 MAC 地址随机化,并修正了无效的 MAC 地址生成。支持 Hash-to-Element (H2E) SAE。通过新的驱动程序功能标志,为支持的驱动程序启用了直接哈希到元素测试。
WLAN FIDL API 变更和移除。将
WlanSoftmac和NL80211Message演变为灵活的类型,以实现未来的可扩展性,并完全移除了已弃用的DataPersistence、ppp和未使用的 SL4F WLAN 代码。连接可靠性和漫游修复。通过将 165 以上的信道带宽覆盖为 20MHz 并启用旧版回退逻辑,解决了连接/漫游失败问题。解决了不必要的断开连接问题,并修复了 5GHz AP 信道启动问题,以明确验证 DFS 法规支持。
系统稳定性和固件崩溃恢复。通过以下方式提高了稳定性:将
PhyImplNotify移至单独的调度程序,以防止在固件崩溃期间驱动程序冻结;将管道事件直接传递到DeviceMonitor。还更新了wlancfg,以便在不出现内核崩溃的情况下干净地触发重启,并将标准锁迁移到fuchsia_sync,以实现更好的死锁检测。遥测数据、指标和指示。扩展了遥测功能,以记录扫描事件、漫游后 RSSI 增量以及准确的政策引发的漫游断开连接。 修复了国家/地区代码报告,以便更改正确传播,并且全球网络报告为“00”。