Fuchsia F19 版本資訊

日期:2024 年 4 月 26 日

版本:F19

已導入下列變更:

音訊

我們已對 Audio 進行以下更新:

  • 改善音訊模組化:音訊播放器元件現在位於自己的 AIB 中,從 audio_core 移除未使用的儲存空間功能,並修正缺少 audio_core 向量導致 ValueErrors 的問題。

  • 重構及改善音訊的 ffxdaemon包括將轉譯器和擷取器邏輯模組化、重構 RingBuffer 以支援多個通訊協定、重新命名並釐清與 WAV 通訊端連接埠相關的內部元件、改善依附元件管理,以及重構 AudioDaemon 結構體。

藍牙

  • 新增藍牙工具和 Pandora gRPC 伺服器架構:新增 ffx bluetooth 子工具,並實作 Pandora gRPC 伺服器架構。

  • 強化藍牙低功耗功能:新增以信貸為基礎的流量控制 TxEngine,以改善 LE 流量控制,實作支援擴充廣告和連線功能的 ExtendedLowEnergyConnectorExtendedLowEnergyScanner,並在供應商通訊協定中新增廣告封包篩選常數。此外,也修正了與掃描回應逾時和 LowEnergyMultipleAdvertisingTest 問題相關的 LowEnergyScanner 當機問題。

  • 改善對等時性資料串流的支援:新增 IsochronousStream::ReadIsochronousStream::ReadSupportedDelayRange API,在 Banjo 和 FIDL 控制器中實作 ISO 資料串流支援功能,並在驅動程式中新增 ISO 管道 FIDL 通訊協定支援功能。此外,我們也修正了模擬器當機和控制器關機的問題,這些問題與 ISO 管道支援功能缺少或失敗有關。

  • 強化 HFP 和 SCO:實作 HFP 核心區塊,並新增音訊連線和通話啟動程序,以及為 FidlController 實作 SCO Fidl API。此外,也將 HFP 中的 +CIEV 轉譯為輸入的值。

  • 擴充藍牙 LE 支援和連線處理:透過新增 ReadSetupDataPathReadSupportedDelayRange 方法,改善藍牙 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 已遷移至角色管理員。

  • 更新內容,在 Cobalt 的 FIDL 介面中加入指標做為 SDK 區域。

元件架構

我們對元件架構進行了下列更新:

  • 強化元件生命週期管理:

    • 引入 fuchsia.component.Escrow API,以便在關機期間管理元件狀態,並將其整合至元件啟動/停止動作。
  • 改善能力處理:

  • 強化的 CML 和路由:

    • 改善字典的處理方式,以便偵測週期、關機順序和路由可靠性。
  • 改進工具:

    • 已為 ffx component show 啟用結構定義支援功能。
  • 已移除設定值檔案 (CVF) 規定:

開發人員

我們為開發人員進行了下列更新:

  • 擴大對 roll-compiler 的支援:新增 aarch64 Mac 支援。

  • 改善 ProfileResource 路由:這項資源現在會轉送至序列控制台。

診斷

我們為「診斷」推出了下列重大更新:

  • 強化版 Archivist:現在可以動態調整 Archivist 的最低記錄嚴重性,讓您更靈活地控管記錄輸出內容。為了保持一致性,JSON 記錄編碼的「verbosity」欄位已重新命名為「raw_severity」。每個元件批次的 Archivist 逾時時間現在可進行設定。小幅提升 Archivist 效能。

  • 透過 zxdb 改善偵錯功能:使用遞迴元件篩選器來強化偵錯工具功能,以便附加至已篩選元件的所有子項,以及新的通知信號篩選器應用程式。系統現在會收集偵錯工具指令分析資料。

  • 改善追蹤功能:追蹤匯入器可更妥善地處理損毀的追蹤記錄。

  • 改善 Rust Inspect API:我們改善了 Inspect Rust API,以支援屬性中的原子更新。

  • 改善 ffx inspectffx inspect 和 iquery 不再支援直接讀取檔案。

  • 改善 ffx 記錄:新增非同步交易記錄讀取器和剖析器,以提升 ffx log 的效能。已在符號化器寫入作業中加入緩衝區,以避免發生死結。ffx log 現已支援記錄回溯追蹤的 prettifyfication,您可以停用這項功能來提升效能。ffx log 輸出內容也經過改善,包括在標記中刪除重複的名稱,以及妥善處理符號化錯誤。

螢幕

我們已對顯示廣告做出下列重點更新:

  • 顯示器驅動程式庫堆疊正在遷移至新型 Fuchsia Platform 基礎架構,例如 DFv2 和 FIDL。

驅動程式架構

我們已對 Driver Framework 進行下列更新:

  • 強化的驅動程式庫內容和啟動程序:更新 DriverStartArgs 以納入 node_properties

  • 改善 devfs 和控制器的互動: DevfsAddArgs 現在允許覆寫相容碼的控制器介面,而開發節點現在可為 fuchsia.device/Controller 和裝置管道使用不同的回呼,進一步提升清晰度並避免意外多工處理。

  • 改善穩定性和資源管理:節點 delocation 現在會取消重新繫結要求。已修正 aml-sdmmcvim3-usb-phy 的主機代管標記。

FIDL

我們已對 FIDL 進行以下更新:

  • 強化的 FIDL 工具:新增一項工具,可評估各 API 級別的執行階段相容性,然後產生詳細報表,協助維持 Fuchsia 各版本的穩定性。

  • 改善 FIDL API 版本管理:在 FIDL JSON IR 中新增 deprecatedplatformlegacy 欄位,以及 fidlc --platform 標記,以改善 API 版本管理和淘汰管理。移除 @transitional 註解,改用明確的版本管理機制。

  • 改善錯誤處理:現在所有 FIDL 錯誤都會廣播,且都是終端錯誤。

GPU

我們已針對 GPU 進行下列更新:

  • 強化版電源管理:新增支援功能,可在暫停時關閉著色器核心,然後在履歷時開啟這些核心。此外,允許原子搶先處理,以減少暫停延遲時間。新增適用於 GPU 電源管理的 FIDL 通訊協定。

i18n

我們已對 I18n 進行以下更新:

  • 修正變更偵測器測試,以確保日期本地化的穩定性:解決 ICU 程式庫中的日期格式變更導致測試失敗的問題。我們已更新受影響的測試,使其不易發生錯誤。

核心

我們已對核心進行以下更新:

  • 電源和工作排程

    • 新增暫時性系統呼叫,用於在 Runtime Processor Power Management (RPPM) 的服務中註冊 CPU 能源模型。
    • 新增 Wake 向量的暫時性支援,讓系統在裝置中斷時喚醒系統。
    • 開始建構 libsched 程式庫,這個程式庫會封裝排程器執行佇列。
    • 修正 PI 傳播作業中的記帳錯誤。
  • 虛擬記憶體

  • 效能分析

    • 新增實驗性支援,針對使用 ZX *sampler* 系統呼叫的新取樣剖析器。
  • IPC 和時鐘

    • 修正了使用錯誤緩衝區讀取的通訊 socket 資料包相關錯誤。
    • 新增了 ZX_CLOCK_UPDATED 時鐘物件信號,可在基礎時鐘參數變更時通知觀察器。這個信號可用於為在 Starnix 下執行的 Linux 程式,實作更有效率且準確的「get time」呼叫。
  • 安全性

  • 其他值得注意的改善項目

    • 重新結構化使用者複製和錯誤處理常式,以便在保留 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 內容。

Starnix

我們已為 Starnix 進行下列更新:

安全性和穩定性:

  • 實作 eBPF 驗證器,並擴大 eBPF 程式的支援:提升 eBPF 程式的安全性和穩定性,包括處理陣列指標、欄位對應,以及改善程式載入作業。此外,我們也修正了 eBPF 對應項目中的整數溢位問題。

  • 改善 SELinux 安全性內容處理方式:修正了幾個與安全性內容相關的問題,包括修剪尾端空值字元,以及恢復 Copy 對安全性 ID 的支援。改善鉤子測試政策和參照政策的初始 SID 宣告。

