Kotlin 更新了Roadmap,未来将会发力哪些新项目?

Kotlin的Roadmap每半年会进行一次更新,从中开发者可以观察到Kotlin团队未来的规划和工作重心。 近期Kotlin又更新了Roadmap,让我们看一下Kotlin团队未来又规划了哪些新项目。

全新的Kotlin编译器

为了提高Kotlin编译性能,Kotlin团队计划重写编译器前端,待重写完成编译速度将有望翻倍。为了配合新的编译器前端架构,现有的JVM、JS等编译器后端也需要重新实现。新的JVM后端已于近期完成并发布,其他工作还在进行中。此外,新的编译器将提供更好用的 Compiler Plugin API,允许开发者自定义更多编译期任务

新语法特性: Sealed whens,Multiple receiver等

语法方面未来会增加更多新特性。比较有代表性的是KT-12380Sealed whens 以及 KT-42435Multiple receivers

  • 目前当Sealed Class用在when语句中时,不强制写出所有branch,允许出现else,很多开发者认为这不够安全,希望能语法上强制写出所有分支。 JackWharton 甚至单独写了Plugin 来补充这种强制。未来 Sealed Class 的 when 语句必须写全所有的branch,保证代码的安全性。

  • 有时可能会定义这样的接口:

interface Extension
interface Context { // Context is a dispatch receiver
    fun Extension.f() // Extension is an extension receiver
}

这里暗含的语义是,f()必须在Context的环境中才能调用, 这里就会出现多个 Receiver, 目前处理这种case只能借助with(),未来也许在1.6中可以期待多receiver语法的出现

增加 WebAssembly 支持

WebAssembly 未来必将成为 Web 开发的新标准,Kotlin 想要在 Web 端发挥价值必须对 Wasm 提供足够支持。Kotlin 官方目前已经组建了 Kotlin/Wasm 的专门团队,首先会对基本函数库以及Gradle提供支持,同时还会新增实验性的 JavaScript 的互操作功能。

新的 Kotlin/Native 垃圾回收器

Kotlin 正在实现全新的垃圾回收器,目前已经完成了原型,接下来会为其增加多线程支持。目前距离第一个版本的完成尚需一段时间,预计今年晚些时候会正式与大家见面。有兴趣的同学可以看一下 Roman Elizarov 刚发布的文章

优化 KMM 中 iOS 工具链

KMM 作为跨平台技术已经被广泛熟知和使用,接下来将持续优化在 iOS 的开发体验。除了底层对 Kotlin/Native 内存模型的优化,还有对于 Cocoapods 集成的体验改善,默认脚本中隐藏 packForXcode 的Gradle构建任务以降低项目搭建成本。

KMM 强化对苹果芯片的支持

鉴于使用苹果自家的芯片设备的市场份额越来越多,KMM 将加大对苹果芯片的支持,包括可以生成直接运行在苹果芯片的二进制代文件扥。另外还计划在 Gradle插件、Kotlinx库 等更多场景中添加对苹果芯片的适配。

进一步提高IDE的性能和稳定性

Kotlin团队将持续优化IDE的使用体验,目前 InteliJ IDEA 和 AndroidStudio 中的Kotlin插件已经使用多达30种的索引方式以加快源码的分析速度和准确性。另外未来还会持续优化Find Usages等常用功能的速度

新的Logo替换

随着1.5的发布,Kotlin升级了全新配色的Logo,形状上虽然与之前的变化不是很大,但是整体上相比小米的新Logo的变化要显得更有诚意。接下来将在所有社区中围绕全新风格的Logo进行升级替换。

image.png