|
В рамках проекта Kakehashi ведётся разработка транслятора, позволяющего выполнять исполняемые файлы macOS в формате Mach-O, собранные для архитектуры ARM64, в Linux-системах с архитектурой ARM64. Код из macOS выполняется нативно без JIT-компиляции и эмуляции, используя только подмену системных вызовов для libSystem и обработку исключений. Основной целью проекта является обеспечение возможности запуска в Linux утилит командной строки, собранных для macOS. Код написан на языке Rust и распространяется под лицензией Apache 2.0.
На текущем этапе развития продемонстрирован запуск собранных для macOS утилит 7-Zip, 7zz и curl, а также выполнение тестовых сборок компилятором clang. Трансляция системных вызовов реализована целиком в пространстве пользователя. При тестировании сжатия при помощи 7zz производительность запуска macOS-сборок отстаёт от родной Linux-сборки в 5.2 раза (118 секунд против 22.5 секунд). Отмечается, что несмотря на большие накладные расходы на трансляцию проект может оказаться полезен для запуска исполныемых файлов macOS в окружениях непрерывной интеграции, работающих на базе Linux, стоимость процессорного времени в которых на порядок ниже, чем в окружениях на базе macOS.
|