预览Dart迄今为止最高效、便携且易于使用的版本。现在可用于早期测试和实验。
去年12月,我们通过第一篇讨论Dart3的博文让我们瞥见了未来。今天——在肯尼亚内罗毕举行的FlutterForward开发者活动现场直播——我们分享了Dart下一个主要版本的更广阔愿景,以及我们的第一个预览构建,Dart3alpha。
我们对Dart的使命是创建最好的编程语言,用于在任何应用程序平台上构建高质量的应用程序。Dart平易近人,简单易学,避免了不必要的复杂性,并且内部一致。Dart是高效的;应用程序开发人员始终面临着要求不断变化的应用程序的压力,他们需要在更短的时间内交付具有毫不妥协的质量和完成度的应用程序。因此,我们构建Dart的重点是实现快速开发、快速迭代和高质量。而且Dart是可移植的,跨越最广泛的平台集,使您能够将应用程序部署到今天和明天的设备上。
多年来,我们一直致力于建立这些品质。对于Dart3,我们打算迈出又一大步,以重要的方式改进和扩展可访问性、生产力和可移植性。
Dart3是一个新的主要版本。部分是为了表示新功能向前迈出了一大步,部分是因为它在语义版本控制方面是一个突破性的版本:我们正在更改类型系统以仅支持健全的空安全(在Dart2.12和更高版本中这是可选的),并在Dart的核心库中进行了相应的重大更改。让我们深入了解细节!
Dart3生产力增强
更具表现力的Dart语言:记录、模式和访问控制
在过去的几年里,我们快速发展了Dart语言,自2.0以来增加了23项新功能。在Dart3中,我们希望添加两个新的主要功能,记录和模式,目的是提高结构化数据的处理效率。
记录允许您从任何现有数据高效简洁地创建匿名复合值,而无需声明一个类来保存这些值的概念开销。有了记录,您可以轻松构建新的数据结构来组合现有数据。例如,要返回一对值:
在记录允许您组合数据的地方,模式可以将复合数据分解为其组成部分。例如,要将geoLocation上面的返回值(由一对整数组成的记录)解构为两个单独的int变量,lat和long,您可以使用这样的模式声明:
模式是完全类型安全的,并在开发过程中进行检查。
您还可以对值的类型进行模式匹配,例如来自类的层次结构。Aswitch可以使用匹配类型的模式,以及每种类型的各个字段,如此处的正文calculateArea所示:
总的来说,我们正在添加大量可供选择的模式,将这些模式组合在一起后,可以使Dart对结构化数据更具表现力。
结合模式,我们还通过几个新的修饰符向类添加功能控制:
interfaceclass:无法扩展。baseclass:禁用隐式接口,因此无法实现。finalclass:不能在类中扩展、实现或混合(在当前库之外)。sealedclass:与abstract+final+类型相同,该类型被认为是用于穷举检查的密封类型族的根。Shape以上面的类层次结构为例。在Shape类型的switch语句中(如calculateArea函数),如果switch语句未处理密封类型的所有可能子类型,则分析器将触发错误。mixinclass:一个可以用作mixin的类。
每一个新特性都增加了语言的复杂性。为了确保Dart保持平易近人,类默认情况下是完全宽松的,就像今天一样,除了一个小例外,即打算用作mixins的类现在必须使用mixin关键字。
通过直接平台库互操作进行高效的平台集成
我们正在努力扩展Dart语言的互操作性,以便直接从Dart调用平台库。在Apple平台上,我们正在为C互操作性构建我们的FFI工作,它支持从Dart调用任何遵循C调用约定的C模块。到目前为止,它已经支持C、Go和Rust等语言。现在,我们在iOS/macOS上添加了对Swift和Objective-C的支持。在Android上,您可以利用FFI和Android的Java本机接口(JNI)调用以Kotlin编写的Jetpack库和以Java编写的Android库。
在新工具的支持下,Dart可以根据原始C/ObjC/Swift/Java/Kotlin代码的头文件/接口文件,自动创建具有Dart接口的绑定以及那些跨语言互操作代码背后的绑定。有关使用它调用Apple的CoreMotionAPI和Android的HealthConnectAPI的演示,请查看示例应用程序。
这些新的互操作机制目前处于试验阶段,但我们希望它们至少能在Dart3.0稳定版中达到beta质量。欢迎在Java/Kotlin或C/ObjectiveC/Swift的问题跟踪器中提供反馈。最后,我们还致力于改进Dart与JavaScript的互操作;我们将在以后的博文中发布更多相关消息。
便携性进步
Dart已经通过我们的本地和网络编译器支持广泛的目标平台。在Web上,我们目前编译为JavaScript。在本机设备上,我们目前支持Intel32位和64位以及ARM32位和64位架构。我们正在努力增加对许多新兴设备和标准的支持,以确保Dart为未来的设备做好准备。
对于网络,我们正在努力支持WebAssembly(Wasm),它作为一种平台中立的二进制指令格式在所有现代浏览器中都在不断成熟。我们希望Wasm能够使Dart网络应用程序的启动速度与本机设备上的应用程序一样快。
另一个越来越受到
转载请注明:http://www.0431gb208.com/sjslczl/4568.html