K2 编译器将在 Kotlin 2.0 中进入稳定状态
我们一直在为 Kotlin 编译器(代号 K2)开发新的前端。前端是编译器的一部分,负责解析代码和执行语义分析、数据流分析、调用解析和类型推断。这是开发者与编译器交互最多的部分。编译器也通过它在 IDE 中持续运行、报告所有错误和警告消息,帮助完成自动补全、语义感知检查、意图和重构等任务。新前端已经可供预览 – 我们将继续进行完善和稳定工作,计划在未来 Kotlin 版本中将其设为默认编译器前端。我们已经决定将这个未来版本命名为 Kotlin 2.0。下文将详细描述 Kotlin 2.0 版本的路线图、我们的动力以及对它的期望。
Kotlin 2.0 发布路线图是什么?
我们计划再发布一个按照传统方式进行版本控制的版本,Kotlin 1.9,其中还将包括来自 K2 编译器前端的持续开发的更新,因为它已经接近稳定。未来不会有 Kotlin 1.10。 Kotlin 1.9 后的下一个主要版本将是 Kotlin 2.0。
为什么选择 Kotlin 2.0?
前端是编译器的主要部分。K2 编译器前端不仅仅是对旧编译器前端的重构,而是基于新架构从头开始的完全重写。我们一直在各种博客、视频和会议演讲中发布有关差异的技术细节。如需了解详情,可以从K2 编译器之路开始。简而言之,新架构在设计上更快、更可扩展,解决了旧编译器前端的技术债务,修正了各个位置的错误和极端情况,并为语言的未来扩展铺平了道路。
对于编程语言,主要版本通常在引入主要功能或破坏性更改时递增。不过,对于软件程序,即使功能集基本保持不变,只要有内容被大幅重写,表明大规模重做,就可以增大主要版本。虽然 Kotlin 是一种语言,但我们还是决定遵循这一软件做法。首先,Kotlin 编译器是一个大型软件。Kotlin 语言的版本由其编译器的版本定义。我们确实提供了 Kotlin 规范作为语言的参考,但不是它的定义。
它会破坏我的代码吗?
Kotlin 随着每个语言版本的更新而变化。有新的语言功能添加进来,旧的错误会得到修正。我们始终在尽量减少破坏性更改的数量和影响,并遵循 Kotlin 语言的演变流程。Kotlin 2.0 在这方面不会有任何不同。
我们有意识地避免在 Kotlin 2.0 中引入任何新功能。 Kotlin 编译器前端的重写是一个相当大的变化,本身就引入了许多改进。其一,新的数据流分析算法比先前更精确并能带来更好的智能转换 – 查看这些问题以及具体示例。这会将无法在 Kotlin 1.9 旧前端编译的红色代码变成可在 Kotlin 2.0 中编译的绿色代码。从技术上讲,这是新 Kotlin 语言功能的特别之处。不过,它只是新编译器架构的副作用。
此外,大量长期存在的错误已得到修正,并且,其中一些修正可能难免会破坏意外依赖于错误编译器行为的代码。我们正在仔细研究新旧 K2 前端之间所有行为变化的影响,如果更改可能会影响相当数量的 Kotlin 用户,我们就算不喜欢,也仍然会尽可能复制旧行为。
我们会尽全力将代码从 Kotlin 1.9 迁移到 Kotlin 2.0 的影响降到最低。 我们将及时发布 Kotlin 2.0 稳定过程的最新信息,并让您有充足时间提前在项目中试用 Kotlin 2.0,以便您可以报告我们在测试中可能遗漏的任何回归。我们目前的工作重点是今年晚些时候 K2 编译器前端的测试版质量版本,您可以在这个路线图问题中查看进度。
IDE 对 Kotlin 2.0 的支持如何?
Kotlin IDE 插件捆绑在 IntelliJ IDEA 和 Android Studio 更新中。它包括用于对代码进行语义分析的 Kotlin 编译器前端的副本,但这不是用于实际编译代码的 Kotlin 编译器版本 – 编译器的实际版本由构建文件中的设置决定。因此,通过 Kotlin 语言版本 2.0 编译代码时,您将使用新的编译器前端并获得新编译器架构的所有性能优势。但是,IDE 仍可能使用旧前端检查代码。
为了在 IDE 中为您提供新编译器前端的性能优势,我们正在编写一个全新版本的 Kotlin IDE 插件,它以 K2 编译器前端为基础构建。 我们目前正在推进这个新 IDE 插件的公开预览。您可以关注这个问题了解动态。
Kotlin 2.0 之后有什么计划?
Kotlin 2.0 编译器前端的新架构可以干净地实现许多精彩的新功能。其中一些功能,例如 KT-10468 上下文接收器,已经可以在旧编译器前端中供用户预览,但默认不会在 Kotlin 2.0 中启用。它们将停留在预览阶段。新功能将在未来的 Kotlin 2.x 版本中稳定,我们管道中的其他新功能也将同时实现。一如既往,我们将通过Kotlin 路线图分享计划的定期动态。
Kotlin 3.0 什么时候推出?我们还不知道。我们正在试探性地讨论未来语言的重大变化,特别是我们上一次Kotlin功能调查中最受欢迎的请求。部分变化可能意义相当重大,足以带来新的主要 Kotlin 版本。
您可以如何提供帮助?
试用新的编译器前端,把您的想法告诉我们!从 Kotlin 1.8.20 开始,您可以通过常规 Kotlin 语言版本标志启用 Kotlin 2.0 语言版本的预览。
了解详情
本博文英文原作者:Roman Elizarov
⏬ 戳「阅读原文」了解更多
本文分享自微信公众号 - JetBrains(JetBrainsChina)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
ohUrlShortener 短链接系统 v1.9 发布,Redis Cluster 集群支持
经过一段时间修改和测试,ohUrlShortener 短链接系统与昨天晚上正式发布了 v1.9 版本,此版本主要的变化是: 新增 Redis Cluster 集群支持 新增 Captcha 验证码 Redis Cluster 集群支持 处理上个版本中遗留的 bug 考虑到可能有部分朋友希望部署 ohUrlShortener 集群,在此版本做少量改动即可。 新版本下载 Giteehttps://gitee.com/barat/ohurlshortener/releases/tag/v1.9 Githubhttps://github.com/barats/ohUrlShortener/releases ohUrlShortener 是适合中小型社区网站使用的企业级短链接服务系统,支持短链接生产、查询及302转向,并自带点击量统计、独立IP数统计、访问日志查询: 支持 Docker One Step Start 部署启动 支持短链接生产、查询、存储、302转向 支持访问日志查询、访问量统计、独立IP数统计 支持 HTTP API 方式新建短链接、禁用/启用短链接、查看短链接统计信息、新建管理...
- 下一篇
嘿,ADC,帮我翻译一下它说啥
ADC (Analog-to-Digital Converter) 指模数转换器,是指将连续变化的模拟信号转换为离散的数字信号的器件,能够实现将光、温度、湿度等等模拟信号转换为数字信号,进而进行处理和感知。ADC 有逐次逼近型、积分型、压频变换型、分级型和流水线型等等,适合于各种低速、高速、瞬态、基带调解、电子测量等不同场合,应用十分广泛。本文将对常见的ADC类型及其特点进行介绍,并实例演示如何在系统中进行配置使用。 一、ADC分类即特点 1.1逐次逼近型 逐次逼近型ADC是一种直接ADC,由比较器、数模转换器和逐次逼近寄存器以及控制电路组成。每当测试开始时,它逐个产生比较电压,逐次与输入电压分别比较,以逐渐逼近的方式进行模数转换,其转换过程类似于天枰。每次均从最大的砝码开始试放,将砝码与被测物体比较,若物体轻于该砝码,则砝码移去,选择下一个砝码比较,若物体重于该砝码,则砝码保留,增加下一个砝码再比较。以此类推直至增减完最小的砝码,天平上保留的砝码重量相加则为物体重量。逐次逼近型ADC原理同理,将输入的模拟信号与不同大小的参考电压进行比较,最终得出输入模拟量的对应值。 逐次逼近型ADC...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- 2048小游戏-低调大师作品
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- SpringBoot2全家桶,快速入门学习开发网站教程
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- Eclipse初始化配置,告别卡顿、闪退、编译时间过长
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- CentOS7,8上快速安装Gitea,搭建Git服务器
- CentOS6,CentOS7官方镜像安装Oracle11G