到目前为止我们与 Swift 的旅程 - 一些笔记和反思

主要观点:团队基于过往多个项目经验,在 macOS 和 Linux 上用 Swift 开发新电子交易系统,分享对 Swift 的看法及遇到的挑战。
关键信息

  • 过去项目规模大、代码多、跨多操作系统,服务器端是高性能分布式集群系统,结合前端可视化和监控。
  • 选择 Swift 是因为能实现上下统一技术栈、满足商业需求(除 macOS 外需在 Linux 部署),且具备多种优势(安全、表达性强、语言发展快等)。
  • 对 Swift 生态系统满意,如服务器端开发可用包多、Foundation 重写等,但仍存在挑战。
    重要细节
  • Good stuff(优势)

    • 设计“默认安全”,严格类型检查初感挫折后收获大,代码运行更稳定,减少运行时错误,静态数据竞争安全有保障;语言表达性好,担心对新手复杂度增加但希望渐进披露能解决;近年语言特性发展快,如并发、内存所有权等;开放进化过程好,能看到路线图;ABI 稳定性重要。
    • 生态系统方面,服务器端可用包比预期广,对 Foundation 重写和 SwiftPM 插件满意,期待其在 Linux 集成。
  • Major challenges(主要挑战)

    • 集中在丰富动态库支持、API 打包和 Linux 平台支持方面,如 Linux 上动态库支持、库支持工件包、并发运行时分析工具、第三方 API 编译和运行时可用性检查、动态库整体支持等。
  • Minor challenges(次要挑战)

    • 并发和测试方面,并发故事未完成,如非可重入 actor 支持、Actor 的send支持等,单元测试基础设施在 Linux 上有待提升。
    • 工具和平台支持方面,Linux 支持有时滞后(如宏支持),新 Foundation 导致 Linux 构建时间长,构建稳定性和性能有问题,SwiftPM 模型对大型项目有问题,本地开发依赖较繁琐,LLDB 支持在 Linux 上有问题,Linux 上线程管理的 libdispatch 落后 macOS 实现。
    • 性能方面,诊断和解决性能问题有时困难,泛型仍有摩擦,KeyPath 性能有问题,需要更多性能最佳实践文档,缺少分析运行时行为的工具。

总结:团队欢迎对 Swift 在运行时性能、编译时间和整体稳健性方面的进一步投资,希望反馈对 Swift 发展有建设性贡献,感谢 Swift 相关人员和论坛参与者。

阅读 40
0 条评论