关于 wendy-swift
面向 WendyOS Linux 边缘开发的 Swift 包生态指南,按领域整理包推荐,并提供 Linux 兼容性检查和包发现方法。
主要功能
- 01按领域整理 Swift 包
- 02覆盖网络、数据库与 AI
- 03列出硬件和观测工具
- 04提供 Linux 兼容性检查表
- 05指导使用 Swift Package Index
适用场景
- 01为 WendyOS 项目筛选 Linux 可用的包
- 02检查依赖是否需要 Darwin 或 Xcode
- 03查找网络或数据库相关 Swift 包
- 04评估包的 Swift 版本和平台支持
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ wendylabsinc/ claude-skills --skill wendy-swift安装后在 Claude Code 中输入/wendy-swift确认已加载。
详细介绍
WendyOS 的 Swift 包生态系统
此技能梳理了用于 WendyOS(Linux)边缘开发的 Swift 包生态系统,提供按领域整理的精选推荐,并指导如何通过 Swift Package Index 发现其他包。
精选包目录
Web / HTTP 服务器
| 包 | 使用场景 | URL | Linux |
|---|---|---|---|
| Hummingbird 2 | 轻量级 HTTP 服务器、路由、中间件 | https://github.com/hummingbird-project/hummingbird | 完全支持 |
| Vapor | 功能齐全的 Web 框架,包含 ORM、身份验证和会话 | https://github.com/vapor/vapor | 完全支持 |
网络 / SwiftNIO
| 包 | 使用场景 | URL | Linux |
|---|---|---|---|
| SwiftNIO | 事件驱动的网络框架,支持 TCP/UDP | https://github.com/apple/swift-nio | 完全支持 |
| AsyncHTTPClient | HTTP/1.1 和 HTTP/2 客户端 | https://github.com/swift-server/async-http-client | 完全支持 |
| gRPC Swift 2 | 基于 SwiftNIO 和 Swift 并发构建的 gRPC 客户端和服务端 | https://github.com/grpc/grpc-swift-2 | 完全支持 |
| Swift OpenAPI Generator | 根据 OpenAPI 规范生成客户端/服务端代码 | https://github.com/apple/swift-openapi-generator | 完全支持 |
数据库
| 包 | 使用场景 | URL | Linux |
|---|---|---|---|
| PostgresNIO | 基于 SwiftNIO 构建的非阻塞 PostgreSQL 客户端 | https://github.com/vapor/postgres-nio | 完全支持 |
| GRDB.swift | SQLite 工具包,包含查询构建器、迁移和 WAL | https://github.com/groue/GRDB.swift | 完全支持 |
| Valkey Swift | Valkey/Redis 客户端,支持集群、发布/订阅 | https://github.com/valkey-io/valkey-swift | 完全支持 |
机器学习 / AI 推理
| 包 | 使用场景 | URL | Linux |
|---|---|---|---|
| llama.cpp | 带 Swift 绑定的大模型推理 | https://github.com/ggerganov/llama.cpp | 完全支持(带 Swift 绑定的 C 库) |
| whisper.cpp | 语音转文本推理 | https://github.com/ggerganov/whisper.cpp | 完全支持(带 Swift 绑定的 C 库) |
| MLX Swift | 面向 Apple Silicon 的机器学习框架 | https://github.com/ml-explore/mlx-swift | 仅支持 macOS/Apple Silicon — Linux 上不可用 |
对于 llama.cpp 和 whisper.cpp,可通过 Swift 的 C 互操作直接使用 C API,或使用社区提供的 Swift 封装包。这些库可在 ARM64/AMD64 Linux 上原生编译。
硬件 / IoT
| 包 | 使用场景 | URL | Linux |
|---|---|---|---|
| SwiftyGPIO | 在 Linux SBC 上使用 GPIO、SPI、I2C、PWM、UART | https://github.com/uraimo/SwiftyGPIO | 完全支持(仅 Linux) |
摄像头/视频访问方式: 在 Linux 上使用 Swift 的 C 互操作,通过 Video4Linux2 (V4L2) 采集摄像头画面。对于 NVIDIA Jetson,可通过 Process 使用 GStreamer 管道,或使用 C 绑定实现硬件加速视频处理。
串口通信: 在 Linux 上使用 Swift 的 C 互操作,通过 termios 访问串口。SwiftyGPIO 也为常见 SBC 提供 UART 支持。
可观测性
| 包 | 使用场景 | URL | Linux |
|---|---|---|---|
| swift-log | 结构化日志 API | https://github.com/apple/swift-log | 完全支持 |
| swift-metrics | 指标 API(计数器、量表、计时器) | https://github.com/apple/swift-metrics | 完全支持 |
| swift-otel | 为 swift-log、swift-metrics 和分布式追踪提供 OpenTelemetry 后端 | https://github.com/swift-otel/swift-otel | 完全支持 |
| swift-distributed-tracing | 分布式追踪 API | https://github.com/apple/swift-distributed-tracing | 完全支持 |
序列化 / Codable
| Package | 用途 | URL | Linux |
|---|---|---|---|
| swift-protobuf | 支持 Codable 的 Protocol Buffers | https://github.com/apple/swift-protobuf | 完全支持 |
| msgpack-swift | MessagePack 编码器/解码器,符合 Codable 标准 | https://github.com/fumoboy007/msgpack-swift | 完全支持 |
| Yams | YAML 解析器和生成器 | https://github.com/jpsim/Yams | 完全支持 |
并发 / 工具
| Package | 用途 | URL | Linux |
|---|---|---|---|
| swift-collections | Deque、OrderedSet、OrderedDictionary 等 | https://github.com/apple/swift-collections | 完全支持 |
| swift-algorithms | 序列/集合算法(分块、组合等) | https://github.com/apple/swift-algorithms | 完全支持 |
| swift-async-algorithms | 异步序列算法(合并、combineLatest、防抖等) | https://github.com/apple/swift-async-algorithms | 完全支持 |
| swift-argument-parser | 类型安全的命令行参数解析 | https://github.com/apple/swift-argument-parser | 完全支持 |
Linux 兼容性检查清单
将 Swift Package 添加到 WendyOS 项目之前,请确认:
- 没有仅适用于 Darwin 的导入 — 检查是否有
import Darwin、import AppKit、import UIKit、import CoreFoundation(某些 Foundation API 可在 Linux 上使用,但并非全部) - Foundation 兼容性 — 避免使用在 Linux 上尚未实现的 API:
FileManager可以使用,但NSAppleScript、NSUserDefaults、Process(部分可用)等可能无法使用 - 不依赖 Xcode 构建系统 — Package 必须能通过
swift build(SPM)构建,而不需要 Xcode 专属设置 - ARM64/AMD64 CI/测试 — 检查该 Package 是否有 Linux CI(使用
ubuntu运行器或 Swift Docker 镜像的 GitHub Actions) - C 依赖项 — 如果 Package 封装了 C 库,请确保该库可在 ARM64/AMD64 Linux 上使用(例如通过 apt)
- Swift 版本 — WendyOS 使用较新的 Swift 工具链;请确认该 Package 支持 Swift 5.9+
在 Swift Package Index 上查找 Package
Swift Package Index 是社区的 Package 搜索引擎。
如何搜索
- 前往 https://swiftpackageindex.com 并输入搜索词
- 使用 Platform 筛选器选择 Linux,查找兼容 Linux 的 Package
- 查看每个 Package 页面上的 Compatibility Matrix — 它会显示经过测试的 Swift 版本和平台
评估 Package 质量
- 最近活动 — 优先选择过去 6 个月内更新过的 Package
- Swift 版本兼容性 — 应支持 Swift 5.9 或更高版本
- 平台徽章 — 查看 Package 页面上的 Linux 徽章
- 许可证 — 商业用途优先选择 Apache 2.0 或 MIT
- SSWG 状态 — 由 Swift Server Work Group 孵化的 Package 已经过生产环境验证
搜索 URL 模式
直接搜索:https://swiftpackageindex.com/search?query=YOUR_TERM
最佳实践
- 优先使用精选列表 — 上方列出的包已通过审查,兼容 Linux 和 WendyOS
- 优先选择 SSWG 包 — Swift Server Work Group 的包(SwiftNIO、swift-log、async-http-client、Hummingbird、PostgresNIO)对 Linux 提供了可靠的支持保障
- 留意特定架构的代码 — Swift 包会从源代码编译,因此 ARM64/AMD64 通常都能自动支持,除非包包含 x86 专用汇编、SIMD 内部函数或受架构条件限制的
#if代码块 - 避免仅适用于 Darwin 的依赖项 — 即使是传递依赖项也可能导致 Linux 构建失败;使用
swift package show-dependencies检查依赖树 - 固定到稳定版本 — 在 Package.swift 中使用
.upToNextMajor(from:)或.upToNextMinor(from:),而不是基于分支的依赖项 - 必要时查阅 Swift Package Index — 如果精选列表未涵盖所需内容,请在 swiftpackageindex.com 上使用 Linux 平台筛选条件搜索
- 尽早在 Linux 上测试 — 尽早在 WendyOS 设备或 Linux 虚拟机上构建并运行,以便在问题叠加前发现缺失的 Foundation API 和仅适用于 Darwin 的依赖项
评论
支持 Markdown