Fuchsia F10 release notes

Date: April 12, 2023

Version: F10

The following changes have been implemented:

Component Framework

Most components now run as v2, except Opal, Kronk, cast_runner, and web_instance.

Developer

Bazel

The following improvements have been made in the Bazel workflows:

  • FIDL libraries defined outside of the Fuchsia platform must not start with Fuchsia.
  • fuchsia_package.deps should be updated to fuchsia_package.components and fuchsia_package.tools.
  • Running and publishing a component prints each step being taken; the user does not need to make any changes for this update.

Issue: Need to add initial publishing rules.
Impact: A new fuchsia_task_publish rule was added, which is automatically created for packages. Calling bazel run :pkg.publish will now publish the package.


Issue: Need to add parallel extraction to CIPD downloads.
Impact: Parallel extraction was added to CIPD downloads, which increased download speeds of Clang and SDK.


Issue: Need to deprecate deps in fuchsia_package. Impact: Deprecated deps in fuchsia_package. No changes needed, but a warning will be printed until fuchsia_package is updated to use components and assets.


ffx

The following updates have been made in ffx and other tools:

  • Product bundle downloads will not redownload a product bundle if it already exists on your machine.
  • New ability to clean up previously downloaded product bundles.
  • Improved UI when downloading product bundles.
  • ffx component copy plugin supports copying files between host and a component on target.
  • More reliable resumption of incomplete downloads.
  • Profile tooling:
    • Added option to report the memory usage with buckets.
    • Fixed accounting bug involving incorrect charging of indirect VMOs.
    • Cosmetic improvements, including adding an option to choose between human readable sizes and exact sizes, aligning outputs, and clearer descriptions.
  • Debugging tools:
    • Enhanced compatibility support so users should see fewer version mismatches.
    • Resolved "Debugger not connected to device" issue for Fuchsia VSCode extension.
  • All component tests are subject to the hermetic resolver by default; tests that launch components in packages other than the test component's package will fail unless the packages are declared. See Hermetic component resolution.
    • Updated ffx log --severity to take both warn and warning as arguments.
  • Graduated from experimental:
    • ffx package build – Build a package.
    • ffx repository publish – Publish one or more packages to a repository.
    • ffx repository package list – List all packages in a repository.
    • ffx repository package show – List the contents of a package.
  • Introduced to experimental:
    • ffx package far – For working with generic far commands.
    • ffx package archive – For working with package archives.
    • ffx driver list-devices – For fuzzy matching support.
  • Added ffx driver list-nodes-groups.
  • Added ffx inspect list-files.
    • Removed hub usage from ffx inspect list-files and deleted ffx inspect show-files.
    • The API for querying inspect based on a filename now moves to ffx inspect show --file and takes a filename relative to the component namespace.
  • More ffx component plugins (destroy, doctor, explore, start, stop, resolve, reload) support partial matching on moniker, URL and instance ID.
  • When specifying --categories for ffx trace, a wildcard * may be used to indicate enabling all categories matching a given prefix; for example, kernel* would match kernel:ipc, kernel:syscall, etc.
  • Added the ability to print a set, map, unordered_set, and unordered_map in C++.
  • Added a new setting source-map that allows more flexibility in finding source files.
  • Improved the display of connection errors.
  • Introduced synchronous UI; short-running commands will block the input.
  • Added --force-repo option to ffx product-bundle get, which will overwrite a package repository rather than declining to do so because the prior one is present.
  • Increased tracing debug output in logs.
  • No partial downloads: using temporary directory until download is complete, avoiding partial download issues.

Issue: Support for OAuth2 OOB is being removed.
Impact: Update to default to new OAuth2 non-OOB workflow.


Issue: When listing or removing bundles, the product-bundle tool would not return anything and would not effectively inform the user.
Impact: Update has been made so that tool is more explicit when no bundles are found.


Issue: Users were unclear which bundles are about to be deleted by the remove --all command.
Impact: Update has been made to list the bundles to be removed beforehand.


Issue: Sort order of ffx product-bundle list is causing the oldest image to appear at the top of the list.
Impact: Update made to reverse sort order of list so that the newest bundles are listed first.


Issue: When attempting to get a duplicate product bundle message (PBM), the tool was printing the duplicate repo message instead of the duplicate bundle message.
Impact: Fix was implemented to reorder PBM messages on duplicates.


Issue: Default remove commands were removing in-tree builds.
Impact: Fix was implemented to not include in-tree builds in remove.


Issue: Users were unable to set their severity limit in logger.
Impact: Drivers now support having their severity set dynamically via ffx log --severity.

Diagnostics

  • The Archivist no longer provides Lifecycle events as a data source, only Inspect and Logs. Archivist was also refactored to ingest data using the new event stream capabilities.
  • RFC-171 was implemented and it is now ensured that all components get LogSink, improving developer experience.
  • Improvements to the triage parser and a few language improvements such as _-separated numbers, Any, All.
  • Sampler was refactored to not emit empty histogram buckets reducing the load on Cobalt.
  • ffx inspect gained new features such as: ffx inspect list-files,iquery show –file with globs, and was improved to not rely on the hub.
  • A few bugs were fixed for the Rust logging library and it became a bit smaller, saving space in BlobFS.

FIDL

Support for unknown interactions is starting to roll out in binaries. See RFC-0138.

Graphics and Media

  • Various stability improvements to i915 on Tigerlake devices. Driver has been enabled by default.

Issue: Device was stuck at black screen after enabling "Display Settings" testcase.
Impact: Fix was made to AMLogic display to correct some fixed panels.


Issue: Drivers were running into deadlocks when using Driver Framework v2.
Impact: i915 display driver was moved to Driver Framework v2.

HCI (Input, A11y, i18n, and View System)

Issue: Test failures occurring during scene controller.
Impact: Update was made to allow clients to present a flatland view using a raw ViewportCreationToken.


Issue: Highlights are a different color on Flatland.
Impact: Fix was made to the a11y highlight color in Flatland.


Issue: Need to have screenshot capabilities.
Impact: Update was made to add image compression skeleton.


Issue: Users should be notified when the clipboard contents change.
Impact: Update was made to add a clipboard watch method.


Issue: Need to add image flip options API.
Impact: Update was made to add image flip options API.


Issue: The pixel_scale field was deprecated and should be removed.
Impact: Update was made to change the status of pixel_scale from deprecated to removed.

Kernel

Issue: Update needed to emit a process record named "kernel" for PID 0 to restore parity with the original ktrace importer.
Impact: Process record was created for kernel with kernel threads and per-CPU event tracks.


Issue: Need ability to boot emulators through UEFI by default, locally and in automation.
Impact: Update was made to enable UEFI testing on emulators in automation.


Issue: Need to migrate zxc library with zx.
Impact: Update was made to migrate zxc references to zx.


Issue: Need to reduce padding in thread.
Impact: Update was made to reduce padding in thread.


Issue: Updates needed for ktrace serializer templates to support val_type parameters and StringRef to accept string size parameters.
Impact: Updates were made to serializer templates and dependents in ktrace.


Issue: Need to change references to Undef __UNUSED in C++.
Impact: Update was made to change references from Undef __UNUSED to maybe_unused in C++.


Issue: Suggestion was made to implement optimistic timeslice extension.
Impact: Improvements were made to kernel mutex performance when using timeslice extension.

Virtualization

  • Improved error messages when launching VMs fail.
  • Ported the vshtool from C++ to Rust.
  • Implemented cursor command support in virtio-gpu.
  • Added initial vmm_launcher component.