日期:2025 年 1 月 21 日
版本:F24
已实现以下更改:
无障碍设置
- 增强了无障碍功能:记录屏幕阅读器状态的更改。
- 变更:fxr/1113299
音频
- 更新了
audio_listener
,以修复使用情况验证 bug 并解决 clang-tidy 问题。- 变更:fxr/1130266
- 更新了
audio_device_registry
服务,以添加了对电源状态更改的 Inspect 日志记录。- 变更:fxr/1112852
- 更新了
aml-g12-tdm
驱动程序,默认情况下在有第一个客户端连接之前会关闭音频硬件。- 变更:fxr/1130235
蓝牙
蓝牙进行了以下更新:
- 添加了
bt-device-id
软件汇编配置,并实现了默认设备配置。bt-device-id
配置文件默认处于停用状态。 - 增强了
bt-rfcomm
,以便为 RFCOMM 会话通道使用 L2CAP max_packet_size,从而优化数据传输。还向 BR/EDR 服务搜索参数添加了通用 UUID,以支持自定义 UUID 搜索。 - 增强了蓝牙 LE 对等,为广播助理添加了其他字段。现在,系统会根据控制器支持情况启用同时 LE 和 BR/EDR 广告。对
bt-gatt
进行了多项改进,包括添加了基本ServerSupportedFeatures
支持、移除了不必要的句柄跟踪,以及启用了 ISO 主机位(如果受支持)。此外,还为 LE Audio 添加了广告类型 CSIS 和 PBP。 - 将
bt-host
和bt-hci-virtual
迁移到了预构建文件,并删除了源代码。bt-host
预构建状态记录在 README 中。 - 向产品组件添加了 BT MAP MCE 配置文件(默认处于停用状态),并实现了相关功能。其中包括适用于 MAP-MCE 的命令行工具、使用通知服务实现 MAP MCE 角色,以及为 MCE 角色实现消息通知服务器。
- 更新了
bt-hfp
,添加了按请求启动/停止功能、音频网关的组装配置和合并的可选协议。现在允许为bt-avrcp-integration-tests
创建 ERROR 日志。LEAdvertisingSetTerminated 事件已迁移到 Emboss,并修复了bt-host
/fidl 中的拼写错误。在 Lacewing 暂停-恢复测试中添加了停用计时器时长检查的选项,移除了 HCI 模拟器设备节点,并删除了过时的蓝牙采样器配置。为starnix.arm64
定义了测试组,并将 LE_AUDIO 添加到 bt-cli 中的 CoD 服务位。为 LE 广告添加了 PrivilegedPeripheral API。
钴蓝
我们对 Cobalt 进行了以下更新:
- 改进了事件代码处理,并修复了 lint 警告。
max_event_code
和event_code
限制为 2^31 - 1,以防止超出 Java int 容量,并且cobaltb.py
中已解决 lint 警告问题。 - 向 cobaltb.py 添加了 build-test 命令。
- 变更:fxr/1119934
- 利用了 FatLTO 来加快测试 build 的速度。
- 变更:fxr/1112379
- bug:fxb/364615885
- 恢复并测试了当前的频道检索逻辑。
- 变更:fxr/1123916
- 将探测器测试规范更新为 Nelson。
- 变更:fxr/1127235
- 从 Fuchsia 报告配置文件中移除了 ARCH/OS。
- 变更:fxr/1132712
- 修复了 cobalt-registry 勘误。
- 变更:fxr/1137742
组件框架
我们对组件框架进行了以下更新:
- 添加了通用服务代理,并在 component_manager 中为内置组件创建了更可扩展的框架。该框架包含一个新的
BuiltinProgram
类型、内置和非内置组件的 ABI 对齐,以及 elf_runner 的重构。- 变更:fxr/1134587、fxr/1134697
- bug:fxb/372527480
- 提高了组件管理器的稳定性,并解决了测试不稳定的问题。这包括延长测试中的超时时间、替换已废弃的
fuchsia_fs
调用,以及修复错误日志记录中的拼写错误。 - 改进了日志记录和事件处理。klog 消息中的换行符现在会拆分为单独的条目,从而修复了 UTF8 panic bug。现在,系统会在事件标头中设置启动时间,以便更准确地确定事件时间。
- 变更:fxr/1121676、fxr/1119680
- bug:fxb/347724655
- 在 session_manager 中将最后一个必需的 #ui 路线设为可选,从而支持无界面的商品,并添加了
fuchsia.ui.composition
。 - 利用了 FatLTO 来加快测试 build 的速度。
- 变更:fxr/1113157
- bug:fxb/364615885
诊断
我们对“诊断”进行了以下更新:
- 改进了日志消息处理功能。移除了对传入结构化消息的双重解析,并标准化了消息表示,从而提高了效率并减少了分配。从日志键值对中移除了 ANSI 颜色代码。
- 从单调时间迁移到了启动时间。Archivist、Inspect 和 Log 工具使用的是启动时间,而不是单调时间。
- 简化了配置。将与归档管理员相关的
bootstrap.cml
条目移到了分片,以便更轻松地进行修改。- 变更:fxr/1130562
- 在 SDK 中添加了 C++ 有主见的记录器。这样,您就可以在不进行自定义日志记录器集成的情况下,从 SDK 中的组件启用日志记录。
- 变更:fxr/1116573
- 更新了采样器配置,以接受通配符。这样,您就可以为驱动程序和其他内容编写选择器。
- 变更:fxr/1125782
- 更新了
ffx log
工具,使其接受 --set-severity 而非 --select- 变更:fxr/1119912
- 处理配置中的初始兴趣。用于配置组件初始日志严重程度的管道汇编选项。
- 变更:fxr/1116492
- bug:fxb/362335642
- 改进了作业处理。引入了
DebuggedJob
抽象并将其用于RootJob
,简化了作业附件和异常监控。将异常记录检索移到了Exception
对象,以提高一致性。 - 添加了整数格式设置。允许在
print
和locals
命令中对整数进行永久性格式设置。- 变更:fxr/1127152
- bug:fxb/369778038
- 改进了
step_plt
测试。移除了step_plt
e2e 测试中的不必要依赖项。- 变更:fxr/1131213
- bug:fxb/371395750
- 改进了性能分析支持。添加了对测试调用方的支持,并更新了 Mali 的检查选择器,以便提供更好的性能分析功能。
- 更新了时间戳格式。将时间戳更改为 RFC-0260 中定义的启动时间戳。
- 变更:fxr/1132853
- 简化了配置并改进了时间处理。移除了仅限英语的配置数据目标和
low_memory
配置,并将对zx_clock_get_monotonic
的直接调用替换为更高级别的抽象。 - 改进了调试功能。连接到设备时,在
ffx log
中输出 UTC 时间,以便将启动时间映射到任何时间。- 变更:fxr/1136300
- 改进了 ffx 日志中的重新启动检测。使用每次启动时生成的随机整数(而非 UTC),以实现更可靠的重新启动检测。
- 变更:fxr/1128476
显示
我们对展示广告系列进行了以下更新:
- 显示驱动程序堆栈正在迁移到现代 Fuchsia 平台基础架构,例如 DFv2 和 FIDL。
驱动程序框架
我们对驱动程序框架进行了以下更新:
- 在驱动程序运行时添加了对驱动程序服务器的支持,包括
DriverServer
和Driver
trait,并解决了内存管理问题,还添加了针对跨执行器通道行为的测试。 - 改进了 Rust 驱动程序支持。现在,您可以使用
fuchsia_rust_driver
模板和rustc_cdylib
构建 Rust 驱动程序。还实现了基本的 Rust 驱动程序传输。- 变更:fxr/1092437、fxr/1123884
- bug:fxb/359228192
- 增强了对动态链接的支持。用于通过动态链接加载驱动程序的 FIDL 在
driver_loader
中实现,并将DriverLoadArgs
传递给DriverHost::StartWithDynamicLinker
。节点客户端现在会传递给DynamicLinkerDriverHostComponent::Start
,并且动态链接StartRootDriver
测试帮助程序已重构以实现可重用性。实现了DynamicLinkerDriverHostComponent Start
。启动驱动程序主机时,系统会返回一个 FIDL 客户端。现在,已实现将驱动程序加载到驱动程序主机中。 - 改进了驱动程序测试。向 SDK 添加了
ScopedGlobalLogger
,以简化驱动程序测试。共享库包含在driver_test_realm
中。清理了driver_test_realm
代码。driver_test_realm
中移除了从 void 进行跟踪路由的功能。DriverRunnerTest
已参数化,用于动态和旧版路径测试。driver_test_realm
已迁移到dtr_exposes/offers
。 - 将多个 FIDL 库迁移到了 Bazel 构建规则。这包括简单驱动程序和 DFv2 驱动程序传输示例。
- 变更:fxr/1115661、fxr/1110353
- bug:b/362386044
- 重构了驱动程序框架。引导加载程序和
zx::thread
逻辑已从driver_manager
移至driver_loader
。公开的目录会传递给已启动的驱动程序主机组件。DriverStartArgs 现在由节点创建并传递。LoadDriverHost
现在接受回调。基于整数的已废弃的属性键和拓扑路径已废弃。 - 其他驱动程序框架更新。向驱动程序日志记录器添加了 API 可用性条件。虚拟电池驱动程序已迁移到 x64 的平台 AIB。SDK 使用方不应再直接使用 platform-defs.h。
ddk::MetadataServer
现在向fdf::OutgoingDirectory
提供其元数据 FIDL 服务。从ElementSchema
中移除了依赖项令牌。电源框架提供了一个共享的 FIDLFakeElementControl
。DDK 中不再使用sdk_*
build 模板。fdf::testing
现在支持 Open3。失败的驾驶员将重新匹配。 - 更新了 sysinfo,以便为平台总线使用服务而非 devfs。
- 变更:fxr/1134586
FIDL
我们对 FIDL 进行了以下更新:
- 改进了对 C++ 和 Rust FIDL 绑定中的启动瞬间、时间类型和异步接收的处理。这包括对使用
zx::basic_time
和fuchsia_zircon
类型的单调和启动瞬间的类型安全支持,在 C++ 绑定中添加了zx::basic_time
的转换 trait,支持在 Rust 和 C++ FIDL 绑定中编码和解码{Boot,Monotonic}Instant
和zx::basic_time
,支持 Rust 绑定中的计数器,以及增大了 Rust FIDL 中异步接收的缓冲区大小。 - 增强了 FIDL 工具和构建流程。我们进行了多项改进,包括在 fidlgen 中将
MaybeAlias
重命名为MaybeFromAlias
、将 fidlgen 和 fidldoc 切换为使用kind_v2
、更新 fidldoc 以递归渲染矢量和数组、在 FIDL build 中添加了用于供应商 HLCPP 可见性的布尔值、将新的 Rust FIDL 绑定库重命名为fidl_next
、将资源与核心 FIDL Rust 库分离、最大限度地减少not_needed()
语句并移除了在 GN build 中将 SDK 类别传递给fidl_cpp_family()
的操作、在fidl_library()
中要求使用"stable"
参数,并向 FIDL bundle 添加了缺少的测试。此外,还解决了与 FIDL GN 模板和版本控制相关的多个 bug。 - 添加了新的 Rust FIDL 绑定 (
fidl_next
)。- 变更:fxr/1104435
- 向 zx Rust FIDL 绑定添加了
SynchronousProxy::is_closed
。- 变更:fxr/1122252
- 将
fuchsia.device.manager
FIDL 重命名为fuchsia.system.state
。- 变更:fxr/1115616
GPU
GPU 进行了以下更新:
- 更新了 MSD ARM Mali 功耗测试,以使用模拟挂起以实现兼容性。
- 变更:fxr/1132514
- 在基础架构中启用了 Lavapipe,并修复了内存泄漏问题。修复了 Lavapipe(包括 lvp_device)中的多个内存泄漏问题。
- 向 MSD ARM Mali 添加了 PowerElementProvider 支持,并向 Magma 添加了时钟处理 API。客户端现在可以设置时钟速度限制。添加了用于从 Magma 驱动程序检索电源元素的 FIDL 协议。
本地化
我们对 I18n 进行了以下更新:
- 向生成的字符串 FIDL 库添加了版本控制,以确保与 FIDL 平台版本控制要求兼容。此外,更新了 intl 属性提供程序,使其不再发出等于其默认值的更改。这些更改简化了测试,并假定所有字符串库都是不稳定的。
- 变更:fxr/1128219、fxr/1114045
- bug:fxb/364628320
IOT
我们对 IoT 进行了以下更新:
- 事项:
- 修复了 GHP 的 bug 并提高了其稳定性。
- 启用了对 MDNS 的检查支持,并添加了指标。
- 修复了 MDNS bug。
内核
内核进行了以下更新:
- 引入了启动时间轴。添加了对
ZX_CLOCK_BOOT
的支持,以指定计时器应基于启动时钟,该时钟在系统暂停时不会暂停。 - 增强了根作业性能分析功能。向
ffx profiler attach
添加并重新启用了--system-wide
标志,以更稳健地对根作业树中的所有线程进行性能分析,包括处理在会话中途退出的受分析进程的情况。现在,即使符号不可用,性能分析器也会返回样本。- 变更:fxr/1101200、fxr/1134813
- bug:fxb/362511006
平台驱动程序
平台驱动程序进行了以下更新:
- 改进了平台设备元数据处理,并添加了开发板定义。 平台设备现在使用字符串(而非整数)作为元数据,并且新的 FIDL 方法会按字符串检索元数据。添加了 Lilac 和 Iris 开发板定义。
- 增强了 sdmmc 驱动程序稳定性和电源管理。通过重置 worker 事件,修复了旋转 worker 循环的问题。暂时停用了电源暂停和硬件电源状态操控,以便更轻松地过渡到新的电源租赁模式,并允许在电源元素处于关闭状态时发出存储请求。向系统 activity 调度器注册了核心 sdmmc 电源元素依赖项的令牌。
电源管理
我们对电源管理进行了以下更新:
- 通过新功能和配置选项增强了系统 activity 调度器 (SAG)。实现了
CpuElementManager
服务器,使存储驱动程序能够与电源拓扑图集成。添加了wait_for_suspending_token
配置标志,以控制 SAG 的依赖项令牌处理,并在管理系统电源状态时提供更大的灵活性。 - 通过增强的跟踪和检查功能,提高了功耗可观测性。添加了电源元素轨迹事件,以捕获租约请求、电源代理中的电源级别转换以及客户端守护程序互动。将检查历史记录缓冲区大小增加到了 8192 个事件,并将 VMO 增加到了 2MB,从而减少了在多次电源事件后发生的数据丢失。
- 向
fuchsia.sensors.types
添加了电源传感器的枚举。这会向SensorTypes
引入POWER
枚举,以便与 Fuchsia 传感器框架集成。- 变更:fxr/1127884
- 将虚拟电池驱动程序迁移到了平台 AIB,并将其添加到了 x64 平台。
- 变更:fxr/1127555
Rust
Rust 进行了以下更新:
- 添加了针对时间和时长的处理的多项更新:更新为在 zx Rust 中使用
MonotonicDuration
而非Duration
,在 Zircon Rust 中将Duration
别名为MonotonicDuration
,在 fuchsia_zircon Rust 中将Time
重命名为Instant
、将SyntheticTime
重命名为SyntheticInstant
、将BootTime
重命名为BootInstant
、将MonotonicTime
重命名为MonotonicInstant
,并将Boot/MonotonicTime
重命名为Instant
。 - 改进了 FIDL Rust:添加了对
{Boot,Monotonic}Instant
的计数和编码和解码支持,将新的绑定库重命名为 fidl_next,将资源与核心库分离,并略微改进了线程本地缓冲区的初始化。 - 在使用 #[fuchsia::test] 的测试中添加了对 lsan 的支持,包括为 #[should_panic] 测试停用 lsan。
- 变更:fxr/1132274
- 在 bootfs 中为 Rust 二进制文件使用动态链接。
- 变更:fxr/1135732
- bug:fxb/42163719
- 为所有 Rust 目标类型(除了 dylib + cdylib)添加了
.rustdoc
子目标。- 变更:fxr/1097685
- 添加了对
rustc_cdylib
loadable_module 的支持。- 变更:fxr/1126633
- bug:fxb/364901670
SDK
SDK 进行了以下更新:
- 提升了 Bazel 操作性能并修复了多个 bug。这包括使用 genquery 优化 depfile 生成(节省约 0.5-1 秒)、组合 cquery 调用(节省 1.2-1.5 秒)、修复
fuchsia_product_configuration
的相对路径、解决 minfofuchsia_board_configuration()
错误、修复 Bazel 汇编映像验证,以及修复开放字体目标。
软件交付
软件分发进行了以下更新:
- 增强了对可升级软件包的支持。这包括添加了垃圾回收保护,允许 base-resolver 与基本软件包一起解析它们,并引入了用于更新的
SetUpgradableUrls
API(实现受标志控制)。 - 通过在加载缓存软件包时清除变体信息来提高一致性。
- 变更:fxr/1126056
- 改进了 bootpkg 实用程序并缩减了二进制文件大小。这包括移除异步操作、缩减二进制文件大小,以及添加用于查看启动映像及其内容的 CLI 工具(
list
和show
子命令)。 - 改进了软件包管理代码,并阐明了 OTA 进度报告。
这包括重构软件包服务器实例以使用
RepositorySpec
、移除重复的枚举定义以提高可维护性,以及向 CLI OTA 工具添加有关进度报告行为的备注。 - 向 vim3 开发板添加了一些功能,以便将 xHCI 驱动程序从 BIB 迁移到 AIB。
- 变更:fxr/1115581
Starnix
Starnix 进行了以下更新:
- 在 Starnix 中添加了对暂停和恢复容器的支持,包括跟踪 Linux 唤醒锁、将操作委托给 Starnix 运行程序以及获取/释放唤醒租约。
- 添加了对触摸和按钮事件以及
EPOLLWAKEUP
的支持,以唤醒已暂停的容器。删除 epoll 实例后,epoll 唤醒锁会被正确删除。 - 修复了与暂停/恢复期间的计时器管理和信号清除相关的竞态条件。
- 更新了 hrtimer,以使用代理通道唤醒容器。
- 变更:fxr/1117712
- 添加了对
CLONE_NEWUTS
标志和 FUSE BPF 程序加载的支持。 - 添加了基于
binder.fidl
协议的新 Unix 网域套接字实现,该实现支持在 Starnix 中的 Fuchsia 和 Linux 程序之间进行进程间通信和文件描述符传递。- 变更:fxr/1129552
- 为
io_uring
实现了io_uring_setup
和基本读写操作,使io_uring01
测试通过。 - 为缺少的 futex 命令实现了存根。
- 变更:fxr/1104457
- 添加了
/proc/sys/kernel/cap_last_cap
文件。- 变更:fxr/1121419
- 修复了安全属性的访问权限检查,并解决了 BPF 文件系统安全标签未正确设置的问题。
- 更新了套接字中的 accept 队列大小,使其受限。
- 变更:fxr/1123852
- 更新了 SELinux 状态文件的实现,可正确处理特定文件的跳转行为和文件结束指示。
- 变更:fxr/1116496
- 修复了
chown
验证逻辑。- 变更:fxr/1126033
测试
测试进行了以下更新:
- 改进了
fxtest
工具,包括支持输出目录路径中的$FUCHSIA_OUT
等变量(与旧版fx test
的行为一致)、在执行后输出失败的测试,以及解决重放中的部分输出问题。新的--timestamp-artifacts
标志可防止覆盖之前的测试输出。 - 在
python_mobly_test
中引入了honeydew_config
以整合 Honeydew 配置信息,从而简化了添加新配置的流程。- 变更:fxr/1118514
- 在 Lacewing 测试中添加了对
ssh_keepalive_timeout
FFX 配置的支持。- 变更:fxr/1124685
- 改进了配置文件合并功能。在目标设备上扁平化配置文件计数器合并,以便在二进制配置文件关联模式下实现合并。
- 变更:fxr/1123292
- bug:fxb/358195464
- 修复了
libconcurrent
的 WellDefinedCopy 帮助程序中可能导致随机测试失败的对齐问题。- 变更:fxr/1113315
计时
我们对时间记录功能进行了以下更新:
- 改进了虚构时钟测试:解决了虚构时钟测试的不稳定问题。
- 版本化的时间相关 FIDL 库:向时间相关 FIDL 库添加了
@available(added=HEAD)
。
工具
我们对“工具”进行了以下更新:
- 添加了对向模拟器添加 vsock 设备的支持,并添加了对串行控制台和基本启动功能的有限 crosvm 引擎后端支持。
- 引入了 crosvm 目标以在自动化测试中运行测试,并提取了用于代码共享的通用模拟器目标。
ffx
ffx
进行了以下更新:
- 添加了用于重命名软件包的
ffx package archive edit
命令。- 变更:fxr/1092172
- 改进了
ffx component route
,以包含运行程序。- 变更:fxr/1134975
- bug:fxb/367461258
- 改进了
ffx target
命令中的输出和错误处理,包括修复了 IPv6 格式、target echo
的机器输出、默认target test
问题和无守护程序重新连接的问题。 - 改进了
ffx repository server
的独立功能:- 更新为使用正确的代码库名称与商品套装搭配使用。
- 添加了针对是否有目标设备的验证。
- 修复了商品套装服务器注册问题。
- 更新了
ffx repository server
命令,使其具有幂等性。 - 为
ffx repository server stop
添加了--product--bundle
选项。 - 变更:fxr/1125912、fxr/1133672、fxr/1128280、fxr/1129857
- 从
ffx config set
中移除了等级选项。- 变更:fxr/1129875
- 添加了对向
ffx emu start
添加 vsock 设备的支持。- 变更:fxr/1115916
- 更新了
ffx target repository
命令,使其具有幂等性。 - 更新了设备端
ffx target repository list
列表配置。- 变更:fxr/1110088
- 更新了
ffx target repository deregister
,以更新设备端配置。- 变更:fxr/1121571
- 将
--all
添加到了ffx repository remove
。- 变更:fxr/1121995
- 更正了
ffx target register
中商品软件包的代码库名称用法。- 变更:fxr/1133672
fx
fx
进行了以下更新:
- 添加了
fx build-profile
命令,以便在构建期间有条件地收集系统性能分析数据。- 变更:fxr/1131308
界面
界面进行了以下更新:
- 为默认窗口管理器引入了屏保协议。
- 变更:fxr/1109278
- 为
fuchsia.input.*
和fuchsia.ui.*
FIDL 库启用了版本控制。更正了之前的错误@available
注释。 - 改进了输入处理:将设备 ID 从输入流水线传递给界面客户端,并在输入帮助程序中实现了设备 ID,并附带了 CTF 测试。
- 改进了界面测试:在测试基类中使用了
logging_event_loop
,以改进超时调试,并更新了虚拟键盘测试以使用新的 C++ FIDL 绑定。在 starnix-touch-test 中向等待信号添加了有限超时和日志。
WLAN
我们对 WLAN 进行了以下更新:
- 通过向底层操作添加超时,提高了 WLAN 客户端和 AP 操作的可靠性。这通过根据超时添加超时和恢复步骤来解决较低层级的挂起问题,从而提高整体稳定性。
- 修复了对 fuchsia-async 排序的单元测试依赖项。
- 变更:fxr/1130268
- 重构了缓冲区处理并改进了编码。重构了
buffer
和BufferStrategy
实现,集成了DeltaZigzagSimple8bRleRingBuffer
和DeltaSimple8bRleRingBuffer
,并添加了对未压缩缓冲区的支持。u64
的默认编码现为Simple8bRle
。 - 实现了事件反应堆组合器并增强了 TimeMatrix 处理功能。
实现了事件反应堆组合元件,并添加了
MockTimeMatrix
以进行测试。修复了跳过的间隔时间计算、Tick::start_has_sample
bug 和不必要的TimeMatrix
服务器 Future 终止问题。将TimeMatrix
输出为数据规范,以便使用更出色的工具。