← На главную

Kakehashi запустил macOS ARM64-бинарники на Linux: clang, 7zz и curl

02.08.2026 16:26 · hackernews

Kakehashi — это userspace translation layer для запуска macOS ARM64-бинарей на Linux aarch64. Проект CLI-first, без JIT: он грузит Darwin Mach-O, подменяет системную библиотеку на freestanding libSystem, транслирует BSD syscalls и исполняет код гостя нативно. Это не эмулятор инструкций — издержки только на границе syscall. Уже сейчас через него работают настоящие гости: clang-пробы, 7-Zip 7zz, curl и многопоточные программы. Live-запуск доступен на Linux aarch64 (bare metal, VM, Colima/Docker), а dry-load и инспекция — на любом хосте, включая macOS.

Установка простая: cargo install kakehashi, затем kh bottle ensure, kh install 7zip и kh install curl. Гостевые пути вида /Volumes/linux/... пробрасываются в файловую систему хоста. Например, /Volumes/linux/out/demo.7z лежит в .tmp/kh-out/demo.7z. Для Docker есть готовые хелперы: docker-7zz.sh, docker-curl.sh, docker-curl-probe.sh и docker-curl-options.sh. Внутри несколько крейтов: kh — бинарь, kh-loader разбирает Mach-O, kh-runtime работает с памятью, ловушками и BSD syscalls, kh-libsystem — это исходник встроенной libSystem.B.dylib. Дилиб вшивается в kh-runtime через include_bytes!, так что пользователям не нужно скачивать его отдельно. Для live-режима нужны Rust 1.88+ и Linux aarch64, поддерживаются page size 4 KiB и 16 KiB. Гиперколл включён по умолчанию для всех гостевых потоков, отключить его можно только для отладки через KAKEHASHI_HYPERCALL=0.

По производительности: код гостя выполняется нативно, платишь только за переходы на границе syscall. В тесте на Ubuntu aarch64 под UTM многопоточный 7zz (примерно 8k файлов, 240 MiB) под Kakehashi отработал ~118 секунд против ~22.5 секунд у нативного Linux-бинаря — то есть примерно в 5.2 раза медленнее. На сжатии с малым числом файлов разрыв часто всего ~×1.1–1.2. Авторы считают, что даже ×5 всё равно полезно для CI: Linux arm64 runner на GitHub Actions стоит $0.005 в минуту, а macOS — $0.062 и выше, то есть в 10–12 раз дороже. Даже если задача выполняется в 5 раз дольше, биллинг часто ниже. macOS остаётся необходимым для GUI, codesign/notarization, Xcode UI-тестов и всего, что не является чистым CLI-бинарем под freestanding libSystem.

Проект пока не претендует на звание полноценного продукта: нет полного набора возможностей curl (POST bodies, прокси, HTTP/3), настоящего Apple Security.framework, git/CLT, GUI и codesign. Следующий запланированный срез — git через kh install xcode-tools. Kakehashi не производный от Darling и не включает проприетарные Apple SDK и блобы; лицензия — Apache License 2.0.

Читать оригинал →