Hacker News 中文摘要

RSS订阅

瓢虫:关闭此议题,因不再考虑采用Swift -- Ladybird: Closing this as we are no longer pursuing Swift adoption

文章摘要

Ladybird浏览器项目在GitHub上记录了阻碍Swift 6.0升级的技术问题,主要涉及代码兼容性和功能实现方面的挑战。该问题发布于2024年8月,目前仍在讨论中。

文章总结

Swift 6.0 迁移阻碍问题清单

项目背景
Ladybird 浏览器项目计划迁移至 Swift 6.0,但在开发过程中发现了一系列技术障碍。该问题清单(#933)由开发者 ADKaster 于 2024 年 8 月 2 日创建,详细记录了阻碍 Swift 6.0 支持从实验状态转向正式状态的各类问题。


核心问题分类

  1. Swift 语言层问题

    • C++ 互操作性缺陷
      • Optional 类型与 C++ 的 ABI 不兼容(swiftlang/swift#75593
      • 返回 swift::Optional<CxxType> 导致应用崩溃(swiftlang/swift#79767
      • 无法直接传递 swift::String 或视图类型至 Swift 而不拷贝数据
    • 标准库兼容性
  2. CMake 工具链问题

    • Swift + Ninja 未正确处理 macOS 部署目标(CMake#26174
    • Swift 编译器未遵循 CMAKE_INSTALL_NAME_DIR 设置(CMake#26175
  3. Ladybird 项目特有障碍

    • 模块映射(modulemap)与系统头文件冲突(PR#965
    • 调试模式下 Swift 前端崩溃(Issue#1101

解决进展与临时方案

  • 已修复问题
    • C++ 执行头文件循环依赖(通过注释 <execution> 临时解决)
    • CMake 的 install_name 问题(MR#9692 已合并)
  • 待解决/需上游支持
    • Swift 与 C++ 的 Optional 类型互操作(需 Swift 社区进一步优化)
    • 垃圾回收集成方案未明确(论坛讨论

后续动态

  • 2025 年 2 月 17 日,项目成员 awesomekling 宣布不再采用 Swift,转而探索其他技术方案(如 Zig),并关闭此议题。
  • 社区反馈显示对决策的复杂情绪(16 个😕反应 vs 4 个👍),部分开发者建议考虑 Zig 等替代方案。

完整讨论记录:参见 GitHub Issue #933

评论总结

总结评论内容:

  1. 对放弃Swift的支持观点:
  • 认为Swift与苹果绑定过深,不如使用现代安全实践的C++子集 "Swift is too tied to Apple...relative to a subset of C++ written with contemporary memory safety practices" (drnick1)
  • 批评Swift语言设计差、编译慢、不适合系统编程 "Swift is a poorly designed language, slow to compile, visibly not on path to be major system language" (stephc_int13)
  1. 项目决策相关讨论:
  • 提交记录显示因长期无进展而放弃Swift "After making no progress...remove it from the codebase" (incognitojam)
  • 质疑为何选择Swift而非Rust "Why...not with Rust? Does Rust not have a better history of C++ interop?" (meisel)
  1. 其他相关讨论:
  • 对项目未来语言的猜测(Jakt/Rust) "Does that mean their own programming language, Jakt is back on the table?" (losvedir) "When does the migration to Rust start?" (upmind)
  • 对语言设计者的批评 "Everything Chris Lattner has done has been a 'successful mess'" (pbohun)
  1. 中立观点:
  • 表示只要支持Linux就愿意试用 "As long as it runs on Linux, I'm willing to test drive it" (WCSTombs)