È stato pubblicato il primo importante aggiornamento del progetto Blink, che sviluppa un emulatore di processori x86-64, consentendo di eseguire applicazioni Linux compilate staticamente e dinamicamente in una macchina virtuale con processore emulato. Con Blink, le applicazioni Linux compilate per l'architettura x86-64 possono essere eseguite su altri sistemi operativi compatibili con POSIX (macOS, FreeBSD, NetBSD, OpenBSD, Cygwin) e su hardware con un'architettura diversa (x86, ARM, RISC-V, MIPS, PowerPC, s390x). Il codice del progetto è scritto in C (ANSI C11) ed è distribuito con licenza ISC. L'unica dipendenza richiesta è libc (POSIX.1-2017).
Dal punto di vista funzionale, Blink ricorda il comando qemu-x86_64, ma si distingue da QEMU per la sua esecuzione più compatta e un significativo aumento delle prestazioni. Ad esempio, il file eseguibile di Blink occupa solo 221 KB (117 KB nella versione ridotta) rispetto ai 4 MB di qemu-x86_64, e in alcune prove di prestazioni, come l'esecuzione di GCC in emulazione e l'esecuzione di operazioni matematiche, supera QEMU di circa il doppio.
Per garantire elevate prestazioni, viene utilizzato un compilatore JIT che trasforma le istruzioni sorgente in codice macchina per la piattaforma target in tempo reale. Supporta l'esecuzione diretta in un emulatore di file eseguibili nei formati ELF, PE (Portable Executables) e bin (Flat executable), compilati con le librerie standard C Cosmopolitan, Glibc e Musl. È implementato il supporto integrato per 180 chiamate di sistema Linux e l'emulazione di circa 600 istruzioni del processore x86, coprendo i set di istruzioni i8086, i386, SSE2, x86_64, SSE3, SSSE3, CLMUL, POPCNT, ADX, BMI2 (MULX, PDEP, PEXT), X87, RDRND, RDSEED e RDTSCP.
In aggiunta, si sta sviluppando su base Blink l'utilità blinkenlights, che fornisce un'interfaccia per visualizzare il progresso dell'esecuzione del programma e analizzare il contenuto della memoria. L'utilità può essere utilizzata come debugger, supportando la modalità di debug inverso (Reverse-Debugging) e consentendo di tornare indietro nella storia dell'esecuzione e di tornare a un punto già eseguito. Il progetto è portato avanti dall'autore di sviluppi come la libreria C Cosmopolitan, il porting del meccanismo di isolamento pledge per Linux e il sistema di file eseguibili universali Redbean.

Fonte: opennet.ru
