Swift悄悄潜入浏览器,MiniSwift将如何改变Web开发?
浏览器里的 Swift 革命:MiniSwift 这次真的要改变 Web 开发了
说实话,大多数开发者一想到 Swift 开发,脑子里蹦出来的还是 Xcode、macOS、苹果生态那套东西。但今天我要说的这件事,可能会让你重新思考一下——
有人刚刚在浏览器里,塞下了一个完整的 Swift 编译器。词法分析、语法解析、类型检查、优化,全部在浏览器 tab 里跑完了。
这就是 MiniSwift,不得不说,这是我今年见过最硬核的技术项目之一。
这项目到底做了什么
MiniSwift 团队写了大约 71,000 行纯 C 代码,实现了一整套 Swift 编译器流程。注意,这里面:
- 没有 LLVM
- 没有 Clang
- 没有 binaryen
就只是 C 语言,把 Swift 代码直接编译成 WebAssembly。
这意味着什么?你写 Swift 代码——包括 SwiftUI、@State、NavigationStack、Toggle 那一套声明式 UI——他们的浏览器端编译器会把它 token 化、解析、做类型检查,然后降级到自定义的 UIIR(UI 中间表示)。最后画布渲染器把它绘制到一个虚拟 iPhone 界面里。
点一下按钮,@State 变化,他们的差分引擎只会精准更新受影响的部分。没有 iframe,没有 JavaScript 胶水层,也没有 native 运行时。就是 Swift → C 编译器 → WebAssembly → 画布像素,这么简单。
这对开发者意味着什么
一直以来,大家都说 Web 是那个"通用平台"。但要做出原生体验级别的产品,往往意味着要么放弃 Web 技术,要么维护好几套代码库。
MiniSwift 展示了一种不一样的可能性——你写一份 Swift 代码,编译一下,WebAssembly 能跑到哪你就部署到哪。
几个关键点:
真正的跨平台潜力:你在 iPhone 上跑的同一份 Swift 代码,改都不用改,直接在浏览器里跑起来。这不是转译,也不是什么抽象层——就是同一套流程,换了个输出目标。
不用装任何东西:整个 IDE 体验全在浏览器里。分享个链接,对方秒秒钟就能开始写 SwiftUI 代码并预览效果。
浏览器里写 Shader 编程:项目还带了 libMetal,能把 Metal Shading Language(MSL)编译成 WGSL。改改 shader 代码,鼠标动一动看效果。全程 C 语言实现,从零开始。
技术层面有多猛
来拆解一下这个项目到底跑了些什么:
- 71,000 行 C 代码:编译器、标准库、Foundation、SwiftUI、Metal 支持全在里面
- 52 个 SwiftUI 视图:stacks、shapes、paths、canvas、maps 全覆盖
- 75 个修饰符:布局、样式、手势、sheets、alerts 都能用
- 0 个外部依赖——没有 npm、没有 LLVM、没有 Clang
编译器流程本身也很漂亮:.swift → Lexer → Parser → Sema → IR Gen → SSA → Optimizer → WebAssembly → .wasm
Foundation 功能也基本补齐了:日期/日历运算、URL 处理、JSON 编解码、UUID 生成、UserDefaults、Unicode 17.0 支持……这些都可以通过 JavaScript bridge 调用。
值得说说他们的理念
MiniSwift 团队有个观点在当今软件开发圈挺稀有的:所有东西都是自己造的。
- 没有 React
- 没有 Web Components
- 没有私有运行时
751 个测试用例,100% 通过率,零回归政策。
这就是最纯粹的软件工程——把一个问题理解透,然后用第一性原理去实现,而不是依赖叠依赖、轮子叠轮子。
对行业的影响
不管 MiniSwift 将来是成为主流工具还是仅仅作为一个技术展示,它证明了很重要的一点:浏览器能做到的事情,边界还在不断扩展。
WebAssembly 已经不只是用来移植老旧的 C++ 代码库了——它正在成为一个正经的现代语言编译目标。
对于创业者和开发者来说,这也带来了新的问题:
如果你写一份 Swift 代码就能部署到所有平台,那你的架构会怎么变?招聘、入职、Web 和移动团队之间的代码共享,这些又会受到什么影响?
我们正处在一个浏览器能力进化得比很多开发者意识到的更快的时代。MiniSwift 这类项目不是单纯的技术玩具——它们是 Web 平台未来走向的一个预告。
问题不在于这类技术会不会重要。
而在于——当它到来的时候,你准备好了吗?