Fuchsia F15 版本说明

日期:2023 年 11 月 22 日

版本:F15

已实现以下更改:

应用运行时(Flutter、Starnix 和 Web)

Starnix

Starnix 进行了以下更新:

  • 添加了自定义性能分析容器功能,可对各个系统调用进行 CPU 细分。
  • 添加了 ptrace UAPI。
  • 在 Starnix 输入设备中添加了“按钮”支持。
  • 在 Starnix 中添加了对 overlayfs 的支持和修复。
  • 添加了基于 InterruptibleEvent 的等待器,以支持 Futex。
  • 修复了使用和处理 Futex 时出现的各种安全问题。
  • 对 Starnix 中的锁定顺序和功能的初始支持。
  • 初步支持 RISC-V 架构,添加了 vDSO 并使第一组测试通过。
  • fsverity ioctl 的初始支持。
  • 初步支持将 Perfetto 用作 Starnix 轨迹的使用方。
  • inotify 的初始支持,并确保相应的 LTP 测试通过。
  • 在 vDSO 中实现了 gettimeofdayclock_gettime,以提高速度。
  • 实现了 Magma 信号量导入和导出,以返回同步文件。
  • madvise() 实现了 MADV_DONTFORKMADV_WIPEONFORK
  • 通过提高 binder 接口的可靠性来改进 binder 接口,并修复了各种竞态和锁定问题。
  • 使用以下技术改进了系统调用的性能:
    • 不过,应使用 Mutex 代替 RwLock
    • 同步处理触发的事件。
    • 不过,应使用 DenseMap 代替 HashMap
    • 使用 Futex,而非 zx::Port
  • 为远程文件系统连接了 statfs

Web

我们对 Web 版进行了以下更新:

  • 通过始终在等待之前发送约束条件,提高了内存分配效率。
  • 修复了在缺少回复时发生的两次 fiddle 检查失败问题,以避免在某些极端情况下发生崩溃。
  • 移除了 ProcessDeferredAccessibilityEventsImpl 中的循环,从而提升了无障碍功能的性能。

连接(蓝牙、IoT、WLAN、Netstack)

Connectivity 进行了以下更新:

蓝牙

  • 修复了某些音箱无法连接音频的问题。
  • 修复了与某些手机配对时无法显示媒体信息的问题。

开发者

我们对开发者工作流进行了以下更新:

  • 添加了 ffx auth plugin
  • 如果未向 ffx product list 工具传递任何版本,则添加了默认 SDK 版本。
  • 仅添加了树内 ffx ffx-storage
  • 在主机工具和设备之间向 Overnet 添加了 ABI 检查。
  • 移除了对从 ffx product 工具提取 PBv1 的支持。
  • 移除了未使用的 ffx product-bundle 工具。
  • 移除了 Overnet 工具。
  • 更新了 ffx target flash,以便直接与设备通信。
  • 更新了 ffx target flash,以便在不提取 ZIP 文件的情况下从 ZIP 文件加载 ProductBundle

诊断

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

  • 添加了各种其他 API,用于在 Rust 中断言 Inspect 数据。
  • 已删除 remote-diagnostics-bridge
  • 修复了 ArchiveAccessor 返回的标识符格式。
  • 通过启用在同时使用多个代码时请求保留关联数据的功能,提高了诊断持久性性能。
  • 改进了 ffx inspectquery 数组的格式设置。
  • 更新了 log_listener,使其使用与 ffx log 相同的 API。
  • 更新了 run-test-suite,以便在主机上运行时利用更快的协议进行日志记录。
  • 更新了所有 Rust 组件以使用 InspectSink

FIDL

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

  • 添加了 fidl::IsWire<T>
  • allow_arbitrary_error_types 添加了实验性标志。
  • 添加了兼容性最佳实践
  • 在所有位置启用了未知互动。
  • 修复了存在未知互动的 HLCPP 转换问题。
  • 在 IR(中间表示法)中添加了已解析的别名类型。
  • 移除了“has envelope”属性。
  • 移除了 FIDL 线格式 V1。如需详细了解线格格式的长期支持,请参阅 RFC-0229:FIDL 2023
  • fpromise::result constructors 中移除了传输错误。
  • 更新了 TransportErr,以便对自然绑定进行序列化。
  • @transitional 更新为需要通过许可名单才能访问。

计时

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

  • 更新为使用 mmap 读取大型文件,而不是批量加载,从而节省了 7 MiB 的 RAM。