写点什么

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:067127

评论

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

龙蜥开发者说:一位开源贡献者的国产操作系统“铸魂”历程 | 第 33 期

OpenAnolis小助手

操作系统 龙蜥开发者说

零基础AI编程开发微信小程序赚流量主广告实战

陆通

龙蜥社区成立智算基础设施联盟 汇聚产业力量打造 AI 开源新基座

OpenAnolis小助手

开源 AI 操作系统 龙蜥社区 龙蜥智算基础设施联盟

Dify入门系列(2)| 5 分钟部署 Dify:云服务 vs 本地 Docker

测吧(北京)科技有限公司

人工智能 软件测试 智能体 测试发开 dify

行程信息一眼掌握!铁路12306接入实况窗带来安心出行新体验

HarmonyOS SDK

HarmonyOS NEXT HarmonyOS SDK应用服务

全球社交媒体监控的技术挑战与突破

沃观Wovision

社交媒体 舆情监控 沃观Wovision 舆情监测系统

CST软件2023版新功能介绍2:两个提升效率小技巧

思茂信息

仿真 CST软件 CST Studio Suite

塞讯科技参编,信通院《面向LLM应用的可观测性能力要求》正式发布!

塞讯科技

可观测性 可观测性认证 可观测性平台

测试匠谈 | AI语音合成之大模型性能优化实践

优测云服务平台

测试 语音ai

【新特性】 华为云ModelArts Versatile-AI原生应用引擎新增特性介绍(2025年7月发布)

华为云开发者联盟

基于开发者空间GaussDB云数据库的PLpgSQL实践一

华为云开发者联盟

sql opengauss 华为开发者空间

25年南昌市等保测评机构地址一览表

行云管家

业务多变,流程难定?ManageEngine卓豪灵活工作流支持全场景自定义

ServiceDesk_Plus

全连接贝叶斯神经网络权重后验集中性研究

qife122

贝叶斯神经网络 后验集中

华为云入选Gartner®容器管理魔力象限领导者

华为云原生团队

云计算 容器 云原生

小模型如何击败大机构AI系统:Coral协议技术解析

qife122

人工智能 开源框架

LevelDB 多版本和压缩

数新网络官方账号

CodeBuddy IDE 实用技巧上线,如何让你的 AI 更懂你

六月的雨在InfoQ

CodeBuddy首席试玩官 CodeBuddyIDE AIIDE

在线教育行业需要用到堡垒机吗?为什么?

行云管家

网络安全 在线教育 等保

第七在线7大价值 助力品牌实现智能化供应链决策

第七在线

[鸿蒙征文]Previewer预览器数据模拟

大展红图

HarmonyOS NEXT

使用spaCy和Thinc构建可训练关系抽取组件

qife122

深度学习 关系抽取

JimuReport 积木报表 v2.1.2 版本发布,免费开源的可视化报表和大屏

JEECG低代码

数据可视化 报表 数据大屏 报表工具 仪表盘设计

二级域名解析怎么操作?需要注意哪些事项?

防火墙后吃泡面

压测实战 | 高校选课系统压力测试实战教程

优测云服务平台

压测 高校

Caddy安全插件中的10个安全漏洞分析与修复方案

qife122

网络安全 SSO

6 个替代飞书多维表格的开源无代码数据库工具

NocoBase

数据库 开源 零代码 表格 无代码

特斯拉、智元机器人、宇树科技三重催化,产业链上市公司齐飞!

机器人头条

科技 大模型 人形机器人 具身智能

热更新技术范式跃迁:AI驱动下从效率工具到智能生态中枢的重构

xuyinyin

基于开发者空间GaussDB云数据库的PLpgSQL实践二

华为云开发者联盟

sql opengauss 华为开发者空间

腾讯提前批是真难

王中阳Go

程序员 面试

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