有个Rust语言编写的实验性开源项目:Kakehashi,能让 macOS 的二进制文件直接在 Linux 上跑。
这个项目讨论最多不是「能不能跑」,而是「这真的合法吗」「这是不是 AI 写的」「Darling 项目做了十年都没搞定,你凭什么」。
到底干了件什么事
先说清楚 Kakehashi 在干什么。
你的 Mac 上跑的 .dylib 文件、终端里的 brew 装的那些 CLI 工具,它们在底层依赖 macOS 的系统调用接口、libSystem 动态库、以及 Mach-O 这种二进制格式。这些东西 Linux 一概不认识——就像你拿一个美标插头往中国插座里怼,物理上能塞进去,但没电。
Kakehashi 做的事情就是:在 Linux 的用户空间里,假装自己是 macOS。
- 它读到 Mach-O 格式的二进制文件,能解析、加载、映射内存
- 它实现了一套独立的 libSystem,把 macOS 的 BSD 系统调用翻译成 Linux 能理解的版本
- 它不需要内核模块,不需要 root 权限,纯用户空间操作
目前已经验证能跑的东西包括:7-Zip(多线程压缩,跑了 8000 个文件的测试树)、curl(200 多条命令通过自动化测试)、以及 Xcode Tools 里的 Git 基础命令。
为什么是 Rust
这个问题问得特别好。因为上一个做类似事情的项目叫 Darling,它用 C 和 Objective-C 写了十几年,到今天还在挣扎。
Kalinkin 选 Rust 不是跟风。他专门回应过这个问题:Darling 依赖内核级模拟,架构上倾向于「完整实现 macOS 运行时」,所以代码量巨大、依赖复杂。Kakehashi 从一开始就选择走轻量级路线——不做完整的 Cocoa/AppKit 兼容,只聚焦 CLI 工具,用 Rust 的类型系统和内存安全保证来减少低级错误。
换句话说,Rust 在这里的价值不是「性能」,而是「安全地做脏活」。系统调用翻译层本质上是在两个操作系统之间做大量底层数据格式转换,最容易出 segfault 和内存泄漏的地方。Rust 的 ownership 模型和 unsafe块的显式管理,让这类代码的可维护性比 C 高了一个数量级。
技术难度到底有多大
「从历史经验看,考虑到 ABI 每年会剧烈变化,这个项目成功的概率极低。」
ABI 是什么?Application Binary Interface。翻译成人话:两个软件之间在二进制层面的握手协议。macOS 每年更新一次,每次更新都会改一些系统调用的行为、新增一些接口、废弃一些旧的。Kakehashi 要追踪所有这些变化,用自己的实现去匹配。
这就像你一边追着前方一辆时速 200 公里的车,一边自己造一辆车去追它。而且前方那辆车动不动就改道。
Kalinkin 自己也承认,目前的性能大约是原生 Linux 的 1/5,明确表示他有清晰的优化路线图——freestanding hypercall、worker 线程的 svc→brk 优化、以及更聪明的内存映射策略。
最有意思的部分:vibe coding 造出来的桥
Vibe coding 这个词是 Andrej Karpathy 在 2025 年初带火的,意思是开发者跟 AI 助手对话式地写代码——你描述需求,AI 生成骨架,你再迭代修正。这种模式下,AI 负责写 80% 的样板代码,人类只介入最关键的 20%。
传统软件行业里有个概念叫「洁净室」——说白了就是「我很清白,没抄你的代码」。但当一个项目大量依赖 AI 生成代码,而 AI 的训练数据可能包含了苹果的私有代码、Darling 的源代码、甚至各种论坛上的逆向工程讨论——那它还能算「洁净室」吗?
官方的回应很有意思,称为「浅灰色房间」——不是纯白,也不是纯黑,是介于两者之间。 对于 Kakehashi 这种项目来说,Mach-O 解析器、系统调用表、加载器逻辑——这些恰好是 LLM 擅长生成的内容。复杂的问题,比如 mach_port命名空间的实现、dyld共享缓存的加载,才需要人类深度介入。
这个实验的意义在哪
Kakehashi 的终极愿景很宏大:支持完整的 Xcode Tools、让开发者能在 Linux 上构建 iOS 应用、甚至跑 macOS 版的 Homebrew。
但我觉得它的意义不在终点,而在过程。这个项目证明了三件事:
第一,AI 辅助开发正在降低系统级编程的门槛。十年前,写一个翻译层需要几个月啃透 Mach-O 格式和 Darwin 内核源码。现在,一个有毅力的开发者加一个 AI 助手,几个周末就能出一个可用的原型。
第二,Rust 在系统兼容层领域有巨大的潜力。C 写了十几年的 Darling 还没搞定 ARM 支持,Rust 写了几周就出了可跑的 demo。不是说 Rust 比 C 快,而是 Rust 的内存安全保证让开发者敢在这个领域快速迭代。
第三,开源社区对「AI 写的代码」的态度正在从怀疑转向审慎接受。评论区里最热门的讨论不是「这东西能不能用」,而是「AI 写的代码怎么算版权、怎么算洁净室」。这是一个全新的法律和伦理问题,整个行业还没有答案。