Fuchsia F25 版本資訊

版本:F25

我們已實施下列變更:

無障礙設定

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

  • 還原 a11y 焦點動作復原功能,該功能未宣告節點。

音訊

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

  • 更新 audio_device_registry,確保系統在回應初始 WatchDevicesAdded 呼叫之前,先偵測並初始化現有裝置。ADR 現可按需啟動,而非一律立即啟動。
  • aml-g12-tdm 驅動程式庫轉換為新的 GPIO 呼叫。
  • 更新音訊測試的命名方式,使其保持一致。請使用底線表示測試套件名稱,使用連字號表示測試元件名稱,並在兩者前面加上 audio

藍牙

我們已對藍牙進行下列更新:

  • 完成遷移至新的 HCI 傳輸 FIDL 通訊協定。
  • 修正了一些藍牙的 Rust lint,並將 syn 更新至 v.
  • 改善藍牙設定檔和 GAP,包括轉送更新和修正重複複製和堆積配置問題。
  • 新增 bt-init 急切功能,在裝置啟動時啟動,並將部分額外的藍牙功能導向工作階段,供元件使用。
  • 實作 fuchsia.bluetooth.le.Connection/ConnectL2cap 以支援 LE 連線導向通道。
  • 建立 PrivilegedPeripheral 通訊協定,在啟用隱私權模式時支援使用靜態位址的 LE 廣告。
  • 完成將 HCI 指令和事件封包結構體遷移至 Emboss 封包檢視畫面。

鈷豔藍

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

  • 更新系統指標運算方式,以便使用啟動時鐘提高準確度,並讓系統指標守護程式使用 Fuchsia 的時間概念,減少錯誤並為日後的強化做好準備。
  • 修改驗證器測試,使用輔助函式來改善可讀性。

元件架構

我們已為元件架構進行下列更新:

  • 已更新 component CLI 工具,並更新 ffx 工具。component show 指令現在會顯示執行元件資訊,裝置端 component CLI 現在包含 config 子指令,而 ffxfuchsia-controller 現在使用一般安全殼層設定。cmc format 現在支援從 stdin 讀取資料。
  • 更新 Component Manager,以便在執行巢狀結構時支援追蹤,並透過 fuchsia.pkg.PackageResolver-boot 功能公開啟動檔案系統套件解析器。
  • 在元件管理服務中實作 fuchsia.sys2.ConfigOverride 通訊協定,並提供支援的 CLI 程式庫。這可讓開發人員覆寫結構化設定值,並修正未使用設定能力的欄位遭拒絕的問題。
  • 清理未使用的服務連線 API 並移除已淘汰的函式,同時在傳出目錄中新增服務執行個體名稱的說明,以清理 fuchsia-component 程式庫。此外,component::Clone 已遷移至 fuchsia.unknown/Cloneable

連線驅動程式

我們已針對連線驅動程式進行下列更新:

  • 強化 brcmfmac 驅動程式庫,包括使用新的 GPIO 呼叫,並降低非致命錯誤的記錄層級,進而改善相容性、功能和記錄清晰度。

診斷

我們已對「診斷」功能進行以下更新:

  • 改善 ffx inspect 的開發人員體驗。ffx inspect 現在支援 --name、別名和網址的模糊比對,並改善了 --component supersedes--manifest 的使用方式。
  • 改善 ffx log 的開發人員體驗。除了第一行的 UTC 時間外,也會顯示啟動時間,以便從啟動時間計算回溯時鐘時間,移除 --select--force-select,更新記錄興趣選取器,讓其不再需要在別名中使用任何形式的轉義,並修正重新連線的興趣問題
  • 提升 Rust 記錄編碼/解碼效能。在許多基準測試中,速度提升約 60%。
  • 更新與從單調時間轉換至啟動時間相關的其他項目。
  • 在取樣器中新增電源仲介統計資料
  • 在 Archivist 中推出新的 LogStream 通訊協定,可直接擷取原始 FXT 記錄,並顯示歸因資訊。與使用 ArchiveAccessor 相比,這可改善效能。
  • 更新 SelfProfilesReport 以支援自訂葉子匯總,以便分析複雜 CUJ 中的 CPU 用量。
  • 增強工作篩選功能,以利偵錯。FIDL 用戶端現在可以使用工作專用篩選器,且 --job-only 標記已新增至 attach 指令,以便直接附加工作 (僅限 Fuchsia)。
  • 改善核心執行緒取樣器和偵錯工具,使其更健全。取樣器現在支援附加至初始化執行緒,而偵錯工具修正了與行表相關的當機問題,並改善了對非同步程序終止作業的處理方式。
  • 改善 Archivist 的效能和穩定性。專用於記錄插座的執行緒可減少額外負擔,而關閉邏輯和內部緩衝區的變更則可提升穩定性,並採用非同步範圍。
  • 改善診斷記錄和符號化功能。在符號化器和下載管理員中新增更多偵錯記錄,並修正 x64 Zircon 中負載相關的符號化問題。
  • 改善診斷記錄中的嚴重性 API,提升開發人員使用體驗。

