日期:2024 年 4 月 26 日
版本:F19
已導入下列變更:
音訊
我們已對 Audio 進行以下更新:
改善音訊模組化:音訊播放器元件現在位於自己的 AIB 中,從
audio_core
移除未使用的儲存空間功能,並修正缺少audio_core
向量導致ValueErrors
的問題。重構及改善音訊的
ffxdaemon
:包括將轉譯器和擷取器邏輯模組化、重構RingBuffer
以支援多個通訊協定、重新命名並釐清與 WAV 通訊端連接埠相關的內部元件、改善依附元件管理,以及重構AudioDaemon
結構體。
藍牙
新增藍牙工具和 Pandora gRPC 伺服器架構:新增
ffx bluetooth
子工具,並實作 Pandora gRPC 伺服器架構。強化藍牙低功耗功能:新增以信貸為基礎的流量控制 TxEngine,以改善 LE 流量控制,實作支援擴充廣告和連線功能的
ExtendedLowEnergyConnector
和ExtendedLowEnergyScanner
,並在供應商通訊協定中新增廣告封包篩選常數。此外,也修正了與掃描回應逾時和LowEnergyMultipleAdvertisingTest
問題相關的LowEnergyScanner
當機問題。改善對等時性資料串流的支援:新增
IsochronousStream::Read
和IsochronousStream::ReadSupportedDelayRange
API,在 Banjo 和 FIDL 控制器中實作 ISO 資料串流支援功能,並在驅動程式中新增 ISO 管道 FIDL 通訊協定支援功能。此外,我們也修正了模擬器當機和控制器關機的問題,這些問題與 ISO 管道支援功能缺少或失敗有關。強化 HFP 和 SCO:實作 HFP 核心區塊,並新增音訊連線和通話啟動程序,以及為
FidlController
實作 SCO Fidl API。此外,也將 HFP 中的 +CIEV 轉譯為輸入的值。擴充藍牙 LE 支援和連線處理:透過新增
Read
、SetupDataPath
和ReadSupportedDelayRange
方法,改善藍牙 LE 等時性串流支援。此外,我們也新增了Connection::AcceptCis()
,可接受無連線的等時串流。改善 OBEX 和 RFCOMM:新增 MAP 服務廣告和搜尋功能。修正 OBEX 服務的通訊協定清單建構、PSM 剖析、錯誤的 PSM 值,以及重複標頭和缺少
ConnectionIds
的問題。此外,系統也會支援在 OBEX 中指派ConnectionId
。改善 RFCOMM 記錄功能。將 bt-host 從驅動程式庫遷移至元件:包括將
serialimpl
通訊協定遷移至 FIDL,以及將LoopbackDevice
驅動程式庫遷移至 FIDL。此外,也修正了 DFv2 遷移期間的驅動程式庫名稱問題,以及bt-init
的儲存空間優惠問題。
建構
已針對 Build 進行下列更新:
- 改善 Bazel 建構的密封性:更新 BoringSSL 建構作業,以便在推出期間產生 Bazel 規則,並改善 Bazel SDK 和 Clang 工作區初始化。
鈷豔藍
我們已對 Cobalt 進行下列更新:
已移除設定檔提供者路徑。這是因為 Cobalt 已遷移至角色管理員。
- 變更:fxr/1010304
更新內容,在 Cobalt 的 FIDL 介面中加入指標做為 SDK 區域。
- 變更:fxr/999785
元件架構
我們對元件架構進行了下列更新:
強化元件生命週期管理:
- 引入
fuchsia.component.Escrow
API,以便在關機期間管理元件狀態,並將其整合至元件啟動/停止動作。- 變更:fxr/991412、fxr/1000121、
- 錯誤:fxb/319754472
- 引入
改善能力處理:
- 為通訊協定功能新增
delivery: "on_readable"
。- 變更:fxr/1011079,
- 錯誤:fxb/319754472
- 為通訊協定功能新增
強化的 CML 和路由:
- 改善字典的處理方式,以便偵測週期、關機順序和路由可靠性。
改進工具:
- 已為
ffx component show
啟用結構定義支援功能。- 變更:fxr/1005672
- 已為
已移除設定值檔案 (CVF) 規定:
- 變更:fxr/1000095
開發人員
我們為開發人員進行了下列更新:
擴大對
roll-compiler
的支援:新增aarch64
Mac 支援。- 變更:fxr/1004719
改善 ProfileResource 路由:這項資源現在會轉送至序列控制台。
- 變更:fxr/1001364
診斷
我們為「診斷」推出了下列重大更新:
強化版 Archivist:現在可以動態調整 Archivist 的最低記錄嚴重性,讓您更靈活地控管記錄輸出內容。為了保持一致性,JSON 記錄編碼的「verbosity」欄位已重新命名為「raw_severity」。每個元件批次的 Archivist 逾時時間現在可進行設定。小幅提升 Archivist 效能。
- 變更:fxr/989275
透過 zxdb 改善偵錯功能:使用遞迴元件篩選器來強化偵錯工具功能,以便附加至已篩選元件的所有子項,以及新的通知信號篩選器應用程式。系統現在會收集偵錯工具指令分析資料。
改善追蹤功能:追蹤匯入器可更妥善地處理損毀的追蹤記錄。
- 變更:fxr/1001403
- 錯誤:fxb/328124336
改善 Rust Inspect API:我們改善了 Inspect Rust API,以支援屬性中的原子更新。
改善
ffx inspect
:ffx inspect 和 iquery 不再支援直接讀取檔案。改善 ffx 記錄:新增非同步交易記錄讀取器和剖析器,以提升
ffx log
的效能。已在符號化器寫入作業中加入緩衝區,以避免發生死結。ffx log
現已支援記錄回溯追蹤的 prettifyfication,您可以停用這項功能來提升效能。ffx log
輸出內容也經過改善,包括在標記中刪除重複的名稱,以及妥善處理符號化錯誤。
螢幕
我們已對顯示廣告做出下列重點更新:
- 顯示器驅動程式庫堆疊正在遷移至新型 Fuchsia Platform 基礎架構,例如 DFv2 和 FIDL。
驅動程式架構
我們已對 Driver Framework 進行下列更新:
強化的驅動程式庫內容和啟動程序:更新
DriverStartArgs
以納入node_properties
。- 變更:fxr/986452
- 錯誤:b/42182546
改善
devfs
和控制器的互動:DevfsAddArgs
現在允許覆寫相容碼的控制器介面,而開發節點現在可為fuchsia.device/Controller
和裝置管道使用不同的回呼,進一步提升清晰度並避免意外多工處理。改善穩定性和資源管理:節點 delocation 現在會取消重新繫結要求。已修正
aml-sdmmc
和vim3-usb-phy
的主機代管標記。
FIDL
我們已對 FIDL 進行以下更新:
強化的 FIDL 工具:新增一項工具,可評估各 API 級別的執行階段相容性,然後產生詳細報表,協助維持 Fuchsia 各版本的穩定性。
- 變更:fxr/907296
改善 FIDL API 版本管理:在 FIDL JSON IR 中新增
deprecated
、platform
和legacy
欄位,以及fidlc --platform
標記,以改善 API 版本管理和淘汰管理。移除@transitional
註解,改用明確的版本管理機制。改善錯誤處理:現在所有 FIDL 錯誤都會廣播,且都是終端錯誤。
- 變更:fxr/1011592
GPU
我們已針對 GPU 進行下列更新:
- 強化版電源管理:新增支援功能,可在暫停時關閉著色器核心,然後在履歷時開啟這些核心。此外,允許原子搶先處理,以減少暫停延遲時間。新增適用於 GPU 電源管理的 FIDL 通訊協定。
i18n
我們已對 I18n 進行以下更新:
- 修正變更偵測器測試,以確保日期本地化的穩定性:解決 ICU 程式庫中的日期格式變更導致測試失敗的問題。我們已更新受影響的測試,使其不易發生錯誤。
- 變更:fxr/1014633
核心
我們已對核心進行以下更新:
電源和工作排程
- 新增暫時性系統呼叫,用於在 Runtime Processor Power Management (RPPM) 的服務中註冊 CPU 能源模型。
- 變更:fxr/994713
- 新增 Wake 向量的暫時性支援,讓系統在裝置中斷時喚醒系統。
- 變更:fxr/994109
- 開始建構 libsched 程式庫,這個程式庫會封裝排程器執行佇列。
- 變更:fxr/1006654
- 修正 PI 傳播作業中的記帳錯誤。
- 變更: fxr/994748
- 新增暫時性系統呼叫,用於在 Runtime Processor Power Management (RPPM) 的服務中註冊 CPU 能源模型。
虛擬記憶體
- 重構頁面錯誤處理機制,並為日後的「預先錯誤」最佳化奠定基礎。
- 針對 arm64 上的大型網頁分割作業,實作了「先中斷再建立」的做法,以改善某些極端情況下的正確性。
- 變更:fxr/994412
- 新增對「無限 VMOs」的支援 (請參閱 RFC-0238)。
- 變更: fxr/1004252
- 新增「升級」對應支援功能。
效能分析
- 新增實驗性支援,針對使用 ZX *sampler* 系統呼叫的新取樣剖析器。
IPC 和時鐘
- 修正了使用錯誤緩衝區讀取的通訊 socket 資料包相關錯誤。
- 變更:fxr/994605
- 新增了
ZX_CLOCK_UPDATED
時鐘物件信號,可在基礎時鐘參數變更時通知觀察器。這個信號可用於為在 Starnix 下執行的 Linux 程式,實作更有效率且準確的「get time」呼叫。- 變更:fxr/920132
- 錯誤:fxb/297305722
- 修正了使用錯誤緩衝區讀取的通訊 socket 資料包相關錯誤。
安全性
- 新增對每個 CPU arm64 例外狀況向量支援,以便更精確地緩解推測執行問題。
其他值得注意的改善項目
- 重新結構化使用者複製和錯誤處理常式,以便在保留 spinlock 時啟用有限錯誤。這可讓我們用 spinlock 取代 FutexState 互鎖、簡化 FutexContext,並準備移除全域執行緒鎖定。
- 重構 arm64 低階快取維護例程。
平台驅動程式
針對平台驅動程式進行了下列更新:
強化電源管理:新增支援程式庫,簡化驅動程式庫與電源架構的整合作業。「電源模式」的電源元件需要使用 SAG,管理在 Starnix 核心初始化期間的開機租約。此外,Power Broker FIDL API 也經過改善,可提升並行性和可靠性。
提升驅動程式庫穩定性:修正 SDMMC 驅動程式庫
PrepareStop
當機的問題。UMS 現已支援 SCSI UNMAP 指令。已更新 Goldfish 管線驅動程式庫,以便妥善處理ZX_ERR_PEER_CLOSED
。解決 SPI 核心驅動程式在排程器角色和非同步呼叫方面遇到的問題。
電源管理
我們已對電源管理功能進行以下更新:
- 強化電源管理:新增支援程式庫,簡化驅動程式庫與電源架構的整合作業。依賴 SAG 的「電源模式」電源元素會在 Starnix 核心初始化期間管理開機租用權。此外,Power Broker FIDL API 也經過改善,可維持並行性和可靠性。
軟體推送
我們已針對軟體提交方式進行以下更新:
重構系統更新工具以寫入系統映像檔:提高採用正確
fuchsia.mem.Buffer
大小處理功能編寫系統映像檔時的可讀性和可維護性。改良的套件管理:新增對
ffx repository publish
的支援,以便從產品套件和可變更的 API 級別 (例如api-level=HEAD
) 發布。更新套件類型,以符合分區映像檔安裝工具命名慣例。此外,我們也從package-tool
中移除冗餘的--abi-revision
標記。強化
pkg-cache
:解決動態索引垃圾收集問題,更新Get
伺服器端以提升安全性,並導入WritingIndex
來保護快取期間的套件。改善分區映像檔安裝工具:修正
PartitionRead
API,以便截斷 ZBI 內容。- 變更:fxr/1006940
Starnix
我們已為 Starnix 進行下列更新:
安全性和穩定性:
實作 eBPF 驗證器,並擴大 eBPF 程式的支援:提升 eBPF 程式的安全性和穩定性,包括處理陣列指標、欄位對應,以及改善程式載入作業。此外,我們也修正了 eBPF 對應項目中的整數溢位問題。
改善 SELinux 安全性內容處理方式:修正了幾個與安全性內容相關的問題,包括修剪尾端空值字元,以及恢復
Copy
對安全性 ID 的支援。改善鉤子測試政策和參照政策的初始 SID 宣告。
功能和系統呼叫:
強化檔案系統和 I/O 作業:在 VFS 中實作
openat2()
系統呼叫和io_submit
,包括支援IOCB_FLAG_RESFD
,並改善檔案系統存取和非同步 I/O。改善信號處理:實作
rt_sigpending()
函式和SA_RESETHAND
和SA_NODEFER
信號標記,提升信號管理彈性。此外,也修正了rt_sigtimedwait01
測試中的 flake。實作的
getcpu()
函式:這個函式提供擷取 CPU 資訊的方法。- 變更:fxr/997713
- 錯誤: b/297305396
裝置和驅動程式:
改善觸控螢幕的支援功能:針對 Uinput 觸控裝置實作
write()
,針對UI_DEV_CREATE
實作ioctl()
,以處理 EV_ABS 事件。新增備用架構 GPU 裝置:未來
virtio-gpu
和gfxstream
實作的基礎。新增gfxstream
功能旗標。- 變更:fxr/1010753。
ADB 和偵錯:
改善 ADB 功能:改善錯誤處理機制,並支援大型檔案傳輸。已加強 ADB
FunctionFS
與fuchsia.hardware.usb
的連線。在
starnix
工具中新增vmo
子命令:這項工具可讓您查詢由特定 VMO koid 支援的已開啟檔案的程序。- 變更:fxr/1011913。
其他改進項目:
改善時間和重新啟動作業的處理方式:改善重新啟動系統呼叫處理方式,以及世界標準時間信號的處理方式。
已定義
SyncFenceRegistry
:已為 Linux 同步化圍欄取代 VMO 支援的實作項目。- 變更:fxr/953721
測試
我們已為測試功能進行以下更新:
改善
fx test
:新增對環境變數 (-e
、--env
)、緩慢測試篩選 (--slow
)、記錄列印 (--print-logs
)、啟動測試偵測、更新的建構格式,以及許多與測試篩選、引數剖析和臨時檔案處理相關的錯誤修正。改善
gtest
:處理 stdout 中的額外換行符號,並新增對ASSERT_DEATH
的支援。- 變更:fxr/1000092、fxr/1009294
- 錯誤: fxb/42178254
執行緒
我們已對 Thread 進行以下更新:
新增 DHCPv6 PD 功能旗標支援
- 變更:fxr/997735
新增上游 DNS 功能旗標 API:
- 變更:fxr/1016174
計時
我們已對打卡系統進行以下更新:
- 已整合電源管理:計時器現在加入電源管理子系統,回應電源管理訊號,並向電源代理程式註冊。此外,當無法使用電源管理功能時,系統會改善記錄錯誤。
- 改善
fake-clock
程式庫:fake-clock
程式庫現在禁止並行使用單調和世界標準時間時鐘。- 變更:fxr/999777
- 清除依附元件和建構:移除
realm-proxy
和timekeeper_integration
之間的依附元件,以及group
區塊中的不必要的公開節和deps
行。這麼做可改善建構衛生狀況,並減少不必要的依附元件。 - 新增初始更新暫停的迴歸測試:新增迴歸測試,以解決初始更新暫停的問題。
- 變更:fxr/989392
工具鏈
我們對工具鍊進行了下列更新:
- 改善
llvm-profdata
與 v10 設定檔格式的相容性。- 變更:fxr/999612
- 錯誤:fxb/327273958
工具
我們對工具進行了下列更新:
ffx
改善目標管理:重構本機目標探索,以提升子字串比對品質和改善預設處理功能。在
target add
和target remove
指令中新增結構定義支援。提升可用性和效能:改善使用者錯誤和建構效能的錯誤處理機制。允許忽略時間等候通訊埠,以便立即重新啟動前景存放區伺服器。
擴充功能:新增隱藏的藍牙子工具,提供 Pandora 功能、
ffx playground
用於互動式 FIDL 互動、產品套件支援服務前景資料庫 (--product-bundle
),並改善ffx driver
工作流程。已移除的外掛程式:已移除
inspect
、setui
、assembly
、wlan
和fuzz
外掛程式。改善 SSH 金鑰管理:將
sshconfig
檔案產生作業移至tools/devshell
,並新增ffx config check-ssh-keys
子指令。
fx
改善建構和套件管理:
fx build
現在支援 GN 標籤。fx show-package
現在會顯示子包。改善fx sdk-deps
中的依附元件分類。強化伺服器和測試功能:
fx serve
現在可處理不相容的伺服器設定。fx size-check
現在支援 Bazel 建構作業。新增產品套裝組合工作流程。統一安全殼層金鑰管理:
fx
現在會透過ffx
管理安全殼層金鑰。- 變更:fxr/1001367
其他工具
改善測試和工具:
mock-paver
現在會模擬正常行為。新增run_lacewing_test
包裝函式、測試元件的主機指令碼、aarch64 mac 支援功能至roll-compiler
和rust_extract
工具。刪除未使用的bt-hci-tool
。使用遞迴篩選器和改善
fx test
中的游標可見度,加快zxdb
啟動速度,進而強化偵錯功能。改善
fxfs
設定檔管理功能:新增fxfs delete_profile
子指令和用於刪除設定檔的偵錯端點。
UI
我們已針對 UI 進行以下更新:
強化 UI 測試和偵錯功能:Starnix 觸控測試現在會使用 GraphicalPresenter,以便配合執行階段變更。新增
WatchViewPresentations
以改善 UI 測試同步處理、改善 UI 測試偵錯,並在puppet_factory
中新增記錄功能、啟用輸入 CTF 測試、新增個別應用程式呈現追蹤功能、移轉 UI 相容性測試,以及新增多點觸控事件順序測試。改善螢幕截圖測試和顯示器電源管理:新增 PNG 編碼螢幕截圖的整合測試,且
fuchsia.ui.display.internal.DisplayPower
通訊協定現在會路由至工作階段。在
starnix_kernel
中實作SyncFenceRegistry
:定義並實作SyncFenceRegistry
。- 變更:fxr/953721
影片
我們已對影片做出下列更新:
- 將 CodecImpl 遷移至 sysmem2,並支援回溯相容性:這項變更可讓您逐步遷移,同時支援現有的 sysmem(1) 用戶端。
- 變更:fxr/964472
WLAN
已針對 WLAN 進行下列更新:
改善 WLAN 記錄功能:改善掃描結果和不相容的 BSS 的偵錯記錄。使用檢查工具的共用管道實作項目,進行統一記錄。已修正
ltrace_fn
的記錄嚴重性。解決 hw-sim 模擬器中的競爭狀況和恐慌情形:修正了導致無法接收資料的競爭狀況。解決乙太網路狀態的競爭狀況。解決
hw-sim
測試中的恐慌情形。WLAN 政策技術債清理:透過將 RSSI 和 SNR 分組,改善 WLAN 政策。已將 dB、dBm 和 dBm/s 的數值類型變更為
f64
。允許在組合中選取 WLAN 政策層。已將wlan_base
套件重新命名為wlan_policy
。藉由直接記錄掃描結果來改善 WLAN 設定管理員,改善隱藏網路偵測的效能。重構
wlansoftmac
:從 Banjo 遷移至 FIDL、移除無效程式碼,並改善測試。