FIDL 專案檢查清單

變更 FIDL 通常會產生大量的下游效果。本文件提供變更 FIDL 時需考慮之項目的檢查清單。請注意,檢查清單中的元素不一定每次都會套用於每項變更,但至少應讓開發人員再次檢查變更是否已完成。

fidlc 編譯器的變更

這份檢查清單適用於會影響 FIDL 本身的變更,例如語法或語意變更。

  • 更新規格。
  • 更新相關工具。
    • FIDL 格式器/Linter 及其相關聯的 Tree 訪客。
    • fidldoc 工具:針對產生的說明文件應該反映的語言變更,例如新的資料類型或修飾符。
    • 編輯器和語法醒目顯示。
  • 更新 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 的變更

fidlgen_<lang> 個後端的變更

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 解決。

水平測試規定

新增涵蓋率至: