Fuchsia F23 版本说明

版本:F23

已实现以下更改:

无障碍设置

我们对无障碍功能进行了以下更新:

  • 修复了与停用节点的行为相关的 bug,改进了屏幕阅读器行为。

音频

我们对音频进行了以下更新。

  • 音频驱动程序和驱动程序 API

    • 打开了与音频信号处理和环形缓冲区相关的关键 FIDL 协议,以提高 ABI 兼容性。
    • 更改了复合音频的 devfs 别名名称,使其符合标准命名方式。
    • 添加了对电源转换的检查 (aml-g12-tdm 音频驱动程序)。
    • 添加了 aml-g12-tdm 驱动程序的电源转换跟踪。
    • 改进了 aml-g12-audio-composite 驱动程序的日志记录功能。
  • AudioCore 和智能显示屏支持

    • 停用了导致 SSH 连接错误的一些音频测试。
  • AudioDeviceRegistry 服务

    • audio_device_registry 添加了跟踪功能,以跟踪电源转换。
    • 阐明了日志记录。
    • 修改了 WatchDevicesAdded 方法,以便立即响应首次调用,即使是空矢量也是如此。
  • 音频开发者工具

    • ffx audio device play 命令添加了 --channels 标志,以控制有效声道和音频设备的电源状态。
    • 修复了 ffx audio recordffx audio device record 中的故障和环形缓冲区处理问题,以正确捕获音频。

蓝牙

蓝牙进行了以下更新:

构建

Build 进行了以下更新:

  • 添加了新的环境变量 TEST_UNDECLARED_OUTPUTS_DIR_OVERRIDE,用于控制未声明输出的写入位置:这对测试很有用。
  • scoped_global_logger 添加了 bazel build 目标:此目标适用于树内 Bazel 目标。

钴蓝

我们对 Cobalt 进行了以下更新:

  • 将 Cobalt 组件迁移为使用 FUCHSIA_LOG,而不是已废弃的 fuchsia_logging:: 严重级别。

组件框架

我们对组件框架进行了以下更新:

  • 添加了对组件管理器的支持,以便从字典中的 environment 和配置值路由运行程序功能。
  • fuchsia.component.decl 中添加了对弱势服务优惠的支持。
  • 移除了动态配置功能,并将其替换为 bedrock 字典。
  • 现在,OnStop 事件中会报告组件退出代码和终止状态,并且 StopConclusionComponentStopOutcome 已合并,以简化组件停止操作。

连接驱动程序

Connectivity Drivers 进行了以下更新:

  • dwmac 驱动程序现在直接实现了 NetworkDevice 协议,从而提高了大多数基准测试中的性能。
  • brcmfmac 驱动程序现在会正确设置 wnm iovar,从而解决 VIM3 上的 BCME_BUSY 错误。
  • 移除了 fuchsia.hardware.network/DeviceClass 最新的 NEXT API 版本,影响了 fuchsia.net.interfaces/Properties
  • 通过保留每个测试用例的套接字修复了 filter-fidl 测试:由于后续测试用例绑定的套接字恰好与前面的测试用例选择的端口相同,因此 filter-fidl 测试会出现不稳定的情况。此更改会保持之前用例的套接字处于打开状态,以便网络堆栈为每个用例选择新的端口。
  • 更新了 weave/tests 以使用现代路由 FIDL API:这项变更是指,从使用已废弃的 fuchsia.net.stack AddForwardingEntry 添加路由改为使用 fuchsia.net.routes.admin
  • 通过为 KeepResource 的成员命名来避免了 unused_tuple_struct Lint

诊断

我们对“诊断”进行了以下更新:

  • 归档员
  • 采样器
  • Syslog
  • 确保基于 inspect-runner 的测试被视为系统测试。

显示

我们对展示广告进行了以下更新:

  • 将显示驱动程序堆栈迁移到了现代 Fuchsia 平台基础架构,例如 DFv2 和 FIDL。预计不会对用户造成任何影响。
  • 为保持一致性而重命名了显示屏驱动程序
    • simple-displayframebuffer-display
    • intel-i915intel-display
    • virtio-guestvirtio-gpu-display

驱动程序框架

