查看原文
其他

Dart 2.12 发布

局长 FOSS Lab 2022-05-25
点击蓝字默默关注


Dart 2.12 已于昨日发布,此版本带来了稳定的空类型安全声明 (sound null safety) 和 Dart FFI。空类型安全声明可帮助开发者避免 null 错误——这类错误往往很难被发现。FFI (Foreign Function Interface) 是一种互操作性机制,开发者可通过它调用使用 C 语言编写的现成代码,例如调用 Windows Win32 API。

空类型安全声明 (sound null safety)

空类型安全声明 (sound null safety) 是自 Dart 2.0 引入声明类型系统 (sound type system) 以来,对 Dart 语言最大的补充。空类型安全 (null safety) 进一步增强了类型系统,让开发者在开发阶段即可捕获 null 错误,从而防止在生产环境出现崩溃,毕竟 null 错误是导致应用崩溃的常见原因。

Dart 的空类型安全支持基于三条核心原则

  • 默认情况下不可为空

  • 逐步采用空类型安全声明

  • 完全空类型安全声明

Dart FFI,用于将 C 类库与 Dart 集成

Dart FFI 让开发者能够利用 C 类库中现成的代码,以实现更好的可移植性,并且通过与高度调整的 C 语言代码集成以执行对性能要求较高的任务。从 Dart 2.12 开始,Dart FFI 已经脱离 beta 阶段,并被认为是稳定功能,可用于生产环境。此外还新增了嵌套结构和按值传递结构。

嵌套结构

C API 通常使用嵌套结构——即本身包含结构体的结构,例如以下示例:

struct Wheel {
 int spokes;
};
struct Bike {
 struct Wheel front;
 struct Wheel rear;
 int buildYear;
};

从 Dart 2.12 开始,FFI 也已支持嵌套结构。

按值传递结构

开发者可以在 C 语言代码中按引用和按值传递结构。FFI 以前仅支持按引用传递,但从 Dart 2.12 开始,开发者可以按值传递结构。这是两个同时通过引用传递和值传递的 C 函数的示例:

struct Link {  double value;
 Link* next;
};
void MoveByReference(Link* link) {
 link->value = link->value + 10.0;
}
Coord MoveByValue(Link link) {
 link.value = link.value + 10.0;
 return link;
}

发布公告还详细介绍了 FFI 的其他内容,详情查看:https://medium.com/dartlang/announcing-dart-2-12-499a6e689c87



往期推荐

Flutter 2重磅发布!新特性速览

2021-03-04

jQuery 3.6.0发布

2021-03-04

Chrome 89发布,与Chrome OS联动,放弃对旧处理器的支持

2021-03-04


扫码关注最新动态

公众号ID:fosslab

我就知道你“在看”

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存