變更 FIDL 通常會產生大量的下游效果。本文件提供變更 FIDL 時需考慮之項目的檢查清單。請注意,檢查清單中的元素不一定每次都會套用於每項變更,但至少應讓開發人員再次檢查變更是否已完成。
fidlc
編譯器的變更
這份檢查清單適用於會影響 FIDL 本身的變更,例如語法或語意變更。
- 更新規格。
- 更新相關工具。
- 更新 FIDL 檔案。如要更改語法,請更新現有的 FIDL 來源,包括:
- 樹狀結構中的實際 FIDL 來源檔案 (如有需要,可以不在樹狀結構中)。
- 在測試原始碼中以字串形式指定 FIDL 來源,例如編譯器單元測試和 fidlgen 端對端測試。
- 說明文件中的 FIDL 程式碼片段。
- 確保系統能處理與屬性的互動。
- 舉例來說,這項功能是否需要添加新的刊登位置?
- 更新整合測試
- 如果是更大型的語言功能,建議您在現有的整合測試中新增測試涵蓋範圍。例如,透過相容性測試確保跨繫結一致性,或透過來源相容性測試確保轉換性。
- 特別是剖析器變更:
- 更新
span_tests
,確保剖析的 Span 正確無誤,而不只是剖析成功
- 更新
- 原始 AST 變更:
- 確保 AST 的更新會一併套用至原始 AST 樹狀結構訪客及其下游使用者。例如,在節點中新增欄位也許會隨附造訪該新欄位的訪客變更。
- 語意變更:
- 請更新功能專屬的單元測試,例如在修改資料表時更新
table_tests
,或是建立新的測試檔案。
- 請更新功能專屬的單元測試,例如在修改資料表時更新
針對 FIDL 的變更,其會串聯後端以更新所有 Fuchsia FIDL 團隊擁有的繫結,即 Rust、Go、Dart、HLCPP、New C++ (自然和線)。
JSON IR 的變更
- 確保變更確實反映到紅外線金幣的變化。
- 更新 JSON 結構定義。
- 更新所有 JSON 取用器,包括:
fidlgen_<lang>
個後端的變更
- 如果產生的程式碼有所變更,請更新繫結文件。
- 更新繫結教學課程以反映目前的最佳做法和模式。
- 納入在建構中編譯並執行的範例程式碼 (例如 //examples/fidl/go/fidl_packages/fidl_test.go)。
- 更新所有相關指南:
- 如需這項功能的使用指引,請參閱 FIDL API 評分量表。
- 舉例來說,在變更 C++ 線路類型中的記憶體配置 API 時,應更新 C++ 線路網域物件記憶體擁有權指南。
- 我們也發現向 API 委員會介紹 API 是很棒的做法,還能向議會成員解釋如何因不斷演進而審查 API。
- 如果變更繫結 API,請更新 GIDL 後端以使用新版 API。
- 如果變更行為或新增動態功能,請更新用戶端和伺服器動態測試套件。
FIDL 線格式變更
- 更新繫結,支援新的傳輸格式。
- 更新傳輸格式規格,以記錄新的傳輸格式。
- 更新「測距」,支援新傳輸格式的大小計算。
- 更新 fidl-codec 即可支援新傳輸格式的編碼/解碼。
- 更新必須手動編碼/解碼 FIDL 的目標 (下列清單和原因已於 2023 年 2 月審查):
- userboot:第一個使用者空間處理程序,無法使用可變動的資料區隔、無法使用 RELRO,也無法使用執行緒本機儲存空間。缺少 RELRO 會導致全域/靜態變數的初始化器包含非空值指標值,這些變數會規則排除許多程式庫,包括 FIDL 繫結。我們可透過 https://fxbug.dev/42072759 處理這個問題。
- ldmsg:C 程式庫在程序啟動期間用於載入程式庫。因為 sanitizer ABI 規定,它無法使用完善的 FIDL 繫結。我們會透過 https://fxbug.dev/42072830 解決這個問題。
- libc sanitizers/debugdata:消毒器支援資料庫本身無法使用以清理器建構的函式。這個問題將由 https://fxbug.dev/42072760 解決。
水平測試規定
新增涵蓋率至: