Fuchsia F24 版本資訊

日期:2025 年 1 月 21 日

版本:F24

我們已實施下列變更:

無障礙設定

  • 改善無障礙功能:記錄螢幕閱讀器狀態的變更。

音訊

  • 更新 audio_listener,以修正使用驗證錯誤,並解決 clang-tidy 問題。
  • 更新 audio_device_registry 服務,以便新增電源狀態變更的檢查記錄。
  • 已更新 aml-g12-tdm 驅動程式庫,預設會關閉音訊硬體,直到第一個用戶端出現為止。

藍牙

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

  • 新增 bt-device-id 軟體組合設定,並實作預設裝置設定。根據預設,系統不會啟用 bt-device-id 設定檔。
  • 強化 bt-rfcomm,以便為 RFCOMM 工作階段通道使用 L2CAP max_packet_size,進而最佳化資料傳輸。我們也將通用 UUID 新增至 BR/EDR 服務搜尋參數,以便進行自訂 UUID 搜尋。
  • 強化型藍牙 LE Peer,提供廣播助理的其他欄位。系統現在會根據控制器支援情況,啟用同時使用 LE 和 BR/EDR 廣告的功能。對 bt-gatt 進行了多項改善,包括新增基本 ServerSupportedFeatures 支援、移除不必要的句柄追蹤,以及在支援的情況下開啟 ISO 主機位元。此外,我們也為 LE Audio 新增了 CSIS 和 PBP 廣告類型。
  • bt-hostbt-hci-virtual 遷移至預先建構項目,並刪除原始碼。bt-host 預先建構的狀態已記錄在 README 中。
  • 在產品組合中新增 BT MAP MCE 設定檔 (預設為停用),並實作相關功能。這包括 MAP-MCE 的指令列工具、使用通知服務實作 MAP MCE 角色,以及為 MCE 角色實作 Message Notification Service 伺服器。
  • 更新 bt-hfp,加入開始/停止要求功能、音訊閘道組合設定,以及整合選用通訊協定。系統現在允許 bt-avrcp-integration-tests 使用 ERROR 記錄。LEAdvertisingSetTerminated 事件已遷移至 Emboss,bt-host/fidl 中的錯字也已修正。我們在 Lacewing 的暫停/繼續測試中新增了停用計時器時間檢查的選項,移除了 HCI 模擬器裝置節點,並刪除了過時的藍牙取樣器設定。為 starnix.arm64 定義測試群組,並將 LE_AUDIO 新增至 bt-cli 中的 CoD 服務位元。新增 PrivilegedPeripheral API,以便進行 LE 廣告。

鈷豔藍

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

  • 改善事件程式碼處理方式,並修正了 Linter 警告。max_event_codeevent_code 限制為 2^31 - 1,以免超過 Java int 容量,並在 cobaltb.py 中解決 Linter 警告。
  • 已將 build-test 指令新增至 cobaltb.py。
  • 利用 FatLTO 加快測試建構速度。
  • 已還原並測試目前的管道擷取邏輯。
  • 將探針測試規格更新為 Nelson。
  • 從 Fuchsia 報表設定檔中移除 ARCH/OS。
  • 修正了 cobalt 登錄檔的錯誤。

元件架構

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

  • 新增一般服務仲介,並為 component_manager 中的內建元件建立更具延展性的架構。此架構包含新的 BuiltinProgram 類型、針對內建和非內建元件的 ABI 對齊,以及 elf_runner 的重構。
  • 改善元件管理工具的穩定性,並解決測試不穩定的問題。包括增加測試中的逾時時間、取代已淘汰的 fuchsia_fs 呼叫,以及修正錯誤記錄中的錯字。
  • 改善記錄和事件處理功能。klog 訊息中的換行符號現已分割為個別項目,修正了 UTF8 恐慌錯誤。啟動時間現在會在事件標頭中設定,以便更準確地計算事件時間。
  • 在 session_manager 中將最後一個必填 #ui 路徑設為選填,啟用無 UI 產品,並新增 fuchsia.ui.composition
  • 利用 FatLTO 加快測試建構速度。

