Date: January 21, 2025
Version: F24
The following changes have been implemented:
audio_listener to fix usage-validation bugs and address clang-tidy issues.audio_device_registry service to add Inspect logging of power state changes.aml-g12-tdm driver to power-down audio hardware by default until the first client.The following updates have been made for Bluetooth:
bt-device-id software assembly config, and implemented a default device configuration implemented. The bt-device-id profile is not enabled by default.bt-rfcomm to use L2CAP max_packet_size for RFCOMM session channels, optimizing data transfer. A generic UUID was also added to BR/EDR service search parameters, enabling custom UUID searches.bt-gatt, including adding basic ServerSupportedFeatures support, removing unnecessary handle tracking, and turning on the ISO Host bit if supported. Also, AD types CSIS and PBP were added for LE Audio.bt-host and bt-hci-virtual to prebuilts, and deleted source code. The bt-host prebuilt status is documented in README.bt-hfp with start/stop on request functionality, assembly config for audio gateway, and consolidated optional protocols. ERROR logs are now allowed for bt-avrcp-integration-tests. The LEAdvertisingSetTerminated event was migrated to Emboss, and typos in bt-host/fidl were fixed. An option to disable the timer duration check was added to Lacewing suspend-resume tests, the HCI emulator device node was removed, and the stale Bluetooth sampler config was deleted. Test groups were defined for starnix.arm64, and LE_AUDIO was added to CoD service bits in bt-cli. PrivilegedPeripheral API was added for LE Advertising.The following updates have been made for Cobalt:
max_event_code and event_code limited to 2^31 - 1 to prevent exceeding Java int capacity, and linter warnings addressed in cobaltb.py.The following updates have been made for Component Framework:
BuiltinProgram type, ABI alignment for builtin and non-builtin components, and refactoring of elf_runner.fuchsia_fs calls, and fixing a typo in error logging.fuchsia.ui.composition.The following updates have been made for Diagnostics:
bootstrap.cml entries to a shard for easier modification.ffx log tool to accept --set-severity instead of --selectDebuggedJob abstraction and used it for RootJob, simplifying job attachments and exception monitoring. Moved exception record retrieval to the Exception object for better consistency.print and locals commands.step_plt test. Removed unnecessary dependencies in the step_plt e2e test.low_memory config, and replaced direct calls to zx_clock_get_monotonic with higher-level abstractions.ffx log when connected to a device to enable mapping boot times to any time.The following updates have been made for Display:
The following updates have been made for Driver Framework:
DriverServer and a Driver trait, and address memory management issues and added a test for cross-executor channel behavior.fuchsia_rust_driver template and rustc_cdylib. Also implemented basic Rust driver transport is also implemented.driver_loader, and DriverLoadArgs are passed to DriverHost::StartWithDynamicLinker. The node client is now passed to DynamicLinkerDriverHostComponent::Start, and the dynamic linking StartRootDriver test helper is refactored for reusability. DynamicLinkerDriverHostComponent Start is implemented. A FIDL client is returned when starting the driver host. Loading a driver into the driver host is now implemented.ScopedGlobalLogger added to the SDK for simplified driver testing. Shared libraries are included in driver_test_realm. driver_test_realm code cleaned up. Trace routing from void removed in driver_test_realm. DriverRunnerTest parameterized for dynamic and legacy path testing. driver_test_realm migrated to dtr_exposes/offers.zx::thread logic moved from driver_manager to driver_loader. The exposed directory is passed to the started driver host component. DriverStartArgs are now created and passed from the node. LoadDriverHost now takes a callback. Deprecated integer-based property keys and topological paths are deprecated.ddk::MetadataServer now serves its metadata FIDL service to fdf::OutgoingDirectory. Dependency tokens were removed from ElementSchema. A shared FIDL FakeElementControl is available for the power framework. sdk_* build templates are no longer used in the DDK. fdf::testing now supports Open3. Drivers that fail will be rematched.The following updates have been made for FIDL:
zx::basic_time and fuchsia_zircon types, added conversion traits for zx::basic_time in C++ bindings, support for encoding and decoding {Boot,Monotonic}Instant and zx::basic_time in Rust and C++ FIDL bindings, support for ticks in Rust bindings, and an increased buffer size for asynchronous receive in Rust FIDL.MaybeAlias to MaybeFromAlias in fidlgen, switching fidlgen and fidldoc to use kind_v2, updating fidldoc to render vectors and arrays recursively, adding a boolean in the FIDL build for vendor HLCPP visibility, renaming the new Rust FIDL bindings library to fidl_next, decoupling resources from the core FIDL Rust library, minimizing not_needed() statements and removing passing of the SDK category to fidl_cpp_family() in GN build, requiring the "stable" parameter in fidl_library(), and adding missing tests to the FIDL bundle. Also addressed several bugs related to FIDL GN templates and versioning.fidl_next).SynchronousProxy::is_closed to zx Rust FIDL bindings.fuchsia.device.manager FIDL to fuchsia.system.state.The following updates have been made for GPU:
The following updates have been made for I18n:
The following updates have been made for IOT:
The following updates have been made for Kernel:
ZX_CLOCK_BOOT to specify that a timer should be based on the boot clock, which does not pause when the system suspends.--system-wide flag to ffx profiler attach for more robust profiling of all threads in the root job tree, including handling cases where profiled processes exit mid-session. The profiler now returns samples even if symbols are unavailable.The following updates have been made for Platform Drivers:
The following updates have been made for Power Management:
CpuElementManager server, allowing storage drivers to integrate with the power topology graph. Added th wait_for_suspending_token config flag to control SAG's dependency token handling and provide more flexibility in managing system power states.fuchsia.sensors.types. This introduces a POWER enum to SensorTypes, enabling integration with the Fuchsia Sensor Framework.The following updates have been made for Rust:
MonotonicDuration instead of Duration in zx Rust, alias Duration as MonotonicDuration in Zircon Rust, renamed Time to Instant, renamed SyntheticTime to SyntheticInstant, renamed BootTime to BootInstant, renamed MonotonicTime to MonotonicInstant, and rename Boot/MonotonicTime to Instant in fuchsia_zircon Rust.{Boot,Monotonic}Instant, renamed new bindings lib to fidl_next, decouple resources from core library, and slightly improve initialization of thread-local buffers..rustdoc subtarget for all Rust target types (except dylib + cdylib).rustc_cdylib loadable_module.The following updates have been made for SDK:
fuchsia_product_configuration, addressing a minfo fuchsia_board_configuration() bug, fixing Bazel assembly image verification, and fixing open fonts targets.The following updates have been made for Software Delivery:
SetUpgradableUrls API for updates (implementation gated behind a flag).list and show subcommands).RepositorySpec, removing duplicated enum definitions for better maintainability, and adding a note to CLI OTA tools about progress reporting behavior.The following updates have been made for Starnix:
EPOLLWAKEUP, to wake a suspended container. Epoll wake locks are correctly deleted when the epoll instance is deleted.CLONE_NEWUTS flag and FUSE BPF program loading.binder.fidl protocol, which enables inter-process communication and file descriptor passing between Fuchsia and Linux programs within Starnix.io_uring_setup and basic read/write operations for io_uring, enabling the io_uring01 test to pass./proc/sys/kernel/cap_last_cap file.chown validation logic.The following updates have been made for Testing:
fxtest tool, including support for variables like $FUCHSIA_OUT in the output directory path (matching the behavior of the old fx test), printing failed tests after execution, and addressing partial output issues in replays. A new --timestamp-artifacts flag prevents clobbering of previous test outputs.honeydew_config in python_mobly_test to consolidate Honeydew configuration information, simplifying the process of adding new configurations.ssh_keepalive_timeout FFX configuration in Lacewing tests.libconcurrent's WellDefinedCopy helpers that could cause random test failures.The following updates have been made for Timekeeping:
@available(added=HEAD) to time-related FIDL libraries.The following updates have been made for Tools:
The following updates have been made for ffx:
ffx package archive edit command to rename packages.ffx component route to include runners.ffx target commands, including fixes for IPv6 formatting, machine output of target echo, default target test issues, and daemonless reconnect.ffx repository server:ffx repository server commands to be idempotent.--product--bundle option for ffx repository server stop.ffx config set.ffx emu start.ffx target repository commands to be idempotent.ffx target repository list list on-device configuration.ffx target repository deregister to update the on-device configuration.--all to ffx repository remove.ffx target register.The following updates have been made for fx:
fx build-profile command to conditionally collect system profiling data during builds.The following updates have been made for UI:
fuchsia.input.* and fuchsia.ui.* FIDL libraries. Corrected previous incorrect @available annotations.logging_event_loop in test base classes for improved timeout debugging, and updated the virtual keyboard test to use the new C++ FIDL binding. Added a finite timeout and logs to the wait signal in starnix-touch-test.The following updates have been made for WLAN:
buffer and BufferStrategy implementations, integrated DeltaZigzagSimple8bRleRingBuffer and DeltaSimple8bRleRingBuffer, and added support for uncompressed buffers. Default encoding for u64 is now Simple8bRle.MockTimeMatrix for testing. Fixed issues with skipped interval calculations, Tick::start_has_sample bugs, and unnecessary TimeMatrix server future terminations. Output TimeMatrix as a data spec for better tooling.