文 / Michael Thomsen, Dart 产品经理
Dart 2.16 正式公布
Dart 2.16 正式版已于上周公布。只管没有新的语言个性退出,但本次版本公布蕴含了数个问题修复 (包含对安全漏洞的修复),公布 Dart package 的时候也能够指定反对的平台,pub.dev 网站也更新了全新的搜寻界面。
与 Flutter 2.10 一起公布的 Dart 2.16,依然在将旧的命令行工具迁徙到新的 dart 命令行工具。这个版本中,dartdoc
和 dartanalyzer
已被弃用,别离对应新的命令是 dart doc
和 dart analyze
。dartdoc
、dartanalyzer
和 pub
这三个命令打算在 Dart 2.17 中彻底移除。
历史命令 | 代替的 dart 命令 | 弃用版本 | 停用版本 |
---|---|---|---|
stagehand | dart create | 2.14 | 2.14 |
dartfmt | dart format | 2.14 | 2.15 |
dart2native | dart compile exe | 2.14 | 2.15 |
dart2js | dart compile js | 2.17 | 2.18 |
dartdevc | none | 2.17 | 2.18 |
dartanalyzer | dart analyze | 2.16 | 2.17 |
package:analyzer_cli | dart analyze | 2.16 | 2.17 |
dartdoc | dart doc | 2.16 | 2.17 |
pub | dart pub | 2.15 | 2.17 |
查看所有打算弃用的命令的更多阐明,请参考 Dart SDK 仓库的 Issue #46100。
Dart 2.16 也蕴含了一个安全漏洞的修复,以及两个破坏性改变:
dart:io
中的 HttpClient API 当初能够设置authroization
、www-authenticate
、cookie
和cookie2
这些申请头信息。在 Dart 2.16 之前,SDK 中重定向逻辑的实现有一个破绽,当跨域重定向产生时,这些申请头 (可能蕴含敏感信息) 会被发送,在 Dart 2.16 中这些申请头已被移除,你能够浏览 CVE-2022–0451 理解更多细节。dart:io
中的Directory.rename
API 调整了在 Windows 平台上的行为:与指标名称统一的目录不会被删除 (issue #47653)。- 在 Dart 1.x 中遗留的
Platform.packageRoot
和Isolate.packageRoot
已被移除 (issue #47769),它们在 Dart 2.x 中不起作用。
想要理解更多对于 Dart 2.16 的改变,能够查阅 更新日志。
在 pub.dev 上申明 package 反对的平台
Dart 的设计思维蕴含了可移植性,因而咱们会尽量让代码可能在更多平台上运行。然而,开发者们偶然可能会在 pub.dev 上创立或分享仅为一个或几个平台设计的 package。你可能有一个依赖于特定操作系统上 API 的 package,或者它应用了像 dart:ffi
这类只能在 native 平台而不能在 Web 平台上应用的库等。
在 Dart 2.16 版本中,你能够在 pubspec 手动申明 package 反对的平台。例如,如果你的 package 只反对 Windows 和 macOS,那么就能够在 pubspec.yaml
这样申明:
name: mypackage
version: 1.0.0
platforms:
windows:
macos:
dependencies:
当你正在开发一个 Dart package,而它反对的平台与 pub.dev 自动识别的不同时,能够在新的 platforms
标签处手动申明。如果你正在开发和分享蕴含特定平台代码的 Flutter 插件 (例如,Kotlin 或 Swift),Flutter plugin 标签 能够指定反对的平台。
pub.dev 新的搜寻体验
响应开发者的申请,咱们对于在 pub.dev 上的搜寻提供了更好的反对。此次更改的次要目标是帮忙你辨别和搜寻反对的平台。以下是新的搜寻界面预览:
新的搜寻界面在左侧有一个搜寻筛选栏,你能够用它限度搜寻范畴:
- Platforms (平台): 抉择一个或多个平台,搜寻后果仅会蕴含反对所选平台的 package;
- SDKs: 抉择 Dart 或 Flutter 将后果限度为反对 Dart SDK 或 Flutter SDK 的 package;
- Advanced (高级选项): 额定的搜寻选项,例如筛选出被标记为 Flutter Favorite 的 packages。
空平安停顿
从一年前咱们在 Dart 2.12 中正式公布了健全的空平安开始,社区以及 Dart 生态向空平安迁徙的速度令人震撼:截止到上周,排名前 250 的 package 曾经 100% 反对了空平安,排名前 1000 的 pacakge 也曾经有 96% 的比例反对了空平安!谢谢所有为空平安奉献的 package 作者们!
利用迁徙到空平安的迁徙进度也非常乐观,这里指利用以及其所有的依赖都反对空平安。依据咱们的统计,71% 的 Flutter tool 都运行在健全的空平安模式下了,如果你还没有开始,当初曾经能够口头啦!
行将到来的内容
咱们心愿 pub.dev 的搜寻界面更新对你有帮忙,同时欢送随时 提出反馈。2022 年二季度咱们打算公布下一个 Dart SDK 版本,并且,咱们还在跟进一些 令人兴奋的语言个性,心愿能在往年晚些时候公布。
致谢
- 原文: Dart 2.16: Improved tooling and platform handling
- 链接: https://medium.com/dartlang/dart-2-16-improved-tooling-and-platform-handling-dd87abd6bad1
- 翻译 / 审校: CFUG 团队 Alex、加康、迷鹿
- 制图: Lynn