16.3.5 Kotlin 2023 年 Google Summer of Code

原文链接: https://kotlinlang.org/docs/gsoc-2023.html

16.3.5 Kotlin 2023 年 Google Summer of Code

本文包含 Kotlin 2023 年 Google Summer of Code 的项目构想列表。

注意: Google Summer of Code 2023 已经结束。如果你想参加 GSoC 2024,请查看这份项目构想列表。

项目构想

Kotlin 多平台 protobuf [困难,350 小时]

描述

为 protoc 添加 Kotlin/Common proto 支持,并提供 Kotlin/Native(iOS)运行时和 Objective-C 互操作。

动机

虽然 protobuf 有许多平台实现,但还没有办法在 Kotlin Multiplatform 项目中使用它们。

预期成果

设计并构建 Kotlin Multiplatform Protobuf 支持,最终向以下项目提交贡献:

所需技能(优先)

  • Kotlin
  • Objective-C
  • C++

Kotlin 编译器错误信息 [困难,350 小时]

描述

为 K2 Kotlin 编译器添加经过改进的编译器错误信息:提供更具可操作性、更详细的信息(就像 Rust 那样)。

动机

Rust 编译器的错误信息常被认为在所有编译器中最有帮助。Kotlin K2 编译器为改进 Kotlin 的编译器错误打下了很好的基础,但这一潜力尚未被充分挖掘。

预期成果

利用 StackOverflow 和其他数据源,找出对用户有重要价值的常见编译器错误,并向编译器提交贡献以改进这些错误信息。

所需技能(优先)

  • Kotlin
  • 编译器架构

Kotlin 多平台库 [简单或中等,175 或 350 小时]

描述

创建并(向 Maven Central)交付一些常用的 Kotlin Multiplatform 库,例如压缩、加密。

动机

Kotlin Multiplatform 仍然相当新,可以补充一些额外的库,它们要么是平台无关的(Kotlin/Common),要么具有各平台实现(expect/actual)。

预期成果

设计并交付至少一个 Kotlin Multiplatform 库,相较于其他目标平台(Kotlin/JS),更优先支持 JVM/Android 和 Kotlin/Native(iOS)。

所需技能(优先)

  • Kotlin
  • Objective-C

Groovy 到 Kotlin Gradle DSL 转换器 [中等,350 小时]

描述

该项目旨在创建一个 Groovy 到 Kotlin 的转换器,主要面向 Gradle 脚本。我们会从基本用例开始,例如当用户想把 Groovy 风格的依赖声明粘贴到 Kotlin 脚本中时,IDE 会自动进行转换。之后,我们会开始支持更复杂的代码结构以及整个文件的转换。

动机

Kotlin Gradle DSL 越来越流行,很快就会成为使用 Gradle 构建项目的默认选择。然而,许多关于 Gradle 的文档和资源仍然使用 Groovy,把 Groovy 示例粘贴到 build.gradle.kts 中需要手动修改。此外,许多围绕 Gradle 的新特性会首先在 Kotlin 中提供,因此用户会从 Groovy DSL 迁移到 Kotlin DSL。自动进行构建配置的代码转换将大大简化这一迁移过程,节省大量时间。

预期成果

一个 IntelliJ IDEA 插件,可以将 Groovy 代码转换为 Kotlin,主要面向 Gradle DSL。

所需技能(优先)

  • Gradle 基础知识
  • 解析器基础知识以及编译器的一般工作原理
  • Kotlin 基础知识

在 Eclipse 中编辑 Gradle KTS [中等,350 小时]

注意: 阅读关于该项目的博客文章

描述

改进在 Eclipse 中编辑 Gradle Kotlin 脚本(KTS)的体验。

动机

IntelliJ IDEA 和 Android Studio 对编辑 KTS Gradle 构建脚本有很好的支持,但 Eclipse 的支持则有所欠缺。Ctrl-点击跳转到定义、代码补全、代码错误高亮等都可以改进。

预期成果

向 Gradle Eclipse 插件提交贡献,改善编辑 KTS 时的开发者体验。

所需技能(优先)

  • Kotlin
  • Gradle
  • Eclipse 平台及其插件

改进 IntelliJ IDEA 的 Kotlin 插件中对参数转发的支持 [中等,350 小时]

描述与动机

Kotlin 插件在 IntelliJ IDEA 和 Android Studio 中提供 Kotlin 语言支持。在本项目中,你将改进该插件的参数转发支持。

“优先使用组合而非继承”是一条广为人知的原则。IntelliJ IDEA 对编写使用继承的代码提供了很好的支持(IDE 会给出补全和快速修复建议),但对使用组合而非继承的代码的支持还有待实现。

处理大量使用组合的代码时,主要问题在于参数转发。具体来说:

  • IDE 不会提示补全那些可以转发为参数、传给当前使用默认参数值的其他函数的参数声明。
  • IDE 不会重命名转发参数的链条。
  • IDE 不会提供任何快速修复,用可转发的参数填充所有必需的实参。

Jetpack Compose 就是一个很典型的例子,这类支持在那里会大受欢迎。作为 Android 用于构建 UI 的现代工具包,Jetpack Compose 大量使用函数组合和参数转发。由于 @Composable 函数有很多参数,处理它们很快就会变得繁琐。例如,androidx.compose.material.TextField 有 19 个参数。

预期成果

  • 改进 IntelliJ IDEA 中的参数与实参补全建议。
  • 实现 IDE 快速修复,建议用名称和类型相同的参数填充所有必需的实参。
  • 重命名重构会重命名转发参数的链条。
  • 围绕参数转发和参数很多的函数的其他所有 IDE 改进。

所需技能(优先)

  • 了解 Kotlin 和 Java
  • 能够浏览大型代码库

改进 kotlinx-benchmark 库的 API 与用户体验 [简单,175 小时]

注意: 阅读关于该项目的博客文章

描述

kotlinx-benchmark 是一个开源库,用于对用 Kotlin 编写的多平台代码进行基准测试。它有一个最基本的骨架,但缺少一些提升使用体验的功能,例如细粒度的基准配置(如时间单位、模式)、JVM 与 Kotlin/Native 基准测试之间的功能对等、命令行 API 以及现代 Gradle 支持。它的文档、集成测试和示例也相对滞后。

动机

该库已经实现,但有时难以正确使用,也让一些用户感到困惑。改善该库的用户体验将对 Kotlin 社区大有帮助。

预期成果

  • 该库拥有清晰且附带用法示例的文档。
  • 该库的 API 简单易用。
  • 用于对 Kotlin/JVM 代码进行基准测试的选项,也能用于对其他平台的代码进行基准测试。

所需技能(优先)

  • Kotlin
  • Gradle 内部机制

调试器中 Kotlin 协程的并行堆栈 [困难,350 小时]

注意: 阅读关于该项目的博客文章

描述

为 Kotlin 协程实现并行堆栈视图,以改善协程调试体验。

动机

目前,IntelliJ IDEA 对协程调试的支持非常有限。Kotlin 调试器提供了协程面板,让用户能够查看所有协程及其状态,但在调试包含大量协程的应用程序时帮助不大。JetBrains Rider 提供了并行堆栈功能,让用户可以在图形视图中查看线程及其堆栈跟踪,这可能是检查协程的一个很好的方式。

预期成果

使用 Kotlin 协程调试器 API 开发一个 IntelliJ IDEA 插件,为调试器添加协程的并行堆栈视图。寻找改进协程图形化表示的方法。

所需技能(优先)

  • Kotlin
  • Kotlin 协程
  • IntelliJ IDEA 插件开发