螢幕

我們已對多媒體廣告進行以下更新:

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

驅動程式架構

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

GPU

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

  • 改善 Vulkan 交換鏈功能:這包括使用 unsquashable 標記、移除明確的時間戳記,以及將柵欄重新命名為 fence_signalers,藉此簡化交換鏈呈現邏輯;變更柵欄訊號以觀察 vsyncs;從 HLCPP 遷移 Flatland 交換鏈;以及修正假 Flatland 的 fuchsia.ui.composition.Allocator.RegisterBufferCollection 實作。
  • 改善 virtio-gpu-display:移除對 sysmem1 的未使用參照,使用 DriverLayer 和 ConfigStamp,並簡化 Banjo 轉接器 API。
  • 已遷移至 open3 fdio:包含與 fdio_open 遷移和一般 open 到 open3 遷移相關的變更。
  • 在 msd_c.h 中新增函式:包括新增緩衝區匯入/釋放、建立/釋放連線,以及對應/釋放緩衝區函式。

國際化

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

  • 改善 ICU 建構程序和設定處理機制。移除了 jiri 鉤子,改為在 gn gen 期間直接呼叫產生器指令碼,藉此提升效率和 icu_root 準確度。推出由 Jiri 鉤子管理的 build/icu/jiri_generated/config.json,以便最佳化 icu_config_info 的讀取作業,並新增資料完整性的驗證目標。

IOT

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

  • 修正 GHP 的錯誤。

平台驅動程式

我們已針對平台驅動程式進行下列更新:

  • 改善 AML CPU 驅動程式庫記錄功能,並將 imx227 驅動程式庫改為使用 SetBufferMode()
  • aml-light 驅動程式庫遷移至 //sdk/lib/driver/platform-device/cpp SDK 程式庫,並重構其建構目標,以便進行現代化。
  • 移除暫停時間限制,可讓暫停時間任意延長。
  • 對 SPMI (系統電源管理介面) 架構進行了多項改善。包括針對模擬的 spmi 進行更新,以便進行非同步測試、啟用 UnownedClientEnd 的讀/寫存取權,以及新增對 SpmiRegisterArray 的支援。此外,我們已實作 GetPropertiesWatchControllerWriteCommands 的支援功能。
  • 新增方法,讓 SPMI 驅動程式庫用戶端可接收來自裝置的控制器寫入指令,完成 SPMI 的軟轉換。這會移除暫時性的建構檔案。

電源管理

我們已對電源管理功能進行以下更新:

  • 改善可觀察性和評估功能。包括從追蹤記錄檔中捨棄無效的 Gonk 樣本、在檢查資料中使用實際時間,以及 Power Broker 的 Cobalt 指標。
  • 改善平台電源管理。包括透過元件管理服務工具,以內建元件形式執行關機墊片;消除 Power Broker 中的潛在記憶體外洩情形;以及移除喚醒處理和完整喚醒處理電源元素。
  • 持續開發 CPU 電源管理功能。包含 VIM3 的能源模型,以及支援使用能源模型設定核心的平台。

