Linux

Eseguire un programma compilato per macOS su un sistema Linux ARM64, senza avviare una macchina virtuale e senza emulare il processore, sembra un obiettivo fin troppo ambizioso. Kakehashi (repository GitHub) prova a renderlo concreto: apre i programmi compilati per macOS nel formato Mach-O, cioè il tipo di file eseguibile usato dal sistema operativo Apple. Poi ricrea solo i servizi essenziali che l’applicazione si aspetta di trovare su macOS, come alcune librerie di base, la gestione dei file, della memoria e dei thread. Quando il programma chiede al sistema operativo di eseguire un’operazione, per esempio aprire un file o avviare una connessione di rete, Kakehashi intercetta la richiesta formulata secondo le regole di Darwin, il nucleo su cui si basa macOS, e la converte nell’operazione equivalente prevista dal kernel Linux.

Il progetto nasce in una fase nella quale ARM64 non rappresenta più una piattaforma marginale. Apple ha da tempo completato il passaggio dei Mac ai chip Apple Silicon, mentre i servizi cloud e le piattaforme di integrazione continua offrono sempre più spesso runner Linux basati su architettura Arm. Resta però una separazione netta: un binario macOS per Apple Silicon e un eseguibile Linux aarch64 usano istruzioni compatibili con la stessa famiglia di processori, ma si aspettano formati, librerie, convenzioni e servizi del sistema operativo differenti.