De eerste belangrijke release van het Blink-project is gepubliceerd, dat een emulator ontwikkelt voor x86-64-processoren, waarmee statisch en dynamisch gecompileerde Linux-toepassingen kunnen draaien in een virtuele machine met een geƫmmuleerd procesor. Met Blink kunnen Linux-programma's die zijn gecompileerd voor de x86-64-architectuur op andere POSIX-compatibele besturingssystemen (macOS, FreeBSD, NetBSD, OpenBSD, Cygwin) en op hardware met een andere architectuur (x86, ARM, RISC-V, MIPS, PowerPC, s390x) worden uitgevoerd. De code van het project is geschreven in C (ANSI C11) en is beschikbaar onder de ISC-licentie. Alleen libc (POSIX.1-2017) is vereist als afhankelijkheid.
Functioneel lijkt Blink op de qemu-x86_64-commando, maar het verschilt van QEMU door een compactere uitvoering en een significante prestatieverbetering. Bijvoorbeeld, het uitvoerbare bestand van Blink is slechts 221 KB groot (115 KB bij een verkleinde build) in plaats van 4 MB voor qemu-x86_64, en in sommige tests, zoals het draaien in de GCC-emulator en het uitvoeren van wiskundige bewerkingen, overtreft het QEMU met ongeveer het dubbele.
Voor het waarborgen van hoge prestaties wordt een JIT-compiler gebruikt, die op de vlucht de broninstructies omzet naar machinecode voor het doelsysteem. Directe uitvoering in de emulator van uitvoerbare bestanden in de formaten ELF, PE (Portable Executables) en bin (Flat executable), die zijn samengesteld met de standaard C-bibliotheken Cosmopolitan, Glibc en Musl, wordt ondersteund. Ingebouwde ondersteuning voor 180 Linux-systeemaanroepen en emulatie van ongeveer 600 x86-processorinstructies zijn geĆÆmplementeerd, die de instructiesets van i8086, i386, SSE2, x86_64, SSE3, SSSE3, CLMUL, POPCNT, ADX, BMI2 (MULX, PDEP, PEXT), X87, RDRND, RDSEED en RDTSCP dekken.
Daarnaast wordt er op basis van Blink het hulpprogramma blinkenlights ontwikkeld, dat een interface biedt voor het visualiseren van de voortgang van een programma en het analyseren van de inhoud van het geheugen. Het hulpprogramma kan worden gebruikt als een debugger die reverse debugging ondersteunt, waardoor het mogelijk is om terug te navigeren in de uitvoeringsgeschiedenis en terug te keren naar een eerder uitgevoerde punt. Het project wordt ontwikkeld door de auteur van ontwikkelingen zoals de C-bibliotheek Cosmopolitan, de poort van het isolatiedmechanisme pledge voor Linux en het systeem van universele uitvoerbare bestanden Redbean.

Bron: opennet.ru
