kotlin 1.3.0
Kotlin 1.3的生产版本现已可用,并将合同引入类型系统。
Kotlin的起源是JVM的一种语言,但此后又被扩展为可编译为JavaScript 。 谷歌已经认可Kotlin作为一种与Java本身一起构建Android移动应用程序的机制 。
在哪里下载Kotlin
您可以在项目的GitHub repo上访问Kotlin源代码。
当前版本:Kotlin 1.3的新功能
Kotlin 1.3的合同是一项实验性的补充,旨在通过在呼叫站点有用的其他含义来丰富功能系统中可用的类型信息。 合同允许函数告诉编译器诸如“我以这种方式影响智能转换”或“我只执行一次此lambda”之类的事情。 Kotlin标准库已经将合同添加到了几个功能中,这些功能不管实验标记如何都可以使用。
Kotlin 1.3的其他新功能包括:
- 协程功能处于稳定状态,这意味着基于反馈,API和ABI有所更改。 有迁移支持将旧的实验协程与新的协程进行桥接。 另外,对
suspend
函数支持自省:isSuspend
,KCallable.callSuspend
和KCallable.callSuspendby
。 - 在标准库中,对无符号整数类型的支持已得到改进。 无符号类型和数组应该更像一等公民。
- 通过对标准库中API的改进,上一个beta中引入的
Random
类获得了扩展,可以生成无符号数,数组和无符号字节。 另外,为集合,数组和范围引入了名为random()
的扩展,以从该集合,数组或范围的元素中获取随机元素。 - 已向
kotlin-reflect
中添加了一个API,该API可以枚举sealed
类的直接子类型,即sealedsubclasses
。 - 对于在签名中使用内联类的函数名称,引入了自动整形。 这样可以防止在有几种内联类型而不是承运人类型不同的重载时平台签名崩溃。 Mangling还禁止Java的意外使用,这可能是不希望的,因为内联类纯粹是Kotlin的概念。
- 通过
-language-version-
标志(对于kotlinc-1.3及更高版本,其值分别为1.0和1.1)已弃用了对较早的源语言版本的支持。 此更改仅影响旧目标版本的源代码编译。 - 可以通过Kotlin / Native Beta版将代码编译为本地二进制文件。 Kotlin / Native使用LLVM编译器技术将Kotlin源编译为适用于iOS,Linux,Windows,MacOS和WebAssembly的独立二进制文件。
- 多平台功能使业务逻辑可以在受支持的平台(例如Android和iOS)上的组件之间共享。
- 用于Kotlin / Native和多平台项目的Kotlin 1.3工具,可在JetBrains IntelliJ Idea IDE的社区版和最终版以及Android Studio IDE中获得 。 对于Android Studio,请使用插件管理器升级到Kotlin 1.3。
- 序列调试器,用于可视化惰性计算。
- 对无符号整数的实验支持,可以帮助进行字节操作和其他低级代码。
- 对内联类的实验性支持,以确保性能和类型安全。
先前版本:Kotlin 1.2的新功能
Kotlin版本1.2提供了一项实验性功能,可以跨平台重用代码,并与Java 9模块系统兼容。 最新版本是Kotlin 1.2.50。
Kotlin 1.2.50的新功能
2018年6月发布的Kotlin版本1.2.50包括改进脚本功能的实验版以及库更新。
新的库功能包括:
- Beta版的
toString(radix: Int)
扩展函数,用于Byte
,Short
和Int
。 这些已准备好用于实验性多平台项目和针对JavaScript的项目。 - 新的
String(chars: CharArray)
和String(chars: CharArray, offset: Int, length: Int
构造函数将Charray
转换为String
。 - 测试库通过单独的kotlin-test-junit5模块支持使用JUnit 5框架进行测试 。
Beta脚本功能包括:
- 对于.jar文件,开发人员现在可以创建一个定义脚本的文件,如果将该.jar添加到编译类路径中,则编译器和IntelliJ Idea IDE插件会自动支持此类型的脚本。
- 可以将类型化的外部变量传递给脚本编译,使其可以访问,就好像它们是在脚本外部定义的全局变量一样。
其他新功能包括:
- JetBrains的Eclipse插件的新版本0.85支持Kotlin 1.2.50编译器。 该插件还支持配置生成的JVM字节码的首选项,并在调试器中修复了错误。 该插件在Eclipse Marketplace中可用。
- 您可以使用Gradle构建系统更快地构建多模块Android项目。
- Beta渐进式编译器模式可用于积极开发的代码库,其维护人员会定期更新到Kotlin编译器和工具的最新版本。 由于其过时版本和针对不稳定代码的错误修复,此beta模式可能会破坏某些代码。
- 实验性
@JvmDefault
支持已更新为二进制兼容模式。@JvmDefault
用于为JVM接口生成默认方法。
Kotlin 1.2.30的新功能
2018年3月发布的1.2.30更新提供了对标准库的更改以及错误修复。 此更新与JetBrains IntelliJ Idea和Android Studio 3.0 IDE的多个版本兼容。
它的新功能包括:
- 库中的新声明模仿了lambda表达式的
suspend
修饰符。 - 多平台项目现在支持Android模块。
- TestNG测试框架已添加到
test
。 -
kapt
注释处理功能已通过错误报告进行了扩展。 它还为原始Kotlin声明添加了适当的链接。 - 新检查已添加到IntelliJ IDE插件,并且性能也得到了改善。 该插件还修复了错误。
- Kotlin的编译器已修复错误,并提高了性能。 为了提供更高效的编译代码,编译器现在可以优化在挂起函数中对另一个返回
Unit
的挂起函数进行的尾部调用。
Kotlin 1.2.20的新功能
随着2018年1月发布的1.2.20更新,Kotlin增加了从使用Gradle构建系统到构建Android移动应用程序的多种功能。 被描述为错误修复和工具更新,版本1.2.20包括:
- Gradle构建缓存支持。
- 支持JavaScript DCE(消除死代码)Gradle任务中的开发模式。
- 性能改进以及针对Kotlin的IntelliJ Idea插件中的新检查和错误修复。
- 改进了Android和Java / Kotlin混合项目的增量编译。
- 新的Kotlin样式指南的 IDE支持,该指南涵盖了代码格式设置以及语言和库功能的惯用用法。
此更新与2017.1至2017.3。的IntelliJ Idea IDE兼容。 它还适用于Android Studio IDE 3.0和3.1版本。
Kotlin 1.2.00的新功能
Kotlin 1.2于2017年11月发布,具有实验性的多平台项目功能,可让开发人员在受支持的目标平台之间重用代码:最初是JVM和JavaScript,后来是本机。 平台之间共享的代码放在一个公共模块中; 平台相关的部分放在平台特定的模块中。 在编译期间,将为通用部分和特定于平台的部分生成代码。
开发人员可以通过预期和实际的声明来表达通用代码对特定于平台的部分的依赖性。 该声明指定了一个API,而实际的声明要么是特定于平台的API,要么是引用外部库中API的现有实现的类型别名。 同时,标准库具有kotlin.math软件包,可用于在跨平台代码中执行数学运算。
现在, kotlin.math
包还为JavaScript的数学kotlin.math
提供了更高的精度。
Kotlin 1.2的标准库与新引入的Java 9模块系统兼容,该系统禁止拆分程序包(多个.jar文件在同一程序包中声明类)。 在Kotlin 1.2中, kotlin-stdlib-jdk7
和kotlin-stdlib-jdk8
工件替换了旧的kotlin-stdlib-jre7
和kotlin-stdlib-jre8
。
为了支持Java 9,Kotlin 1.2还从kotlin-reflect
库中删除了kotlin.reflect
包中不推荐使用的声明。 开发人员需要切换到使用Kotlin 1.1中首次出现的kotlin.reflect.full
程序包中的声明。
Kotlin 1.2中类型推断的改进包括使编译器能够在类型推断中使用来自类型转换的信息。 如果开发人员调用了返回类型参数(例如T
的通用方法,并将返回值转换为特定类型(例如Foo
,则编译器现在知道此调用的T
必须绑定到类型Foo
。 对于Android开发人员而言,这尤其重要,因为Kotlin编译器可以正确分析Android API Level 26中的findViewById
调用。此外,编译器现在可以选择将所有警告视为错误。
Kotlin 1.2还具有以下增强功能:
- 现在,它在注释中支持数组文字,从而简化了编码。
- 它使用更一致的语法。
- 新的反射API使开发人员可以检查
lateinit
变量是否已初始化。 - 现在,
lateinit
修饰符可用于顶级属性和局部变量。
翻译自: https://www.infoworld.com/article/3229958/whats-new-in-kotlin-13.html
kotlin 1.3.0