功能和系統呼叫:

  • 強化檔案系統和 I/O 作業:在 VFS 中實作 openat2() 系統呼叫和 io_submit,包括支援 IOCB_FLAG_RESFD,並改善檔案系統存取和非同步 I/O。

  • 改善信號處理:實作 rt_sigpending() 函式和 SA_RESETHANDSA_NODEFER 信號標記,提升信號管理彈性。此外,也修正了 rt_sigtimedwait01 測試中的 flake。

  • 實作的 getcpu() 函式:這個函式提供擷取 CPU 資訊的方法。

裝置和驅動程式:

  • 改善觸控螢幕的支援功能:針對 Uinput 觸控裝置實作 write(),針對 UI_DEV_CREATE 實作 ioctl(),以處理 EV_ABS 事件。

  • 新增備用架構 GPU 裝置:未來 virtio-gpugfxstream 實作的基礎。新增 gfxstream 功能旗標。

ADB 和偵錯:

  • 改善 ADB 功能:改善錯誤處理機制,並支援大型檔案傳輸。已加強 ADB FunctionFSfuchsia.hardware.usb 的連線。

  • starnix 工具中新增 vmo 子命令:這項工具可讓您查詢由特定 VMO koid 支援的已開啟檔案的程序。

其他改進項目:

  • 改善時間和重新啟動作業的處理方式:改善重新啟動系統呼叫處理方式,以及世界標準時間信號的處理方式。

  • 已定義 SyncFenceRegistry已為 Linux 同步化圍欄取代 VMO 支援的實作項目。

測試

我們已為測試功能進行以下更新:

執行緒

我們已對 Thread 進行以下更新:

  • 新增 DHCPv6 PD 功能旗標支援

  • 新增上游 DNS 功能旗標 API:

計時

我們已對打卡系統進行以下更新:

  • 已整合電源管理:計時器現在加入電源管理子系統,回應電源管理訊號,並向電源代理程式註冊。此外,當無法使用電源管理功能時,系統會改善記錄錯誤。
  • 改善 fake-clock 程式庫:fake-clock 程式庫現在禁止並行使用單調和世界標準時間時鐘。
  • 清除依附元件和建構:移除 realm-proxytimekeeper_integration 之間的依附元件,以及 group 區塊中的不必要的公開節和 deps 行。這麼做可改善建構衛生狀況,並減少不必要的依附元件。
  • 新增初始更新暫停的迴歸測試:新增迴歸測試,以解決初始更新暫停的問題。

工具鏈

我們對工具鍊進行了下列更新:

工具

我們對工具進行了下列更新:

ffx

  • 改善目標管理:重構本機目標探索,以提升子字串比對品質和改善預設處理功能。在 target addtarget remove 指令中新增結構定義支援。

  • 提升可用性和效能:改善使用者錯誤和建構效能的錯誤處理機制。允許忽略時間等候通訊埠,以便立即重新啟動前景存放區伺服器。

  • 擴充功能:新增隱藏的藍牙子工具,提供 Pandora 功能、ffx playground 用於互動式 FIDL 互動、產品套件支援服務前景資料庫 (--product-bundle),並改善 ffx driver 工作流程。

  • 已移除的外掛程式:已移除 inspectsetuiassemblywlanfuzz 外掛程式。

  • 改善 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 管理安全殼層金鑰。

其他工具

UI

我們已針對 UI 進行以下更新:

  • 強化 UI 測試和偵錯功能:Starnix 觸控測試現在會使用 GraphicalPresenter,以便配合執行階段變更。新增 WatchViewPresentations 以改善 UI 測試同步處理、改善 UI 測試偵錯,並在 puppet_factory 中新增記錄功能、啟用輸入 CTF 測試、新增個別應用程式呈現追蹤功能、移轉 UI 相容性測試,以及新增多點觸控事件順序測試。

  • 改善螢幕截圖測試和顯示器電源管理:新增 PNG 編碼螢幕截圖的整合測試,且 fuchsia.ui.display.internal.DisplayPower 通訊協定現在會路由至工作階段。

  • starnix_kernel 中實作 SyncFenceRegistry定義並實作 SyncFenceRegistry

影片

我們已對影片做出下列更新:

  • 將 CodecImpl 遷移至 sysmem2,並支援回溯相容性:這項變更可讓您逐步遷移,同時支援現有的 sysmem(1) 用戶端。

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、移除無效程式碼,並改善測試。