当前位置: 首页 > news >正文

Kotlin 1.9.0 发布:带来多项新特性,改进 Multiplatform/Native 支持

新特性

Kotlin 的最新版本引入了许多新的语言特性,包括用于开放范围的…<操作符、扩展正则表达式等。此外,它还改进了 Kotlin Multiplatform 和 Kotlin/Native 支持。

Kotlin 1.9 稳定了与枚举类关联的 entries 属性,它会返回所定义的枚举常量的所有值的列表。entries 弃用了 values(),它不再每次分配一个新数组,而是采用了预分配的值列表,提升了性能。

另一个小的语言特性是新引入了用于表示开放范围的…<操作符。JetBrains 表示,这个新语法可以让不包括上限的情况看起来更清晰。

在 Kotlin 1.9 中,正则表达式变得更加灵活,这要归功于一个新的函数 group。该函数可以按名称检索正则表达式组。如下所示,可以用几个命名组定义正则表达式:

val regex = """\b(?<city>[A-Za-z\s]+),\s(?<state>[A-Z]{2}):\s(?<areaCode>[0-9]{3})\b""".toRegex()

然后,使用组名来访问匹配的值:

val match = regex.find(input)!!
println(match.groups["city"]?.value)
// Austin
println(match.groups["state"]?.value)
// TX
println(match.groups["areaCode"]?.value)

Kotlin 1.9 还改进了对 Kotlin/Native 和 Kotlin Multiplatform 的支持。

在 Kotlin/Native 中,现在可以预览自定义内存分配器了,其目的是提高 Kotlin/Native 内存管理器的运行时性能。自定义分配器将系统内存划分为多个页,并允许按顺序单独进行清理。使用编译器选项-Xallocator= Custom 可以启用自定义内存分配器。

Objective-C/Swift 互操作性也得到了改善,这要归功于新引入的 Objective-C/Swift 对象释放策略。现在,对象释放会在适当的时候在主线程上进行,减少了内存泄漏的机会。

Kotlin 1.9 的其他新特性还包括:可以为 iOS 模拟器测试配置独立的 iOS 模式;可以跨 Kotlin JVM 和 Kotlin/Native 对链接问题进行统一处理。特别是,当存在链接问题时,构建将不再失败。

再来看下 Kotlin Multiform。它包括 Gradle 配置缓存预览,以及改进 Android 目标支持,为谷歌新开发的一个 Gradle 插件铺平了道路。

最后,关于 Kotlin 1.9,值得一提的是,它包含面向 JVM 的新的 K2 编译器的 Beta 版本,旨在提供更好的性能,加快语言特性开发,并为多平台对象提供更好的架构。在 Kotlin 2.0 中,K2 将成为稳定版本,并成为默认的编译器。

以下是 Kotlin 1.9 的详细变更信息全部官方声明。

Kotlin 1.9.0 版本现已发布,适用于 JVM 的 K2 编译器目前处于测试版阶段。 这个版本包含新的语言功能以及针对 Kotlin Multiplatform 和 Kotlin/Native 的改进。

以下是此版本的一些亮点:

  • 新的 Kotlin K2 编译器更新
  • 枚举类值函数的稳定替换
  • 开放范围的稳定 …< 运算符
  • 通过名称获取正则表达式捕获组的新通用函数
  • 用于创建父目录的新路径实用函数
  • Kotlin Multiplatform 中的 Gradle 配置缓存预览
  • Kotlin Multiplatform 中对 Android 目标支持的更改
  • Kotlin/Native 中自定义内存分配器的预览
  • Kotlin/Native 中的库链接
  • Kotlin/Wasm 中的大小相关优化

Kotlin K2 编译器

JetBrains 的 Kotlin 团队持续稳定新的 K2 编译器,我们很高兴地宣布,在我们迈向 Kotlin 2.0 版本的旅程中,适用于 JVM 的新 Kotlin K2 编译器达到了测试版里程碑。 编译器已经过彻底测试,成功编译了 Kotlin 团队用于质量保证的大量项目。

K2 编译器旨在带来重大性能改进,加快新语言功能的开发,统一 Kotlin 支持的所有平台,并为多平台项目提供更好的架构。

我们在促进与其他流行编译器插件的兼容性方面取得了巨大进步。 对 Kotlin Symbol Processing (KSP) 和 Jetpack Compose 的支持即将推出,预计很快集成 K2 支持。 我们邀请您在 Kotlin/JVM 项目上测试 K2,并在我们的问题跟踪器中分享您的宝贵反馈。 您的意见将帮助我们完善 K2,使其在 Kotlin 2.0 中成为默认的稳定编译器。

