SSWG 2023 年度更新
每年,Swift 服务器工作组 (SSWG) 都会回顾近期的社区成就,并为来年制定重点领域。
自从上次更新以来,Swift on server 生态系统迎来了新项目,在结构化并发的采用方面取得了重大进展,改进了其工具,等等。
让我们首先回顾一下 2022 年取得的进展,然后展望未来 12 个月的目标。
2022 年回顾
持续关注生态系统的发展
生态系统已经引入了许多新的库,包括
- Kafka 客户端库,该库最初是一个 GSoC 项目
- Apple 发布的Cassandra 客户端库,并已提交给 SSWG 孵化流程
- 提交给 SSWG 孵化流程的 GraphQL 库
- RabbitMQ 库
- 一个 Memcached 客户端库被提议作为一个 GSoC 项目
还有三个新的软件包被提议并被 SSWG 的孵化流程接受
继续并发之旅
我们很高兴看到 Swift 并发在生态系统中的采用取得了显著进展。SSWG 孵化流程中的所有库都采用了新的 async
/await
API(如果适用),并正在继续推出 Sendable
支持。
我们还看到新 API 仅使用 Swift 并发,以及内部使用 Swift 并发编写的新项目的趋势,例如 Kafka 客户端库。
我们也对 自定义 Actor 执行器的引入感到兴奋。自定义 Actor 执行器的引入为并发代码的行为提供了更多控制,有助于提高性能,并将使我们能够将更多代码桥接到 Swift 并发中。
扩展工具
工具方面的显著亮点包括
- Visual Studio Code 的 Swift 扩展达到了 1.0.0 版本,并添加了新功能,例如 Swift Package 插件集成、测试覆盖率和测试资源管理器支持等。
- Swift Package 插件已在许多库中得到采用,从格式化程序和 linter,到代码生成器,例如 SwiftProtobuf、gRPC swift、Smoke 和 Soto。
- Swiftly 现在可以试用,并提供了一种在 Linux 上安装 Swift 和在版本之间切换的简单方法。
改进构建时间
Swift 项目的构建时间已经有了许多改进,包括编译器优化、新的构建系统和包管理器增强功能。
Swift Crypto Extras 继续添加新的 API,使库可以避免出售自己的 BoringSSL 副本。结合新的 Swift Certificates 和 ASN.1 库,这有助于像 WebAuthn Swift 这样的库避免包含自己的密码库,而是使用这些新的软件包和 API。这避免了多次编译相同的代码,并在编译期间提供了显著的速度提升。
此外,SSWG 成员 Gwynne 合并了 Swift 5.9 的 PR,该 PR 将 Linux 上的链接时间和内存使用量提高了 90%,这应该极大地帮助在受限环境中构建 Swift 应用程序。
提高服务器端 Swift 的采用率
SSWG 继续与社区合作,以提高 Swift 在服务器端的采用率
- SSWG 指南和孵化流程已迁移到 ,以使其更易于发现。
- 许多 Swift 服务器 软件包 已采用 Swift Package Index 文档托管,以使软件包的发现和使用更加容易。
- SSWG 创建了一项调查,以更好地了解 Swift on server 社区,并帮助确保将工作重点放在正确的领域。
- 我们观察到,专注于生产成功案例和技术深入探讨的会议演讲数量有所增加,这反映了 Swift on server 采用的成熟度和认可度。
2023 年目标
SSWG 认为,对于 Swift on server 而言,2023 年将是又一个令人兴奋的年份,并将继续关注以下目标
- 持续关注生态系统的发展
- 采用结构化并发
- 扩展文档和指南
- 改进工具
持续关注生态系统的发展
除了支持现有库之外,今年还有许多重点关注领域
- 一个 Swift 原生的 Memcached 客户端
- 一个通用的连接池库,以便于采用连接池
- 一个共享的中间件实现,用于 Smoke、Hummingbird 和 Vapor 等 Web 框架
- 鼓励采用分布式跟踪以完善 可观测性故事
- 更好地展示 Swift on server 的部署和成功案例
- 更好地展示 Swift 作为服务器语言的可见性
采用结构化并发
SSWG 认为结构化并发是一个关键特性,它将使 Swift on server 脱颖而出,并为生态系统带来明显的优势。
今年的部分计划包括
- 制作一份结构化并发采用指南,涵盖围绕
Sendable
、async
/await
、TaskGroup
和Task
API 的最佳实践。 - 将并发最佳实践应用于核心生态系统库,例如 swift-service-lifecycle。
扩展文档和指南
文档总是有改进空间的,SSWG 将继续扩展我们的指南和生态系统的使用文档。
SSWG 正在与 Swift 网站工作组合作,为 Swift on server 的新手添加指南,并确保现有指南易于查找。
SSWG 还计划扩展安全和部署等关键领域的文档,涵盖 GitHub 的 Dependabot 和 AWS 的 CDK 中的 Swift 支持等主题。
的一些即将到来的设计变更将有助于将 Swift on server 文档放在更突出的位置,以提高可见性。
改进工具
Swiftly 在 Linux 上管理多个工具链越来越受欢迎,SSWG 希望将其移植到 Windows 和 macOS。
正在探索许多其他工具增强功能,包括
- 为 GitHub 的 dependabot 添加 Swift Package Manager 支持
- 研究 Canonical 的 Chiseled Containers,看看我们是否可以提供占用空间非常小且具有强化安全配置文件的 Swift 容器
- 研究我们可以使用 Swift Package 插件做什么来改善 Swift on server 的部署体验
SSWG 新成员
SSWG 很高兴地欢迎四位新成员
- Dave Moser - Dave 于五月加入 SSWG。Dave 是解决方案架构团队的一员,负责推动 AWS 上的 Swift,并且在过去几年一直参与 Swift 服务端的工作。
- Jimmy McDermott - Jimmy 也于五月加入 SSWG,并代表 Transeo。自从 Vapor 的早期阶段,Jimmy 就已经参与 Swift 服务端的工作,并且他是 Transeo 的 CTO。他和他的团队使用 Vapor 将服务扩展到数百万用户。
- Franz Busch - Franz 于 10 月 23 日正式加入 SSWG,并在 Apple 的 SwiftNIO 团队工作。
- Joannis Orlandos - Joannis 在今年年初加入了 SSWG。Joannis 曾是 Vapor 的核心贡献者,并维护着生态系统中的许多库,包括 MongoKitten。
Franz 接替了 Fabian Fett,后者在 SSWG 完成了两年的任期。Dave 接替了 Todd Varland,后者也在 SSWG 完成了长期任期。Kaitlin Mahar 在 MongoDB 更改了职位,也在 SSWG 完成了数年的工作。我们非常感谢他们在 SSWG 任职期间所做的一切,并感谢他们的辛勤工作!
前进方向
如果您有任何想法想与 SSWG 分享,或者想向 SSWG 孵化流程推荐库,请通过论坛或 Slack 与我们联系。