Fuchsia F27 版本資訊

日期:2025 年 7 月 15 日

版本:F27

我們已進行下列變更:

無障礙設定

我們對無障礙功能進行了以下更新:

  • 改善 A11yManager 的模組化:根據 AttachA11yView 旗標,有條件地建立 ColorConverter 通訊協定連線。

音訊

音訊的更新內容如下:

  • 改良音訊裝置登錄 (ADR),可妥善處理複合裝置移除作業,避免發生當機問題。此外,我們也推出了新的平台設定標記,可控制 ADR 服務的搶先啟動作業。
  • 強化音訊驅動程式,提升穩定性和辨識度。 AML-G12 驅動程式現在會公開 manufacturerproduct 屬性,使用 SDK platform-device 程式庫,且不會再於 Start 之前呼叫 Stop 時異常終止。intel-hda 驅動程式庫現在會正確處理第二個環形緩衝區的建立作業。
  • 更新虛擬音訊驅動程式,直接提供 Composite FIDL 通訊協定,並淘汰 CompositeConnector。開發版本現在包含新式非舊版虛擬音訊驅動程式庫,並通過測試驗證,且部分支援位置通知。
  • 大幅強化 audio_driver_tests 套件,提供全面的負面測試、修正競爭條件,並將執行時間縮短 25%。現在套件已分成 basicadminrealtime 套件,方便您進行更精準的測試。
  • 擴充音訊功能的服務轉送,協助從 devfs 遷移。StreamConfigConnectorService 已分割為不同的 InputOutput 服務。

藍牙

藍牙的更新內容如下:

  • 允許使用相同本機地址的多個 LE 廣告
  • 導入 SCO 索引設定方式,適用於卸載音訊,並更新測試架構以提供這項能力。
  • 導入並實作 fuchsia.bluetooth.sys.Access.SetConnectionPolicy FIDL API,讓應用程式控管藍牙堆疊的 BR/EDR 連線能力。
  • 重構免持聽筒設定檔 (HFP) 設定結構定義,明確啟用音訊閘道 (AG) 和免持聽筒 (HF) 角色,並提供特定功能,完成從已淘汰的 bluetooth.hfp.enabled 欄位遷移作業。
  • 採用新式 MAC 位址處理方式bt-hci 驅動程式庫現在會使用新式驅動程式庫中繼資料程式庫擷取 MAC 位址,並透過 bt-transport-uart 使用 fdf_metadata::MetadataServer 轉送,取代舊版方法。
  • fuchsia.hardware.bluetooth 移除舊版 HLCPP 支援,並移除未使用的 fuchsia.hardware.bt.hcifuchsia.hardware.bt.vendor Banjo 程式庫,完成遷移至新版 FIDL 和 C++ 繫結的作業。
  • bt-init的元件資訊清單 (CML) 及其整合測試架構中,新增 SuspendEnabledSystemActivityGovernor 功能。
  • 藍牙元件現在可以選擇性啟動 config 功能,讓系統設定更具彈性。
  • 新增 FIDL 介面,支援管理連線等時群組 (CIG)。
  • bt-gap 尋找 bt-host 元件的逾時時間從 5 秒增加到 100 秒,以提升穩定性。
  • 推出 ConnectionReceiver2 FIDL,支援喚醒租約握手和新藍牙連線的流量控管。
  • 以現代化服務路徑取代藍牙 devfs 能力轉送,簡化用戶端升級作業。

鈷豔藍

Cobalt 的更新內容如下:

  • 提升資料上傳效率:將系統設定檔移至封包層級,藉此減少觀察批次中重複的系統設定檔,大幅減少上傳的位元組。
  • 修正建構問題:新增遺漏的 include,以符合 include-what-you-use 指南。
  • 允許來源產生器中的非駝峰式大小寫 Rust 列舉,確保含有特殊字元的事件代碼可正常使用,不會導致建構失敗。
  • 已從已淘汰的 step_multiplier 遷移至 step_multiplier_float,以取得整數直方圖報表,包括移除舊欄位定義和驗證。

元件架構

元件架構的更新內容如下:

  • fuchsia.component.Realm FIDL 通訊協定中新增 GetResolvedInfo 方法,可查詢已解析的元件資訊。
  • 將元件模型遷移至 fuchsia.io2 程式庫,取代已淘汰的 fuchsia.io 功能。
  • 為 Realm Builder 納入持續性儲存空間分片,可在重新啟動時保留元件資料,這對需要狀態持續性的測試特別有用。
  • 強化元件資訊清單和工具。包括支援 CML 中的弱字典、字典中的服務 (位於 cmc),以及改善指令列工具中的錯誤訊息和引數標準化。
  • 擴充設定功能支援。內建執行器已新增支援,且元件管理服務現在會在路由期間,對設定功能執行型別檢查。
  • 提升效能和穩定性。元件管理服務現在已啟用完整的連結時間最佳化 (LTO),可縮減二進位檔大小,且 service-broker 現在會更迅速關閉。

建構

我們對 Build 進行了下列更新:

  • 提升效能並改善開發人員體驗。包括快取 Bazel 查詢結果、最佳化「平衡」編譯模式以使用 ThinLTO,以及強化 DTC 和 fx build 目標名稱的錯誤回報功能。
  • 重構 Bazel 整合工作流程。樹狀結構內 IDK 存放區現在會在 fx gen 時間產生,且已移除 --config=no_sdk 旗標,改用主機建構的明確 --config=host 旗標,修正增量建構問題。

診斷

診斷功能已進行下列更新:

螢幕

  • 擴大支援的像素格式。Magma 和 virtio-gpu 現在支援 R8G8B8A8 格式,可與更多硬體和應用程式相容。

  • 提升圖像算繪和穩定性。修正 Intel 顯示卡驅動程式庫在關機時異常終止的問題。

驅動程式架構

我們對 Driver Framework 進行了以下更新:

FIDL

FIDL 已進行下列更新:

  • 透過將產生的函式主體移出標頭,並將連線和自然繫結分離,減少多餘的編譯工作,大幅縮短 C++ 建構時間
  • 提升 Rust 繫結的人體工學和效能。強化功能包括支援依值/參照編碼、預先解碼的訊息緩衝區,以及非封鎖傳送的逸出機制。最佳化填補歸零作業可提升效能,且管道關閉錯誤現在會明確包含墓誌銘。
  • 新增對 Rust FIDL 繫結的 zx::Counter 支援。
  • 新增靜態 Python FIDL 後端 (fidlgen_python),並預設為所有 FIDL 程式庫產生繫結。這個初始版本支援通訊協定方法、強大的外部型別匯入功能、必要結構體欄位,以及改良的 IDE 探索功能。

GPU 和圖形

GPU 和 Graphics 的更新如下:

  • 大幅改善 Magma 的核心。信號燈現在使用 zx::counter (而非 zx::vmo),可提升效能並減少記憶體用量。此外,內容建立作業現在支援優先順序,緩衝區發布作業在連線關閉時更安全,且提供新的 C++ 至 C 繫結程式庫。
  • 已將圖形驅動程式從 devfs 遷移至 FIDL 服務。這項全系統的努力可讓圖像元件現代化,包括 Mali 驅動程式庫和 Magma 整合,進而提升安全性及公開功能的清晰度。舊版 DFv1 程式庫也已移除。
  • 擴大支援的像素格式。Magma 和 virtio-gpu 現在支援 A2B10G10R10P010,可與更多硬體和應用程式相容。
  • 提升圖像算繪和穩定性。Vulkan 交換鏈現在可正確處理 alphaComposite 模式,確保不透明表面能正確算繪。
  • 改善圖形服務的 FIDL API 和 ABI。現在會標示 fuchsia.vulkan.loader/Loader 通訊協定以進行 ABI 檢查。Magma 服務 FIDL 現在更清楚地公開 CombinedDevice 通訊協定,簡化用戶端 API。

物聯網、Matter 和 Thread

我們對 IOT、Matter 和 Thread 進行了以下更新:

核心

以下是 Kernel 的更新內容:

  • zx_vmar_map 實作 ZX_VM_FAULT_BEYOND_STREAM_SIZE 標記。這項功能可讓記憶體存取超過 VMO 內容大小的資料,進而改善與 POSIX mmap 語意的相容性。
  • 新增 ktrace 串流支援。 zx_ktrace_read 現在會耗用讀取的資料,讓使用者空間透過在迴圈中叫用這個系統呼叫,串流處理核心追蹤資料。在這次清理作業中,我們移除了未使用的 zx_ktrace_write 系統呼叫。

  • 新增對可對應核心時脈的支援。在大多數情況下,這些時鐘支援有效率的讀取存取權,不必進入核心。如要瞭解設計詳情,請參閱 RFC 0266

網路堆疊

