【文章內容使用 Gemini 1.5 Pro 自動翻譯產生】
Dart 2.16:改進的工具和平台處理
今天,Dart SDK 2.16 版本正式推出。它沒有新的語言功能,但包含許多錯誤修復(包括一個安全漏洞的修復)、改進了對指定 Dart 套件支援平台的支援,以及全新的 pub.dev 搜尋體驗。
Dart 2.16
今天與 Flutter 2.10 一起推出的 Dart 2.16 SDK 繼續從傳統的 Dart CLI 工具(dartfmt、dartdoc 等)過渡到新的組合式 dart 開發者工具。新棄用的工具是 dartdoc
(使用 dart doc
)和 dartanalyzer
(使用 dart analyze
)。在 Dart 2.17 中,我們計劃完全移除 dartdoc
、dartanalyzer
和 pub
命令(在 Dart 2.15 中已棄用;使用 dart pub
或 flutter pub
)。有關詳細資訊,請參閱 issue #46100。
2.16 版本還包括一個安全漏洞的修復和兩個小的重大變更:
dart:io
中的HttpClient
API 允許您為授權、www-authenticate
、cookie
和cookie2
設定選用標頭。在 Dart 2.16 之前的 SDK 中,重定向邏輯的實作存在一個漏洞,即當發生跨域重定向時,這些標頭(可能包含敏感資訊)會被傳遞。在 Dart 2.16 中,這些標頭會被丟棄。有關詳細資訊,請參閱 CVE-2022-0451。dart:io
中的Directory.rename
API 在 Windows 上的行為已變更:它不再刪除與目標名稱匹配的現有目錄(issue #47653)。Platform.packageRoot
和Isolate.packageRoot
API(它們是 Dart 1.x 的遺留物,在 Dart 2.x 中不起作用)已被移除(issue #47769)。
若要查找有關 Dart 2.16 中變更的更多詳細資訊,請參閱 變更日誌。
新增對宣告 pub.dev 套件平台支援的支援
Dart 的設計旨在實現可移植性,我們努力讓程式碼能夠在最多的平台上運行。但是,有時您可能會在 pub.dev 上建立和分享僅針對一個或幾個平台設計的套件。您可能有一個套件依賴於僅在特定作業系統上可用的 API,或者一個套件使用僅在原生平台上支援且在網頁上不支援的函式庫,例如 dart:ffi
。
透過 Dart 2.16,您現在可以在套件的 pubspec
中手動宣告支援的平台集。例如,如果您的套件僅支援 Windows 和 macOS,則其 pubspec.yaml
檔案可能如下所示:
1 | name: mypackage |
新的 platforms
標籤適用於您正在開發 Dart 套件,並且您想要宣告對與 pub.dev 自動偵測到的平台集不同的平台集的支援的情況。如果您正在開發和分享包含主機特定程式碼(例如,Kotlin 或 Swift)的 Flutter Plugin,則 Flutter Plugin 標籤 通常會指定支援的平台。
全新的 pub.dev 搜尋 UI
為了回應開發人員的要求,我們為在 pub.dev 上搜尋套件建立了更好的支援。今天推出的變更的主要目標是幫助您識別和搜尋支援的平台集。以下是全新搜尋體驗的視圖:
新的搜尋 UI 在左側有一個搜尋過濾器側邊欄,您可以使用它來限制您的套件搜尋:
- 平台: 選擇一個或多個平台,將搜尋結果縮小到僅支援所有選定平台的套件。
- SDK: 選擇 Dart 或 Flutter,將結果限制為分別支援 Dart SDK 或 Flutter SDK 的套件。
- 進階: 其他搜尋選項,例如過濾到 Flutter Favorite 套件。
空安全更新
自從我們上次談論空安全(一年前在 Dart 2.12 中推出的主要語言新增功能)以來,已經發佈了幾個版本。我們對 Dart 生態系統遷移套件以支援空安全的速度感到驚訝:截至今天,前 250 個套件中的 100% 以及前 1000 個套件中的 96% 都支援空安全!感謝所有為這一偉大成就做出貢獻的套件作者。
我們也看到應用程式遷移到健全的空安全(應用程式程式碼和所有套件依賴項都已遷移的狀態)方面取得了良好進展。根據我們的分析,Flutter 工具中的所有運行會話中有 71% 現在具有完全健全的空安全。如果您是應用程式開發人員並且尚未遷移,那麼現在是絕佳時機。
結語
我們希望您覺得新的 pub.dev 搜尋 UI 很有用,並且我們歡迎您提供任何 回饋。敬請期待下一個 Dart SDK 版本,計劃於 2022 年第二季度發佈。我們正在開發幾個 令人興奮的語言功能,我們希望在今年晚些時候發佈。
Dart 2.16:改進的工具和平台處理 最初發佈在 Dart 上的 Medium,人們在那裡透過突出顯示和回應這個故事來繼續討論。