荒漠油廠

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

  • 改善程式碼品質和 linting。解決了 or_fun_callset_contains_or_insert lint 的處理問題,移除了新工具鍊偵測到的死碼,並啟用 clippy::redundant_cloneclippy::needless_collectclippy::collection_is_never_readclippy::clear_with_drain
  • 最佳化記錄記錄解碼功能。已從 nom 遷移至 zerocopy,以改善效能並簡化程式碼。
  • 已從 async-io 遷移至 Tokio。計時器會延遲初始化,以解決 Tokio 主機/目標執行者的差異。
  • 為 RemoteLike 新增 Open3 支援。

SDK

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

軟體推送

我們已針對軟體提交機制進行以下更新:

  • 新增 FindDynamicDataSink API 取代 UseBlockDevice,將區塊裝置查詢責任轉移至分區映像檔安裝工具服務。新增 AndroidPartitionerTestVim3DevicePartitionerTest,以提高可靠性,並處理多個 GPT 裝置等邊緣案例,並防止意外清除啟動載入程式。
  • 在 FIDL API 中新增無法啟動的理由資料,以便改善錯誤回報和診斷功能。
  • 修正在 GetMetadata 呼叫期間發生在 ResetPartitionTables 中的斷言,改善分區映像檔安裝工具穩定性。正確回報上次啟動嘗試,修正無法啟動的插槽的異常行為。新增對 Sorrel 的支援。
  • 為儲存空間主機相容性和簡化測試進行重構。已移除 AbrClientFactory,以簡化用戶端建立程序。已刪除重複的 GUID 查詢表。ResetPartitionTables 現在會取代依賴直接 GPT 存取權的函式。新增 KolaAbrClient 的單元測試。
  • 在檢查中公開 fuzz_percentage_range。這則留言已編輯,反映出分區映像檔安裝工具在最終啟動嘗試時回報的待處理狀態。
  • 已從 Node.Clone 遷移至 Node.Clone2,以便進行 io2 遷移。已更新 fuchsia_fs 函式。使用 open3 fdio。排序附加的資訊清單和資訊清單,以便判定。
  • 重構 PolicyEngine 並遷移至 QueryConfigurationStatusAndBootAttempts,以便在成功提交時回報啟動嘗試。

Starnix

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

  • 實作 fscrypt ioctls,新增對使用者管理的加密金鑰支援功能。不過,系統尚未完全支援對已上鎖的加密目錄執行作業,且 FS_IOC_REMOVE_ENCRYPTION_KEY 無法正確處理上鎖作業。
  • 強化 SELinux 以提升安全性和存取權控管功能。這包括透過 /sys/fs/selinux/avc/cache_stats 回報存取向量快取統計資料,以及針對安全性情境進行類別組合規格化的基本實作。
  • 改善對 cBPF 和 eBPF 的支援。修正了幾個 cBPF 相容性問題,包括實作 BPF_MSH 指令和調整封包存取指令。我們強化了 eBPF 驗證器,以改善結構體處理方式,並防止陣列邊界檢查繞過。
  • 已更新 cgroupcgroup2 檔案系統,並將 cpuset 設為 CgroupV1 檔案系統,以便掛載。cgroup.controllers 介面檔案也能供存取。
  • 已重新啟用 Starnix 暫停功能。喚醒鎖定會在核心中追蹤,容器暫停會委派給執行元件,後者會監控已註冊的管道,以便恢復容器。相關修正項目會處理租用權取得順序,並改善執行程式代理程式的健全性。
  • 新增對 aarch32 uapi 的支援。並附上對應的建構引數。
  • 修正 FIONBIO 期間的 FIONBIO ioctl 和功能計算。execveFIONBIO 會根據使用者輸入內容正確處理 NONBLOCK 標記,且在 execve 期間正確計算 set-user-ID 根目錄程式的功能。不過,後者尚未解決檔案功能和 SECBIT_NOROOT 的問題。

