0%

【文章翻譯】Announcing Dart 2.10

【文章內容使用 Gemini 1.5 Pro 自動翻譯產生】

宣佈 Dart 2.10

一個新的、統一的 dart 工具,適用於所有核心任務。此外,還更新了空安全時間表和遷移原則。

作者: Michael ThomsenKevin Moore

今天,我們宣佈推出 Dart 的新版本 2.10(_二點一零_)。此版本具有一個新的、統一的 Dart 開發工具:一個滿足所有開發人員需求的單一工具,例如建立專案、分析和格式化程式碼、執行測試以及編譯應用程式。我們還更新了空安全路線圖和時間表,並討論了將現有程式碼遷移到空安全的原則。

一個新的、統一的 Dart 開發工具

Dart 構成了 Flutter SDK 的基礎:它不僅提供了支援 Flutter 應用程式的語言和執行時環境,還支援許多核心開發人員任務,例如格式化、分析和測試程式碼。然而,雖然 Flutter 有一個單一的、通用的開發人員工具(flutter 命令),但 Dart 歷來有許多較小的開發人員工具(例如,dartfmt 和 dartanalyzer)。Dart 2.10 有一個新的、統一的 dart 開發工具,它與 flutter 工具非常相似。這個新工具支援所有常見任務,例如建立新專案和套件;分析和格式化程式碼;以及執行、編譯和測試專案。要使用該工具,只需執行 dart 命令:

透過執行 dart help 了解 2.10 dart 工具。

Flutter 在 Flutter SDK 中包含了這個新的 Dart 工具。從今天的 Flutter 1.22 SDK 開始,/bin 目錄(您可能在 PATH 中有此目錄)包含 flutter 和 dart 命令。如果您同時進行 Flutter 和通用 Dart 開發,則可以從單個 Flutter SDK 中獲得兩種開發人員體驗,而無需安裝任何其他東西。

注意:如果您想要下載並安裝第二個 Dart SDK(可能是因為您需要不同的版本),請確保您想要預設使用的 dart 工具的 SDK 位於 PATH 環境變數的開頭。

在即將發佈的穩定版本中,我們計劃在此 dart 工具中加入更多功能,並逐步棄用較小的工具(dartdoc、dartfmt、dartanalyzer 等)。明年,我們預計將發佈僅包含單個 dart 工具的 Dart SDK。我們建議您現在執行 Dart 命令時切換到新工具,無論是在終端機中手動執行還是透過持續整合(_CI_)指令碼執行,如果缺少任何功能或功能未按預期工作,請向我們提供回饋

展望空安全

自從幾個月前我們推出第一個技術預覽版以來,我們對空安全產生了濃厚的興趣。我們都期待空安全作為一種避免難以發現的空錯誤的工具,此外,我們還期望看到聲音空安全帶來的效能提升。如果您渴望了解更多資訊,我們推薦您閱讀我們新的理解空安全頁面。如果您更喜歡觀看短片,請查看幾個月前 Flutter Day 活動 中的空安全影片

空安全何時可以使用?以下是目前的時間表:

  1. Flutter 使用 技術預覽版 2 進行實驗:我們已成功遷移 Flutter 的大部分內容。很快——可能在下個月內——我們預計將遷移完整的 Flutter 架構,從而準備好與 Flutter 一起啟用實驗性使用。您將能夠在 Flutter 範例中嘗試空安全,並對您的 Flutter 應用程式和套件進行試驗性遷移。您將需要傳遞一個實驗標誌,不應在生產環境中使用它,也不應發佈任何已遷移的套件。
  2. 使用 測試版 進行早期套件遷移:今年晚些時候,我們將完成效能調整,並擁有足夠的測試覆蓋率,讓我們確信該功能能夠按預期工作,並且向後相容性是可靠的。屆時,我們將發佈該功能的測試版,您將不需要傳遞實驗標誌。我們希望看到套件所有者開始將他們的套件遷移到空安全,並進行最後一輪驗證,以確保該功能已準備好發佈穩定版。
  3. 使用 穩定版 進行生產環境使用:根據測試版發佈的回饋,我們將修復任何剩餘問題,然後發佈到穩定版。很難說明具體的時間表,但我們認為是在明年年初。一旦該功能穩定下來,我們希望看到空安全得到廣泛採用,將空安全應用程式發佈到應用程式商店,並在 pub.dev 上發佈許多穩定版本的空安全套件。

