出品|开源中国
文|局长
Dart 2.12 已于昨日发布,此版本带来了稳定的空类型安全声明 (sound null safety) 和 Dart FFI。空类型安全声明可帮助开发者避免 null 错误——这类错误往往很难被发现。FFI (Foreign Function Interface) 是一种互操作性机制,开发者可通过它调用使用 C 语言编写的现成代码,例如调用 Windows Win32 API。
空类型安全声明 (sound null safety) 是自 Dart 2.0 引入声明类型系统 (sound type system) 以来,对 Dart 语言最大的补充。空类型安全 (null safety) 进一步增强了类型系统,让开发者在开发阶段即可捕获 null 错误,从而防止在生产环境出现崩溃,毕竟 null 错误是导致应用崩溃的常见原因。
Dart 的空类型安全支持基于三条核心原则:
默认情况下不可为空
逐步采用空类型安全声明
完全空类型安全声明
Dart FFI 让开发者能够利用 C 类库中现成的代码,以实现更好的可移植性,并且通过与高度调整的 C 语言代码集成以执行对性能要求较高的任务。从 Dart 2.12 开始,Dart FFI 已经脱离 beta 阶段,并被认为是稳定功能,可用于生产环境。此外还新增了嵌套结构和按值传递结构。
嵌套结构
C API 通常使用嵌套结构——即本身包含结构体的结构,例如以下示例:
从 Dart 2.12 开始,FFI 也已支持嵌套结构。
按值传递结构
开发者可以在 C 语言代码中按引用和按值传递结构。FFI 以前仅支持按引用传递,但从 Dart 2.12 开始,开发者可以按值传递结构。这是两个同时通过引用传递和值传递的 C 函数的示例: