Kotlin 1.4发布,重点关注质量和性能

2020-08-18 03:02:02

您可以用其他语言阅读这篇博客文章:日本語、Français、한국어、西班牙语、葡萄牙语、Русский,简体中文。

今天我们将发布Kotlin 1.4.0!在过去的几年里,我们一直在努力使Kotlin成为一种有趣、愉快和高效的编程语言。为了用这个版本的Kotlin继续追求这一目标,我们投入了大量的精力和精力来提高Kotlin及其工具的性能和质量。我们还很兴奋地宣布支持几个新的语言特性,包括期待已久的用于Kotlin接口的SAM转换。

为了帮助您最大限度地利用Kotlin 1.4中引入的更改和改进,我们邀请您所有人参加Kotlin 1.4在线活动,在那里您将能够像与Kotlin团队一样享受为期四天的Kotlin演讲、问答和更多-完全免费。

在过去的12个月里,超过580万人编辑了Kotlin代码,而且这个数字还在不断增长:

我们很高兴看到Kotlin变得如此受欢迎!活跃用户的数量-我们将在未来的博客帖子中更详细地解释这一指标-一直特别令人鼓舞。在这里,我们看到比前一年的数字增加了1.5倍。

根据StackOverflow开发者调查2020,Kotlin在专业开发人员最受欢迎的编程语言中已经攀升到第13位,我们很高兴看到Kotlin是最受欢迎的5种语言之一。

许多公司选择科特林作为他们的语言,并成功地在所有平台上使用它。我们很高兴看到这一趋势,我们非常感激有这么多这样的公司提供了案例研究,供社区阅读和学习。以下是最近用Kotlin开发的几个令人惊叹的软件示例:

我们的科特林社区也在迅速发展。超过30,000名Kotlin开发人员现在在Slake和Reddit上交流知识并相互支持,超过90,000人关注我们的官方Twitter账户以获取提示、技巧和公告。Kotlin社区在全球拥有200多个用户组,正在蓬勃发展。我们感谢你们所有人帮助传播这一信息,分享你们的知识,并支持你们的Kotlin开发人员同行。您营造的温馨、热情的氛围使一起探索科特林成为一次愉快的经历。没有你一切都不一样了。

我们希望确保您在使用Kotlin 1.4方面有良好的体验,并且希望您对我们下一步的发展方向有一个很好的了解。这就是为什么我们很高兴邀请你们所有人参加我们的Kotlin 1.4在线活动!

它由四天组成,充斥着关于科特林以及这种语言的未来和生态系统的知识:我们将讨论我们在科特林1.4中所做的新变化和改进,并分享我们对这种语言的未来计划。我们的考特林团队成员将在日常问答环节回答您的问题。使用#kotlin14ask标签在推特上提前提交您的问题,或使用此表单。

Kotlin 1.4线上活动将于10月12-15日进行在线直播,您可以在这里免费注册:

我们此次发布的主要关注点是改进使用Kotlin的整体开发体验,包括改进IDE性能和稳定性。我们的目标是让Kotlin用户尽可能多产,我们专注于改进对用户来说最重要的东西,让他们在使用时感觉更快乐!

我们已经检查并修复了60多个性能问题,包括许多导致IDE冻结或内存泄漏的问题。在Kotlin 1.4.0的EAP阶段,我们收集了很多积极的反馈,表明整体体验现在要愉快得多!

当您第一次使用项目并打开一个大的Kotlin文件时,您现在可以更快地看到其高亮显示的内容。在大多数情况下,突出显示的速度现在提高了1.5-4倍:

我们还显著缩短了自动补全建议出现的时间。下图概述了Kotlin用户体验的平均自动完成响应时间。完成时间超过500毫秒的案例数量减少了近一半:

请注意,这些最新的变化,包括代码突出显示的加速,都需要IntelliJ IDEA 2020.1+和Android Studio4.1+。

