Megjelent a Blink projekt első jelentős kiadása, amely egy x86-64 processzor-emulátor fejlesztését célozza, lehetővé téve statikusan és dinamikusan fordított Linux-alkalmazások futtatását egy emulált processzorral rendelkező virtuális gépen. A Blink segítségével az x86-64 architektúrára készült Linux-programok más POSIX-kompatibilis operációs rendszereken (macOS, FreeBSD, NetBSD, OpenBSD, Cygwin) és más hardverarchitektúrákkal rendelkező eszközökön (x86, ARM, RISC-V, MIPS, PowerPC, s390x) futtathatók. A projekt kódja ANSI C11 nyelven íródott és ISC licenc alatt kerül forgalomba. Az egyetlen függőség a libc (POSIX.1-2017).
Funkcionalitását tekintve a Blink hasonlít a qemu-x86_64 parancshoz, de a QEMU-hoz képest kompaktabb kivitelezéssel és jelentős teljesítménynövekedéssel rendelkezik. Például a Blink futtatható fájlja mindössze 221 KB (csökkentett build esetén 115 KB) helyet foglal el, szemben a qemu-x86_64 4 MB-jával, és teljesítményben néhány tesztben, mint például a GCC emulátorban való futtatás és matematikai műveletek végrehajtása, körülbelül kétszer felülmúlja a QEMU-t.
A magas teljesítmény biztosítása érdekében JIT-compiler alkalmazásra kerül, amely futás közben alakítja át a forrásutasításokat a célplatformhoz tartozó gépi kódra. Támogatja az ELF, PE (Portable Executables) és bin (Flat executable) formátumú futtatható fájlok közvetlen futtatását, amelyeket a Cosmopolitan, Glibc és Musl standard C könyvtáraival fordítottak. Beépített támogatás működik 180 Linux rendszerhívásra és körülbelül 600 x86 processzorutasítás emulálására, amelyek lefedik az i8086, i386, SSE2, x86_64, SSE3, SSSE3, CLMUL, POPCNT, ADX, BMI2 (MULX, PDEP, PEXT), X87, RDRND, RDSEED és RDTSCP utasításkészleteket.
Továbbá a Blink alapját képező blinkenlights eszköz fejlesztése is zajlik, amely egy interfészt biztosít a program végrehajtásának vizualizálására és a memória tartalmának elemzésére. Az eszköz debuggerként is használható, amely támogatja a visszafordított hibakeresési (Reverse-Debugging) módot, lehetővé téve a végrehajtás történetében való hátrafelé lépkedést és a korábban végrehajtott pontokhoz való visszatérést. A projekt fejlesztője olyan megoldásokat készített, mint a Cosmopolitan C könyvtár, a pledge elkülönítési mechanizmus Linuxra való portálása és a Redbean univerzális futtatható fájlok rendszere.

Forrás: opennet.ru