我们对驱动程序框架进行了以下更新:

  • 通过改用枚举表示法,提高了平台总线库的中断模式,从而提高了类型安全性和代码清晰度。
  • 根据解析器重命名了驱动程序集合。
  • ** 简化了 ScopedGlobalLogger,以改进测试日志记录,并且之前停用的测试已重新启用并更新。与已移除的测试关联的未使用的 API 也已删除。**
  • 更新了 GPIO FIDL:为未来的中断选项添加了一个空位类型,并将 SetPolarity 重命名为 ConfigureInterrupt。GPIO 初始化元数据也已改用 pinimpl 类型。
  • 通过简化 ScopedGlobalLogger 实现来改进了 ScopedGlobalLogger 实现:由于它实际上从未进行任何异步调用,因此无需为日志记录器创建线程。
  • 通过使用 realm_builder_exposed_dir 转发连接,简化了 driver_test_realm 中的转发机制:这修复了公开未使用转发机制的 fuchsia.hardware.ramdisk 服务时出现的问题,还允许我们使用 dtr_exposes 而不是已废弃的 exposes Start 参数。
  • 将已废弃的驱动程序测试库部分迁移到了内部命名空间:向使用该命名空间的测试添加了警告,以防止新测试复制这些测试。
  • 通过添加单元测试和优化代码改进了驱动程序传输和简单驱动程序:驱动程序传输示例现在展示了 FIDL 客户端交互、优化的传输大小查询和改进的码率设置,而简单驱动程序示例演示了前台和后台驱动程序测试之间的区别。**

FIDL

我们对 FIDL 进行了以下更新:

  • 更新了与音频和组件管理相关的多个 FIDL 协议,以实现 ABI 兼容性fuchsia.hardware.audio.signalprocessing/Readerfuchsia.hardware.audio/RingBuffer 现在具有灵活的方法和开放协议(以及其组合协议)。fuchsia.component/ComponentController 现已开放,提供灵活的 OnEscrowOnStopInfo 事件。
  • 改进了 FIDL 构建系统:“未命名版本”FIDL 库不再进行兼容性测试,“命名版本”逻辑在构建模板中进行了整合。此外,还重新生成了 fuchsia.io 的 Go 绑定。

GPU

GPU 进行了以下更新:

  • 合并了 arm-mali GPU 驱动程序的上游更改。

内核

内核进行了以下更新:

  • 虚拟内存
    • 禁止为实体或连续的 VMO 创建数据流。
    • 开始移除目标 PmmNode 周围的 pmm_ 封装容器函数。
    • 添加了一个选项,用于向内容大小之外的 VMO 提供零。
    • 禁止在物理 VMO 上执行缓存操作。
    • 添加了新的 PMM 竞技场选择算法。
  • 电源
    • 添加了对在功能标志后面暂停单调计时器的支持。
  • 其他

Matter

我们对 Matter 进行了以下更新:

  • 改进了 Matter/GHP:修复了错误并提高了稳定性。

平台驱动程序

平台驱动程序进行了以下更新:

  • 在 SPMI 中添加了一个 FIDL API,用于表示总线上的目标/辅助 SPMI 设备,从而支持多台设备。
  • 增强了 GPIO,添加了新的 FIDL 位类型以用于未来的中断选项,并迁移到了 pinimpl 协议。核心驱动程序现在会在 gpioimplpinimpl 之间进行选择。
  • 增强了 I2C,以添加对 reg 字段中多个外围设备地址的设备树访问器支持,并将 I2C 地址添加到生成的节点属性中。这简化了复杂 I2C 配置的处理。
  • 为 SPI 添加了设备树访问器,将 fuchsia.hardware.spi.businfo 元数据附加到 spiimpl 节点。
  • 向平台设备添加了资源属性,以便驱动程序验证正确的资源分配。
  • 添加了 Banana Pi F3 的设备树源代码。

Rust

Rust 进行了以下更新:

  • 为第一方和第三方 crate 启用了 rustdoc 子目标,提供了 fx rustdoc-link 脚本来合并生成的文档。
  • 改进了对不可访问模式的检测,尤其是在使用 neverInfallible 时。
  • 更新了多个依赖项,包括修复了 nom minimal-lexical 依赖项,并在 hexlog crate 中启用了新功能。
  • 由于与 LLD 不兼容,暂时停用了 Rust LTO。

软件交付

软件分发进行了以下更新:

Starnix

Starnix 进行了以下更新:

测试

测试进行了以下更新:

  • 通过将工件存储在每个基准测试用例目录中改进了 iperf 基准测试:这修复了服务器 JSON 输出文件和 trace.fxt 文件相互覆盖的问题。
  • 更新了针对密封网络堆栈通过环回运行的 iperf 基准测试:现有测试已改为使用 netemul 沙盒运行 iperf,并修改为基准测试。保留了用于运行 iperf 基准测试的现有 Python 脚本,以重复使用将 iperf JSON 输出转换为 fuchsiaperf 输出的逻辑。

线程

我们对 Thread 进行了以下更新:

  • 为 ot-radio 模块启用了全双工事务:此更改改进了 ot-radio 驱动程序的性能,并解决了当 TX 和 RX 方向的吞吐量都较高时 TX 事务耗尽的问题。

计时

我们对时间记录功能进行了以下更新:

工具链

工具链进行了以下更新:

工具

