Date: November 22, 2023
Version: F15
The following changes have been implemented:
Application Runtimes (Flutter, Starnix, and Web)
Starnix
The following updates have been made for Starnix:
- Added a self-profile container feature which allows breakdown of CPU for individual syscalls.
- Added
ptrace
UAPI. - Added "button" support in Starnix input device.
- Added support and fixes for
overlayfs
in Starnix. - Added an
InterruptibleEvent
-based waiter for Futex support. - Fixed various security findings when using and handling Futexes.
- Initial support for lock ordering and functionality in Starnix.
- Initial support for RISC-V architecture, adding vDSO and getting first set of tests to pass.
- Initial support for
fsverity
ioctl
. - Initial support for Perfetto as consumer for Starnix traces.
- Initial support for
inotify
and ensuring that the corresponding LTP tests are passing. - Implemented
gettimeofday
andclock_gettime
in vDSO to get faster speeds. - Implemented Magma semaphore import and export to return sync files.
- Implemented
MADV_DONTFORK
andMADV_WIPEONFORK
formadvise()
. - Improve the binder interface by making it more reliable and fix various race and locking issues.
- Performance improvements for syscalls using the following techniques:
- Use
Mutex
instead ofRwLock
. - Synchronously handle triggered events.
- Use
DenseMap
instead ofHashMap
. - Use Futex instead of
zx::Port
.
- Use
- Wired up
statfs
for remote filesystems.
Web
The following updates have been made for Web:
- Improved memory allocation efficiency by always sending constraints before waiting.
- Fixed two fiddle check failures when the replies are missing to avoid crashes in some edge cases.
- Removed loop in
ProcessDeferredAccessibilityEventsImpl
which improves the performance of accessibility features.
Connectivity (Bluetooth, IOT, WLAN, Netstack)
The following updates have been made for Connectivity:
Bluetooth
- Fixed issues where some speakers were unable to connect audio.
- Fixed an issue where media information was not showing up when paired with some phones.
Developer
The following updates have been made for Developer workflows:
- Added
ffx auth plugin
. - Added a default SDK version if no version is passed into the
ffx product list
tool. - Added
ffx ffx-storage
in-tree only. - Added an ABI check to Overnet between host tool and device.
- Removed support for fetching PBv1 from the
ffx product
tool. - Removed the unused
ffx product-bundle
tool. - Removed the Overnet tool.
- Updated
ffx target flash
to communicate directly to device. - Updated
ffx target flash
to loadProductBundle
from zip without extracting the zip.
Diagnostics
The following updates have been made for Diagnostics:
- Added various additional APIs for asserting
Inspect
data in Rust. - Deleted
remote-diagnostics-bridge
. - Fixed moniker format returned by
ArchiveAccessor
. - Improved Diagnostics Persistence performance by enabling requesting persisting data associated when multiple tags are used at the same time.
- Improved formatting of arrays for
ffx inspect
andquery
. - Updated
log_listener
to use the same API asffx log
. - Updated
run-test-suite
to leverage a faster protocol for logging when running on the host. - Updated all Rust components to use
InspectSink
.
FIDL
The following updates have been made for FIDL:
- Added
fidl::IsWire<T>
. - Added experimental flag for
allow_arbitrary_error_types
. - Added compatibility best practices.
- Enabled unknown interactions everywhere.
- Fixed HLCPP conversion with unknown interactions.
- Included resolved type of aliases in IR (Intermediate Representation).
- Removed "has envelope" property.
- Removed FIDL wire format V1. See RFC-0229: FIDL 2023 for more information about the long-term support of the wire format.
- Removed transport error from
fpromise::result constructors
. - Updated
TransportErr
to serialize for natural bindings. - Updated
@transitional
to be behind an allowlist.
Timekeeping
The following updates have been made for Timekeeping:
- Updates to use
mmap
to read large files instead of loading wholesale which resulted in 7MiB of saved RAM.