診斷

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

  • 改善記錄訊息處理方式。移除對傳入結構化訊息和標準化訊息表示法的雙重剖析,以提高效率並減少分配。從記錄鍵/值組合中移除 ANSI 顏色代碼。
  • 已遷移至不含單調時間的啟動時間。Archivist、檢查和記錄工具使用的是啟動時間,而非單調時間。
  • 簡化設定。將與檔案管理員相關的 bootstrap.cml 項目移至區段,方便修改。
  • 在 SDK 中新增 C++ 偏好記錄器。這可讓您在 SDK 中啟用元件的記錄功能,而無需整合自訂記錄器。
  • 更新取樣器設定,接受萬用字元。這可讓您為駕駛員和其他人編寫選取器。
  • 已更新 ffx log 工具,以便接受 --set-severity 而非 --select
  • 處理設定中的初始興趣。管道組合選項,用於設定元件的初始記錄嚴重性。
  • 改善工作處理方式。引入 DebuggedJob 抽象概念,並將其用於 RootJob,簡化工作附件和例外狀況監控。為提升一致性,我們已將例外記錄擷取作業移至 Exception 物件。
  • 新增整數格式設定。允許在 printlocals 指令中,對整數進行持續的格式設定。
  • 改善 step_plt 測試。移除 step_plt e2e 測試中不必要的依附元件。
  • 改善分析支援功能。新增測試叫用者的支援,並更新 Mali 的檢查選取器,以改善剖析功能。
  • 更新時間戳記格式將時間戳記變更為 RFC-0260 中定義的啟動時間戳記。
  • 簡化設定並改善時間處理方式。移除了 eng-only 設定資料目標和 low_memory 設定,並將對 zx_clock_get_monotonic 的直接呼叫替換為較高層級的抽象項目。
  • 改進偵錯功能。連線至裝置時,會以 ffx log 的格式列印世界標準時間,以便將啟動時間對應至任何時間。
  • 改善 ffx 記錄中的重新啟動偵測功能。使用隨機的每次開機整數,而非世界標準時間,以便更可靠地偵測重新啟動。

螢幕

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

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

驅動程式架構

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

  • 在驅動程式庫執行階段中新增對驅動程式庫程式伺服器的支援,包括 DriverServerDriver 特徵,並解決記憶體管理問題,以及新增跨執行緒管道的行為測試。
  • 改善 Rust 驅動程式庫支援功能。您現在可以使用 fuchsia_rust_driver 範本和 rustc_cdylib 建構 Rust 驅動程式。也實作了基本的 Rust 驅動程式庫傳輸。
  • 強化動態連結支援功能。driver_loader 實作了透過動態連結載入驅動程式的 FIDL,並將 DriverLoadArgs 傳遞至 DriverHost::StartWithDynamicLinker。節點用戶端現在會傳遞至 DynamicLinkerDriverHostComponent::Start,而動態連結 StartRootDriver 測試輔助程式會進行重構,以便重複使用。已實作 DynamicLinkerDriverHostComponent Start。啟動驅動程式代管程序時,系統會傳回 FIDL 用戶端。載入驅動程式庫至驅動程式庫主機的功能已實作。
  • 改善驅動程式庫測試功能ScopedGlobalLogger 已新增至 SDK,以簡化驅動程式庫測試。共用程式庫包含在 driver_test_realm 中。driver_test_realm 程式碼已清理。driver_test_realm 中已移除從空值移除的追蹤路由。DriverRunnerTest 可為動態和舊版路徑測試設定參數。driver_test_realm 已遷移至 dtr_exposes/offers
  • 將多個 FIDL 程式庫遷移至 Bazel 建構規則。這包括簡單的驅動程式庫和 DFv2 驅動程式庫傳輸範例。
  • 重構的驅動程式架構。Bootstrap 和 zx::thread 邏輯已從 driver_manager 移至 driver_loader。公開目錄會傳遞至已啟動的驅動程式代管程序元件。DriverStartArgs 現已建立並從節點傳遞。LoadDriverHost 現在會採用回呼。已淘汰的整數型屬性鍵和拓樸路徑。
  • 其他驅動程式架構更新。我們已在驅動程式庫記錄器中新增 API 可用性條件。假電池驅動程式庫已遷移至 x64 的平台 AIB。SDK 使用者應不再直接使用 platform-defs.h。ddk::MetadataServer 現在會將中繼資料 FIDL 服務提供給 fdf::OutgoingDirectory。已從 ElementSchema 中移除依附元件符記。共用 FIDL FakeElementControl 可供電源架構使用。sdk_* DDK 不再使用建構範本。fdf::testing 現在支援 Open3。系統會重新比對失敗的駕駛人。
  • 更新 sysinfo,以便為平台匯流排使用服務,而非 devfs。

