分享到: 分享到QQ  分享到Twitter

作者: BigLoser    访问次数: 272 创建时间: 2022-12-30 17:46:58 更新时间: 2024-04-20 23:43:24

Kotlin 1.8.0 版本已经正式发布,以下是该版本更新中的一些主要内容:

 

针对 JVM 的新实验性功能:递归复制或删除目录内容

 

Kotlin 1.8.0 为 java.nio.file.Path 引入了两个新的扩展函数:copyToRecursively()deleteRecursively(),它们允许你以递归方式:

  • 将一个目录及其内容复制到另一个目的地
  • 删除一个目录和它的内容

 

这些函数作为备份过程的一部分可能非常有用。

用于 java.nio.file.path 的这些新函数是实验性的。要使用它们,你需要选择加入 @OptIn(kotlin.io.path.ExperimentalPathApi::class)@kotlin.io.path.ExperimentalPathApi。另外,你也可以使用编译器选项 -opt-in=kotlin.io.path.ExperimentalPathApi

 

改进了 kotlin-reflect 的性能

 

利用 kotlin-reflect 现在是用 JVM target 1.8 编译的这一事实,我们将内部缓存机制迁移到 Java 的 ClassValue。以前我们只缓存 KClass,但现在我们也缓存了 KTypeKDeclarationContainer。这些变化使得调用 typeOf() 时的性能得到了明显的改善。

 

新增 -Xdebug 编译器选项,以获得更好的调试体验

 

Kotlin 1.8.0 增加了一个新的 -Xdebug 编译器选项,它可以禁用优化以获得更好的调试体验。目前,该选项禁用了 coroutines 的 "已优化" 功能。在未来,当我们添加了更多的优化功能后,这个选项也将禁用它们。

kotlin-stdlib-jdk7kotlin-stdlib-jdk8 合并为 kotlin-stdlib

在 Kotlin 1.8.0 中,标准库(kotlin-stdlibkotlin-reflectkotlin-script-*)是用 JVM target 1.8 编译的。此前,标准库是以 JVM target 1.6 编译的。

Kotlin 1.8.0 不再支持 JVM targets 1.6 和 1.7。因此,你不再需要在构建脚本中单独声明 kotlin-stdlib-jdk7kotlin-stdlib-jdk8,因为这些工件的内容已经并入 kotlin-stdlib

 

改进了 Objective-C/Swift 的互操作性

 

为了使 Kotlin 与 Objective-C 和 Swift 更具有互操作性,1.8.0 增加了三个新的注解:

  • @ObjCName 允许你在 Swift 或 Objective-C 中指定一个更习惯的名字,而不是重新命名 Kotlin 声明。
  • @HiddenFromObjC 允许你从 Objective-C 中隐藏一个 Kotlin 声明
  • @ShouldRefineInSwift 对于用 Swift 编写的包装器替换 Kotlin 声明很有用

 

与 Gradle 7.3 兼容

 

Kotlin 1.8.0 完全支持 Gradle 7.2 和 7.3 版本,这个版本带来了很多变化:

  • 将 Kotlin 编译器选项作为 Gradle 惰性属性公开
  • 提高了最小支持版本
  • 能够禁用 Kotlin 守护程序的回退策略
  • 强制检查相关的 Kotlin 和 Java 编译任务的 JVM target 兼容性是否相等
  • ……

更多详情可查看:https://kotlinlang.org/docs/whatsnew18.html

季度最有价值文章

月度最有价值文章

投票统计

是否原创: 0 %

0 % Complete (success)

是否有价值: 0 %

0% Complete

是否有素质: 0 %

0% Complete (warning)

是否合法: 0 %

0% Complete

   群组工具

   外部链接