我们对“工具”进行了以下更新:

  • 改进了调试程序,包括支持从附加进程中收集 minidump(对调试测试超时很有用)、修复了由未验证的行表条目导致的崩溃问题、在端到端测试中一致包含 SSH 端口、将 CURRENT_SUPPORTED_API_LEVEL 更新为 22(移除了旧版 IPC 版本兼容性),以及移除了旧版 DebugAgent 启动器。
  • 更新了 DevShell,以使用 jiri 的更新版参数排序。
  • 停用了 VSCode 的源代码图可视化功能,以提高 Fuchsia 代码库的性能。

ffx

ffx 进行了以下更新:

  • 提高了模拟器的稳定性。我们进行了一些更改,以提高模拟器稳定性并解决常见问题。
  • 添加了对引导加载程序 Fat 分区和 EFI 产品软件包的支持。这样,模拟器便可从仅包含引导加载程序分区或包含基于 EFI 的内核的产品软件包启动。
  • 添加了 FfxCoreSubCommand 和 check_core_constraints。此函数会在命令执行之前进行检查,以确保命令是通过机器接口调用的,传递的配置标志只有一个,并且传递的配置标志是文件的路径。目标也通过 CLI 指定。libfho 会在执行之前对子工具调用此函数。
  • 向播放命令添加了 active_channels。这会向 ffx audio device play 命令添加 --channels 标志。此标志用于通过 CLI 操控哪些声道处于启用状态,以及配置音频设备的电源状态。
  • 改进了错误处理方式。对 ffx 的错误处理和报告进行了多项改进。这包括正确报告 SSH 错误、改进了有关正在使用的端口的错误消息,并针对不正确的 build 目录添加了错误。
  • 更新了 ffx,以支持使用 --core 标志进行直接连接。这会更新用于处理连接和为开发者提供 FIDL 协议的 ffx 行为。将 --core 标志传递给命令时,系统会尽可能使用非守护程序行为。
  • 清理了旧的配置生成代码,并向 fx set 添加了一个新的 --assembly-override 选项。此选项会在 args.gn 中正确设置新的开发者汇编替换映射。
  • 更新了 OvernetConnector 以提前退出并移除不必要的 ASCII 艺术字。

fx

fx 进行了以下更新:

  • 更新了 fx serve,使其专用前台代码库服务器,从而简化了其操作。ffx 现在是默认的代码库服务器,相关配置已更新。这也为移除 pm 做好了准备。
  • 更新了脚本,以确保它们在任何环境中都位于相应路径中。 此更改可确保在 PATH 上找到脚本目录,即使用户未使用 fx-env.sh 也是如此。
  • 公开了 fx set --rbe-mode=MODE这简化了 RBE 配置。
  • 在 Python 中重新实现了 fx status

ffxutil

ffxutil 进行了以下更新:

  • 在 ffx 配置中添加了 SDK 工具替换项。

界面

界面进行了以下更新:

视频

我们对视频广告系列进行了以下更新:

  • 已废弃 SetTags,并将其移除。为解决 SetTags 的弃用问题,我们已多次进行此更改。
  • 废弃了 BuildAndInitializeWithTags,取而代之的是 WithTags
  • 上游 libcxx 更改了隐式包含 cmath 头文件的方式,导致 Fuchsia 上出现构建故障。此补丁会将缺少的“cmath”include 添加到多个 Fuchsia 组件。
  • 无需手动路由 LogSink,因为这会通过客户端分片隐式完成。未来的 CL 将更新分片中使用的路由,因此必须清理这些重复的路由,以便更新分片。

WLAN

我们对 WLAN 进行了以下更新:

  • 添加了漫游功能。借助此功能,WLAN 可以通过 fullmac 设备固件发起漫游。现在,在漫游时,政策漫游监控器会重新初始化,以提高可靠性。
  • 将 FullmacDevice 更改为使用 FIDL 通道,而不是 Banjo。通过使用 FIDL 通道在 FullmacDevice 结构体和供应商驱动程序之间进行通信,提高了性能。
  • 改进了 WLAN 日志记录功能。wlancfg 现在会在成功从 WLAN 问题中恢复时捕获系统状态的快照。client-connections-toggle-events 节点已重命名,日志行现在会正确声明已收到国家/地区代码。接口管理器会在恢复期间采取行动之前,记录所有客户端和 AP 状态机的状态。现在,系统会记录 wlan_connectivity_statesconnected_networksdisconnected_networksdisconnect_sources 时间序列。
  • 清理了技术债务。log_cobalt_1dot1 宏已变得整洁,AP 状态机现在会公开其当前状态信息,并且已解决两个 Clippy lint 问题。指标过期时间已更新。
  • 修复了 WLAN 问题。修复了以下问题:在移除接口期间移除 PHY 可能会导致 wlandevicemonitor 保留过时接口。send_assoc_req_frame 函数不再有参数。调用 stop_fullmac_mlme() 后,系统不会再访问 WlanFullmacImplIfc FFI。