2025上半年,最新 AI实践都在这!20+ 应用案例,任听一场议题就值回票价 了解详情
写点什么

Kotlin 2.0 跟随全新的更快、更灵活的 K2 编译器一起发布

  • 2024-06-24
    北京
  • 本文字数:1294 字

    阅读完需:约 4 分钟

Kotlin 2.0 跟随全新的更快、更灵活的 K2 编译器一起发布

JetBrains 发布了 Kotlin 2.0 以及全新的 K2 编译器。虽然该语言本身没有引入新的语法,但 K2 编译器带来了一些优势,包括更快的构建、具有智能强制类型转换的扩展语言功能,以及开箱即用的多平台支持。


该版本引入了 K2 编译器,统一了 Kotlin 支持的所有平台,因为所有编译器后端现在都共享了大量的逻辑和统一的管道。这使我们能够为所有平台一次性地实现大多数特性、优化和缺陷修复,从而大幅提高了新语言特性的开发速度。


K2 目前支持四种后端:JVM、JavaScript、Wasm 和 native。通过用同一个编译器来瞄准所有平台的好处之一是,可以通过定义多平台库分发的新格式 来轻松支持多平台库的开发,这将使得 通过任何主机创建通用的 Kotlin 库 成为了可能。


此外,正如 Michail Zarečenskij 在 Kotlin 2024 大会上的 Kotlin 2.0 演讲中 所解释的那样,多平台支持是零散的,这使得对不同平台的支持很难维护和发展。


在性能方面,K2 显著加快了实际项目的编译时间。JetBrains 表示,K2 的编译速度平均提高了一倍,有些项目编译速度更快了,而有些项目则编译速度则比之更慢了。加速主要与初始化阶段和分析阶段的改进有关,初始化阶段的速度提高了 488%,分析阶段的速度提高了 376%。


除了性能和多平台支持之外,切换到新编译器的另一个关键原因是让语言在解释开发人员的代码意图时更加智能。


这是通过使前端中间表示(Frontend Intermediate Representation,FIR)支持早期的脱糖(desugaring)来实现的,因此编译器有更多的机会分析代码;实现了跨导入、注解和类型的分阶段分析方法,这为集成 IDE 和编译器插件带来了更多机会;以及引入了一种新的控制流引擎,该引擎在类型推断和解析方面有所改进。新的控制流引擎有助于检测异常代码、缺陷和其他潜在问题,从而有助于提高语言的安全性。


由于这些变化带来的语言表达性的改进,Kotlin 2.0 现在能更好地支持运算符和数字转换的组合。例如,语句 longList[0] += 1 现在是被允许使用的,并且也可以与可为 null 的值以及可选的取消引用运算符 ? 结合使用。


Zarečenskij 说,控制流是当今开发人员的主要任务之一。这就是为什么 JetBrains 专注于扩展语言(语法)的功能来检查数据和描述条件,从而提高可读性和消除嵌套层的原因。此外,他说,智能强制类型转换可以减少认知负荷,因为你不需要学习新的结构。


例如,Kotlin 2.0 将在局部变量上传播智能强制类型转换,如下例所示:



fun petAnimal(animal: Any) { if (animal is Cat) { animal.purr() }}
复制代码


同样,智能强制类型转换将被传播,以保存有关可空性(nullability)、 is 检查、  as 强制类型转换和契约的状态。


当 Kotlin 2.0 应用新的智能强制类型转换时,另一种情况是将闭包内捕获的变量作为读 / 写。


Kotlin 将继续增强其控制流引擎,添加无需绑定的模式匹配、上下文敏感的解析、支持更智能强制类型转换的通用 ADT、效果系统等功能。


这些新功能中的很多都在 Kotlin 2.1 或 2.2 的语言路线图中。由于篇幅原因,本文并为涵盖所有新发布的功能,因此不要错过 Kotlin 2024 大会上的演讲,以了解更多详细信息。


原文链接:


https://www.infoq.com/news/2024/05/kotlin-2-k2-compiler/


2024-06-24 10:066392

评论

发布
暂无评论
发现更多内容

Docker Swarm从部署到基本操作

爱好编程进阶

Java 程序员 后端开发

13W字!2021最新发布互联网大厂高频面试技术点!

爱好编程进阶

Java 程序员 后端开发

卫剑钒:《大教堂与集市》被过誉了吗?

腾源会

开源 腾源会

字节跳动构建Data Catalog数据目录系统的实践

字节跳动数据平台

数据库 字节跳动 数据治理 数据目录

18 张图,一文了解 8 种常见的数据结构

爱好编程进阶

Java 程序员 后端开发

2021最新Java学习路线,自学者的福利

爱好编程进阶

Java 程序员 后端开发

20 数据存储服务器集群的伸缩性设计

爱好编程进阶

Java 程序员 后端开发

微信小程序开发系列 (四) :微信小程序的页面跳转路由设计

汪子熙

微信小程序 微信 前端开发 微信开发 4月月更

聊聊Kotlin中的lambda

北洋

kotlin Andriod 4月月更

中国全球GPU市场竞争格局分析

Finovy Cloud

人工智能 gpu 云服务器

DockerFile的编写构建镜像步骤,常用命令和案例

爱好编程进阶

Java 程序员 后端开发

Docker下Prometheus和Grafana三部曲之三:自定义监控项开发和配置

爱好编程进阶

Java 程序员 后端开发

Spark SQL 字段血缘在 vivo 互联网的实践

vivo互联网技术

大数据 spark Sparksql 数据处理

2021最新分享Java面试题库万字精华 github上标星80

爱好编程进阶

Java 程序员 后端开发

基于语义感知SBST的API场景测试智能生成

华为云开发者联盟

测试 语义感知 SBST 动态修正 ODG图

想从单体架构演进到分布式架构,SBA 会是一个不错的选择

华为云开发者联盟

架构 微服务架构 分布式架构 单体架构 SBA

大规模并行分布式深度学习

阿里云大数据AI技术

人工智能 深度学习 并行分布式训练

ThinkPHP6+swoole+easywechat使用教程

CRMEB

大数据培训Spark SQL底层执行流程

@零度

Sparksql 大数据开发

20年最新金九银十面试必备,教你一份文档吊打面试官,拿到offer

爱好编程进阶

Java 程序员 后端开发

@RequestParam、@ModelAttribute、

爱好编程进阶

Java 程序员 后端开发

BS-XX-007基于JSP实现户籍管理系统

爱好编程进阶

Java 程序员 后端开发

CXF webservice之手动启动服务方法(restful )

爱好编程进阶

Java 程序员 后端开发

Dubbo如何处理业务异常,这个一定要知道哦!

爱好编程进阶

Java 程序员 后端开发

《Mybatis 手撸专栏》第6章:数据源池化技术实现

小傅哥

Java 面试 小傅哥 mybatis 源码学习

企业文档协作如何进行?

小炮

文档协同

2021最新一次Java面试,快手三面一轮游,如今已拿意向书

爱好编程进阶

Java 程序员 后端开发

dubbo实战之二:与SpringBoot集成

爱好编程进阶

Java 程序员 后端开发

一种很爽的学习方法,被我Get到了!

博文视点Broadview

小平邦彦:树懒style的世界一流数学家

图灵教育

数学 数学史 数学家

28岁程序身价过亿,从字节提前“退休

爱好编程进阶

Java 程序员 后端开发

Kotlin 2.0 跟随全新的更快、更灵活的 K2 编译器一起发布_编程语言_Sergio De Simone_InfoQ精选文章