測試

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

  • 在多個領域改善測試基礎架構:
    • 在啟動/引導環境中導入測試支援功能,讓啟動檔案系統測試能以元件形式執行。
    • 在 arm64 上啟用 crosvm 測試,並將其新增至官方核心測試環境。
    • 確保 CTF 構件複製至正確位置,解決從版本載入這些構件的問題。
    • 新增對 botanist 中 Kola 的序列金鑰佈建支援。
  • 新增 API 來壓縮偵錯資料,大幅提升使用 ffx 的測試範圍機器人速度。舊版未壓縮 API 已淘汰。
  • 改善各種測試:
    • 延長計時器截止期限,修正 Timer.Restart 核心測試中的 flake。
    • 更新 msd-arm-mali 中的關閉測試,以記錄更多錯誤,協助偵錯 flake。
    • 移除了 FailEarlyWake 分頁器測試中的競爭狀況,避免無限期阻斷。
    • 透過確保 VMO 對應項目周圍的邊界頁面,修正核心 FIFO 測試中罕見的 flake 問題。
    • 將 msd-arm-mali 測試中的 1 秒逾時時間替換為無限逾時時間,可能可解決 flake 問題。
  • 改善分區映像檔安裝工具測試,提升穩定性和相容性:
    • 使用預先初始化的區塊裝置,更新儲存空間主機相容性的分區映像檔安裝工具測試。
    • 新增了回歸測試 AndroidPartitionerTest,確保 Android 裝置上的 GPT 正確識別。
  • 更新測試工具和指標處理程序:
    • 更新核心測試,以支援舊版和新版核心歸因模式。
    • 已從 ConstantMetricsProcessor 中移除已淘汰的參數。
    • 使用 ConstantMetricsProcessor 時,必須提供檔案名稱,才能使用自由格式指標。
    • 強化 CTF 測試,以便使用新的 C++ FIDL 繫結。

工具

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

  • 更新 tunnelingninjalog 工具: tunneling 現已改善錯誤訊息,並提供診斷建議,ninjalog 則支援 Ninja 記錄格式 v7。
  • temperature-cli 工具中新增支援功能,可取得、設定及等待溫度觸發點。
  • 更新 make-fuchsia-vol,以便使用產品套裝組合做為圖片檔案的主要來源,並優先使用稀疏圖片。
  • 加強型 paver新增 AndroidPartitionerTestVim3DevicePartitionerTest。修正不支援的區塊裝置上的 GetMetadata 錯誤。改善測試中的 storage-host 相容性。已將 unbootable_reason 新增至 FIDL API。正確回報 last-boot-attempt,並解決了不可靠的測試。
  • 已將 package_manager_test 遷移至前景存放區伺服器,並修正不穩定的測試。
  • 由於發生問題,因此將從轉移資訊清單複製 blob 的變更還原。
  • 改善 test_list_tool,以便正確處理套件資訊清單中的檔案相關 blob。

ffx

以下是 ffx 的更新內容:

  • 更新 ffx,以便在任何非致命的 SSH 錯誤發生時重試 target add

fx

以下是 fx 的更新內容:

  • 新增對產品組合引數的支援,適用於 fx create-pb-zip
  • 改善 fx 指令,在強制清除後自動叫用 fx gen,並新增 fx rbe cleanlogs 指令,從 fuchsia-reproxy-wrap.sh 移除記錄。
  • 推出 fx generator,用於在雙重建構目標中同步處理 BUILD.bazelBUILD.gn 檔案。

UI

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

  • 新增 fuchsia.ui.VisualDebuggingLevel 設定,讓開發人員可控制偵錯功能,包括景觀色調、Starnix 紫色畫面,以及關閉螢幕時的驅動程式庫綠色畫面。ui_visual_debugging_level 現在使用可用性過渡路由,因此在 Starnix 相關測試中,不再需要路由。
  • 在 Starnix 中新增測試,驗證在未開啟裝置時,觸控事件是否會遭到捨棄。starnix-touch-test 已重構,以便重複使用 GetTouchEventSequenceOfLen。這可簡化多讀取器和關閉測試。
  • 新增了螢幕保護程式元件,隱藏在標記後方,用於展示 Fuchsia Offload。
  • 為螢幕截圖新增 RGBA 支援功能。
  • 改善 Scenic 設定記錄和設定處理:更新 Scenic 設定記錄,以便在單一行中顯示,將 ChoosePreferredPixelFormat() 重新命名為 ChosePreferredRenderTargetFormat(),並移除未使用的 DisplayManager::SetVsyncCallback() 方法。
  • 為 CPU 轉譯器測試停用顯示組合功能。
  • 暫時停用直接顯示功能,並移除依賴事件的相關程式碼;現在的顯示測試會使用 vsync 而非訊號事件。

WLAN

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