我们的目标还不止于此。 我们希望通过 K2 编译器实现同样高质量的多平台支持。 这一愿景与我们在 Kotlin Multiplatform 稳定性方面的持续努力相符合。 我们的目标是在 Kotlin Multiplatform 稳定版本发布的同时,在 K2 中实现对多平台项目的完全测试版品质支持。

我们热切期待您的反馈,同时,我们也将在这段精彩的开发旅程中继续前进。 Kotlin 2.0 的未来将由我们共同塑造。

有关如何启用 K2 编译器的更多信息,请参阅在项目中试用 K2 编译器。

安装 Kotlin 1.9.0

如果您已经在使用 IntelliJ IDEA 2022.3.3 或 2023.1.1,IDE 会自动建议将 Kotlin 更新到 1.9.0。 您也可以按照这些说明手动更新:https://kotlinlang.org/docs/releases.html#update-to-a-new-release

IntelliJ IDEA 2023.2 将内置 Kotlin 1.9.0 插件。

对于 Android Studio Giraffe (223) 和 Hedgehog (231),Kotlin 1.9.0 插件将随即将推出的 Android Studio 更新一起提供。 如果需要命令行编译器,请从 GitHub 版本页面下载:https://github.com/JetBrains/kotlin/releases/tag/v1.9.0

相关文章:

Kotlin 1.9.0 发布:带来多项新特性,改进 Multiplatform/Native 支持

新特性 Kotlin 的最新版本引入了许多新的语言特性&#xff0c;包括用于开放范围的…<操作符、扩展正则表达式等。此外&#xff0c;它还改进了 Kotlin Multiplatform 和 Kotlin/Native 支持。 Kotlin 1.9 稳定了与枚举类关联的 entries 属性&#xff0c;它会返回所定义的枚…...

接口测试——认知(一)

目录 引言 环境准备 1. 为什么要进行接口测试 2. 什么是接口 3. 接口测试与功能测试的区别 引言 为什么要做接口自动化测试&#xff1f; 在当前互联网产品迭代频繁的背景下&#xff0c;回归测试的时间越来越少&#xff0c;很难在每个迭代都对所有功能做完整回归。 但接…...

剑指 Offer 10- I. 斐波那契数列

写一个函数&#xff0c;输入 n &#xff0c;求斐波那契&#xff08;Fibonacci&#xff09;数列的第 n 项&#xff08;即 F(N)&#xff09;。斐波那契数列的定义如下&#xff1a; F(0) 0, F(1) 1 F(N) F(N - 1) F(N - 2), 其中 N > 1. 斐波那契数列由 0 和 1 开始&am…...

洪水填充算法详解

&#x1f61c;作 者&#xff1a;是江迪呀✒️本文关键词&#xff1a;算法、前端、JavaScript、HTML、洪水填充算法☀️每日 一言&#xff1a;不以物喜&#xff0c;不以己悲 一、前言 当象一个容器中注水时&#xff0c;无论容器的结构如何复杂&#xff0c;注入的水…...

ubuntu18.04安装docker及docker基本命令的使用

官网安装步骤&#xff1a;https://docs.docker.com/desktop/install/ubuntu/ docker快速入门教程 Ubuntu-Docker安装和使用 docker官网 docker-hub仓库 1、常用指令 &#xff08;1&#xff09;镜像操作 # ############################# 以nginx为例 docker images docker p…...

DataWhale 机器学习夏令营第二期——AI量化模型预测挑战赛 学习记录

DataWhale 机器学习夏令营第二期 学习记录一 (2023.08.06)1. 问题建模1.1 赛事数据数据集情况数据中缺失值类别和数值特征的基本分布 1.2 评价指标中间价的计算方式价格移动方向说明 1.3 线下验证 DataWhale 机器学习夏令营第二期 ——AI量化模型预测挑战赛 已跑通baseline&…...

简单认识ELK日志分析系统

一. ELK日志分析系统概述 1.ELK 简介 ELK平台是一套完整的日志集中处理解决方案&#xff0c;将 ElasticSearch、Logstash 和 Kiabana 三个开源工具配合使用&#xff0c; 完成更强大的用户对日志的查询、排序、统计需求。 好处&#xff1a; &#xff08;1&#xff09;提高安全…...

【算法笔记】深度优先遍历-解决排列组合问题-

深度优先遍历-解决排列组合问题 问题1&#xff1a; 假设袋子里有编号为1,2,…,m这m个球。现在每次从袋子中取一个球记下编号&#xff0c;放回袋中再取&#xff0c;取n次作为一组&#xff0c;枚举所有可能的情况。 分析&#xff1a; 每一次取都有m种可能的情况&#xff0c;因此…...