遷移到空安全的原則

我們想分享我們指導空安全遷移的原則。

準備好後再採用

空安全是 Dart 類型系統的根本性變革。它改變了變數宣告的基礎,因為我們決定預設將變數設為不可為空:

1
2
無空安全                      有空安全
String s; // 一個 String 或 null。 String s; // 一個 String,不可為 null。

如果我們堅持強制採用,如此根本性的變革將會極具破壞性。我們希望讓 決定何時是合適的時機,因此空安全是一個可選功能:您將能夠使用最新的 Dart 和 Flutter 版本,而無需在準備好之前強制啟用空安全。您甚至可以依賴尚未啟用空安全的應用程式或套件中已啟用空安全的套件。

按順序逐步採用

我們強烈建議按順序遷移程式碼,首先遷移依賴圖的葉子。例如,如果 C 依賴於 B,而 B 依賴於 A,則首先將 A 遷移到空安全,然後是 B,然後是 C。此順序適用於 A、B 和 C 是程式庫、套件還是應用程式。

為什麼順序很重要?儘管您可以在依賴項遷移之前在遷移程式碼方面取得一些進展,但如果您的依賴項在其遷移期間更改其 API,則您可能會冒險進行第二次遷移。我們將提供工具來幫助您找出哪些依賴項已遷移。如果您是套件作者,為了避免破壞 API 的風險,請等到所有依賴項都已遷移後再發佈空安全版本。

使用自動化工具來降低遷移成本

當您的依賴項準備就緒並且您選擇進行遷移時,您可以使用我們的遷移工具。該工具透過分析所有現有程式碼來工作,尋找哪些宣告可以不可為空(保持不變),哪些必須可為空(需要在宣告上加上 ? 空值標記)。

遷移工具是互動式的,因此您可以檢查該工具推斷出的空值屬性。如果您不同意該工具的任何結論,您可以加入空值提示來更改推論。例如,即使需要一些重構,如果您想要使 API 不可為空,您可以告知該工具並重新執行遷移分析。加入一些遷移提示可以對遷移品質產生巨大影響。

充分利用才能獲得全部收益

一旦 所有 程式碼——以及它所依賴的套件——都已遷移,您的程式碼就可以在 聲音 空安全的情況下執行。在此之前,您的程式碼將繼續像今天一樣執行和編譯,但完全聲音的空安全可以啟用完整的執行時驗證和編譯器優化。使用聲音空安全執行測試可幫助您避免執行時空斷言的問題,使用聲音空安全編譯應用程式可確保您獲得目前和未來的優化,例如更小的編譯輸出和更快的執行速度。

後續步驟

新的 dart 開發人員工具現已在 Dart 2.10 SDK 和 Flutter 1.22 SDK 中提供。如果您已經擁有 Flutter SDK,只需執行 flutter upgrade 即可獲得帶有 dart 命令的 Dart SDK;這將為您提供嵌入 Dart 2.10 的 Flutter 1.22 SDK。我們建議您立即切換到新的 dart 工具,如果缺少任何功能或功能未按預期工作,請向我們提供回饋

我們很快就會有更多關於空安全的新聞——很可能在下個月內,我們預計 Flutter 團隊的朋友們將會有一個啟用空安全的 Flutter 架構,準備用於實驗。請密切關注 Flutter 部落格 以獲取更新。同時,您可以使用 DartPad with Null Safety 嘗試使用空安全的 Dart 程式碼,並透過閱讀我們的空值安全文件來了解更多關於功能設計的資訊。


宣佈 Dart 2.10 最初發佈在 Medium 上的 Dart 中,人們在那裡透過突出顯示和回應這個故事來繼續討論。