性能改进是一个持续的过程,我们计划进行更多的增强,比如继续致力于消除冻结和使键入更流畅。我们已经开始与新的实验性Kotlin编译器前端集成,这将使IDE速度更快。这是一项巨大的任务,需要重写插件的许多部分,但它将提高IDE许多领域的性能,包括代码完成、语法突出显示和编译器错误报告。

我们在JetBrains的使命是让软件开发成为更高效、更愉快的体验,因此我们自然希望确保围绕Kotlin的工具是优秀的,并使编写Kotlin尽可能简单。

为了使您更容易使用协同例程,特别是定位并发应用程序中的错误,我们引入了协程调试器。我们将扩展它的初始功能集,以提供社区最需要的功能,所以请使用我们的一个渠道或在下面的评论部分与我们分享您的反馈。

我们还引入了一个新的Flexible Kotlin项目向导。这个新的向导为您提供了创建和配置不同类型的Kotlin项目的单一位置,即使是使用更复杂的结构(如多平台项目)也很容易上手。

在Kotlin 1.4.0中添加了40多个新的快速修复程序、意图和检查,它们将在您需要时提供-当您修改代码时,然后按Alt+Enter组合键查看在您的特定上下文中有哪些可用内容。

很长一段时间以来,我们一直在研究一种新的Kotlin编译器,它将在性能和可扩展性方面推动Kotlin的发展。新编译器的主要目标是速度非常快,统一Kotlin支持的所有平台,并为编译器扩展提供API。我们正在一步一步地推出新部件,以便它们尽快到达用户手中。在Kotlin 1.4.0中,我们将发布正在进行的工作的几个部分:

默认情况下启用新的、功能更强大的类型推理算法。它在更多的用例中自动推断类型,即使在复杂的场景中也支持智能强制转换,改进了对委托属性的推断,等等。

新的JVM和JS后端在Alpha模式下可用。一旦稳定下来,它们将成为新的违约。

我们正在积极开发一个新的前端实现,它将在编译器管道中提供最大的性能提升。前端是编译器的一部分,负责解析代码、解析名称、执行类型检查等等,因此它也会影响IDE性能。它的预览版将在未来的版本中提供,敬请关注!

标准库的首要任务是提高跨不同平台和操作本身的一致性。在此版本中,Kotlin标准库获得了新的集合运算符、委托属性改进、双端队列实现ArrayDeque等等。

您可以在“公共”代码中使用标准库-不同平台(无论是Android&;iOS还是JVM&;JS)之间共享的代码。我们正在逐步扩展公用库,并向其中添加或移动缺少的功能。

也不再需要在任何Gradle Kotlin项目中声明对stdlib的依赖关系,无论您是针对单个平台还是在多平台项目中工作。从Kotlin 1.4.0开始,默认情况下会添加此依赖项。

序列化库正在接近成熟。今天我们将发布kotlinx.Serialization 1.0.0-RC版本!

我们已经发布了日期时间API的预览,kotlinx-datetime库处于实验状态。

我们鼓励您为您的常规项目试用新的Alpha Kotlin/JVM后端,并分享您的反馈!除了统一编译器管道,这项工作还将帮助我们更快地将Jetpack Compose等编译器扩展引入Kotlin社区。

我们添加了新的实验性方法,用于在字节码(用于Java8目标)的接口中生成默认方法。

Kotlin现在可以在JVM字节码中生成类型批注,以便它们在运行时在Java反射中可用。这适用于目标版本8和更高版本,到目前为止还处于实验状态。

Kotlin 1.4.0提供了新的Gradle DSL和Alpha版本的新Kotlin/JS编译器后端,以及其他特性。

新的Gradle DSL增加了对从DSL配置CSS和样式加载器的支持,它包括与NPM依赖管理相关的各种改进,并改进了对Dukat集成的控制。

新的Kotlin/JS编译器后端让人领略到Kotlin/JS的未来。它包括一些优化和特性,例如从Kotlin代码自动生成文字定义、较小的二进制文件和包、向JavaScript公开Kotlin功能的现代化方式等等。

当前Kotlin/Native中的自动内存管理实现在并发性方面存在局限性,我们正在研究替代方案。