FIDL

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

  • 在 C++ 和 Rust FIDL 繫結中,改善了對啟動時刻、時間類型和非同步接收的處理方式。這包括使用 zx::basic_timefuchsia_zircon 型別的單調性和啟動時刻的型別安全支援、在 C++ 繫結中新增 zx::basic_time 的轉換特徵、支援在 Rust 和 C++ FIDL 繫結中編碼及解碼 {Boot,Monotonic}Instantzx::basic_time、支援 Rust 繫結中的刻度,以及在 Rust FIDL 中增加用於非同步接收的緩衝區大小。
  • 強化 FIDL 工具和建構程序。我們進行了多項改善,包括在 fidlgen 中將 MaybeAlias 重新命名為 MaybeFromAlias、切換 fidlgen 和 fidldoc 以使用 kind_v2、更新 fidldoc 以遞迴方式轉譯向量和陣列、在 FIDL 建構中新增布爾值以供供應商 HLCPP 顯示、將新的 Rust FIDL 繫結程式庫重新命名為 fidl_next、將資源與核心 FIDL Rust 程式庫解耦、減少 not_needed() 陳述式並移除在 GN 建構中將 SDK 類別傳遞至 fidl_cpp_family(),要求 fidl_library() 中的 "stable" 參數,以及在 FIDL 套件中新增缺少的測試。也解決了幾個與 FIDL GN 範本和版本相關的錯誤。
  • 新增 Rust FIDL 繫結 (fidl_next)。
  • 已將 SynchronousProxy::is_closed 新增至 zx Rust FIDL 繫結。
  • fuchsia.device.manager FIDL 重新命名為 fuchsia.system.state

GPU

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

  • 更新 MSD ARM Mali 電源測試,以便使用假暫停功能來提升相容性。
  • 在基礎架構中啟用 Lavapipe,並修正記憶體流失問題。修正 Lavapipe 中的多個記憶體流失問題 (包括 lvp_device)。
  • 為 MSD ARM Mali 新增 PowerElementProvider 支援,並為 Magma 新增時鐘處理 API。用戶端現在可以設定時脈速度限制。新增 FIDL 通訊協定,用於從 Magma 驅動程式庫擷取電源元素。

國際化

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

  • 在產生的字串 FIDL 程式庫中新增版本管理功能,確保與 FIDL 平台版本管理需求相容。我們也更新了 intl 屬性供應器,讓系統不再發出與預設值相同的變更。這些變更可簡化測試,並假設所有字串程式庫皆不穩定。

IOT

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

  • Matter
    • 修正錯誤並改善 GHP 的穩定性。
    • 啟用 MDNS 的檢查支援功能,並新增指標。
    • 修正 MDNS 錯誤。

核心

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

  • 推出啟動時間軸。新增 ZX_CLOCK_BOOT 支援功能,可指定計時器應以開機時鐘為準,在系統暫停時不會暫停。
  • 強化的根工作剖析功能。新增並重新放置 --system-wide 標記至 ffx profiler attach,以便更穩健地剖析根作業樹狀圖中的所有執行緒,包括處理剖析程序在工作階段中途結束的情況。即使無法取得符號,分析器現在也會傳回樣本。

平台驅動程式

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

  • 改善平台裝置中繼資料處理方式,並新增板定義。平台裝置現在使用字串做為中繼資料,而非整數,新的 Fidl 方法會根據字串擷取中繼資料。新增紫丁香和鳶尾花板定義。
  • 提升 SDMMC 驅動程式庫穩定性和電源管理功能。透過重設 worker 事件,修正旋轉 worker 迴圈的問題。暫時停用電源暫停和硬體電源狀態操控功能,以便轉換至新的電源租用模式,並允許在電源元素關閉時允許儲存要求。針對核心 sdmmc 電源元件依附元件,向系統活動調節器註冊符記。

