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 missing- audio_corevectors causing- ValueErrors.- Changes: fxr/1010893, fxr/1009217, fxr/1008320
 
- Refactored and improved - ffxdaemonfor audio: This includes modularizing renderer and capturer logic, refactoring the- RingBufferfor multiple protocol support, renaming and clarifying internal components related to WAV sockets, improving dependency management, and refactoring the- AudioDaemonstruct.- 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 bluetoothsubtool 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 - ExtendedLowEnergyConnectorand- ExtendedLowEnergyScannerwhich supports extended advertising and connection features, and added advertising packet filtering constants to the vendor protocol. Also, fixed a- LowEnergyScannercrash related to scan response timeouts and an issue in- LowEnergyMultipleAdvertisingTest.- 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::Readand- IsochronousStream::ReadSupportedDelayRangeAPIs, 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, and- ReadSupportedDelayRangemethods. Also, added- Connection::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 - ConnectionIdsfor OBEX services. Also, added support for assigning- ConnectionIdin 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 - serialimplprotocol to FIDL and- LoopbackDevicedriver to FIDL. Also, fixed driver name issues during DFv2 migration and a storage offer issue in- bt-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.EscrowAPI 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: Added- aarch64mac 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 in- ffx logand can be disabled for improved performance.- ffx logoutput 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 - DriverStartArgsto include- node_properties.- Changes: fxr/986452
- Bugs: b/42182546
 
- Improved the interaction of - devfsand controller:- DevfsAddArgsnow allows overriding the controller interface for compat shims, and devnodes now use separate callbacks for- fuchsia.device/Controllerand 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-sdmmcand- vim3-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, and- legacyfields to the FIDL JSON IR and a- fidlc --platformflag to enhance API versioning and deprecation management. Removed the- @transitionalannotation 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_UPDATEDto 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 - PrepareStopcrash. UMS now supports the SCSI UNMAP command. Updated the Goldfish pipe driver to gracefully handle- ZX_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.Buffersize handling.- Changes: fxr/1011712, fxr/1010302
 
- Improved package management: Added support for the - ffx repository publishto publish from product bundles and mutable API levels (like- api-level=HEAD). Updated package types to match match paver naming conventions. Also, removed the redundant- --abi-revisionflag from- package-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 the- Getserver end required to improve security, and introduced- WritingIndexto protect packages during caching.- Changes: fxr/999681, fxr/1003093, fxr/996574
 
- Improved the paver: Fixed the - PartitionReadAPI 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 - Copysupport 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 and- io_submitin the VFS, which includes support for- IOCB_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 the- SA_RESETHANDand- SA_NODEFERsignal flags, which enhances signal management flexibility. Also, fixed a flake in the- rt_sigtimedwait01test.- 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 and- ioctl()for- UI_DEV_CREATE, which enables processing of EV_ABS events.- Changes: fxr/997255, fxr/996138
 
- Added skeleton GPU device: Laid the groundwork for future - virtio-gpuand- gfxstreamimplementation. Added a- gfxstreamfeature 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 - FunctionFSto- fuchsia.hardware.usb.- Changes: fxr/1012292, fxr/1006886, fxr/990247
 
- Added a - vmosubcommand to- starnixtool: 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 for- ASSERT_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-clocklibrary: Thefake-clocklibrary now prevents concurrent use of the monotonic and UTC clocks.- Changes: fxr/999777
 
- Cleaned up dependencies and build: Removed the dependency between
realm-proxyandtimekeeper_integration, along with unnecessary expose stanzas and adepsline in agroupblock. 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-profdatacompatibility 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 addand- target removecommands.- 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 playgroundfor interactive FIDL interaction, product bundle support for serving a foreground repository (- --product-bundle), and improved the- ffx driverworkflow.- Changes: fxr/961208, fxr/952041, fxr/1011174, fxr/1011155
- Bugs: b/329911083
 
- Removed plugins: Removed the - inspect,- setui,- assembly,- wlan, and- fuzzplugins.- Changes: fxr/916715, fxr/1003647, fxr/916513, fxr/1003648, fxr/1003643
 
- Improved to SSH key management: Moved - sshconfigfile generation to- tools/devshelland added the- ffx config check-ssh-keyssubcommand.- Changes: fxr/1001693, fxr/999672
 
fx
- Improved build and package management: - fx buildnow supports GN labels.- fx show-packagenow displays subpackages. Improved dependency categorization in- fx sdk-deps.- Changes: fxr/997433, fxr/1007587
- Bugs: fxb/42084668
 
- Enhanced server and testing: - fx servenow handles incompatible server configurations.- fx size-checknow supports Bazel builds. Added product bundle workflows.- Changes: fxr/1011092, fxr/1011473, fxr/1009532, fxr/1000274
- Bugs: b/330339316
 
- Unified SSH key management: - fxnow manages SSH key through- ffx.- Changes: fxr/1001367
 
Other Tools
- Improved testing and tooling: - mock-pavernow simulates normal behavior. Added- run_lacewing_testwrapper, host scripts for test components, aarch64 mac support to- roll-compiler, and- rust_extracttool. Deleted the unused- bt-hci-tool.- Changes: fxr/1012072, fxr/1007964, fxr/1005923, fxr/1004719, fxr/999379, fxr/1013620
- Bugs: fxb/327640651
 
- Enhanced debugging with faster - zxdbstartup using recursive filters and improved cursor visibility in- fx test.- Changes: fxr/1001901, fxr/1011533
- Bugs: b/322420507, b/329916323
 
- Improved for - fxfsprofile management: Added- fxfs delete_profilesubcommand 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 - WatchViewPresentationsfor better UI test synchronization, improved UI test debugging with added logging to the- puppet_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.DisplayPowerprotocol is now routed to session.- Changes: fxr/980616, fxr/1006575
 
- Implemented - SyncFenceRegistryin- starnix_kernel: Defined and implemented the- SyncFenceRegistry.- 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-simtests.- 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. Renamed- wlan_basebundle to- wlan_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.