日期:2024 年 7 月 26 日
版本:F21
已实现以下更改:
蓝牙
蓝牙进行了以下更新:
- 在将蓝牙堆栈迁移到 DFv2 并改进其 API 方面取得了重大进展:
bt-hci-intel
、bt-fct-hci
和bt-hci-passthrough
驱动程序已迁移到 DFv2 和新的HciTransport
协议。fuchsia.hardware.bluetooth.VirtualController
、fuchsia.hardware.bluetooth.Peer
和fuchsia.hardware.bluetooth.Emulator
API 已过时。- 对
fuchsia.bluetooth.snoop
FIDL API 进行了现代化改造。- 变更:fxr/1011612
- bug:fxb/42176826
- 改进了蓝牙功能和可靠性:
- 实现了
AudioOffloadController.Stop
方法和bredr.Connection
协议。 - 添加了对在模拟控制器中设置 LE 连接角色的支持,并修复了
BrEdrDynamicChannel
中的崩溃问题。 - 实现了
IsoStreamServer
。- 变更:fxr/987032
- 实现了
- 增强了蓝牙测试和开发功能:
- 所有
bt-host
Bazel 单元测试都合并到一个软件包中,以加快 Fuchsia Bazel 构建速度。- 变更:fxr/1070483
- 在
EmulatorDevice
中实现了HciTransport
API。- 变更:fxr/1066016
- 所有
开发者
我们对“开发者”进行了以下更新:
ffx
- 改进了各种
ffx
命令的易用性和可靠性:- 增强了
ffx repository add-from-pm
和ffx target show
的错误报告功能。 - 修复了
ffx component doctor
和ffx starnix adb
存在的问题。 - 改进了重新连接逻辑和错误处理。
- 将
ffx target wait
迁移为无守护程序。- 变更:fxr/1061752
- 添加了新的
ffx
命令和选项:- 引入了用于 fxfs 配置文件管理的命令 (
stop_profile
和delete_profile
)。 - 向
ffx profile memory
添加了--undigested
标志。- 变更:fxr/1067193
- 引入了用于 fxfs 配置文件管理的命令 (
- 增强了
- 清理了多个
ffx
命令的输出和日志记录。 - 未处理的内存性能分析:
ffx profile memory
中的--undigested
标志现在仅显示未处理的内存。- 变更:fxr/1067193
组件框架
我们对组件框架进行了以下更新:
- 稳定性增强:
- 修复了打开服务目录时出现的竞态条件。
- 变更:fxr/1067303
- 移除了与组件事件相关的死代码。
- 变更:fxr/1067492
- bug:fxb/347752627
- 修复了打开服务目录时出现的竞态条件。
连接驱动程序
Connectivity Drivers 进行了以下更新:
- 通过解决启动期间可能发生的崩溃问题,提高了 SDIO 驱动程序的稳定性。
- 变更:fxr/1065872
诊断
我们对“诊断”进行了以下更新:
- 优化了 LogTracer,以防止在 Rust 中使用日志 crate 时创建不必要的日志记录。
- 变更:fxr/1061641
- 防止在异常中阻塞兴趣监听,这会导致关闭期间出现问题。
- 变更:fxr/1065413
- 增强型经纪人在“检查”中添加了租赁记录。
- 变更:fxr/1066704
- 对 C++ syslog API 进行了各种改进。
- bug:b/299996898
显示
我们对展示广告进行了以下更新:
- 简化了显示屏驱动程序堆栈:
- 移除了未使用的 DFv1 驱动程序,并默认启用了 DFv2 驱动程序组件。
驱动程序框架
我们对驱动程序框架进行了以下更新:
- 移除了 syslog 依赖项:从驱动程序运行时共享库中移除了 syslog 依赖项。这还解决了在某些情况下,当 Bazel 驱动程序请求原本不存在的 libsyslog.so 时,运行时出现的链接错误。
- 变更:fxr/1068592
FIDL
我们对 FIDL 进行了以下更新:
- 改进了 FIDL 性能和工具:
- 优化了 FIDL Rust 客户端唤醒器,并在 C++ 中的断言检查中添加了句柄计数。
- 为多 API 级别 FIDL 绑定实现了 RFC-0232:
- 在 fidlc 中添加了支持,并更新了 GN build 以使用特定 API 级别版本。
- 变更:fxr/955053
- bug:fxb/42085274
- 移除了已废弃的
@available legacy
参数,并更新了相关文档。
- 在 fidlc 中添加了支持,并更新了 GN build 以使用特定 API 级别版本。
- 改进了 FIDL API 设计和文档:
- 阐明了类型声明右侧的方法和禁止使用的属性的 AST。
- 变更:fxr/1067293、fxr/1065794
- bug:fxb/42156522
- 阐明了类型声明右侧的方法和禁止使用的属性的 AST。
- 在 FIDL 中针对平台和外部组件强制执行 ABI 检查。
- 变更:fxr/1068293、fxr/1065802
- bug:fxb/335446415
- API 级别引用标准化:
ZX_*_SINCE()
宏现在支持HEAD
关键字,从而实现一致的 API 级别引用并确保 API 更改适用于未来。- 变更:fxr/1046234、fxr/1043241
- bug:fxb/42084512
本地化
我们对 I18n 进行了以下更新:
- 通过移除空的迁移组来清理了构建系统。
- 变更:fxr/1070932
IOT
我们对 IoT 进行了以下更新:
- 修复了发现代理权宜解决方法的问题并防止添加错误的 IPv4 地址,从而提高了 IoT 堆栈的可靠性。
内核
内核进行了以下更新:
- 改进了计时器功能:
platform_set_oneshot_timer
函数现在使用原始计数作为输入,并且支持 Sstc 功能,可在监督器模式下直接设置计时器比较值。- 变更:fxr/1063733、fxr/1064680
- bug:fxb/338233921
- 增强了系统调用日志记录和调试功能:系统调用现在会在 LTRACE 中按名称记录,并且改进了针对挂起失败的内核日志记录。
- 解决了竞态条件和稳定性问题:修复了在 hotplug 期间挂起和线程调度后与 CPU 空闲状态相关的竞态条件,并还原了对页面分配和脏页处理所做的更改,以提高稳定性。
- 引入了新的 VMO 系统调用:添加了
zx_vmo_get_stream_size
和zx_vmo_set_stream_size
,它们最终将取代使用 VMO 内容大小的属性。- 变更:fxr/1047092
- bug:fxb/340137331
- 修复了其他 bug:解决了
std::find
中的断言失败问题,并改进了页面缓存行为。
平台驱动程序
我们对平台驱动程序进行了以下更新:
- 增强型 GPIO 实用程序:GPIO 实用程序工具现在支持设置引脚功能,并包含中断功能。
- 改进了 USB 功能和稳定性:USB 连接检测现在可以正常运行,
fusb302
驱动程序更新可防止重复的GoodCRC
消息,从而解决了 VIM3 电源循环问题。- 变更:fxr/1065852、fxr/1055942
- bug:b/341170277
- 驱动程序运行时优化:驱动程序运行时共享库不再依赖于 syslog 库,从而解决了运行时链接错误。
- 变更:fxr/1068592
- Amlogic 显示屏增强功能:调用
SetDisplayPower(false)
时,Amlogic 显示屏编码器颜色会变为绿色,以便于调试。- 变更:fxr/1060376
- 节点拓扑验证:
sherlock
和astro
device-enumeration-test
已迁移,以使用来自驱动程序开发服务的标识符来验证节点拓扑。 - ElementControl 渠道配置:
Topology.AddElement
现在允许客户提供自己的ElementControl
渠道。虽然客户端目前仍可使用返回的通道,但此行为将被废弃。
Rust
Rust 进行了以下更新:
- 工具链和依赖项更新:从
rust-ci
中移除了--no-goma
标志,添加了rutabaga_gfx
crate,移除了dependency_on_unit_never_type_fallback
实例和-Awhere_clauses_object_safety
lint。 - 改进了远程执行和 API 级别处理:Rust 的远程执行策略现在会正确传播,Rustdoc 不再处理
api_level
标志。- 变更:fxr/1070193、fxr/1064676
- bug:fxb/344622439
电源管理
我们对电源管理进行了以下更新:
- 电源依赖项管理和术语:移除某个元素时,其依赖项也会一并移除。“主动”依赖项已重命名为“断言”,而“被动”依赖项已重命名为“机会性”。
- 模拟挂起初始化:
fake-suspend
现在会被阻塞,直到初始化为止。- 变更:fxr/1065355
SDK
SDK 进行了以下更新:
- 改进了 IDK 原子生成功能:Fuchsia Bazel SDK 现在使用
//sdk:final_fuchsia_sdk
,将 IDK 原子生成功能移到了 Bazel 图表中,并且空的*.api_summary.json
文件表示特定 API 级别不受支持的 FIDL 库。 - 增强的功能和测试:SDK 中已移除
fbl/fzl
,_walk_json
的弹性更强,并且为structured_config
添加了测试。 - 添加了
bin_name
支持:fuchsia_cc_binary
规则现在支持bin_name
属性。- 变更:fxr/1062452
软件交付
软件分发进行了以下更新:
- 软件包目录和缓存优化:软件包目录针对 fxblob 进行了优化,大大提高了 blob 读取速度,并且软件包缓存不再需要存储生命周期权宜解决方法。
- 改进了日志记录和错误消息:为系统映像软件包哈希添加了日志消息,并增强了与软件包相关的错误消息。
Starnix
Starnix 进行了以下更新:
- 改进了资源管理和归因:Starnix 程序现在会报告为子级主账号,以便更好地归因内存。
- 变更:fxr/1056589
- bug:b/337865227、b/341981291
- 增强了信号处理和暂停/恢复功能:优化了进程定向信号,以便仅中断一个任务,并解决了暂停等待器问题,从而防止在使用有效 shell 恢复后无响应。
- 文件系统和数据存储方面的改进:在测试中为数据存储功能添加了路由,支持在真实文件系统上进行 xts 测试,并添加了从 tarball 向文件系统传播扩展属性的支持。
- 图形和输入增强功能:向 GPU 设备添加了基于 Gfxstream 的 Rutabaga 实例,以及用于与输入流水线进行
touch_standby
状态通信的设备。 - 改进了政策处理、统计信息和地址空间管理:优化了政策索引和权限检查,确保了暂停后统计信息刷新,并修复了
user_new_limit
从错误的地址空间读取数据的问题。 - 其他 bug 修复和更新:解决了各种问题,包括 bpf 文件描述符处理、唤醒租约重命名、ebpf 帮助函数桩和
FsNode.append_lock
修改。
测试
测试进行了以下更新:
- 增强的
fx test
用户体验:fx test
重写提供了调试增强功能,包括改进的参数解析和实用建议。 - 提高了测试稳健性和可靠性:SWD 端到端测试、网络测试和
ip-test-macro
现在更可靠且信息量更丰富,同时 WLAN 的hw-sim
自动连接中的潜在故障也已得到解决。 - 更新了标志名称并移除了未使用的文件:为清楚起见,
ffx-output-directory
标志已重命名为artifact-output-directory
,未使用的mock.rs
文件已从fuchsia-component-test
中移除。 - 更稳健的
gvisor_syscall_tests
:这些测试更稳健、更准确,其中更新了原始 IP 套接字测试、内核版本处理、PMTUD,并修复了IPPROTO_ICMP
。- 变更:fxr/1063593
- GPIO 和网络堆栈测试更新:
gpio
测试已做好 DFv2/gtest 转换准备。netstack_test
宏现在是显式的,需要显式类型参数。
计时
我们对时间记录功能进行了以下更新:
- 改进了 TTRF 文档和测试:实现了用于修改 Timekeeper 行为的持久测试异步命令(尚未启用),添加了包含 TTRF 示例代码的 README,并移除了过时的 CFv1 参考。
- 移除了未使用的依赖项:移除了未使用的电源拓扑依赖项令牌。
- 变更:fxr/1070977
工具链
工具链进行了以下更新:
- 对并行虚拟化技术的支持:
PlatformParavirtualizationConfig
现在默认允许虚拟化(如果受支持)。向“通用模拟 arm64”开发板配置中添加了包括 vsock 服务在内的准虚拟化支持。
工具
我们对“工具”进行了以下更新:
- 蓝牙控制器增强功能:虚拟蓝牙控制器现在支持设置 LE 连接角色。
- 变更:fxr/1066752
- 测试和工具更新:在 CTF 中添加了 Realm 集成测试。添加了针对 Bazel SDK 的
structured_config
的测试。bt-fct-hci
工具已迁移到HciTransport
。现在,如果发生目标连接错误超时,测试运行程序会重新连接。 - 测试 Phys VMO 清理和日志记录:测试 phys VMO 现在会在返回之前进行清理,以确保处于已知状态。如果跳过的
ContextSwitch
记录的records_dropped
超过 0,系统会发出警告。 - 软件包信息来源:list-packages 工具现在从
all_package_manifests.list
获取软件包信息。改进了 pkgstats 软件包页面的视觉设计。
界面
界面进行了以下更新:
- 调试增强功能:现在,命中区域和显示屏电源状态会转储到“检查”部分,以便更轻松地进行调试。
WLAN
我们对 WLAN 进行了以下更新:
- 测试增强功能:添加了在启动期间删除 fullmac 驱动程序以进行测试的支持。解决了 hw-sim 自动连接中可能存在的故障。改进了 Honeydew 测试套件,以检测异常启动。
- 网络配置迁移:更新了已保存网络配置的格式和存储方式,包括从旧的存储数据迁移。新增了用于跟踪网络配置迁移结果的指标。
- 漫游功能改进:分离了
RoamManager
的服务函数,以便将来转换为基于服务循环的服务。为提高清晰度,我们更新了内部漫游库类型,移除了不必要的字段。改进了漫游断开连接处理,区分了可忽略的断开连接与漫游尝试失败。 - “检查”工具的优化:
InspectBoundedSetNode
结构体可优化“检查”工具中的事件元数据处理。日志记录现在在“检查”中包含断开连接信息。