2019 年 GSoC 项目构想

此页面包含我们渴望在 2019 年 GSoC 期间开发的潜在项目构想列表。如果您想作为 GSoC 学生申请,请按照以下两个步骤开始:

  1. 通读此页面,并确定您感兴趣的项目构想。
  2. 查看开发论坛,与潜在的导师联系。

潜在项目

将 libSyntax 与编译器管道的其余部分集成。

描述

此项目旨在集成 libSyntax 树,并在编译器管道(类型检查器、诊断程序等)的其余部分中使用它。它将涉及

预期成果/益处/交付成果

一个健壮的架构,将解析功能与编译器管道的其余部分清晰分离,并为未来将增量重新解析集成到编译器管道的工作奠定基础。

所需技能

潜在导师

Rintaro Ishizaki

预期难度

中等/困难

为 SourceKit-LSP 实现代码格式化功能

描述

SourceKit-LSP 是 Swift 和基于 C 的语言的语言服务器协议的实现。该协议定义了基于范围的代码格式化功能,SourceKit-LSP 中缺少此功能。任务是为 Swift 添加代码格式化功能,使用可用的基于 swift-syntax 的代码格式化工具之一,例如 swift-format

预期成果/益处/交付成果

所需技能

潜在导师

Harlan Haskins, Ben Langmuir

预期难度

简单/中等

通过 SourceKit-LSP 为 Swift 标准库创作提供一流支持

描述

SourceKit-LSP 为 Swift 和基于 C 的语言提供全面的语言支持,适用于支持 LSP 协议的编辑器,例如 VSCode 和 SublimeText。它支持 SwiftPM 项目和 clang 的编译数据库。Swift 标准库有一个自定义的构建过程,这阻止了 StdLib 作者利用 SourceKit-LSP 来获得开发体验。任务是进行必要的更改,使 SourceKit-LSP 能够为 Swift 标准库的创作提供一流的支持。

预期成果/益处/交付成果

所需技能

潜在导师

Nathan Hawes

预期难度

简单/中等

Linux 上的 Swift 调试支持

描述

LLDB 是 Swift 的首选调试器。调试器比编译器更依赖于底层平台,因此,在操作系统之间保持实现对等性更具挑战性。该项目的最终目标是在 Linux 上提供与 macOS 上相同的调试体验。

预期成果/益处/交付成果

所需技能

C++ 知识。了解调试器的工作原理是一个加分项。了解 swift 对象内存布局是一个加分项,但可以在适应期内获得。

潜在导师

Davide Italiano

预期难度

简单/中等

Swift 标准库的可扩展性基准测试

描述

Swift 标准库包含大量性能关键型算法。我们需要能够跟踪它们的行为,并识别其整体性能的重大变化,最好是在这些更改进入代码库之前。

现有的 Swift 基准测试套件在衡量特定工作集的性能方面做得很好。但是,我们还需要跟踪算法性能如何随输入大小变化。

例如,一项略微提高了 400 元素字典的插入性能的更改,结果可能会显著降低 10 元素或百万元素字典的速度。为了就是否应用此类更改做出明智的决定,我们需要能够将性能与输入大小绘制成曲线;我们不能仅仅依赖于单个数值。

此项目的目标是通过可扩展性测试来增强现有的基准测试套件。任务是设计一个 Swift 模块,用于定义和运行此类基准测试,并提供一种自动收集、比较和可视化结果的方法。系统需要能够识别同一基准测试的两次运行之间是否存在重大变化,并且需要以一种让工程师一目了然地分析结果的形式呈现结果——例如下面的对数-对数图。

Set.intersection plot

预期成果/益处/交付成果

Swift 贡献者定义可扩展性基准测试的能力,以及在 CI 服务器上运行这些测试并在 GitHub PR 界面上直接报告结果的 PR 测试触发器。

所需技能

熟悉 Swift

潜在导师

Karoy Lorentey

预期难度

简单/中等