GSoC 2023 项目构想

此页面包含我们在 GSoC 2023 期间热衷于开发的潜在项目构想的非详尽列表。如果您想作为 GSoC 学生申请,请按照以下步骤开始

  1. 通读此页面和 Google Summer of Code 指南,
  2. 确定或提出您自己感兴趣的项目构想。
  3. 查看开发论坛以联系潜在的导师。
    • 当在论坛上发起关于您对参与他们提供的特定项目感兴趣的帖子时,请随时提及项目导师。

今年在论坛上发布关于 GSoC 的帖子时,请使用gsoc-2023标签,以便于识别。

联系导师的技巧

Swift 论坛由 Discourse 提供支持,Discourse 是一个讨论论坛平台,也内置了许多垃圾邮件规避机制。如果这是您第一次加入论坛,您可能无法向导师发送私信,因为这需要最低限度的前期参与才能自动启用“发送私信”功能。

如果您想私下联系导师,而不是发布公共论坛帖子,并且论坛不允许您发送私信(尚未),请直接通过电子邮件联系 Konrad Malawski,邮箱地址为ktoso AT apple.com,并在电子邮件主题中添加[gsoc2023]标签,并描述您想从事的项目——我们将把您转交给合适的导师。

潜在项目

Swift 开发体验

在 SwiftParser 中实现增量重新解析

项目规模:中等

推荐技能

描述

用 C++ 编写的 Swift 解析器能够在编辑后增量重新解析语法树,重用未更改的语法节点。当我们将解析器重新实现为 Swift时,此功能未实现。

此项目的目标是将旧的增量重新解析设计移植到 Swift,设置单元测试以确保增量重新解析产生与从头开始解析树相同的结果,并扩展旧的增量重新解析设计以重用更多语法节点。

请注意,在实现 SwiftParser 后,增量重新解析语法树的功能已从 C++ 代码库中删除。查看 release/5.6 分支以查看增量解析的最后一个版本。此拉取请求最初在 C++ 中实现了增量解析。

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

此项目的目标是在新解析器中实现 Swift 代码的增量重新解析,并高度关注性能,以使解析时间保持在 10 毫秒以下,即使对于包含数千行代码的文件也是如此

潜在导师

Swift/C++ 互操作

扩展 C++ 标准库的 Swift Overlay

项目规模:中等

推荐技能

描述

Swift 和 C++ 互操作性是一项持续进行的开源计划,旨在使 C++ API 从 Swift 中使用起来既方便又安全(反之亦然)。该项目的一个重要部分是通过对 Swift 用户来说很自然且同时安全高效的 API,将 C++ 标准库呈现给 Swift 用户。

C++ 标准库的 Swift Overlay 是一个 Swift 模块,其中包含 C++ 标准库类型的 Swift 扩展。特别是,它提供了初始化器,允许客户端在 C++ 中的 std 类型和 Swift 中相应的类型之间进行转换,例如 std::string 到 Swift.String,反之亦然。作为此项目的一部分,参与者将确定更多可以提供此类转换初始化器的 API,并实现它们。例如,可以向 std::map 添加一个初始化器,该初始化器将 Swift.Dictionary 的实例作为参数。

他们还将审查常用 C++ 标准库类型的 API 表面,并提高它们从 Swift 使用时的工效学。

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

设计和实现新的 C++ 标准库 Overlay 功能,该功能允许在更多 C++ 类型和 Swift 类型之间进行转换,并扩展可以从 Swift 访问的 C++ std API。

潜在导师

Swift Package Manager

Swift 脚本编写

项目规模:中等

推荐技能

描述

Swift 是一种有趣而强大的语言,人们也经常希望将其用于脚本编写需求。虽然今天可以用 Swift 编写简单的脚本,但在这些脚本中无法使用 Swift 软件包,这剥夺了该语言的完整健壮性。在此项目中,我们将定义一种用户友好的语法,用于在脚本中表达软件包依赖项,一种解析此类依赖项的方法,并将解析集成到 Swift 命令行工具和 REPL 中。参与者将参与协作设计、技术写作和软件开发。

有一个提案概述了先前 GSoC 提案的初始设计,该设计可以用作此工作的基础。它可能需要一些润色,弄清楚细节,项目可以旨在实现其基本版本。

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

此项目的目标是实现对定义脚本中使用的软件包依赖项的基本支持。

潜在导师

可自定义的软件包模板

项目规模:中等

推荐技能

描述 SwiftPM 当前支持一些硬编码模板,这些模板可以作为用户项目的起点。由于对此类模板有很多不同的需求,因此应该有一种方法来自定义这些模板并与他人共享它们,而无需更改 SwiftPM 代码库本身。使模板具有交互性也可能很有用,例如,用户可以在默认包含测试之间进行选择,或者选择一组要包含的依赖项。在此项目中,我们将定义模板格式,设计用于使其交互的 API,并将这些以用户友好的方式集成到 SwiftPM 命令行工具中。

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

潜在导师

服务器端 Swift

Memcached 客户端

项目规模:中等

推荐技能

描述

我们希望使用 SwiftNIO 作为网络堆栈,创建 Memcached 客户端的 Swift 原生实现。目标是实现 Memcached 的元命令协议,以发送命令和接收响应。为了实现这一点,我们需要实现请求编码和响应解码。此外,我们的客户端应支持请求流水线以提高其性能。

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

目标是支持基本命令并将其公开为异步优先的 Swift API。

潜在导师

Swift-DocC

Swift-DocC 创作本地化支持

项目规模:中等

推荐技能

预期难度:中等

描述

Swift-DocC-Render 最近添加了对渲染本地化文档的支持。但是,Swift-DocC 目前仅支持以单一语言创作文档。

此项目的目标是通过增强 Swift-DocC 编译器以支持本地化的 DocC 目录输入并生成与 Swift-DocC-Render 现有本地化支持兼容的输出来设计和实现对编写本地化文档的支持。参与者将参与协作技术设计和 Swift-DocC 开发。

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

用于创作本地化文档的技术设计和实施。

潜在导师