Airlock – 无需 fork() 即可在 macOS 上实现 Swift 崩溃隔离
Airlock 是一个 Swift 库,专为 macOS 设计,无需使用 fork() 系统调用即可实现崩溃隔离。它通过在独立进程中执行代码并获取返回结果,防止单个组件崩溃导致整个应用崩溃,同时避免了 fork() 在 macOS 上的性能开销和兼容性问题。
背景速读
- **Airlock** 是一个面向 Swift 开发者的开源库,能在不调用 `fork()` 的情况下为 macOS 程序提供“崩溃隔离”(crash isolation)——即让某个子任务崩溃后主进程不受影响。
- 传统上,类 Unix 系统用 `fork()` 创建子进程来实现隔离,但 macOS 的 `fork()` 存在已知问题(不安全且已被 Apple 废弃)。Airlock 绕过了这一限制。
- 其底层用到了 macOS 的 **Grand Central Dispatch(GCD)** 工作队列与 **mach exception handling**(Mach 异常处理机制)完成进程级隔离,同时共享内存以减少开销。
- 意义:对需要高可靠性的桌面应用(如 IDE、预览渲染器、第三方插件宿主)尤其有用,可以避免一个子模块的崩溃拖垮整个应用。该项目也反映了 Swift 在后端/系统编程领域不断拓展边界的趋势。