版本:F23
已实现以下更改:
无障碍设置
我们对无障碍功能进行了以下更新:
- 修复了与停用节点的行为相关的 bug,改进了屏幕阅读器行为。
音频
我们对音频进行了以下更新。
音频驱动程序和驱动程序 API:
- 打开了与音频信号处理和环形缓冲区相关的关键 FIDL 协议,以提高 ABI 兼容性。
- 变更:fxr/1105376
- 更改了复合音频的 devfs 别名名称,使其符合标准命名方式。
- 变更:fxr/1101196
- 添加了对电源转换的检查 (
aml-g12-tdm
音频驱动程序)。- 变更:fxr/1107073
- 添加了
aml-g12-tdm
驱动程序的电源转换跟踪。- 变更:fxr/1103681
- 改进了
aml-g12-audio-composite
驱动程序的日志记录功能。- 变更:fxr/1103473
- 打开了与音频信号处理和环形缓冲区相关的关键 FIDL 协议,以提高 ABI 兼容性。
AudioCore 和智能显示屏支持:
- 停用了导致 SSH 连接错误的一些音频测试。
- 变更:fxr/1100487
- 停用了导致 SSH 连接错误的一些音频测试。
AudioDeviceRegistry 服务:
- 向
audio_device_registry
添加了跟踪功能,以跟踪电源转换。- 变更:fxr/1103681
- 阐明了日志记录。
- 变更:fxr/1103473
- 修改了
WatchDevicesAdded
方法,以便立即响应首次调用,即使是空矢量也是如此。- 变更:fxr/1100522
- 向
音频开发者工具:
- 向
ffx audio device play
命令添加了--channels
标志,以控制有效声道和音频设备的电源状态。- 变更:fxr/1097680
- 修复了
ffx audio record
和ffx audio device record
中的故障和环形缓冲区处理问题,以正确捕获音频。
- 向
蓝牙
蓝牙进行了以下更新:
- 已实现消息访问服务 (MAS) 客户端,可连接到多个 MAS 实例。
- 更改:fxr/1099712
- 免触摸操作配置文件 (HFP) 现在支持
AudioDeviceRegistry
产品,并且兼容性更高:HFP 现在使用首个受支持的 DAI 帧格式,以提高硬件兼容性。在使用AudioDeviceRegistry
的产品中,对等方会在连接时添加到注册表中,并且媒体可以在没有有效通话的情况下启动/停止音频。 - BR/EDR 旧版配对现在支持 PIN 码请求,并与
PairingStateManager
集成以管理配对方法选择(SSP 或旧版)。此外,还添加了用于根据产品组件启用/停用旧版配对的配置。我们已更新了用于配对的检查属性,以反映这些更改。 - 添加了 L2CAP 连接导向型通道。
- 更改:fxr/1086595
- LE 远程功能查询现在可以正常失败,从而提高连接兼容性。
- 更改:fxr/1108632
- 蓝牙 FIDL 现代化:更新了多个枚举以提高灵活性。
Vendor
协议更新了术语和文档。针对fuchsia.bluetooth.Channel
及相关协议重做了流控制,通过 zircon 套接字使用了 FIDL 流控制。支持 L2CAP 连接型通道。随着这些变更,许多蓝牙协议也将分阶段添加到 SDK 中。 - 使用浮雕定义对各种蓝牙测试函数进行了浮雕处理:这与使用已打包的结构体有所不同。
构建
Build 进行了以下更新:
- 添加了新的环境变量
TEST_UNDECLARED_OUTPUTS_DIR_OVERRIDE
,用于控制未声明输出的写入位置:这对测试很有用。- 变更:fxr/1110434
- 为
scoped_global_logger
添加了 bazel build 目标:此目标适用于树内 Bazel 目标。- 变更:fxr/1108085
钴蓝
我们对 Cobalt 进行了以下更新:
- 将 Cobalt 组件迁移为使用
FUCHSIA_LOG
宏,而不是已废弃的fuchsia_logging::
严重级别。- 变更:fxr/1110397
- bug:b/299996898
组件框架
我们对组件框架进行了以下更新:
- 添加了对组件管理器的支持,以便从字典中的
environment
和配置值路由运行程序功能。 - 在
fuchsia.component.decl
中添加了对弱势服务优惠的支持。- 变更:fxr/1098532
- bug:b/356347441
- 移除了动态配置功能,并将其替换为 bedrock 字典。
- 变更:fxr/1099592
- 现在,
OnStop
事件中会报告组件退出代码和终止状态,并且StopConclusion
和ComponentStopOutcome
已合并,以简化组件停止操作。
连接驱动程序
Connectivity Drivers 进行了以下更新:
dwmac
驱动程序现在直接实现了 NetworkDevice 协议,从而提高了大多数基准测试中的性能。- 变更:fxr/1089712
- bug:fxb/42068759
brcmfmac
驱动程序现在会正确设置 wnm iovar,从而解决 VIM3 上的BCME_BUSY
错误。- 变更:fxr/1097798
- 移除了
fuchsia.hardware.network/DeviceClass
最新的 NEXT API 版本,影响了fuchsia.net.interfaces/Properties
。- 变更:fxr/1099292
- 通过保留每个测试用例的套接字修复了 filter-fidl 测试:由于后续测试用例绑定的套接字恰好与前面的测试用例选择的端口相同,因此 filter-fidl 测试会出现不稳定的情况。此更改会保持之前用例的套接字处于打开状态,以便网络堆栈为每个用例选择新的端口。
- 变更:fxr/1099412
- 更新了 weave/tests 以使用现代路由 FIDL API:这项变更是指,从使用已废弃的
fuchsia.net.stack AddForwardingEntry
添加路由改为使用fuchsia.net.routes.admin
。- 变更:fxr/1097719
- bug:b/42081105
- 通过为 KeepResource 的成员命名来避免了
unused_tuple_struct Lint
。- 变更:fxr/1097972
诊断
我们对“诊断”进行了以下更新:
- 归档员:
- 启用了来自汇编的初始兴趣配置。
- 变更:fxr/1107987
- 改进了“检查”名称过滤功能。
- 启用了来自汇编的初始兴趣配置。
- 采样器:
- 抑制了与模板中的组件 ID 相关的垃圾警告,以及验证器中的死代码 lint。
- 变更:fxr/1109450、fxr/1101655
- bug:b/351850634
- 抑制了与模板中的组件 ID 相关的垃圾警告,以及验证器中的死代码 lint。
- Syslog:
- 改进了相关的 C++ 库。
- bug:b/299996898
- 确保基于 inspect-runner 的测试被视为系统测试。
- 变更:fxr/1102372
显示
我们对展示广告进行了以下更新:
- 将显示驱动程序堆栈迁移到了现代 Fuchsia 平台基础架构,例如 DFv2 和 FIDL。预计不会对用户造成任何影响。
- 为保持一致性而重命名了显示屏驱动程序:
simple-display
至framebuffer-display
。intel-i915
至intel-display
。virtio-guest
至virtio-gpu-display
。
驱动程序框架
我们对驱动程序框架进行了以下更新:
- 通过改用枚举表示法,提高了平台总线库的中断模式,从而提高了类型安全性和代码清晰度。
- 变更:fxr/1100893
- 根据解析器重命名了驱动程序集合。
- 变更:fxr/1105706
- ** 简化了
ScopedGlobalLogger
,以改进测试日志记录,并且之前停用的测试已重新启用并更新。与已移除的测试关联的未使用的 API 也已删除。** - 更新了 GPIO FIDL:为未来的中断选项添加了一个空位类型,并将
SetPolarity
重命名为ConfigureInterrupt
。GPIO 初始化元数据也已改用 pinimpl 类型。 - 通过简化
ScopedGlobalLogger
实现来改进了ScopedGlobalLogger
实现:由于它实际上从未进行任何异步调用,因此无需为日志记录器创建线程。- 变更:fxr/1109755
- 通过使用
realm_builder_exposed_dir
转发连接,简化了driver_test_realm
中的转发机制:这修复了公开未使用转发机制的 fuchsia.hardware.ramdisk 服务时出现的问题,还允许我们使用dtr_exposes
而不是已废弃的 exposes Start 参数。- 变更:fxr/1098232
- 将已废弃的驱动程序测试库部分迁移到了内部命名空间:向使用该命名空间的测试添加了警告,以防止新测试复制这些测试。
- 变更:fxr/1105273
- 通过添加单元测试和优化代码改进了驱动程序传输和简单驱动程序:驱动程序传输示例现在展示了 FIDL 客户端交互、优化的传输大小查询和改进的码率设置,而简单驱动程序示例演示了前台和后台驱动程序测试之间的区别。**
FIDL
我们对 FIDL 进行了以下更新:
- 更新了与音频和组件管理相关的多个 FIDL 协议,以实现 ABI 兼容性:
fuchsia.hardware.audio.signalprocessing/Reader
和fuchsia.hardware.audio/RingBuffer
现在具有灵活的方法和开放协议(以及其组合协议)。fuchsia.component/ComponentController
现已开放,提供灵活的OnEscrow
和OnStopInfo
事件。- 变更:fxr/1105376、fxr/1105374
- bug:fxb/356225729
- 改进了 FIDL 构建系统:“未命名版本”FIDL 库不再进行兼容性测试,“命名版本”逻辑在构建模板中进行了整合。此外,还重新生成了
fuchsia.io
的 Go 绑定。
GPU
GPU 进行了以下更新:
- 合并了
arm-mali
GPU 驱动程序的上游更改。
内核
内核进行了以下更新:
- 虚拟内存:
- 禁止为实体或连续的 VMO 创建数据流。
- 变更:fxr/1021612
- bug:fxb/330793404
- 开始移除目标 PmmNode 周围的
pmm_
封装容器函数。- 变更:fxr/1102014
- 添加了一个选项,用于向内容大小之外的 VMO 提供零。
- 变更:fxr/1104694
- 禁止在物理 VMO 上执行缓存操作。
- 变更:fxr/1097312
- 添加了新的 PMM 竞技场选择算法。
- 变更:fxr/1074514
- 禁止为实体或连续的 VMO 创建数据流。
- 电源:
- 添加了对在功能标志后面暂停单调计时器的支持。
- 变更:fxr/1093967
- 添加了对在功能标志后面暂停单调计时器的支持。
- 其他:
- 移除了对 IMX UART 的支持。
- 变更:fxr/1098052
- bug:fxb/326502088
- 移除了对 IMX UART 的支持。
Matter
我们对 Matter 进行了以下更新:
- 改进了 Matter/GHP:修复了错误并提高了稳定性。
平台驱动程序
平台驱动程序进行了以下更新:
- 在 SPMI 中添加了一个 FIDL API,用于表示总线上的目标/辅助 SPMI 设备,从而支持多台设备。
- 变更:fxr/1104132
- bug:361309707
- 增强了 GPIO,添加了新的 FIDL 位类型以用于未来的中断选项,并迁移到了
pinimpl
协议。核心驱动程序现在会在gpioimpl
和pinimpl
之间进行选择。 - 增强了 I2C,以添加对
reg
字段中多个外围设备地址的设备树访问器支持,并将 I2C 地址添加到生成的节点属性中。这简化了复杂 I2C 配置的处理。 - 为 SPI 添加了设备树访问器,将
fuchsia.hardware.spi.businfo
元数据附加到spiimpl
节点。- 变更:fxr/1095739
- 向平台设备添加了资源属性,以便驱动程序验证正确的资源分配。
- 变更:fxr/1107895
- 添加了 Banana Pi F3 的设备树源代码。
- 变更:fxr/1099853
Rust
Rust 进行了以下更新:
- 为第一方和第三方 crate 启用了 rustdoc 子目标,提供了
fx rustdoc-link
脚本来合并生成的文档。- 变更:fxr/1104273
- 改进了对不可访问模式的检测,尤其是在使用
never
或Infallible
时。 - 更新了多个依赖项,包括修复了
nom
minimal-lexical
依赖项,并在hex
和log
crate 中启用了新功能。 - 由于与 LLD 不兼容,暂时停用了 Rust LTO。
软件交付
软件分发进行了以下更新:
- 改进了 Omaha 客户端和 pkgctl 命令。
- 变更:fxr/1106796、fxr/1096372
- bug:fxb/357638242
- 添加了用于操作 blob 的命令,并修复了相关 bug。
- 变更:fxr/1045998
- 改进了 pkg 命令,并修复了 omaha-client 中的 bug。
- 向 artifactory 命令添加了冲突检查。
- 变更:fxr/1098024
- 修复了 clippy lint 并在某些目标上重新启用了 warn-all。
- 变更:fxr/1099405
- bug:fxb/356474618
Starnix
Starnix 进行了以下更新:
- 将多个文件系统模块化。selinuxfs、layeredfs、overlayfs、functionfs、tracefs、FUSE、tun、ext4 和循环设备现已模块化。文件系统注册和创建也集中进行,并且使用
FsRegistry
注册 nmfs。 - 通过新功能改进了 Starnix 运行程序:将运行程序实用程序移至库,hrtimer 事件可以唤醒容器,添加了
SuspendContainer
,并添加了内部唤醒锁的功能标志。 - 在 BPF 中添加了对 PERCPU_ARRAY 映射类型的支持。
- 变更:fxr/1111712
- 更新了输入系统。修复了
is_uinput_running()
函数,添加了用于检索设备名称的 ioctl,并且输入设备现在使用唯一的 Fuchsia 供应商 ID 和产品 ID。 - 增强了 POSIX 计时器系统调用。添加了对闹钟类型的支持,重构了计时器截止期限,并更正了
timer_settime
中的指针检查。 - 更新了 Open syscall API。移除了 Open1 回退,现在必须使用 Open3。StarnixNodeConnection 现在实现了 Open3。
- 修复了 remotefs 中符号链接目标大小的报告方式。
- 变更:fxr/1097114
- SELinux 得到了大幅改进。审核日志会发送到内核日志,文件系统标记功能得到改进,虚假模式已停用,并添加了元数据文件。
测试
测试进行了以下更新:
- 通过将工件存储在每个基准测试用例目录中改进了 iperf 基准测试:这修复了服务器 JSON 输出文件和
trace.fxt
文件相互覆盖的问题。- 变更:fxr/1100484
- 更新了针对密封网络堆栈通过环回运行的 iperf 基准测试:现有测试已改为使用 netemul 沙盒运行 iperf,并修改为基准测试。保留了用于运行 iperf 基准测试的现有 Python 脚本,以重复使用将 iperf JSON 输出转换为 fuchsiaperf 输出的逻辑。
- 变更:fxr/1096183
- bug:fxb/349129633
线程
我们对 Thread 进行了以下更新:
- 为 ot-radio 模块启用了全双工事务:此更改改进了
ot-radio
驱动程序的性能,并解决了当 TX 和 RX 方向的吞吐量都较高时 TX 事务耗尽的问题。- 变更:fxr/1099455
计时
我们对时间记录功能进行了以下更新:
- 添加了更平衡的时间源日志记录。
- 添加了从 RTC 强制启动功能:此项更改添加了从 RTC 强制启动时钟的功能,但会忽略已知的 RTC 读数错误。
- 变更:fxr/1100898
工具链
工具链进行了以下更新:
- 更新了 Fuchsia 平台和 Zircon 工具链,以使用 C++20 和 Clang 默认配置。
- 变更:fxr/1093351、fxr/1111012
- bug:fxb/42064981
- 更新了 C++ 工具链,以便默认生成链接映射。
- 变更:fxr/1100073
- bug:fxb/358673680
- 为 AArch64 和 RISC-V 上的 Rust 启用了阴影调用堆栈 (SCS)。
- 变更:fxr/791504
- bug:fxb/42069386、fxb/360955800
- 在更新了 Fuchsia 和 Cobalt 的 libc++ 后,添加了缺少的头文件。
- 变更:fxr/1100755、fxr/1100813
- bug:fxb/359865937
- 更新了
emit_tool_path
变量,以便通过 Rust GNI 进行连接。- 变更:fxr/1100759
工具
我们对“工具”进行了以下更新:
- 改进了调试程序,包括支持从附加进程中收集 minidump(对调试测试超时很有用)、修复了由未验证的行表条目导致的崩溃问题、在端到端测试中一致包含 SSH 端口、将
CURRENT_SUPPORTED_API_LEVEL
更新为 22(移除了旧版 IPC 版本兼容性),以及移除了旧版 DebugAgent 启动器。 - 更新了 DevShell,以使用 jiri 的更新版参数排序。
- 变更:fxr/1106816
- 停用了 VSCode 的源代码图可视化功能,以提高 Fuchsia 代码库的性能。
- 变更:fxr/1108534
ffx
ffx
进行了以下更新:
- 提高了模拟器的稳定性。我们进行了一些更改,以提高模拟器稳定性并解决常见问题。
- 添加了对引导加载程序 Fat 分区和 EFI 产品软件包的支持。这样,模拟器便可从仅包含引导加载程序分区或包含基于 EFI 的内核的产品软件包启动。
- 添加了 FfxCoreSubCommand 和 check_core_constraints。此函数会在命令执行之前进行检查,以确保命令是通过机器接口调用的,传递的配置标志只有一个,并且传递的配置标志是文件的路径。目标也通过 CLI 指定。libfho 会在执行之前对子工具调用此函数。
- 变更:fxr/1109449
- 向播放命令添加了 active_channels。这会向
ffx audio device play
命令添加--channels
标志。此标志用于通过 CLI 操控哪些声道处于启用状态,以及配置音频设备的电源状态。- 变更:fxr/1097680
- 改进了错误处理方式。对 ffx 的错误处理和报告进行了多项改进。这包括正确报告 SSH 错误、改进了有关正在使用的端口的错误消息,并针对不正确的 build 目录添加了错误。
- 更新了
ffx
,以支持使用--core
标志进行直接连接。这会更新用于处理连接和为开发者提供 FIDL 协议的 ffx 行为。将--core
标志传递给命令时,系统会尽可能使用非守护程序行为。- 变更:fxr/1097107
- 清理了旧的配置生成代码,并向
fx set
添加了一个新的--assembly-override
选项。此选项会在args.gn
中正确设置新的开发者汇编替换映射。 - 更新了
OvernetConnector
以提前退出并移除不必要的 ASCII 艺术字。
fx
fx
进行了以下更新:
- 更新了
fx serve
,使其专用前台代码库服务器,从而简化了其操作。ffx
现在是默认的代码库服务器,相关配置已更新。这也为移除 pm 做好了准备。 - 更新了脚本,以确保它们在任何环境中都位于相应路径中。
此更改可确保在
PATH
上找到脚本目录,即使用户未使用fx-env.sh
也是如此。- 变更:fxr/1098552
- 公开了
fx set --rbe-mode=MODE
。这简化了 RBE 配置。- 变更:fxr/1092786
- 在 Python 中重新实现了
fx status
。- 变更:fxr/1099458
ffxutil
ffxutil
进行了以下更新:
- 在 ffx 配置中添加了 SDK 工具替换项。
- 变更:fxr/1097204
界面
界面进行了以下更新:
- 更新了输入流水线事件,以添加设备 ID。
- 变更:fxr/1107757
- 更新了多个界面测试,以使用新的 FIDL 和 C++ 绑定。
- 重构了界面测试并更新了 WebTestBase 以使用 GraphicalPresenter。
视频
我们对视频广告系列进行了以下更新:
- 已废弃
SetTags
,并将其移除。为解决 SetTags 的弃用问题,我们已多次进行此更改。 - 废弃了
BuildAndInitializeWithTags
,取而代之的是WithTags
。- 变更:fxr/1100417
- bug:b/299996898
- 上游 libcxx 更改了隐式包含 cmath 头文件的方式,导致 Fuchsia 上出现构建故障。此补丁会将缺少的“cmath”include 添加到多个 Fuchsia 组件。
- 变更:fxr/1098073
- bug:fxb/358451491
- 无需手动路由 LogSink,因为这会通过客户端分片隐式完成。未来的 CL 将更新分片中使用的路由,因此必须清理这些重复的路由,以便更新分片。
- 变更:fxr/1097792
WLAN
我们对 WLAN 进行了以下更新:
- 添加了漫游功能。借助此功能,WLAN 可以通过 fullmac 设备固件发起漫游。现在,在漫游时,政策漫游监控器会重新初始化,以提高可靠性。
- 将 FullmacDevice 更改为使用 FIDL 通道,而不是 Banjo。通过使用 FIDL 通道在 FullmacDevice 结构体和供应商驱动程序之间进行通信,提高了性能。
- 改进了 WLAN 日志记录功能。
wlancfg
现在会在成功从 WLAN 问题中恢复时捕获系统状态的快照。client-connections-toggle-events
节点已重命名,日志行现在会正确声明已收到国家/地区代码。接口管理器会在恢复期间采取行动之前,记录所有客户端和 AP 状态机的状态。现在,系统会记录wlan_connectivity_states
、connected_networks
、disconnected_networks
和disconnect_sources
时间序列。 - 清理了技术债务。
log_cobalt_1dot1
宏已变得整洁,AP 状态机现在会公开其当前状态信息,并且已解决两个 Clippy lint 问题。指标过期时间已更新。 - 修复了 WLAN 问题。修复了以下问题:在移除接口期间移除 PHY 可能会导致
wlandevicemonitor
保留过时接口。send_assoc_req_frame
函数不再有参数。调用stop_fullmac_mlme()
后,系统不会再访问WlanFullmacImplIfc
FFI。