日期:2025 年 1 月 21 日
版本:F24
我們已實施下列變更:
無障礙設定
- 改善無障礙功能:記錄螢幕閱讀器狀態的變更。
- 變更:fxr/1113299
音訊
- 更新
audio_listener
,以修正使用驗證錯誤,並解決 clang-tidy 問題。- 異動:fxr/1130266
- 更新
audio_device_registry
服務,以便新增電源狀態變更的檢查記錄。- 變更:fxr/1112852
- 已更新
aml-g12-tdm
驅動程式庫,預設會關閉音訊硬體,直到第一個用戶端出現為止。- 變更:fxr/1130235
藍牙
我們已對藍牙進行下列更新:
- 新增
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-host
和bt-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_code
和event_code
限制為 2^31 - 1,以免超過 Java int 容量,並在cobaltb.py
中解決 Linter 警告。 - 已將 build-test 指令新增至 cobaltb.py。
- 變更:fxr/1119934
- 利用 FatLTO 加快測試建構速度。
- 異動:fxr/1112379
- 錯誤:fxb/364615885
- 已還原並測試目前的管道擷取邏輯。
- 變更:fxr/1123916
- 將探針測試規格更新為 Nelson。
- 變更:fxr/1127235
- 從 Fuchsia 報表設定檔中移除 ARCH/OS。
- 變更:fxr/1132712
- 修正了 cobalt 登錄檔的錯誤。
- 變更:fxr/1137742
元件架構
我們已為元件架構進行下列更新:
- 新增一般服務仲介,並為 component_manager 中的內建元件建立更具延展性的架構。此架構包含新的
BuiltinProgram
類型、針對內建和非內建元件的 ABI 對齊,以及 elf_runner 的重構。 - 改善元件管理工具的穩定性,並解決測試不穩定的問題。包括增加測試中的逾時時間、取代已淘汰的
fuchsia_fs
呼叫,以及修正錯誤記錄中的錯字。 - 改善記錄和事件處理功能。klog 訊息中的換行符號現已分割為個別項目,修正了 UTF8 恐慌錯誤。啟動時間現在會在事件標頭中設定,以便更準確地計算事件時間。
- 在 session_manager 中將最後一個必填 #ui 路徑設為選填,啟用無 UI 產品,並新增
fuchsia.ui.composition
。 - 利用 FatLTO 加快測試建構速度。
- 變更:fxr/1113157
- 錯誤:fxb/364615885
診斷
我們已對「診斷」功能進行以下更新:
- 改善記錄訊息處理方式。移除對傳入結構化訊息和標準化訊息表示法的雙重剖析,以提高效率並減少分配。從記錄鍵/值組合中移除 ANSI 顏色代碼。
- 已遷移至不含單調時間的啟動時間。Archivist、檢查和記錄工具使用的是啟動時間,而非單調時間。
- 簡化設定。將與檔案管理員相關的
bootstrap.cml
項目移至區段,方便修改。- 變更:fxr/1130562
- 在 SDK 中新增 C++ 偏好記錄器。這可讓您在 SDK 中啟用元件的記錄功能,而無需整合自訂記錄器。
- 變更:fxr/1116573
- 更新取樣器設定,接受萬用字元。這可讓您為駕駛員和其他人編寫選取器。
- 變更:fxr/1125782
- 已更新
ffx log
工具,以便接受 --set-severity 而非 --select- 變更:fxr/1119912
- 處理設定中的初始興趣。管道組合選項,用於設定元件的初始記錄嚴重性。
- 變更:fxr/1116492
- 錯誤:fxb/362335642
- 改善工作處理方式。引入
DebuggedJob
抽象概念,並將其用於RootJob
,簡化工作附件和例外狀況監控。為提升一致性,我們已將例外記錄擷取作業移至Exception
物件。 - 新增整數格式設定。允許在
print
和locals
指令中,對整數進行持續的格式設定。- 變更:fxr/1127152
- 錯誤:fxb/369778038
- 改善
step_plt
測試。移除step_plt
e2e 測試中不必要的依附元件。- 變更:fxr/1131213
- 錯誤:fxb/371395750
- 改善分析支援功能。新增測試叫用者的支援,並更新 Mali 的檢查選取器,以改善剖析功能。
- 更新時間戳記格式將時間戳記變更為 RFC-0260 中定義的啟動時間戳記。
- 變更:fxr/1132853
- 簡化設定並改善時間處理方式。移除了 eng-only 設定資料目標和
low_memory
設定,並將對zx_clock_get_monotonic
的直接呼叫替換為較高層級的抽象項目。 - 改進偵錯功能。連線至裝置時,會以
ffx log
的格式列印世界標準時間,以便將啟動時間對應至任何時間。- 變更:fxr/1136300
- 改善 ffx 記錄中的重新啟動偵測功能。使用隨機的每次開機整數,而非世界標準時間,以便更可靠地偵測重新啟動。
- 變更:fxr/1128476
螢幕
我們已對多媒體廣告進行以下更新:
- 顯示器驅動程式庫堆疊正在遷移至新型 Fuchsia 平台基礎架構,例如 DFv2 和 FIDL。
驅動程式架構
我們已對 Driver Framework 進行下列更新:
- 在驅動程式庫執行階段中新增對驅動程式庫程式伺服器的支援,包括
DriverServer
和Driver
特徵,並解決記憶體管理問題,以及新增跨執行緒管道的行為測試。 - 改善 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
中移除依附元件符記。共用 FIDLFakeElementControl
可供電源架構使用。sdk_*
DDK 不再使用建構範本。fdf::testing
現在支援 Open3。系統會重新比對失敗的駕駛人。 - 更新 sysinfo,以便為平台匯流排使用服務,而非 devfs。
- 變更:fxr/1134586
FIDL
我們已對 FIDL 進行以下更新:
- 在 C++ 和 Rust FIDL 繫結中,改善了對啟動時刻、時間類型和非同步接收的處理方式。這包括使用
zx::basic_time
和fuchsia_zircon
型別的單調性和啟動時刻的型別安全支援、在 C++ 繫結中新增zx::basic_time
的轉換特徵、支援在 Rust 和 C++ FIDL 繫結中編碼及解碼{Boot,Monotonic}Instant
和zx::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
)。- 變更:fxr/1104435
- 已將
SynchronousProxy::is_closed
新增至 zx Rust FIDL 繫結。- 變更:fxr/1122252
- 將
fuchsia.device.manager
FIDL 重新命名為fuchsia.system.state
。- 變更:fxr/1115616
GPU
我們已針對 GPU 進行下列更新:
- 更新 MSD ARM Mali 電源測試,以便使用假暫停功能來提升相容性。
- 變更:fxr/1132514
- 在基礎架構中啟用 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
伺服器,讓儲存空間驅動程式可與電源拓撲圖整合。新增 thwait_for_suspending_token
設定標記,以便控制 SAG 的依附元件權杖處理作業,並提供更彈性的系統電源狀態管理功能。 - 透過強化的追蹤和檢查功能,改善電源觀測能力。新增電源元素追蹤事件,用於擷取租用要求、電源仲介器中的層級轉換,以及用戶端 Daemon 互動。將檢查記錄緩衝區大小提高至 8192 個事件,並將 VMO 提高至 2 MB,藉此減少在多次電源事件後發生資料遺失的情況。
- 已將電源感應器的列舉新增至
fuchsia.sensors.types
。這會將POWER
列舉引進SensorTypes
,讓您能整合 Fuchsia 感應器架構。- 變更:fxr/1127884
- 將假電池驅動程式庫遷移至平台 AIB,並將其新增至 x64 平台。
- 變更:fxr/1127555
荒漠油廠
我們已對 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。
- 變更:fxr/1132274
- 在啟動檔案系統中使用 Rust 二進位檔的動態連結。
- 變更:fxr/1135732
- 錯誤:fxb/42163719
- 為所有 Rust 目標類型新增
.rustdoc
子目標 (dylib + cdylib 除外)。- 變更:fxr/1097685
- 新增對
rustc_cdylib
loadable_module 的支援。- 變更:fxr/1126633
- 錯誤:fxb/364901670
SDK
我們已對 SDK 進行以下更新:
- 改善 Bazel 動作效能,並修正多項錯誤。包括使用 genquery 來最佳化 depfile 產生作業 (可節省約 0.5 到 1 秒)、結合 cquery 叫用 (可節省 1.2 到 1.5 秒)、修正
fuchsia_product_configuration
的相對路徑、解決 minfofuchsia_board_configuration()
錯誤、修正 Bazel 組合圖片驗證,以及修正開放字型目標。
軟體推送
我們已針對軟體提交機制進行以下更新:
- 支援升級套件的功能已強化。這包括新增垃圾收集保護機制,讓 base-resolver 可與 base 套件一併解析,並引入
SetUpgradableUrls
API 進行更新 (實作受標記限制)。 - 在載入快取套件時清除變化版本資訊,提升一致性。
- 變更:fxr/1126056
- 改善 bootpkg 公用程式,並縮減二進位檔大小。這包括移除非同步作業、縮小二進位大小,以及新增 CLI 工具來查看啟動包及其內容 (
list
和show
子指令)。 - 改善套件管理程式碼,並明確說明 OTA 進度回報功能。這包括重構套件伺服器執行個體以使用
RepositorySpec
、移除重複的列舉定義以提升可維護性,以及在 CLI OTA 工具中新增有關進度回報行為的附註。 - 為 vim3 主機板新增功能,以便將 xHCI 驅動程式庫從 BIB 遷移至 AIB。
- 異動:fxr/1115581
Starnix
我們已為 Starnix 進行下列更新:
- 在 Starnix 中新增了對暫停和恢復容器的支援,包括追蹤 Linux 喚醒鎖定、將作業委派給 Starnix 執行元件,以及取得/釋出喚醒租約。
- 新增觸控和按鈕事件支援功能,以及
EPOLLWAKEUP
,以喚醒已暫停的容器。刪除 epoll 例項時,系統會正確刪除 epoll 喚醒鎖定。 - 修正與暫停/繼續期間的計時器管理和信號清除相關的競爭狀況。
- 更新 hrtimer,以便使用代理管道喚醒容器。
- 變更:fxr/1117712
- 新增對
CLONE_NEWUTS
標記和 FUSE BPF 程式載入的支援。 - 新增了以
binder.fidl
通訊協定為基礎的 Unix 網域通訊端實作項目,可在 Starnix 中的 Fuchsia 和 Linux 程式之間啟用程序間通訊和檔案描述元傳遞功能。- 變更:fxr/1129552
- 為
io_uring
實作io_uring_setup
和基本讀取/寫入作業,讓io_uring01
測試通過。 - 為缺少的 futex 指令實作虛設常式。
- 變更:fxr/1104457
- 新增
/proc/sys/kernel/cap_last_cap
檔案。- 變更:fxr/1121419
- 修正安全性屬性的存取權檢查,並解決 BPF 檔案系統安全性標籤未正確設定的問題。
- 更新了套接字中可接受的佇列大小限制。
- 變更:fxr/1123852
- SELinux 狀態檔案的更新實作方式可正確處理特定檔案的尋找行為和檔案結尾指示。
- 變更:fxr/1116496
- 修正
chown
驗證邏輯。- 變更:fxr/1126033
測試
我們已為測試功能進行以下更新:
- 改善
fxtest
工具,包括在輸出目錄路徑中支援$FUCHSIA_OUT
等變數 (與舊版fx test
的行為相符)、在執行後列印失敗的測試,以及解決重播中的部分輸出問題。新的--timestamp-artifacts
標記可避免覆寫先前的測試輸出內容。 - 在
python_mobly_test
中推出honeydew_config
,用於整合 Honeydew 設定資訊,簡化新增設定的程序。- 變更:fxr/1118514
- 在 Lacewing 測試中新增對
ssh_keepalive_timeout
FFX 設定的支援。- 變更:fxr/1124685
- 改善設定檔合併功能。在目標上合併已展開的設定檔計數器,在二進位設定檔相關模式中啟用合併功能。
- 變更:fxr/1123292
- 錯誤:fxb/358195464
- 修正
libconcurrent
的 WellDefinedCopy 協助程式中可能導致隨機測試失敗的對齊問題。- 變更:fxr/1113315
計時
我們已對打卡系統進行以下更新:
- 改善假時鐘測試:解決假時鐘測試中的不穩定問題。
- 時間相關 FIDL 程式庫的版本:已將
@available(added=HEAD)
新增至時間相關 FIDL 程式庫。
工具
我們已對工具進行下列更新:
- 新增支援功能,可在模擬器中新增 vsock 裝置,並透過序列控制台和基本啟動功能,新增有限的 crosvm 引擎後端支援。
- 推出了 crosvm 目標,可用於在自動化中執行測試,並提取常見的模擬器目標,用於程式碼共用。
ffx
以下是 ffx
的更新內容:
- 新增
ffx package archive edit
指令,用於重新命名套件。- 變更:fxr/1092172
- 改善
ffx component route
,納入跑者。- 變更:fxr/1134975
- 錯誤:fxb/367461258
- 改善
ffx target
指令的輸出內容和錯誤處理機制,包括修正 IPv6 格式、target echo
的機器輸出內容、預設target test
問題,以及無 daemon 重新連線。 - 改善
ffx repository server
的獨立功能:- 已更新為使用正確的存放區名稱與產品套裝組合。
- 新增目標裝置驗證功能。
- 修正產品套裝組合伺服器註冊問題。
- 更新
ffx repository server
指令,使其具備冪等性。 - 為
ffx repository server stop
新增--product--bundle
選項。 - 變更:fxr/1125912、fxr/1133672、fxr/1128280、fxr/1129857
- 已從
ffx config set
中移除層級選項。- 變更:fxr/1129875
- 新增對
ffx emu start
中 vsock 裝置的支援。- 變更:fxr/1115916
- 更新
ffx target repository
指令,使其具備冪等性。 - 更新
ffx target repository list
裝置端清單設定。- 變更:fxr/1110088
- 更新
ffx target repository deregister
以更新裝置端設定。- 變更:fxr/1121571
- 已將
--all
新增至ffx repository remove
。- 異動:fxr/1121995
- 修正
ffx target register
中產品套件的存放區名稱用法。- 變更:fxr/1133672
fx
以下是 fx
的更新內容:
- 新增
fx build-profile
指令,可在建構期間依條件收集系統分析資料。- 變更:fxr/1131308
UI
我們已針對 UI 進行以下更新:
- 為預設視窗管理員引進螢幕保護程式通訊協定。
- 變更:fxr/1109278
- 已為
fuchsia.input.*
和fuchsia.ui.*
FIDL 程式庫啟用版本管理功能。修正先前不正確的@available
註解。 - 改善輸入處理:從輸入管道將裝置 ID 傳遞至 UI 用戶端,並在輸入輔助程式中實作裝置 ID,並搭配相關的 CTF 測試。
- 改善 UI 測試:在測試基礎類別中使用
logging_event_loop
,以改善逾時偵錯功能,並更新虛擬鍵盤測試,以便使用新的 C++ FIDL 繫結。在 starnix-touch-test 中,為等待信號新增有限的逾時時間和記錄。
WLAN
我們已對 WLAN 進行以下更新:
- 在較低層級作業中加入逾時機制,改善 WLAN 用戶端和存取點作業的可靠性。這項功能會根據逾時時間新增逾時時間和復原步驟,解決較低層級的掛起問題,進而提升整體穩定性。
- 修正單元測試依附元件在 fuchsia-async 排序方面的問題。
- 變更:fxr/1130268
- 重構緩衝區處理機制,並改善編碼功能。重構
buffer
和BufferStrategy
實作項目、整合DeltaZigzagSimple8bRleRingBuffer
和DeltaSimple8bRleRingBuffer
,並新增對未壓縮緩衝區的支援。u64
的預設編碼現在為Simple8bRle
。 - 實作事件反應器組合器,並強化 TimeMatrix 處理功能。實作事件反應器組合器,並新增
MockTimeMatrix
以供測試。修正跳過間隔計算、Tick::start_has_sample
錯誤和不必要的TimeMatrix
伺服器未來終止問題。將TimeMatrix
輸出為資料規格,以便使用更完善的工具。