Nestack 的更新內容如下:

  • 我們預計在 F27 推出至 100% 之後,以及 F28 開始推出之前,啟用 Netstack3 (透過功能標記)。
  • 全面支援 TCP 選擇性確認 (SACK),包括以 SACK 為基礎的遺失封包復原和壅塞控制更新,大幅提升在封包遺失網路上的 TCP 效能。
  • 改善 TCP ACK 行為:預設啟用延遲 ACK、導入快速 ACK 週期,並確保更準確地計算視窗更新,以提升效能。
  • 提升 TCP 的可靠性和正確性:修正多項重大錯誤,包括 CUBIC 中的算術溢位、無序 SACK 上的恐慌、不正確的 RTT/RTO 計算,以及不當的重傳計時器重新啟動。
  • 改善 TCP 對網路狀況的回應:根據路徑 MTU 更新動態調整最大區段大小 (MSS),並將 ICMP 錯誤傳播與 Linux 行為對齊。
  • 修正 IP 片段重組,修正處理順序錯誤和重複片段的方式,並將 IPv4 重組逾時時間縮短為 15 秒,以符合 RFC-791。
  • 為 IPv4 重複位址偵測 (DAD) 做好準備:將 DAD 機制重構為與 IP 無關,並新增必要的設定選項。
  • 使用 LRU 政策限制路徑 MTU 快取大小,以減輕重複 PacketTooBig 訊息造成的潛在阻斷服務漏洞。
  • 網路堆疊現在會針對傳送至未繫結 UDP 連接埠的資料電報,傳送 ICMP 連接埠無法連線訊息,並受到現有 ICMP 速率限制的保護。
  • 透過新的FIDL 通訊協定,導入以 eBPF 為基礎的插座輸出篩選器支援功能,提供進階封包篩選功能。fuchsia.net.filter.SocketControl
  • 透過封包標記功能強化網路篩選,允許 fuchsia.net.filter 規則標記封包,並在轉送決策中使用這些標記。
  • 改善連線追蹤功能,可剖析內部 ICMP 錯誤封包,並將這些封包與原始連線建立關聯,以便為 ICMP 錯誤啟用 NAT 等功能。
  • 為符合新版 API 標準,fuchsia.netpol FIDL 程式庫已重新命名為 fuchsia.net.policy
  • 強化 NDP 和 MLD 訊息驗證,確保躍點限制符合 RFC 規定,並確保介面停用時,系統會重設所學的 IPv6 參數。
  • 更精細的計數器可提供更完善的網路觀測功能,包括每個裝置的 IP 計數器、每個通訊端的 UDP 計數器,以及 MLD 檢查計數器。

平台驅動程式

平台驅動程式的更新內容如下:

電源管理

電源管理功能已進行下列更新:

軟體推送

軟體發布功能已進行下列更新:

  • system-update-committer 中新增健康狀態檢查通訊協定,如果提交作業超過五分鐘,就會失敗,藉此提升整體更新可靠性。
  • 改善 system-update-checker 的診斷記錄功能,偵測與 UpdateManager 的連線中斷時間。
  • 遷移復原元件,改用 ArchiveReader 和新的 Open 方法,取代已淘汰的 LogProcessor

Starnix

Starnix 已進行下列更新:

儲存空間

儲存空間服務已進行下列更新:

測試

測試功能已進行下列更新:

計時

我們對「時間記錄」進行了以下更新:

  • 為 Timekeeper 導入電源管理整合功能,包括功能標記和邏輯,可防止時鐘在啟動前過早更新。
  • 提升 RTC 可靠性:禁止負值開機時間軸參考調整,這表示重設導致的無效狀態。
  • 透過「檢查」功能,加強時間記錄的觀測和偵錯能力:新增 UTC 調整成功/失敗的指標、記錄上次調整的詳細資料,以及公開結構化設定資料。
  • 提升 Starnix 世界標準時間的準確度和可設定性:修正啟動的參考時間軸、實作外部調整的 Proxy,以及完成可設定世界標準時間的路由。
  • 推出全面的外部 UTC 時間調整機制,包括核心決策邏輯、整合至 UTC 控制迴路、非同步指令處理,以及可設定的安全導向時間範圍限制。
  • 為 Timekeeper 啟用永久儲存空間:新增元件執行個體 ID,並實驗性地提供儲存空間 AIB。
  • 改善鬧鐘處理方式和 RTC 模擬:根據裝置屬性修正計時器索引選取項目,並改善長時運作計數器的使用方式。

工具

工具的更新內容如下:

fx