電源管理

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

  • 強化系統活動控管器 (SAG),提供新功能和設定選項。實作 CpuElementManager 伺服器,讓儲存空間驅動程式可與電源拓撲圖整合。新增 th wait_for_suspending_token 設定標記,以便控制 SAG 的依附元件權杖處理作業,並提供更彈性的系統電源狀態管理功能。
  • 透過強化的追蹤和檢查功能,改善電源觀測能力。新增電源元素追蹤事件,用於擷取租用要求、電源仲介器中的層級轉換,以及用戶端 Daemon 互動。將檢查記錄緩衝區大小提高至 8192 個事件,並將 VMO 提高至 2 MB,藉此減少在多次電源事件後發生資料遺失的情況。
  • 已將電源感應器的列舉新增至 fuchsia.sensors.types這會將 POWER 列舉引進 SensorTypes,讓您能整合 Fuchsia 感應器架構。
  • 將假電池驅動程式庫遷移至平台 AIB,並將其新增至 x64 平台。

荒漠油廠

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

  • 新增了幾項時間和時間長度處理的更新:更新為在 zx Rust 中使用 MonotonicDuration 而非 Duration,將 Duration 別名為 Zircon Rust 中的 MonotonicDuration,將 Time 重新命名為 Instant,將 SyntheticTime 重新命名為 SyntheticInstant,將 BootTime 重新命名為 BootInstant,將 MonotonicTime 重新命名為 MonotonicInstant,並將 Boot/MonotonicTime 重新命名為 Instant
  • 改善 FIDL Rust:新增對 {Boot,Monotonic}Instant 的計時器和編碼/解碼支援功能,將新的繫結程式庫重新命名為 fidl_next,將資源與核心程式庫分離,並稍微改善執行緒本機緩衝區的初始化作業。
  • 在使用 #[fuchsia::test] 的測試中新增了對 lsan 的支援,包括為 #[should_panic] 測試停用 lsan。
  • 在啟動檔案系統中使用 Rust 二進位檔的動態連結。
  • 為所有 Rust 目標類型新增 .rustdoc 子目標 (dylib + cdylib 除外)。
  • 新增對 rustc_cdylib loadable_module 的支援。

SDK

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

  • 改善 Bazel 動作效能,並修正多項錯誤。包括使用 genquery 來最佳化 depfile 產生作業 (可節省約 0.5 到 1 秒)、結合 cquery 叫用 (可節省 1.2 到 1.5 秒)、修正 fuchsia_product_configuration 的相對路徑、解決 minfo fuchsia_board_configuration() 錯誤、修正 Bazel 組合圖片驗證,以及修正開放字型目標。

軟體推送

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

  • 支援升級套件的功能已強化。這包括新增垃圾收集保護機制,讓 base-resolver 可與 base 套件一併解析,並引入 SetUpgradableUrls API 進行更新 (實作受標記限制)。
  • 在載入快取套件時清除變化版本資訊,提升一致性。
  • 改善 bootpkg 公用程式,並縮減二進位檔大小。這包括移除非同步作業、縮小二進位大小,以及新增 CLI 工具來查看啟動包及其內容 (listshow 子指令)。
  • 改善套件管理程式碼,並明確說明 OTA 進度回報功能。這包括重構套件伺服器執行個體以使用 RepositorySpec、移除重複的列舉定義以提升可維護性,以及在 CLI OTA 工具中新增有關進度回報行為的附註。
  • 為 vim3 主機板新增功能,以便將 xHCI 驅動程式庫從 BIB 遷移至 AIB。

Starnix

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

  • 在 Starnix 中新增了對暫停和恢復容器的支援,包括追蹤 Linux 喚醒鎖定、將作業委派給 Starnix 執行元件,以及取得/釋出喚醒租約。
  • 新增觸控和按鈕事件支援功能,以及 EPOLLWAKEUP,以喚醒已暫停的容器。刪除 epoll 例項時,系統會正確刪除 epoll 喚醒鎖定。
  • 修正與暫停/繼續期間的計時器管理和信號清除相關的競爭狀況。
  • 更新 hrtimer,以便使用代理管道喚醒容器。
  • 新增對 CLONE_NEWUTS 標記和 FUSE BPF 程式載入的支援。
  • 新增了以 binder.fidl 通訊協定為基礎的 Unix 網域通訊端實作項目,可在 Starnix 中的 Fuchsia 和 Linux 程式之間啟用程序間通訊和檔案描述元傳遞功能。
  • io_uring 實作 io_uring_setup 和基本讀取/寫入作業,讓 io_uring01 測試通過。
  • 為缺少的 futex 指令實作虛設常式。
  • 新增 /proc/sys/kernel/cap_last_cap 檔案。
  • 修正安全性屬性的存取權檢查,並解決 BPF 檔案系統安全性標籤未正確設定的問題。
  • 更新了套接字中可接受的佇列大小限制。
  • SELinux 狀態檔案的更新實作方式可正確處理特定檔案的尋找行為和檔案結尾指示。
  • 修正 chown 驗證邏輯。

