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.