【文章翻譯】Announcing Dart 3.9

【文章內容使用 Gemini 2.5 Flash 自動翻譯產生】

大家好,Dart 開發者們!最新的穩定版本 Dart 3.9 正式發布了!

此版本旨在讓您的工作更輕鬆,您的應用程式更高效。透過對 null 安全的關鍵更新、Dart CLI 的效能提升,以及令人興奮的 Dart 和 Flutter MCP 伺服器的加入,以增強您的 AI 助手,有很多值得喜愛的地方。請繼續閱讀,探索 Dart 3.9 中的所有新功能。

宣布 Dart 3.9

語言更新

Null 安全

Dart 3.9 在計算類型提升、可達性和明確賦值時假設 null 安全。要利用這些改進,請將您的套件的 SDK 限制下限設定為 3.9 或更高(sdk: ^3.9.0)。由於此更改,可能會產生更多 dead_code 警告。

健全性更新

我們修復了一個健全性問題,該問題允許直接調用從 getter 返回的值,而無需任何運行時檢查,當 getter 的返回類型是泛型類型參數實例化為 dynamicFunction 時。此健全性問題出現在 dev-compiler DDC 中,沒有其他工具受到影響。

在修復之前,以下 getter 可能會觸發直接調用問題。例如:

1
2
3
4
5
6
7
8
9
10
// The following getter used to trigger an issue with a direct 
// invocation

// The getter
class Container<T> {
T get value => ((int i) => i.isEven) as T;
}

// The direct invocation
Container<dynamic>().value('Invocation with missing runtime checks!');

工具更新

Dart 和 Flutter MCP 伺服器

Dart 和 Flutter MCP 伺服器 充當橋樑,讓 AI 編碼助手(例如 Gemini CLI、Cursor 和 GitHub Copilot)能夠存取更多 Dart 專案的上下文。您的 AI 助手現在不僅可以建議程式碼,還可以深入理解您的專案並代表您採取行動。

透過 Dart 和 Flutter MCP 伺服器,您可以要求 AI 助手執行以下操作:

Dart 和 Flutter MCP 伺服器現已在 Dart SDK 的穩定頻道上可用。

_修復佈局問題,由 Dart 和 Flutter MCP 伺服器啟用(此錄製部分已加速)_

更快的 Dart CLI

以前,當您運行某些 Dart CLI 命令(如 dart analyzedart fix)時,您的電腦必須在運行之前編譯 分析伺服器 的程式碼。現在,這些工具使用分析伺服器的預先編譯 (AOT) 快照,這表示伺服器已經預先編譯成快速的原生機器碼。

結果因原始碼而異,但我們在一個範例套件上運行了一些常用命令,並獲得了一些有趣的結果。像 dart format 這樣的一些短命令現在只需一小部分時間即可完成,而像 dart analyze 這樣運行時間較長的命令則快了近 50%。

Dart CLI 更新後的效能範例結果

pub 用戶端更新

Git 依賴項 現在可以根據 Git 標籤進行版本解析。

當您在描述符中使用 tag_pattern 並且存在版本約束時,所有符合模式的提交都會在解析期間被考慮。在以下範例中,只考慮 my_dependency 的版本 2.0.1 及更高版本:

1
2
3
4
5
6
dependencies:
my_dependency:
git:
url: https://github.com/example/my_dependency
tag_pattern: v{{version}}
version: ^2.0.1

從語言版本 3.9 開始,根套件中的 flutter 限制上限現在受到尊重(dart 限制已經受到尊重)。設定嚴格的 dartflutter 限制對於確保開發團隊在共同開發應用程式時都使用相同的 SDK 版本非常有用(詳情請參閱 問題 #95472)。

例如,在像這樣的一個根 pubspec 中,如果使用不是 3.33.0 版本的 Flutter SDK 調用 pub get,則會失敗:

1
2
3
4
name: my_app
environment:
sdk: ^3.9.0
flutter: 3.33.0

Dart 原生編譯器

我們新增了對當目標作業系統為 Linux 時,針對 ARM(ARM32)和 RISCV64(RV64GC)目標架構的交叉編譯支援

棄用和重大變更

32 位元 x86 架構

Dart 已棄用 32 位元 x86 架構。對於大多數開發人員來說,這不會產生影響,因為它主要影響較舊的基於 x86 的 Android 模擬器和少數實體設備。32 位元 ARM 和 64 位元 x86_64 模擬器和設備仍然支援。完整的技術分解可在 Dart GitHub 棄用議題 中找到。

dart build

dart build 在 beta 頻道上預覽。

dart build -f exe <target> 現在是 dart build cli --target=<target>。有關更多資訊,請參閱 dart build cli --help

總結

Dart 3.9 的介紹就到這裡!我們希望您和我們一樣對這些更新感到興奮。我們總是感謝您的回饋,因此請隨時分享您的想法。下次再見,編碼愉快!


宣布 Dart 3.9 最初發佈於 Dart 的 Medium,人們在那裡透過強調和回應這個故事來繼續對話。