Dart 3.3 发布:扩展类型、JavaScript Interop 等
Dart 3.3 现已发布,公告称此版本改变了性能和跨平台开发的游戏规则。
增强的扩展类型(Extension Types)将彻底改变性能优化以及用户与本地代码的交互方式。JavaScript interop 模型也得到了改进,引入了强大的类型安全性和开发人员友好的方式来利用 Web 平台的强大功能。“所有这些都为WebAssembly支持铺平了道路”。此外,新版本还增加了 Google AI 功能。
扩展类型
扩展类型引入了类型的零成本 wrappers,使用它们可以优化对性能敏感的代码,尤其是在与 host 平台交互时,扩展类型提供了具有特定成员自定义类型的便利性,同时消除了典型的 wrappers 分配开销。
extension type Wrapper(int i) { void showValue() { print('my value is $i'); } } void main() { final wrapper = Wrapper(42); wrapper.showValue(); // Prints 'my value is 42' }
以上示例实现了一个 Wrapper
扩展类型,但将其用作普通的 Dart 类型,在实际使用里,开发者可以实例化它并调用函数。主要区别在于 Dart 将其编译为普通 Dart int
类型,扩展类型允许创建具有唯一的成员类型,而无需分配典型 wrappers 类型的间接成本。因此,虽然 extension members 功能(Dart 2.7 开始)允许向现有类型添加函数和属性,但扩展类型功能也可以执行相同的操作,并且还允许定义隐藏底层表示的新 API。
这对于与 host 平台的交互特别有用。可以直接使用 Native types,无需创建 wrappers 和相关的间接成本,同时还能提供简洁的 Dart API。有关扩展类型的更多信息,可参阅新文档。
不断发展的 JavaScript Interop
Dart 3.3 引入了一种与 JavaScript 库和 Web 互操作的新模型。它从一组用于与 JavaScript 交互的新 API 开始:dart:js_interop 库。现在,Dart 开发人员可以访问 typed API 来与 JavaScript 交互。该 API 通过静态强制明确定义了两种语言之间的边界。这在编译之前消除了一整类问题。除了用于访问 JavaScript 代码的新 API 之外,Dart 现在还包含一个新模型,用于使用扩展类型在 Dart 中表示 JavaScript 类型。
import 'dart:js_interop'; /// Represents the `console` browser API. extension type MyConsole(JSObject _) implements JSObject { external void log(JSAny? value); external void debug(JSAny? value); external void info(JSAny? value); external void warn(JSAny? value); }
基于 extension types 的语法比 extension members 允许更多的表达和健全性。这简化了 Dart 中 JavaScript API 的利用。了解更多信息,可参阅有关 JS interop 的新文档。
改进 browser libraries
从 1.0 版本开始,Dart SDK 就包含了一套全面的 browser libraries。其中包括核心 dart:html 库以及 SVG、WebGL 等库。
改进的 JavaScript interop 模型提供了重新构想这些库的机会。未来 browser libraries 支持将集中在 package:web 上。这简化了版本控制、加速了更新并与 MDN 资源保持一致。
且这一系列的改进导将推动:将 Dart 编译为 WebAssembly。
开启 WebAssembly 的未来
Dart 3.3 为 WebAssembly 的 Web 应用奠定基础,虽然 Flutter Web 中的 WebAssembly 支持仍处于试验阶段,但团队正在努力稳定实现。
要使用 WebAssembly 在 Web 上运行 Flutter 应用,需要使用新的 JavaScript Interop 机制和 package:web
,旧版 JavaScript 和 browser libraries 保持不变,并支持编译为 JavaScript 代码。但是,编译为 WebAssembly 需要迁移。详情可查看迁移指南。
Google AI Dart SDK
谷歌发布了 Google AI Dart SDK 测试版。用户可以将生成式 AI 功能构建到 Dart 或 Flutter 应用程序中。这些应用程序使用了谷歌最新的 AI 模型系列 Gemini。可查看软件包 google_generative_ai。
更多详情可查看官方博客。
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
JavaMelody v2.1.0 发布,Java 应用监控平台
JavaMelody 是一个监控系统,目标是在 QA 和生产环境中监控Java 或 Java EE 应用程序。JavaMelody v2.1.0 现已发布,主要更新内容包括: 修复对 activation-api 的依赖不能有范围编译(2c9dfaa) 修复#1180JBoss/WildFly 上的 Infinispan 二级缓存导致 MBeans 视图中出现 OutOfMemoryError (6a7838f) 使用 HttpSessionIdListener#sessionIdChanged 改进 http 会话管理的某些情况(149a62d) 下载: 可参阅发行说明 v2.1.0和用户指南以进行安装。 如果你使用 Maven,在你的 webapp 的 pom.xml 中添加依赖项: <dependency> <groupId>net.bull.javamelody</groupId> <artifactId>javamelody-core</artifactId> <version>2.1.0<...
- 下一篇
Zilliz Cloud 再发新版本:性能提升超 10 倍,AI 应用开发流程再简化!
Zilliz Cloud 再发新版本! 本次新版本的主要内容包括:大幅提升的向量搜索性能(性能提升 10 倍以上)、企业级数据安全和无缝数据集成。新版本发布后,用户无需自定义代码,便可快速顺畅地完成非结构化数据处理和索引。此外,Zilliz Cloud 将有效帮助用户节省成本,简化支付和采购流程。 以下为本次发布的新特性一览: Cardinal 搜索引擎 Zilliz Cloud 正式升级至 Milvus 2.3 版本 基于角色的访问控制和权限管理(RBAC) Databricks Connector 支持 Google Cloud Marketplace 订阅 其他数据安全方面更新 01. Cardinal 搜索引擎:搜索速度提升 10 倍,数据容量提升 50% Cardinal 是用现代 C++ 语言和实用的近似最近邻搜索(ANNS)算法构建的多线程、高效率向量搜索引擎。它同时能够处理暴搜请求和 ANNS 索引修改请求;处理各种数据格式,包括 FP32、FP16 和 BF16。Cardinal 搜索引擎强调速度和效率,能够在有限的资源内处理更多用户请求。 在推动 Cardinal ...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS7安装Docker,走上虚拟化容器引擎之路
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- Windows10,CentOS7,CentOS8安装Nodejs环境
- Linux系统CentOS6、CentOS7手动修改IP地址
- SpringBoot2整合Thymeleaf,官方推荐html解决方案
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- CentOS7,8上快速安装Gitea,搭建Git服务器
- CentOS8编译安装MySQL8.0.19
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装