Kotlin/Native的一个重要关注点是使其与Kotlin多平台移动无缝连接,但并不局限于此。

使Kotlin成为伟大的多平台解决方案是我们的首要任务之一。我们承诺在KotlinConf上进行一些重要的改进,我们很高兴地报告我们已经交付的成果:

多亏了分层的项目结构,您现在可以在特定的目标子集之间共享代码,例如类似的IOS ARM64设备目标和x64模拟器目标。

您只能在共享源集内指定依赖项一次,而不是在共享源集和特定于平台的源集内的同一个库的不同变体上指定依赖项。

我们继续研究Kotlin库格式klib,它在幕后用于共享多平台库。

我们正在开发一个Android Studio插件,用于在iOS设备和模拟器上运行、测试和调试Kotlin代码。第一个公开预览版即将发布,敬请关注。

我们很快就会发布在Kotlin社区成员的帮助下创建的一系列材料,解释如何使用Kotlin多平台移动(KMM)技术来专门针对移动使用-在Android和iOS之间共享代码的案例。

尽管现在的主要焦点是移动目标,但JetBrains已经在积极使用Kotlin多平台的Web目标来构建和发布JetBrains Space。网络目标仍然是科特林的一项重要战略投资。

您可以在Kotlin1.4What‘s New页面和文档中找到新功能的详细描述,并阅读有关迁移到Kotlin1.4的更多信息。

与所有主要版本一样,随着Kotlin 1.4的发布,之前宣布的更改的一些弃用周期即将结束。所有这些案例都经过了语言委员会的仔细审查,并列在Kotlin 1.4的兼容性指南中。

IntelliJ Idea和Android Studio中的Kotlin插件可以收集有关您如何使用其功能的匿名统计数据。我们恳请您选择加入这些统计数据!

这些匿名数据极大地帮助我们更好地了解我们的用户,看看什么是有效的,是什么造成了困难,以及我们应该把重点放在哪里。要启用统计功能,请转到首选项,打开外观和行为|系统设置|数据共享,然后激活发送使用情况统计信息复选框。

我们要感谢社区的所有成员,他们通过向YouTrack报告问题来帮助我们使这个版本变得更好!我们已经列出了前20名记者的名单,并要特别感谢他们:

Igor Wojda(145期);Louis CAD(87期);Marc Knaup(86期);AndroidDeveloperLB(83期);Robert Stoll(68期);Morgan Bartholomew(62期);Victor Turansky(54期);关天一(51期);斯科特·皮尔斯(38期);Andreas Malik(37期);Steven Schäfer(37期);Björn Kautler(36期);R。杰克·沃顿(25期);兰贝托·巴斯蒂(24期);Serge Pro(23期);埃戈尔·安德列维奇(21期)。

在Gradle和Maven中,使用1.4.0作为编译器版本。请参阅Gradle和Maven的文档。

IntelliJ IDEA和Android Studio会自动提示您将Kotlin插件更新到1.4.0版本。您也可以打开首选项|插件并手动更新Kotlin插件。

来自Kotlin-wrappers(Kotlin-Reaction等)的库的版本。可以在相应的存储库中找到。

最新的集成开发环境性能改进,包括代码突出显示加速,需要IntelliJ IDEA 2020.1+和Android Studio4.1+。

如果你在新版本中遇到任何问题,你可以在Slake上找到帮助(在这里获得邀请),并在我们的YouTrack中报告问题。

我们真的很感谢每一个试用过的人,他们给了我们关于Kotlin EAP和实验功能的反馈。我们正在与您一起开发Kotlin语言,并根据您宝贵的意见做出许多设计决策。让这个快速有效的反馈循环与社区一起运行,对于帮助Kotlin成为最好的人真的很重要!

我们想对我们所有的外部贡献者说声非常感谢,他们的拉取请求包含在此版本中。你帮我们实现了这次释放!

我们感谢我们社区的所有成员,他们与Kotlin一起创造了如此多令人惊叹的东西。科特林1.4:人人共享!