Airlock – fork()を使わないmacOS上のSwift向けクラッシュ分離
Airlockは、fork()を使わずにmacOS上のSwiftアプリケーションでクラッシュ分離を実現するライブラリ。プロセスレベルの隔離を提供し、サブプロセスがクラッシュしてもメインプロセスに影響を与えないようにすることで、信頼性を向上させる。
背景メモ
- Airlock は macOS 上の Swift アプリでクラッシュが発生しても、プロセス全体を落とさずに安全に復帰できる仕組みを提供する OSS ライブラリ。従来は fork() システムコールで実現していた分離機構を、fork() を使わずに macOS 上で実装した点が最大の特徴。
- fork() は macOS で不安定だったり使えない場面が多く(例えば App Sandbox 下や一部の Dispatch と相性が悪い)、現実的な代替が求められていた。Airlock はプロセス内に「隔離ゾーン(ロック)」を作り、そこで実行したコードがクラッシュしてもメインプロセスに影響を及ぼさない。
- Swift のエコシステムで「プロセス丸ごと保護」という発想は珍しい。同種の仕組みは Android の IsolatedProcess や Web ブラウザの Site Isolation に近いが、Airlock はそれを macOS ネイティブアプリのレイヤーで可能にした。
- 作者 Maxim Kotliar は Swift と分散システム周辺で活動する開発者。このプロジェクトはまだ実験的で、本番利用には注意が必要。