【雕爷学编程】Arduino动手做(184)---快餐盒盖,极低成本搭建机器人实验平台2

吃完快餐粥&#xff0c;除了粥的味道不错之外&#xff0c;我对个快餐盒的圆盖子产生了兴趣&#xff0c;能否做个极低成本的简易机器人呢&#xff1f;也许只需要二十元左右 知识点&#xff1a;轮子&#xff08;wheel&#xff09; 中国词语。是用不同材料制成的圆形滚动物体。简…...

应急响应-勒索病毒的处理思路

0x00 关于勒索病毒的描述 勒索病毒入侵方式&#xff1a;服务弱口令&#xff0c;未授权&#xff0c;邮件钓鱼&#xff0c;程序木马植入&#xff0c;系统漏洞等 勒索病毒的危害&#xff1a;主机文件被加密&#xff0c;且几乎难以解密&#xff0c;对主机上的文件信息以及重要资产…...

ChatGPT是否能够处理多模态数据和多模态对话?

ChatGPT有潜力处理多模态数据和多模态对话&#xff0c;这将进一步扩展其在各种应用领域中的实用性。多模态数据是指包含多种不同类型的信息&#xff0c;例如文本、图像、音频和视频等。多模态对话是指涉及多种媒体形式的对话交流&#xff0c;例如同时包含文本和图像的对话。 *…...

AcWing1171. 距离(lcatarjan)

输入样例1&#xff1a; 2 2 1 2 100 1 2 2 1输出样例1&#xff1a; 100 100输入样例2&#xff1a; 3 2 1 2 10 3 1 15 1 2 3 2输出样例2&#xff1a; 10 25 #include<bits/stdc.h> using namespace std; typedef long long ll; const int N2e55; int n,m,x,y,k,r…...

JVM-运行时数据区

目录 什么是运行时数据区&#xff1f; 方法区 堆 程序计数器 虚拟机栈 局部变量表 操作数栈 动态连接 运行时常量池 方法返回地址 附加信息 本地方法栈 总结&#xff1a; 什么是运行时数据区&#xff1f; Java虚拟机在执行Java程序时&#xff0c;将它管…...

RedisTemplate中boundHashOps的使用

1、往指定key中存储 键值 redisTemplate.boundHashOps("demo").put("1",1); 2、根据指定key中得键取出值 System.out.println(redisTemplate.boundHashOps("demo").get("1")); 3、根据指定key中得键删除 redisTemplate.boundHash…...

计算机网络-性能指标

计算机网络-性能指标 文章目录 计算机网络-性能指标简介速率比特速率 带宽吞吐量时延时延计算 时延带宽积往返时间网络利用率丢包率总结 简介 性能指标可以从不同的方面来度量计算机网络的性能 常用的计算机网络的性能指标有以下8个 速率带宽吞吐量时延时延带宽积往返时间利…...

排序第一课【插入排序】直接插入排序 与 希尔排序

目录 1. 排序的概念&#xff1a; 2.插入排序基本思想 3.直接插入排序 4.希尔排序 1. 排序的概念&#xff1a; 排序&#xff1a;所谓排序&#xff0c;就是使一串记录&#xff0c;按照其中的某个或某些关键字的大小&#xff0c;递增或递减的排列起来的操作。 稳定性&#xf…...

云计算——ACA学习 云计算概述

作者简介&#xff1a;一名云计算网络运维人员、每天分享网络与运维的技术与干货。 座右铭&#xff1a;低头赶路&#xff0c;敬事如仪 个人主页&#xff1a;网络豆的主页​​​​​ 目录 写在前面 上章回顾 本章简介 本章目标 一.云计算产生背景 1.信息时代的重点变革…...

如何为网站进行全面的整站翻译?

要翻译整个网站&#xff0c;可以按照以下步骤进行&#xff1a; 确定翻译需求&#xff1a;确定你需要将整个网站翻译成哪种语言。这可以根据你的目标受众和市场进行决定。 寻找翻译资源&#xff1a;你可以选择以下几种方式来进行网站翻译&#xff1a; a. 人工翻译&#xff1a;雇…...

项目部署(前后端分离)

1、前端项目 &#xff08;打包成dist文件,放到nginx的html目录下面&#xff09;&#xff0c;然后配置nginx 2、后端项目部署 使用之前的shell脚本&#xff08;然后赋予用户权限&#xff09;&#xff0c;最后运行脚本 查看进程...

增强型Web安全网关在银行的应用

