Fuchsia F15 release notes

Date: November 22, 2023

Version: F15

The following changes have been implemented:

Application Runtimes (Flutter, Starnix, and Web)

Starnix

The following updates have been made for Starnix:

  • Added a self-profile container feature which allows breakdown of CPU for individual syscalls.
  • Added ptrace UAPI.
  • Added "button" support in Starnix input device.
  • Added support and fixes for overlayfs in Starnix.
  • Added an InterruptibleEvent-based waiter for Futex support.
  • Fixed various security findings when using and handling Futexes.
  • Initial support for lock ordering and functionality in Starnix.
  • Initial support for RISC-V architecture, adding vDSO and getting first set of tests to pass.
  • Initial support for fsverity ioctl.
  • Initial support for Perfetto as consumer for Starnix traces.
  • Initial support for inotify and ensuring that the corresponding LTP tests are passing.
  • Implemented gettimeofday and clock_gettime in vDSO to get faster speeds.
  • Implemented Magma semaphore import and export to return sync files.
  • Implemented MADV_DONTFORK and MADV_WIPEONFORK for madvise().
  • Improve the binder interface by making it more reliable and fix various race and locking issues.
  • Performance improvements for syscalls using the following techniques:
    • Use Mutex instead of RwLock.
    • Synchronously handle triggered events.
    • Use DenseMap instead of HashMap.
    • Use Futex instead of zx::Port.
  • Wired up statfs for remote filesystems.

Web

The following updates have been made for Web:

  • Improved memory allocation efficiency by always sending constraints before waiting.
  • Fixed two fiddle check failures when the replies are missing to avoid crashes in some edge cases.
  • Removed loop in ProcessDeferredAccessibilityEventsImpl which improves the performance of accessibility features.

Connectivity (Bluetooth, IOT, WLAN, Netstack)

The following updates have been made for Connectivity:

Bluetooth

  • Fixed issues where some speakers were unable to connect audio.
  • Fixed an issue where media information was not showing up when paired with some phones.

Developer

The following updates have been made for Developer workflows:

  • Added ffx auth plugin.
  • Added a default SDK version if no version is passed into the ffx product list tool.
  • Added ffx ffx-storage in-tree only.
  • Added an ABI check to Overnet between host tool and device.
  • Removed support for fetching PBv1 from the ffx product tool.
  • Removed the unused ffx product-bundle tool.
  • Removed the Overnet tool.
  • Updated ffx target flash to communicate directly to device.
  • Updated ffx target flash to load ProductBundle from zip without extracting the zip.

Diagnostics

The following updates have been made for Diagnostics:

  • Added various additional APIs for asserting Inspect data in Rust.
  • Deleted remote-diagnostics-bridge.
  • Fixed moniker format returned by ArchiveAccessor.
  • Improved Diagnostics Persistence performance by enabling requesting persisting data associated when multiple tags are used at the same time.
  • Improved formatting of arrays for ffx inspect and query.
  • Updated log_listener to use the same API as ffx log.
  • Updated run-test-suite to leverage a faster protocol for logging when running on the host.
  • Updated all Rust components to use InspectSink.

FIDL

The following updates have been made for FIDL:

  • Added fidl::IsWire<T>.
  • Added experimental flag for allow_arbitrary_error_types.
  • Added compatibility best practices.
  • Enabled unknown interactions everywhere.
  • Fixed HLCPP conversion with unknown interactions.
  • Included resolved type of aliases in IR (Intermediate Representation).
  • Removed "has envelope" property.
  • Removed FIDL wire format V1. See RFC-0229: FIDL 2023 for more information about the long-term support of the wire format.
  • Removed transport error from fpromise::result constructors.
  • Updated TransportErr to serialize for natural bindings.
  • Updated @transitional to be behind an allowlist.

Timekeeping

The following updates have been made for Timekeeping:

  • Updates to use mmap to read large files instead of loading wholesale which resulted in 7MiB of saved RAM.