WINE 让 Linux 跑 Windows 程序,Proton 让 Linux 跑 Windows 游戏——那 macOS 程序呢?诞生仅一周的实验性项目 Kakehashi(日语”桥梁”)给出了新答案:一个用 Rust 编写的用户态翻译层,让 macOS ARM64 的命令行二进制在 Linux ARM64 上原生运行。项目在 Hacker News 获得 159 分,GitHub 上收获 155 星。
它是什么
Kakehashi 定位为 macOS ARM64 → Linux aarch64 的用户态翻译层,CLI 优先、无 JIT。其原理是在 Linux aarch64 上加载 Darwin 的 Mach-O 可执行文件,映射一份独立构建的 libSystem,并将 BSD 系统调用翻译到 Linux 侧。由于宿主与目标同为 ARM64 架构,无需指令集级翻译——这正是它与 x86_64 时代的 Darling 项目最大的差异,也是性能想象空间所在。
现在能跑什么
目前已验证的真实程序包括:7-Zip(7zz)——压缩、解压、完整性测试全部通过,含 -mmt=4 多线程模式,作者称其在 8000 个文件的目录树上通过了多线程压缩测试;curl——HTTP/HTTPS GET 可用,HTTPS 经由 OpenSSL 与 bottle 内置 CA 验证,自签名证书会正确地失败;此外 clang 探针与多线程也亮起绿灯。
安装体验相当现代化:cargo install kakehashi 之后,kh bottle ensure 准备运行环境,kh install 7zip 安装 Darwin 版 7zz,kh run 7zz — 即可执行。bottle 中 /Volumes/linux/… 路径桥接宿主根目录。代价是性能:目前比原生执行慢约 5.2 倍,但作者表示已有明确的优化路线图。
工程细节
代码按 crate 清晰分层:kakehashi(kh 命令行二进制)、kh-loader(Mach-O 解析、映射与执行)、kh-runtime(内存管理、trap、BSD 系统调用翻译与 bottle)。”bottle”是项目的核心概念——一个预置独立 libSystem 的封闭运行环境。项目测试文化扎实:cargo test 与 clippy 全覆盖,Docker/Colima 与 UTM 双平台验证,curl 还有十档选项矩阵脚本。尚未支持的包括完整 curl 特性集、真正的 Apple Security.framework、git/CLT、GUI 与 codesign;下一个目标是让 git 通过 kh install xcode-tools 跑起来。
社区反响
被问及终极目标,作者 vlad_kalinkin 毫不掩饰野心:完整支持 Xcode Tools(包括编译 iOS 应用)以及 macOS 版 Homebrew。质疑声随即而来:frumplestlatz 指出 macOS ABI 面极其庞大且逐年剧变,此类项目历史上成功概率极低——”也许 LLM 能改变这个等式”;iwontberude 称之为”永远移动的目标”。13rac1 则以 WINE/Proton 的先例论证长期愿景并非痴人说梦,并提到 Darling 项目已有一个 ARM64 支持的 PR(#1753),建议两边合流。imoverclocked 关心多目标版本支持与 /bin/bash 脚本兼容性。
结语
无论最终成败,Kakehashi 再次验证了”同架构用户态翻译”这条技术路线的可行性。对 Apple Silicon Linux(Asahi)用户、跨平台 CI 场景而言,一个能原生运行 macOS 命令行工具的轻量层有着真实的价值。一周 155 星只是开始,值得持续关注。