销售&#xff0c;绝不是降低身份去取悦客户&#xff0c;而是像朋友一样给予合理的建议。你刚好需要&#xff0c;我刚好专业&#xff01;仅此而已&#xff01; 乔.吉拉德 健康的安全体系&#xff0c;还可以更完善 浙江某商业银行股份有限公司是一家成立多年的商业银行&#xf…...

FastAPI ORM 封装:FastAPI 与 SQLModel 的无缝集成与快速开发

更多内容请见: 《Python Web项目集锦》 - 专栏介绍和目录 核心价值: SQLModel 是 FastAPI 作者 Tiangolo 为 Python Web 开发量身打造的"ORM 终极解决方案",它将 Pydantic 模型与 SQLAlchemy 深度融合,让开发者在编写 API 时无需在数据库模型和 API 模型之间反复…...

曾经我和大模型交流业务实现记录

第一次&#xff1a; 我有一组子组件11个&#xff0c;通过子组件的不同组合&#xff0c;可以组成表单&#xff0c;这些表单让不同的用户使用&#xff0c;表单组成公共的内容&#xff0c;让大部分用户使用&#xff0c;当然用户可以在这些表单的基础上修改一些默认值&#xff0c;变…...

PWM技术原理与工程实践全解析

1. PWM技术基础解析脉冲宽度调制&#xff08;PWM&#xff09;作为现代电子电力控制的核心技术&#xff0c;其本质是通过调节脉冲信号的导通时间比例来实现对功率的有效控制。我第一次接触这个概念是在调试直流电机调速项目时&#xff0c;当时被其精妙的设计思想所震撼。1.1 关键…...

3D元器件库在PCB设计中的关键作用与应用

1. 为什么你需要一套完整的3D元器件库作为一名电子工程师&#xff0c;我深知在PCB设计过程中&#xff0c;3D元器件库的重要性。传统的2D设计虽然能满足基本需求&#xff0c;但在实际生产装配时往往会遇到各种意想不到的机械干涉问题。记得我刚开始做硬件设计时&#xff0c;就曾…...

构建企业级AI智能体:LangGraph多智能体框架实战指南

构建企业级AI智能体&#xff1a;LangGraph多智能体框架实战指南 【免费下载链接】langgraph Build resilient language agents as graphs. 项目地址: https://gitcode.com/GitHub_Trending/la/langgraph 在当今AI应用开发中&#xff0c;开发者面临着一个核心挑战&#x…...

告别预烘焙!在UE材质编辑器中实时生成FlowMap和法线贴图(附节点图)

实时材质魔法&#xff1a;UE引擎中FlowMap与法线贴图的动态生成技术 在游戏开发与动态视觉创作领域&#xff0c;材质表现的真实感与动态效果一直是技术美术师们追求的核心目标。传统工作流中&#xff0c;FlowMap&#xff08;流场图&#xff09;和法线贴图的生成往往依赖于外部软…...

嵌入式开发者的效率利器:在VS Code里实时看到MISRA-C违规提示(含头文件路径配置避坑)

嵌入式开发实战&#xff1a;用VS Code打造MISRA-C实时检查工作流 每次保存代码后才发现MISRA-C违规有多痛苦&#xff1f;想象一下这样的场景&#xff1a;你正在编写一段关键的车载控制逻辑&#xff0c;反复调试后终于通过了编译&#xff0c;却在提交前的静态检查中被揪出二十多…...

企业微信考勤自动化解决方案:基于EasyWeChat的实战指南

企业微信考勤自动化解决方案&#xff1a;基于EasyWeChat的实战指南 【免费下载链接】easywechat &#x1f4e6; 一个 PHP 微信 SDK 项目地址: https://gitcode.com/gh_mirrors/ea/easywechat 在数字化办公普及的今天&#xff0c;企业考勤管理面临着数据采集繁琐、统计分…...

Z-Image-Turbo-rinaiqiao-huiyewunv实战落地:高校动漫社AI辅助创作工作流搭建

Z-Image-Turbo-rinaiqiao-huiyewunv实战落地&#xff1a;高校动漫社AI辅助创作工作流搭建 1. 项目背景与核心价值 高校动漫社团经常面临创作效率低、人手不足的问题。传统手绘方式需要大量时间&#xff0c;而通用AI绘图工具又难以保持角色一致性。Z-Image Turbo (辉夜大小姐-…...

深入解析RS485接口:从硬件设计到工业应用

1. RS485接口基础解析 第一次接触RS485时&#xff0c;我也被它复杂的电气特性搞得一头雾水。直到在工厂里亲眼看到它如何稳定地穿过嘈杂的电机区域传输数据&#xff0c;才真正理解这个老牌工业接口的魅力。RS485本质上是一种差分信号传输标准&#xff0c;采用双绞线进行平衡传…...