GSoC 2020 项目构想
此页面包含我们在 GSoC 2020 期间渴望开发的潜在项目构想列表。如果您想作为 GSoC 学生申请,请按照以下两个步骤开始
- 通读此页面,找出您感兴趣的项目构想。
- 查看开发论坛以联系潜在的导师。
潜在项目
编译器诊断消息的本地化
描述
诊断在编程语言体验中起着非常重要的作用。对于开发者生产力来说,编译器能够在任何情况下(尤其是不完整或无效的代码)产生适当的指导至关重要。
目前,诊断消息仅提供英文版本,这限制了它们对任何精通该语言的人的用处。我们希望来自任何背景的人都能够学习和高效地使用 Swift 编程语言,因此,作为实现此目标的第一步,编译器应该能够以用户熟悉的任何语言生成诊断消息。
预期成果/益处/可交付成果
- 扩展现有的诊断引擎,使其能够接受首选语言环境(例如,通过编译器标志和/或配置文件)
- 实施一种新的诊断消息存储格式,该格式易于扩展以支持不同的语言
- 允许修改诊断消息,而无需重新构建编译器(作为一项额外的好处,这允许扩展非代码贡献到项目的范围)
所需技能
C++ 知识
潜在导师
Pavel Yaskevich
预期难度
简单/中等
联系方式
在 swift 论坛中发帖,并带有标签 gsoc-2020
,以获取更多信息
Swift 模块浏览器
描述
如今,.swiftmodule
格式相当不透明,我们工具可以提供的最佳见解是使用 llvm-bc-analyzer
完整转储整个模块。提供一个原生工具来探索 Swift 模块的内容将是一个令人难以置信的调试辅助工具和教学工具。它还将使学生接触到 Swift 编译器的核心组件。
预期成果/益处/可交付成果
- 进一步了解序列化机制,尤其是何时以及为何失败。
- 交付一个命令行/GUI 工具,用于可视化 swift 模块的内容
所需技能
C++ 的粗浅知识,熟悉 Swift
潜在导师
Robert Widmann、Alexis Laferriere
预期难度
中等
联系方式
在 swift 论坛中发帖,并带有标签 gsoc-2020
,以获取更多信息
类型检查器类型推断的跟踪
描述
Swift 使用编译时类型推断来实现清晰简洁的语法。有时,程序员不清楚为什么 Swift 在他们的源代码中推断出特定类型。探索类型推断来源的工具将消除类型检查器推断出程序员不期望的类型时的困惑,并且将极大地增强他们对语言的理解。
预期成果/益处/可交付成果
- 深入了解 Swift 的类型推断约束系统的工作原理。
- 实现导致求解器推断类型的约束跟踪,以及一个编译器标志,用于将带有详细类型推断来源的解决方案写入文件。
- 交付一个交互式命令行工具,用于可视化类型推断的来源。这将是一个单独的命令行工具,它读取详细的类型推断信息,并允许用户查询解决方案中特定类型的类型推断来源。
所需技能
熟悉静态类型检查的概念
潜在导师
Holly Borla
预期难度
中等
联系方式
在 swift 论坛中发帖,并带有标签 gsoc-2020
,以获取更多信息
Swift 的 LTO 支持
描述
Swift 支持多个级别的优化,包括允许跨源文件进行优化的全模块优化。扩展对优化的支持以启用 LTO 优化将允许更积极的内联、死代码删除和轮廓优化。
预期成果/益处/可交付成果
- 深入了解 Swift 编译器管道
- 实现一个
lld
插件以允许链接时优化- lld 插件将反序列化编译器发出的 LLVM IR,调用 Swift LTO 管道,并对统一的 LLVM 模块执行至少一个优化过程。
- 在标志下将 LTO 优化集成到编译管道中
- 在 Linux 或 Windows 构建中使用 LTO 对标准库进行基准测试
所需技能
需要 C++ 经验,因为这将涉及处理大型 C++ 代码库。
潜在导师
Saleem Abdulrasool
预期难度
中等
联系方式
在 swift 论坛中发帖,并带有标签 gsoc-2020
,以获取更多信息
为 SourceKit-LSP 实现语义高亮
描述
SourceKit-LSP 是 Swift 和基于 C 的语言的语言服务器协议的实现。有一个提案,将语义高亮支持添加到协议中。该项目是在 SourceKit-LSP 中使用来自 sourcekitd 的语义高亮支持为 Swift 实现新的语义高亮 API。
预期成果/益处/可交付成果
- 为 Swift 实现提议的语义高亮 LSP API,并关注性能和稳健性
- 确保 SourceKit-LSP 的语义高亮功能在 Visual Studio Code 中使用时效果良好。
所需技能
- Swift(熟悉)
潜在导师
Ben Langmuir
预期难度
简单/中等
联系方式
在 swift 论坛中发帖,并带有标签 gsoc-2020
,以获取更多信息
Linux 上的 Swift 调试支持
描述
LLDB 是 Swift 的首选调试器。调试器比编译器更依赖于底层平台,因此,在操作系统之间保持实现对等性更具挑战性。该项目的总体目标是在 Linux 上提供与 macOS 上相同的调试体验。
预期成果/益处/可交付成果
- Linux 上禁用了几个测试(由于历史原因,或者因为提交的原始作者没有时间调查),应该审核并重新启用这些测试。
- LLDB 使用 Swift Remote Mirrors (stdlib/Reflection) 来处理动态类型解析的各个方面。这在 macOS 上运行良好,但在 Linux 上完全运行需要做一些工作。这将有助于简化/使关键代码路径更健壮,并完全支持 Linux 上的库演进(弹性)。
- Foundation 中的许多数据结构在 Linux 和 macOS 之间有所不同。我们可以为它们编写数据格式化程序(漂亮的打印机)。
- Ubuntu 是目前唯一完全支持的操作系统。有人报告在其他发行版上成功运行 swift-lldb,如果我们能够修复由于库差异等引起的错误,那就太好了。
所需技能
C++ 知识。了解调试器的工作原理是一个加分项。了解 swift 对象内存布局是一个加分项,但可以在实习期内获得。
潜在导师
Davide Italiano/Adrian Prantl
预期难度
简单/中等
联系方式
在 swift 论坛中发帖,并带有标签 gsoc-2020
,以获取更多信息
Swift 中的服务器分布式追踪
描述
在 Swift 中构建大规模分布式系统需要与旨在在 iOS 或 macOS 上运行的传统 Swift 程序截然不同的解决方案。服务器系统必须扩展以处理数百万个并发请求,并且该团队正在设计库和工具,使用户能够以富有表现力和安全的方式编写和检查此类高度并发的系统。
预期成果/益处/可交付成果
- 基于 OpenTracing 规范实现分布式追踪库。
- 演示该实现可以用于 Dispatch 和 SwiftNIO 的上下文中。
- 演示将库发出的数据导出到可观察性工具,例如 Zipkin。
所需技能
- 并发模型和分布式系统的知识。
- 熟悉 Swift。
- 熟悉 OpenTracing 或其他可观察性规范。
- 具有 Zipkin 或 Honeycomb 等分布式追踪系统的经验是一个加分项。
潜在导师
Konrad Malawski、Tom Doron
预期难度
中等
联系方式
在 swift 论坛中发帖,并带有标签 gsoc-2020
,以获取更多信息