文 / Michael Thomsen, Dart 产品经理

Dart 2.16 正式发布

Dart 2.16 正式版已于上周发布。尽管没有新的语言特性加入,但本次版本发布包含了数个问题修复 (包括对安全漏洞的修复),发布 Dart package 的时候也可以指定支持的平台,pub.dev 网站也更新了全新的搜索界面。

Flutter 2.10 一同发布的 Dart 2.16,仍然在将旧的命令行工具迁移到新的 dart 命令行工具。这个版本中,dartdocdartanalyzer 已被弃用,分别对应新的命令是 dart docdart analyzedartdocdartanalyzerpub 这三个命令计划在 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 现在可以设置 authroizationwww-authenticatecookiecookie2这些请求头信息。在 Dart 2.16 之前,SDK 中重定向逻辑的实现有一个漏洞,当跨域重定向发生时,这些请求头 (可能包含敏感信息) 会被发送,在 Dart 2.16 中这些请求头已被移除,你可以阅读 CVE-2022–0451 了解更多细节。
  • dart:io中的 Directory.rename API 调整了在 Windows 平台上的行为:与目标名称一致的目录不会被删除 (issue #47653)。
  • 在 Dart 1.x 中遗留的 Platform.packageRootIsolate.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 现已发布的更多相关文章

  1. Dart 2.15 现已发布

    作者 / Michael Thomsen, Dart & Flutter Product Manager, Google 我们已经正式发布了 Dart SDK 的 2.15 版本,该版本新增了 ...

  2. Dart 2.13 版现已发布

    作者 / Kevin Moore & Michael Thomsen Dart 2.13 版现已发布,其中新增了类型别名功能,这是目前用户呼声第二高的语言功能.Dart 2.13 还改进了 D ...

  3. Fuel4D 2.1 免费跨平台游戏引擎 现已发布

    Fuel4D 2.1 免费跨平台游戏引擎 现已发布 开发环境:纯 C/C++,无JAVA.O-C. 支持 WIN32.安卓 系统. 详情见官方网站:http://www.fuel4d.com 或者进F ...

  4. Microsoft Message Analyzer (微软消息分析器,“网络抓包工具 - Network Monitor”的替代品)官方正式版现已发布

    Microsoft Message Analyzer (微软消息分析器,“网络抓包工具 - Network Monitor”的替代品)官方正式版现已发布 来自官方日志的喜悦 被誉为全新开始的消息分析器 ...

  5. Tapdata 的 2.0 版 ,开源的 Live Data Platform 现已发布

    https://www.bilibili.com/video/BV1tT411g7PA/?aid=470724972&cid=766317673&page=1 点击上方链接,一分钟快速 ...

  6. XD to Flutter 2.0 现已发布!

    Flutter 是 Google 的开源 UI 工具包.利用它,只需一套代码库,就能开发出适合移动设备.桌面设备.嵌入式设备以及 web 等多个平台的精美应用.过去几年,对于想要打造多平台应用的开发者 ...

  7. SmartIDE v0.1.16 已经发布 - 支持阿里&蚂蚁开源的国产 IDE OpenSumi

    SmartIDE v0.1.16 (Build 3137) 已经在2022年4月19日发布到稳定版通道,我们在这个版本中增加了阿里和蚂蚁发布的国产IDE OpenSumi的支持,以及其他一些改进.Sm ...

  8. 支持国内版Office 365的PowerShell模块现已发布

    作者:陈希章 发表于2017年5月12日 上一篇文章我详细介绍了如何在PowerShell中访问到Office 365的Graph API,在文章结尾处我留了一个问题,希望有朋友可以根据那个思路,尝试 ...

  9. Flutter 2.2 现已发布!

    在本次 Google I/O 2021 大会 上,我们正式发布了 Flutter 2.2.Flutter 2.2 是我们最新版的开源工具包,可让开发者立足单个平台构建适合任何设备的精美应用.Flutt ...

随机推荐

  1. 教学日志:javaSE-循环语句

    一.while循环和do...while循环 /* while循环:先判断条件,再执行逻辑代码 四部分组成: 1.初始化:循环的初始化变量 2.条件判断:条件返回必须是true或false 3.循环体 ...

  2. react hooks 如何自定义组件(react函数组件的封装)

    前言 这里写一下如何封装可复用组件.首先技术栈 react hooks + props-type + jsx封装纯函数组件.类组件和typeScript在这不做讨论,大家别白跑一趟. 接下来会说一下封 ...

  3. HDU 6608:Fansblog(威尔逊定理)

    Fansblog Time Limit: 2000/2000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) Total Subm ...

  4. Python Revisited Day 08 (高级程序设计技术)

    目录 8.1 过程型程序设计进阶 8.1.1 使用字典进行分支 8.1.2 生成器表达式与函数 8.1.3 动态代码执行与动态导入 动态程序设计与内省函数(表) 动态代码执行 eval(), exec ...

  5. 一文搞懂Google Navigation Component

    一文搞懂Google Navigation Component 应用中的页面跳转是一个常规任务, Google官方提供的解决方案是Android Jetpack的Navigation componen ...

  6. Java实习生常规技术面试题每日十题Java基础(五)

    目录 1.启动一个线程是用run()还是start()? . 2.线程的基本状态以及状态之间的关系. 3.Set和List的区别,List和Map的区别? 4.同步方法.同步代码块区别? 5.描述Ja ...

  7. Parallel.ForEach 之 MaxDegreeOfParallelism

    参考:Max Degree of Parallelism最大并行度配置 结论: 与设置的线程数有关 有设置的并行度有关 测试如下: @@@code System.Threading.ThreadPoo ...

  8. Python项目生成requirements.txt文件及pip升级问题解决及流程

    缘由:新项目使用Python, PC上的python包不全,需要通过requirements.txt文件指定安装所需包 pip安装遇到一些坑 一.直接使用pip包管理工具生成requirements. ...

  9. 分享一款开源堡垒机-jumpserver

    本文主文章地址为:https://blog.csdn.net/KH_FC JumpServer是由FIT2CLOUD(飞致远)公司旗下一款开源的堡垒机,这款也是全球首款开源的堡垒机,使用 GNU GP ...

  10. nuxt 相关

    https://github.com/xuqiang521/nuxt-ssr-demo https://www.cnblogs.com/laozhang-is-phi/p/10249248.html ...