Kotlin的Roadmap每半年会进行一次更新,从中开发者可以观察到Kotlin团队未来的规划和工作重心。
近期Kotlin又更新了Roadmap,让我们看一下Kotlin团队未来又规划了哪些新项目。
全新的Kotlin编译器
为了提高Kotlin编译性能,Kotlin团队计划重写编译器前端,待重写完成编译速度将有望翻倍。为了配合新的编译器前端架构,现有的JVM、JS等编译器后端也需要重新实现。新的JVM后端已于近期完成并发布,其他工作还在进行中。此外,新的编译器将提供更好用的 Compiler Plugin API,允许开发者自定义更多编译期任务
新语法特性: Sealed whens,Multiple receiver等
语法方面未来会增加更多新特性。比较有代表性的是KT-12380的 Sealed whens
以及 KT-42435的 Multiple 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进行升级替换。