Date: April 26, 2024
Version: F19
The following changes have been implemented:
Audio
The following updates have been made for Audio:
Improved audio modularity: The soundplayer component now resides in its own AIB, removed unused storage capabilities from
audio_core
, and fixed missingaudio_core
vectors causingValueErrors
.- Changes: fxr/1010893, fxr/1009217, fxr/1008320
Refactored and improved
ffxdaemon
for audio: This includes modularizing renderer and capturer logic, refactoring theRingBuffer
for multiple protocol support, renaming and clarifying internal components related to WAV sockets, improving dependency management, and refactoring theAudioDaemon
struct.- Changes: fxr/1003116, fxr/1001999, fxr/1003114, fxr/1003115, fxr/1002318, fxr/1004053, fxr/1003113
Bluetooth
Added a new bluetooth tool and Pandora gRPC server framework: Added the
ffx bluetooth
subtool and implemented the Pandora gRPC server framework.- Changes: fxr/961208, fxr/961207
Enhanced Bluetooth low Energy capabilities: Added a credit-based flow control TxEngine to improve LE flow control, implemented
ExtendedLowEnergyConnector
andExtendedLowEnergyScanner
which supports extended advertising and connection features, and added advertising packet filtering constants to the vendor protocol. Also, fixed aLowEnergyScanner
crash related to scan response timeouts and an issue inLowEnergyMultipleAdvertisingTest
.- Changes: fxr/1002193, fxr/985356, fxr/985355, fxr/983023, fxr/1006214, fxr/986428, fxr/984735, fxr/983022, fxr/1008935
- Bugs: b/312896684, b/312896673
Improved the support of isochronous data stream support: Added
IsochronousStream::Read
andIsochronousStream::ReadSupportedDelayRange
APIs, implemented support for ISO data streams in Banjo and FIDL controllers, and added ISO Channel FIDL Protocol support in drivers. Also, fixed an emulator crash and a controller shutdown issue related to missing or failing ISO channel support.- Changes: fxr/1005272, fxr/997312, fxr/998736, fxr/1002652, fxr/1003012
- Bugs: b/328457492, b/328459391,
Enhanced HFP and SCO: Implemented the HFP core shard and added procedures for audio connection and call initiation, and implemented the SCO FIDL API for
FidlController
. Also, translated +CIEVs in HFP to typed values.- Changes: fxr/996354, fxr/921672, fxr/877537, fxr/1003974, fxr/895561
Expanded support and connection handling for bluetooth LE: Improved Bluetooth LE isochronous stream support by adding
Read
,SetupDataPath
, andReadSupportedDelayRange
methods. Also, addedConnection::AcceptCis()
for accepting Connectionless Isochronous Streams.- Changes: fxr/1001175, fxr/997312, fxr/980617
Improved OBEX and RFCOMM: Added support for advertising and searching for MAP services. Fixed protocol list construction, PSM parsing, incorrect PSM values, and issues with duplicate headers and missing
ConnectionIds
for OBEX services. Also, added support for assigningConnectionId
in OBEX. Improved RFCOMM logging.- Changes: fxr/987352, fxr/1000122, fxr/1001394, fxr/1006716, fxr/1005712, fxr/1005372, fxr/1002584
- Bugs: b/42076096, b/42080293
Migrate bt-host from driver to component: includes migrating
serialimpl
protocol to FIDL andLoopbackDevice
driver to FIDL. Also, fixed driver name issues during DFv2 migration and a storage offer issue inbt-init
.- Changes: fxr/991355, fxr/974880, fxr/1010218, fxr/1003659, fxr/1005092, fxr/996212, fxr/1006820, fxr/1007754, fxr/1007170, fxr/996482, fxr/1009315
- Bugs: b/329506134, b/328663864, b/42085239, b/325099398, b/324276236ß
Build
The following updates have been made for Build:
- Improved the hermeticity of Bazel build: Updated BoringSSL build to
generate Bazel rules during roll and improved Bazel SDK and Clang workspace
initialization.
- Changes: fxr/1008842, fxr/1007952
Cobalt
The following updates have been made for Cobalt:
Removed Profile provider routes. This change is due to Cobalt's migration to the role manager.
- Changes: fxr/1010304
Update to include metrics as an SDK area in Cobalt's FIDL interface.
- Changes: fxr/999785
Component Framework
The following updates have been made for Component Framework:
Enhanced component lifecycle management:
- Introduced the
fuchsia.component.Escrow
API to manage component state during shutdown and integrated it into component start/stop actions.- Changes: fxr/991412, fxr/1000121,
- Bugs: fxb/319754472
- Introduced the
Improved capability handling:
- Added
delivery: "on_readable"
for protocol capabilities.- Changes: fxr/1011079,
- Bugs: fxb/319754472
- Added
Enhanced CML and routing:
- Improved the handling of dictionaries for cycle detection, shutdown order, and routing robustness.
Improved tooling:
- Enabled schema support for
ffx component show
.- Changes: fxr/1005672
- Enabled schema support for
Removed the Config Value File (CVF) requirement:
- Changes: fxr/1000095
Developer
The following updates have been made for Developer:
Expanded support for
roll-compiler
: Addedaarch64
mac support.- Changes: fxr/1004719
Improved ProfileResource routing: This resource is now routed to the serial console.
- Changes: fxr/1001364
Diagnostics
The following key updates have been made for Diagnostics:
Enhanced Archivist: Archivist’s own minimum log severity can now be dynamically adjusted, allowing for more flexible control over its log output. The JSON log encoding's "verbosity" field has been renamed to "raw_severity" for consistency. Archivist per component batch timeout is now configurable. Minor performance improvements in Archivist.
- Changes: fxr/989275
Improved debugging through zxdb: Enhanced debugger functionality with recursive component filters which allows attaching to all children of a filtered component, and a new notification signals filter application. Debugger command analytics are now collected.
- Changes: fxr/1011476, fxr/1013624, fxr/1007579
- Bugs: b/329916323, b/330571289
Improved tracing: The trace importer is more robust against corrupted traces.
- Changes: fxr/1001403
- Bugs: fxb/328124336
Improved the Rust Inspect API: Inspect Rust API was enhanced to support atomic updates in properties.
Improved
ffx inspect
: ffx inspect and iquery no longer support reading files directly.Improved ffx log: Added a new asynchronous transactional log reader and parser to enhance the performance of
ffx log
. Added buffering to symbolizer writes to prevent deadlocks. Log backtraces prettification is now supported inffx log
and can be disabled for improved performance.ffx log
output is also improved by deduplicating monikers in tags and gracefully handling symbolization errors.- Changes: fxr/1004536, fxr/997397, fxr/1002857, fxr/1010935, fxr/101559, fxr/1014600, fxr/1008847, fxr/1012852,
- Bugs: b/299980894
Display
The following key updates have been made for Display:
- The display driver stack is being migrated to modern Fuchsia Platform infrastructure, such as DFv2 and FIDL.
Driver Framework
The following updates have been made for Driver Framework:
Enhanced driver context and startup: Updated
DriverStartArgs
to includenode_properties
.- Changes: fxr/986452
- Bugs: b/42182546
Improved the interaction of
devfs
and controller:DevfsAddArgs
now allows overriding the controller interface for compat shims, and devnodes now use separate callbacks forfuchsia.device/Controller
and device channels which improves clarity and prevents accidental multiplexing.- Changes: fxr/1005017, fxr/1005016, fxr/994994, fxr/994995, fxr/994993, fxr/999192
- Bugs: fxb/42063787
Improved stability and resource management: Node deallocation now cancels rebind requests. Fixed colocation flags for
aml-sdmmc
andvim3-usb-phy
.- Changes: fxr/999514, fxr/999632
FIDL
The following updates have been made for FIDL:
Enhanced FIDL tooling: Added a new tool that assesses runtime compatibility across API levels and then generates detailed reports to aid in maintaining stability across Fuchsia releases.
- Changes: fxr/907296
Improved FIDL API versioning: Added
deprecated
,platform
, andlegacy
fields to the FIDL JSON IR and afidlc --platform
flag to enhance API versioning and deprecation management. Removed the@transitional
annotation in favor of explicit versioning.- Changes: fxr/1011080, fxr/1001433, fxr/1003613, fxr/1000412, fxr/995757
- Bugs: b/325669391, fxb/42084545, fxb/42078310, fxb/42085274
Improved error handling: All FIDL errors are now broadcast and they are all terminal.
- Changes: fxr/1011592
GPU
The following updates have been made for GPU:
- Enhanced power management: Added support for powering down shader cores
on suspend and then powering them up on resume. Also, allowed atoms to be
preempted to reduce the suspended latency. Added a FIDL protocol for GPU
power management.
- Changes: fxr/1004556, fxr/1004555, fxr/1001258
i18n
The following updates have been made for I18n:
- Fixed change detector tests for stability of date localization:
Addressed an issue where date formatting changes in the ICU library caused
test failures. The affected test has been updated to be less brittle.
- Changes: fxr/1014633
Kernel
The following updates have been made for Kernel:
Power and task scheduling
- Added provisional syscall for registering CPU energy models in service
of Runtime Processor Power Management (RPPM).
- Changes: fxr/994713
- Added provisional support for wake vectors, allowing the system to be
woken from suspend by a device interrupt.
- Changes: fxr/994109
- Began building out libsched, a library that encapsulates the scheduler
run queue.
- Changes: fxr/1006654
- Fixed a bookkeeping error in PI propagation.
- Changes: fxr/994748
- Added provisional syscall for registering CPU energy models in service
of Runtime Processor Power Management (RPPM).
Virtual memory
- Refactored page fault handling and laid groundwork for future "fault
ahead" optimizations.
- Changes: fxr/998132, fxr/990574, fxr/1013312
- Bugs: fxb/42085825
- Implemented break-before-make for large page splitting on arm64 to
improve correctness in some edge cases.
- Changes: fxr/994412
- Added support for "unbounded VMOs" (see RFC-0238).
- Changes: fxr/1004252
- Added support for "upgrading" mappings.
- Changes: fxr/959154, fxr/939173, fxr/1002413
- Bugs: fxb/42182886
- Refactored page fault handling and laid groundwork for future "fault
ahead" optimizations.
Performance profiling
- Added experimental support for the new sampling profiler using
zx*sampler* syscalls.
- Changes: fxr/933215, fxr/939358
- Added experimental support for the new sampling profiler using
zx*sampler* syscalls.
IPC and Clocks
- Fixed a bug related to socket datagram read with a bad buffer.
- Changes: fxr/994605
- Added a new clock object signal,
ZX_CLOCK_UPDATED
to notify observers when the underlying clock parameters have changed. This signal can be used to implement more efficient and accurate "get time" calls for Linux programs running under Starnix.- Changes: fxr/920132
- Bugs: fxb/297305722
- Fixed a bug related to socket datagram read with a bad buffer.
Security
- Added support for per-cpu arm64 exception vectors to facilitate more
precise speculative execution mitigations.
- Changes: fxr/993134, fxr/995833
- Bugs: fxb/322202704
- Added support for per-cpu arm64 exception vectors to facilitate more
precise speculative execution mitigations.
Other notable improvements
- Restructured user-copy and fault handling routines to enable limited
faulting while holding spinlocks. This enabled us to replace the
FutexState mutex with a spinlock, simplify FutexContext, and prepare for
removal of the global thread lock.
- Changes: fxr/1004052, fxr/1006873, fxr/1007035, fxr/1007793
- Refactored arm64 low level cache maintenance routines.
- Changes: fxr/992023, fxr/1004836
- Restructured user-copy and fault handling routines to enable limited
faulting while holding spinlocks. This enabled us to replace the
FutexState mutex with a spinlock, simplify FutexContext, and prepare for
removal of the global thread lock.
Platform Drivers
The following updates have been made for Platform Drivers:
Enhanced power management: Added a new support library that simplifies driver integration with the power framework. A "Power Mode" power element, dependent on the SAG, manages power-on leases during Starnix kernel initialization. Additionally, the Power Broker FIDL APIs have been improved for concurrency and reliability.
- Changes: fxr/987383, fxr/970380, fxr/1002672
- Bugs: b/42083491,
Improved driver stability: Fixed an issue with the SDMMC driver's
PrepareStop
crash. UMS now supports the SCSI UNMAP command. Updated the Goldfish pipe driver to gracefully handleZX_ERR_PEER_CLOSED
. Resolved issues that the SPI core driver had with scheduler roles and asynchronous calls.- Changes: fxr/1012885, fxr/941292, fxr/996281, fxr/968459, fxr/992876
Power Management
The following updates have been made for Power Management:
- Enhanced power management: Added a new support library that simplifies
driver integration with the power framework. A "Power Mode" power element,
dependent on the SAG, manages power-on leases during Starnix kernel
initialization. Additionally, the Power Broker FIDL APIs have been improved
for concurrency and reliability.
- Changes: fxr/987383, fxr/970380, fxr/1002672
- Bugs: b/42083491
Software Delivery
The following updates have been made for Software Delivery:
Refactored the system updater for writing of system images: Improved readability and maintainability when writing system images with correct
fuchsia.mem.Buffer
size handling.- Changes: fxr/1011712, fxr/1010302
Improved package management: Added support for the
ffx repository publish
to publish from product bundles and mutable API levels (likeapi-level=HEAD
). Updated package types to match match paver naming conventions. Also, removed the redundant--abi-revision
flag frompackage-tool
.- Changes: fxr/1003995, fxr/998738, fxr/1011161, fxr/997492
- Bugs: fxb/326095523
Enhanced
pkg-cache
: Resolved an issue with dynamic index garbage collection, updated theGet
server end required to improve security, and introducedWritingIndex
to protect packages during caching.- Changes: fxr/999681, fxr/1003093, fxr/996574
Improved the paver: Fixed the
PartitionRead
API for ZBI content truncation.- Changes: fxr/1006940
Starnix
The following updates have been made for Starnix:
Security and Stability:
Implemented eBPF verifier and expanded the support of the eBPF program: Enhances the security and stability of eBPF programs, which includes handling array pointers, field mapping, and improves program loading. Also, fixed an integer overflow issue in eBPF maps.
Improved the context handling for SELinux security: Fixed several issues related to security contexts, including trimming trailing null characters and restoring
Copy
support for Security IDs. Improved the hooks test policy and reference policy initial SID declarations.- Changes: fxr/1011912, fxr/1010236, fxr/1008913, fxr/1011874, fxr/1004332, fxr/100633.
Functionality and syscalls:
Enhanced file system and I/O operations: Implemented the
openat2()
syscall andio_submit
in the VFS, which includes support forIOCB_FLAG_RESFD
, and improves file system access and asynchronous I/O.- Changes: fxr/995601, fxr/994747, fxr/1002213
Improved signal handling: Implemented the
rt_sigpending()
function and theSA_RESETHAND
andSA_NODEFER
signal flags, which enhances signal management flexibility. Also, fixed a flake in thert_sigtimedwait01
test.- Changes: fxr/1002000, fxr/1002142, fxr/1008156
Implemented
getcpu()
function: This function provides a way to retrieve CPU information.- Changes: fxr/997713
- Bugs: b/297305396
Devices and drivers:
Improved support for touchscreens: Implemented
write()
for Uinput Touch devices andioctl()
forUI_DEV_CREATE
, which enables processing of EV_ABS events.- Changes: fxr/997255, fxr/996138
Added skeleton GPU device: Laid the groundwork for future
virtio-gpu
andgfxstream
implementation. Added agfxstream
feature flag.- Changes: fxr/1010753.
ADB and debugging:
Improved functionality of ADB: Improved error handling and support for large file transfers. Enhanced the connection of ADB
FunctionFS
tofuchsia.hardware.usb
.- Changes: fxr/1012292, fxr/1006886, fxr/990247
Added a
vmo
subcommand tostarnix
tool: This tool allows querying processes with open files backed by a specific VMO koid.- Changes: fxr/1011913.
Other improvements:
Improved the handling of time and reboot: Improved reboot syscall handling and the handling of UTC time signals.
- Changes: fxr/1014594, fxr/1011873
- Bugs: fxb/297305722
Defined
SyncFenceRegistry
: Replaced the VMO-backed implementation for Linux synchronization fences.- Changes: fxr/953721
Testing
The following updates have been made for Testing:
Improved
fx test
: Added support for environment variables (-e
,--env
), slow test filtering (--slow
), log printing (--print-logs
), boot test detection, updated build format, and numerous bug fixes related to test filtering, argument parsing, and temporary file handling.- Changes: fxr/1015701, fxr/984516, fxr/1003952, fxr/101446, fxr/997674, fxr/997752, fxr/997792, fxr/1015534, fxr/1011768, fxr/1010468, fxr/1009610
- Bugs: b/319465603, b/319138893, fxb/330513884
Improved
gtest
: Handles extra newlines in stdout and adds support forASSERT_DEATH
.- Changes: fxr/1000092, fxr/1009294
- Bugs: fxb/42178254
Thread
The following updates have been made for Thread:
Add DHCPv6 PD feature flag support
- Changes: fxr/997735
Add Upstream DNS feature flag API:
- Changes: fxr/1016174
Timekeeping
The following updates have been made for Timekeeping:
- Integrated with power management: Timekeeper now participates in the
power management subsystem, responding to power management signals and
registering with the power broker. Also, improved error logging when power
management is unavailable.
- Changes: fxr/987962, fxr/998604, fxr/999701
- Improved
fake-clock
library: Thefake-clock
library now prevents concurrent use of the monotonic and UTC clocks.- Changes: fxr/999777
- Cleaned up dependencies and build: Removed the dependency between
realm-proxy
andtimekeeper_integration
, along with unnecessary expose stanzas and adeps
line in agroup
block. This improves build hygiene and reduces unnecessary dependencies.- Changes: fxr/1013521, fxr/1009326, fxr/1002152
- Added regression tests for initial update pause: Added regression tests
to address issues with the initial update pause.
- Changes: fxr/989392
Toolchain
The following updates have been made for Toolchain:
- Improved
llvm-profdata
compatibility with v10 profile format.- Changes: fxr/999612
- Bugs: fxb/327273958
Tools
The following updates have been made for Tools:
ffx
Improved target management: Refactored local target discovery for better substring matching and improved default handling. Added schema support to
target add
andtarget remove
commands.- Changes: fxr/1012813, fxr/1011055, fxr/1010838
Enhanced usability and performance: Improved error handling for user errors and build performance. Allows immediate foreground repository server restarts by ignoring time-wait sockets.
- Changes: fxr/1012792, fxr/1014836, fxr/1010714
- Bugs: fxb/42061451, b/330912658
Expanded functionality: Added a hidden Bluetooth subtool with Pandora functionality,
ffx playground
for interactive FIDL interaction, product bundle support for serving a foreground repository (--product-bundle
), and improved theffx driver
workflow.- Changes: fxr/961208, fxr/952041, fxr/1011174, fxr/1011155
- Bugs: b/329911083
Removed plugins: Removed the
inspect
,setui
,assembly
,wlan
, andfuzz
plugins.- Changes: fxr/916715, fxr/1003647, fxr/916513, fxr/1003648, fxr/1003643
Improved to SSH key management: Moved
sshconfig
file generation totools/devshell
and added theffx config check-ssh-keys
subcommand.- Changes: fxr/1001693, fxr/999672
fx
Improved build and package management:
fx build
now supports GN labels.fx show-package
now displays subpackages. Improved dependency categorization infx sdk-deps
.- Changes: fxr/997433, fxr/1007587
- Bugs: fxb/42084668
Enhanced server and testing:
fx serve
now handles incompatible server configurations.fx size-check
now supports Bazel builds. Added product bundle workflows.- Changes: fxr/1011092, fxr/1011473, fxr/1009532, fxr/1000274
- Bugs: b/330339316
Unified SSH key management:
fx
now manages SSH key throughffx
.- Changes: fxr/1001367
Other Tools
Improved testing and tooling:
mock-paver
now simulates normal behavior. Addedrun_lacewing_test
wrapper, host scripts for test components, aarch64 mac support toroll-compiler
, andrust_extract
tool. Deleted the unusedbt-hci-tool
.- Changes: fxr/1012072, fxr/1007964, fxr/1005923, fxr/1004719, fxr/999379, fxr/1013620
- Bugs: fxb/327640651
Enhanced debugging with faster
zxdb
startup using recursive filters and improved cursor visibility infx test
.- Changes: fxr/1001901, fxr/1011533
- Bugs: b/322420507, b/329916323
Improved for
fxfs
profile management: Addedfxfs delete_profile
subcommand and a debug endpoint for deleting profiles.- Changes: fxr/1009293, fxr/1009292
UI
The following updates have been made for UI:
Enhanced UI testing and debugging: Starnix touch tests now use GraphicalPresenter, aligning with runtime changes. Added
WatchViewPresentations
for better UI test synchronization, improved UI test debugging with added logging to thepuppet_factory
, enabled input CTF tests, added per-app present tracing, moved UI conformance tests, and added multi-touch event order tests.- Changes: fxr/1010392, fxr/1010393, fxr/1002075,, fxr/1004112, fxr/1004092, fxr/1007454, fxr/1000612
- Bugs: fxb/42078965
Improved screenshot testing and display power management: Integration tests for PNG encoded screenshots have been added, and the
fuchsia.ui.display.internal.DisplayPower
protocol is now routed to session.- Changes: fxr/980616, fxr/1006575
Implemented
SyncFenceRegistry
instarnix_kernel
: Defined and implemented theSyncFenceRegistry
.- Changes: fxr/953721
Video
The following updates have been made for Video:
- Migrated CodecImpl to sysmem2 with backwards compatibility: This change
allows for a gradual migration while supporting existing sysmem(1) clients.
- Changes: fxr/964472
WLAN
The following updates have been made for WLAN:
Improved WLAN logging: Enhanced debug logging of scan results and incompatible BSSs. Unified logging by using shared channel implementation for Inspect. Corrected the log severity for
ltrace_fn
.- Changes: fxr/1007474, fxr/1007472, fxr/1007473, fxr/1014332, fxr/997252
Resolved race conditions and panics in hw-sim simulator: Fixed a race condition preventing data reception. Resolved a race condition with ethernet status. Addressed a panic in
hw-sim
tests.- Changes: fxr/1009694, fxr/1009451, fxr/1014636)
Minor WLAN policy tech debt cleanups: Improved WLAN policy by grouping RSSI and SNR. Changed numerical type for dB, dBm, and dBm/s to
f64
. Allowed selecting the WLAN Policy layer in assembly. Renamedwlan_base
bundle towlan_policy
. Improved the WLAN configuration manager by directly recording scan results for better hidden network detection.- Changes: fxr/1007592, fxr/1007575, fxr/997437, fxr/997436, fxr/1007813
Refactored
wlansoftmac
: Migrated from Banjo to FIDL, removed dead code, and improved testing.