Google 的 Dart 团队发布了 Dart SDK 的第4 个里程碑版本(即M4)。之前的里程碑版本中Dart 语言已经稳定下来,而M4 版本使一些核心类库稳定了下来,特别是dart:core、dart:collection 和dart:async。性能也有所改进。DartVM 负责原生运行Dart 代码,相对于Chrome 中的JavaScript 引擎 v8 ,它的速度提高在 160%(DeltaBlue 基准测试)到 200%(Richards 基准测试)之间。该版本也带来了速度更快的 dart2js 编译器,我们之前也做过报道。
该版本中的 API 变更总结如下:
- Iterable.join 中的分隔符参数默认值由 null 改为""。
- 所有的 DateTime 常量都改为非缩写形式,DAYS_IN_WEEK 改为 DAYS_PER_WEEK。
- 移除了以下弃用的类和方法:
- CollectionSink
- Stream.pipeInto
- Iterable/Stream.max/min
- Collection(List、Set 和 Queue 现在直接继承 Iterable)
- Datetime.</<=/>/>=
- IOSink.writeStream(重命名为 IOSink.addStream)
- IOSink.writeBytes(重命名为 IOSink.add)
- StreamSink(重命名为 EventSink)
- 引入了不需要初始值的 Iterable.reduce Stream.reduce。
- 重构了 List 的 range 相关函数:
- List.getRange 接收一个 endIndex 参数,返回 Iterable
- List.setRange 接收一个 endIndex 参数和一个 iterable 参数(还添加了一个可选的 skipCount 参数)
- List.removeRange 接收一个 endIndex 参数
- 移除了 List.insertRange
- 添加了 List.replaceRange
- 添加了 List.fillRange
- 添加了 List.setAll(不严格地讲,这也算一个 range 函数)
- Stream.hasSubscribers 重命名为 Stream.hasListener
- 移除了 async:EventSinkView。
- 移除了 AsyncError 类。
- 移除了 StreamController.broadcast。
- dart:html 中 Web Worker 相关的大部分 API 都已移除,同时设计了更合适的 API。Worker 类仍然保留,用于派生 Javascript worker。
- InvocationMirror 重命名为 Invocation。
- Function.apply 将 Symbol 用作具名参数。
- dart:mirror 现在用 Symbol 代替了 String,来表示名字。
API 变化频繁,这是目前使用 Dart 进行开发所面临的主要挑战之一,因为用户需要紧盯着邮件列表中的破坏性更改。Dart 团队准备在今年夏天发布1.0 版本,可能还会加入破坏性更改。一旦到了1.0 版本,API 就不会这么频繁地变化了。随着夏天的临近,这种变化的数目有望减少。
Dart SDK M4 可以从 Dart 的网站下载,支持 Windows、Linux 和 Mac。
评论