測試

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

  • 改善 fxtest 工具,包括在輸出目錄路徑中支援 $FUCHSIA_OUT 等變數 (與舊版 fx test 的行為相符)、在執行後列印失敗的測試,以及解決重播中的部分輸出問題。新的 --timestamp-artifacts 標記可避免覆寫先前的測試輸出內容。
  • python_mobly_test 中推出 honeydew_config,用於整合 Honeydew 設定資訊,簡化新增設定的程序。
  • 在 Lacewing 測試中新增對 ssh_keepalive_timeout FFX 設定的支援。
  • 改善設定檔合併功能。在目標上合併已展開的設定檔計數器,在二進位設定檔相關模式中啟用合併功能。
  • 修正 libconcurrent 的 WellDefinedCopy 協助程式中可能導致隨機測試失敗的對齊問題。

計時

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

工具

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

  • 新增支援功能,可在模擬器中新增 vsock 裝置,並透過序列控制台和基本啟動功能,新增有限的 crosvm 引擎後端支援。
  • 推出了 crosvm 目標,可用於在自動化中執行測試,並提取常見的模擬器目標,用於程式碼共用。

ffx

以下是 ffx 的更新內容:

  • 新增 ffx package archive edit 指令,用於重新命名套件。
  • 改善 ffx component route,納入跑者。
  • 改善 ffx target 指令的輸出內容和錯誤處理機制,包括修正 IPv6 格式、target echo 的機器輸出內容、預設 target test 問題,以及無 daemon 重新連線。
  • 改善 ffx repository server 的獨立功能:
    • 已更新為使用正確的存放區名稱與產品套裝組合。
    • 新增目標裝置驗證功能。
    • 修正產品套裝組合伺服器註冊問題。
    • 更新 ffx repository server 指令,使其具備冪等性。
    • ffx repository server stop 新增 --product--bundle 選項。
    • 變更:fxr/1125912fxr/1133672fxr/1128280fxr/1129857
  • 已從 ffx config set 中移除層級選項。
  • 新增對 ffx emu start 中 vsock 裝置的支援。
  • 更新 ffx target repository 指令,使其具備冪等性。
  • 更新 ffx target repository list 裝置端清單設定。
  • 更新 ffx target repository deregister 以更新裝置端設定。
  • 已將 --all 新增至 ffx repository remove
  • 修正 ffx target register 中產品套件的存放區名稱用法。

fx

以下是 fx 的更新內容:

  • 新增 fx build-profile 指令,可在建構期間依條件收集系統分析資料。

UI

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

  • 為預設視窗管理員引進螢幕保護程式通訊協定。
  • 已為 fuchsia.input.*fuchsia.ui.* FIDL 程式庫啟用版本管理功能。修正先前不正確的 @available 註解。
  • 改善輸入處理:從輸入管道將裝置 ID 傳遞至 UI 用戶端,並在輸入輔助程式中實作裝置 ID,並搭配相關的 CTF 測試。
  • 改善 UI 測試:在測試基礎類別中使用 logging_event_loop,以改善逾時偵錯功能,並更新虛擬鍵盤測試,以便使用新的 C++ FIDL 繫結。在 starnix-touch-test 中,為等待信號新增有限的逾時時間和記錄。

WLAN

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

  • 在較低層級作業中加入逾時機制,改善 WLAN 用戶端和存取點作業的可靠性。這項功能會根據逾時時間新增逾時時間和復原步驟,解決較低層級的掛起問題,進而提升整體穩定性。
  • 修正單元測試依附元件在 fuchsia-async 排序方面的問題。
  • 重構緩衝區處理機制,並改善編碼功能。重構 bufferBufferStrategy 實作項目、整合 DeltaZigzagSimple8bRleRingBufferDeltaSimple8bRleRingBuffer,並新增對未壓縮緩衝區的支援。u64 的預設編碼現在為 Simple8bRle
  • 實作事件反應器組合器,並強化 TimeMatrix 處理功能。實作事件反應器組合器,並新增 MockTimeMatrix 以供測試。修正跳過間隔計算、Tick::start_has_sample 錯誤和不必要的 TimeMatrix 伺服器未來終止問題。將 TimeMatrix 輸出為資料規格,以便使用更完善的工具。