Dart 3.2 发布
Dart 3.2 现已发布。该版本针对以下方面做出了改进:新增了一项语言功能,可对私有 final 字段进行非空升级;通过新增的互操作功能改善了开发者体验;支持 DevTools 的扩展程序;并更新了 Web 路线图,包括提供对 Wasm (又名 WebAssembly) 的支持。
私有 final 字段的非空升级
自 Dart 2.12 中引入健全的空安全 (sound null safety) 以来已过去几年时间。Dart 3.2 中改进了流程分析引擎,以便够对私有 final 字段实施类型升级。
可以这样理解:对于私有 final 字段,它的值在初始分配后永不更改,因此仅检查一次也是安全的。私有 final 字段升级从 Dart 3.2 起推出,并将应用于配置3.2 及以上版本 Dart SDK 的项目。
在 package:lints 3.0 中加入新的代码分析选项
针对代码分析,还对 package:lints 中的标准代码分析规则进行了一些改进。package 包含默认和推荐的静态分析规则集,适用于任何根据 dart create 或 flutter create (通过 package:flutter_lints — package:lints 的扩展) 创建的新项目。
lint 集新的主要版本 (版本 3.0) 现已推出。项目团队在此修订版的核心集中添加了六个 lint,在推荐集中添加了两个 lint,可用于验证 pubspec URL,以及验证是否使用正确的参数调用集合方法等。
Dart 互操作性更新
从 Dart 3.2 开始,对原生互操作进行了许多改进:
-
为 C FFI 引入了NativeCallable.isolateLocal构造函数,它可以根据任意 Dart 函数创建 C 函数指针。这是一项由Pointer.fromFunction提供的扩展功能,只能根据顶级函数创建函数指针。
-
更新了 Objective-C 绑定生成器,以使用在 Dart 3.1 中添加的NativeCallable.listener。该生成器现在可以自动处理包含异步回调的 API,例如Core Motion这类此前需要手动编写部分绑定代码的 API。
-
为实现 Java 和 Kotlin 互操作而持续改进package:jnigen。现在能够将package:cronet_http(适用于 Android 的 Cronet HTTP 客户端的封装容器) 从手写的绑定代码迁移到自动生成的封装容器。
-
在Native Assets功能方面取得了重大进展,该功能旨在解决与依赖原生代码的 Dart package 分发相关的许多问题。Native Assets 提供统一的钩子来集成构建 Flutter 和独立 Dart 应用所涉及的各种构建系统,从而解决相关问题。您可以查看相关文档获取预览。
适用于 Dart package 的 DevTools 扩展程序
Dart DevTools 是一套用于支持纯 Dart 和 Flutter 应用的调试及性能工具。项目团队在 Dart 3.2 和 Flutter 3.16 中推出了新的扩展框架,让 package 作者能够直接在 DevTools 中为其 package 构建自定义工具。
因此,包含框架的 pub.dev package 能够提供特定于其用例的自定义工具。“例如,Serverpod 的作者一直在努力为其 package 构建 DevTools,并且很高兴在即将发布的 1.2 版本中提供 DevTools 扩展程序。”
Dart Web 和 Wasm 更新
项目团队正在将高级托管语言 (如 Dart) 的垃圾回收功能添加到 Wasm 标准中。
Dart-to-Wasm 编译器几乎配备所有功能。“我们对性能和兼容性非常满意,正在进一步关注边缘情况,以确保在各种场景中实现畅快运行。”
对于 Flutter Web 则完成了一个新的 "Skwasm" 渲染引擎开发。为了最大限度提高性能,Skwasm 通过 wasm-to-wasm 绑定,将编译后的应用代码直接连接到自定义 CanvasKit Wasm 模块。这是 Flutter Web 多线程渲染支持的首次迭代,进一步提高了帧时间。
在采用 Wasm 的 Flutter Web 准备结束目前的实验状态之前,他们还计划:
-
双重编译:生成 Wasm 和 JavaScript 输出,并在运行时启用功能检测,以支持具备或不具备 Wasm-GC 支持的浏览器。
-
现代 JavaScript 互操作性:一种新的基于扩展类型的 JS 互操作机制,当针对 JavaScript 和 Wasm 时,可以在 Dart 代码、浏览器 API 和 JS 库之间实现简洁的、类型安全的调用。
-
支持 Wasm 的浏览器 API:新的 package:web,基于现代 JS 互操作机制,取代了 dart:html (及相关库),借此可轻松访问浏览器 API,并且支持在 JS 和 Wasm 目标上使用。
目前,其正在开始将大量的内部项目迁移到 package:web 和新的 JS 互操作机制,并希望在下一个稳定版本中向用户提供更多更新。

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
【店滴云】重体验,再升级,助力民宿老板线上转型
【店滴云】重体验,再升级,助力民宿老板线上转型 1、升级优化后台,采用顶部到左侧关联导航 2、升级小程序配置,增加分享全局设置 3、后台页面进一步封装,简化配置 /** * @Author: Wang chunsheng email:2192138785@qq.com * @Date: 2023-12-03 22:04:47 * @Last Modified by: Wang chunsheng email:2192138785@qq.com * @Last Modified time: 2023-12-15 09:23:30 */ export const form = { 'blocs': { 'type': 'cascader-store', 'label': '选择公司' }, 'id': { 'type': 'number', 'label': 'ID' }, 'place_type_id': { 'type': 'number', 'label': '业务类型' }, 'title': { 'type': 'input', 'label': '房型名称' ...
- 下一篇
Deno 1.39:WebGPU 回归
Deno的1.39版本发布标志着该平台的一个重要更新,其中包含多项引人注目的改进和新特性。 WebGPU的回归 Deno 1.39重新引入了WebGPU API的支持,这一决定标志着对于高性能、跨架构的GPU编程在JavaScript中的重要进展。WebGPU API,被视为WebGL的有效继承者,为开发者提供了一种低级别、高性能的方式来直接编程GPU硬件。此规范已被最终确定,并且已经在Chrome浏览器中提供。Firefox和Safari也正在进行相关支持的开发工作。 Deno最初在2021年初引入了WebGPU的支持,但由于性能问题,这一特性在今年早些时候被移除。现在,这些性能问题已经得到解决,重新引入了WebGPU。GPU在执行某些数值运算方面,相比于CPU,能够提供极高的并行处理能力。这一点不仅在渲染和游戏中非常有用,也在诸如机器学习算法这样的应用中展现出极高的效率,因为这些算法通常可以被表达为一系列矩阵运算,而这些运算可以在GPU上高效执行。 Deno中的WebGPU实现基于即将在Firefox中推出的WebGPU实现的同一底层系统,因此,开发者可以有信心地在这一基础上构建应...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- CentOS8编译安装MySQL8.0.19
- CentOS6,CentOS7官方镜像安装Oracle11G
- CentOS7,8上快速安装Gitea,搭建Git服务器
- SpringBoot2整合Thymeleaf,官方推荐html解决方案
- MySQL8.0.19开启GTID主从同步CentOS8
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- Red5直播服务器,属于Java语言的直播服务器
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7