外匯的更新內容如下:

  • 改良 fx set 指令,提升建構目錄管理效率。現在預設為 --auto-dir,可建立產品專屬的建構目錄,而 out/default 則成為方便的符號連結。我們修正了多項錯誤,包括 --dir--fint-params-path 標記的問題,且建構目錄不再儲存在 fx.config 中,避免發生過時問題。
  • 標準化並改善目標選取標記。為配合 ffxfx -d 旗標已淘汰,請改用 fx -tfx --target
  • fx build 指令中新增警告,提醒開發人員不要使用 Ninja 目標名稱,而要使用 GN 標籤。這項異動可鼓勵正確使用建構引數,並為日後的 Bazel 整合做好準備。
  • fx 取得更完善的建構分析資料,以便回報更多背景資訊,例如建構作業是由 fx testfx multi 觸發,以及納入 args.json 的更多建構引數。

ffx

ffx 已進行下列更新:

  • 已從 ffx 中移除以精靈為基礎的套件伺服器。所有相關聯的指令 (ffx repository addlistremovestatus 等) 也會一併移除。使用者現在應使用獨立的 ffx repository server 指令。
  • 改善網路和連線效能。ffx 現在可正確處理含有範圍 ID 的 IPv6 位址,針對連線失敗提供更實用的錯誤訊息,並更穩健地探索及管理目標,特別是透過 USB/VSOCK。此外,也新增了透過 VSOCK 支援 Overnet 的功能。
  • 新增可選擇加入的終端機使用者介面 (TUI),適用於 ffxfx 指令,可提供強化格式。您可以透過 ffx.ui.mode 設定啟用這項功能。fx use 指令是第一個採用這項功能的指令。
  • 更新 ffx productffx package 為獨立可執行檔,不再與主要 ffx 二進位檔捆綁。這項變更可縮短建構時間。
  • 更新 ffx test run 指令,使其更適合自動化作業,支援嚴格的輸出規定和機器可讀取的 JSON。
  • ffx inspect 指令的 --component 旗標替換為 --data,讓查詢作業更直覺。
  • 改善 ffx driver 指令,新增 --unbound 旗標,只列出未繫結的節點,並更準確地回報無法繫結的節點。
  • 提升閃爍速度和可靠性。由於傳輸緩衝區大小增加,現在使用 ffx flash 指令處理大型圖片時,速度大幅提升。現在也會自動重新分塊,正確處理大型稀疏圖片。修正了導致 fx flash 中發生「Unknown Ninja path」錯誤的錯誤。
  • 更新 ffx trace 指令,以便更清楚地呈現 FIDL IPC 追蹤記錄。這項功能採用雙通道方法,可正確將非同步雙向 FIDL 呼叫,以單一連續流程的形式在 Perfetto 中算繪,並將事件名稱設為 FIDL 方法名稱,方便進行偵錯。

zxdb

zxdb 已進行下列更新:

  • 在 zxdb 中預設啟用主機端解除堆疊功能,運用完整的偵錯資訊提供更高品質的回溯。我們新增了 --force-remote-unwind 選項,可還原先前的目標端行為。

UI

UI 方面有以下更新:

  • 在 Flatland 中啟用直接顯示。這項異動可直接顯示用戶端圖片,不必再進行組合,因此能更有效率地算繪,並修正緩衝區集合匯入程序的重要問題。
  • 改善輸入系統和核心 UI 的穩定性。這些異動修正了 Scenic 的 VSync 間隔計算問題,可防止當機,並新增滑鼠裝置支援功能。
  • 提升 UI 服務的效能和可設定性。現在可以透過執行緒和記憶體設定檔設定 Scenic 和 Scene Manager,讓整合人員微調資源分配。此外,Scenic 的影格預測邊界現在可參數化。

WLAN 和連線

WLAN 和連線功能有以下更新:

  • 推出新的 GetMacAddress FIDL 方法,用於 wlanix 擷取裝置的 MAC 位址。
  • wlantool 指令列公用程式現在除了 SSID 之外,還可以使用 BSSID 連線至網路
  • 改善漫遊演算法,提升回應速度和效率。包括將掃描退避時間設為指數型、更智慧地重設退避時間,以及移除訊號雜訊比 (SNR) 做為觸發條件,簡化靜態漫遊設定檔。
  • 簡化核心 WLAN FIDL API:移除未使用的函式和遷移旗標、將 SoftMAC 專屬型別移出通用程式庫,以及重新命名與統計資料相關的 API,以提升清楚程度。
  • 驅動程式庫遙測:公開 WLAN 先占、SDIO 匯流排指標和韌體 RX/TX 錯誤的新計數器,以利改善監控。
  • 解決穩定性問題:調整 TX glom 影格數量上限,避免批次大小超出通訊協定限制。