Blinki projekti esimene suurem väljalase on avaldatud. See arendab x86-64 protsessori emulaatorit, mis võimaldab staatiliselt ja dünaamiliselt lingitud Linuxi rakendusi käitada virtuaalmasinas emuleeritud protsessoriga. Blinki abil saab x86-64 arhitektuurile loodud Linuxi programme käitada ka teistes POSIX-ühilduvates operatsioonisüsteemides (macOS, FreeBSD, NetBSD, OpenBSD, Cygwin) ja erinevate arhitektuuridega riistvaral (x86, ARM, RISC-V, MIPS, PowerPC, s390x). Projekti kood on kirjutatud C-keeles (ANSI C11) ja seda levitatakse ISC litsentsi alusel. Ainus vajalik sõltuvus on libc (POSIX.1-2017).
Blink sarnaneb funktsionaalsuselt qemu-x86_64-ga, kuid erineb QEMU-st kompaktsema teostuse ja märkimisväärse jõudluse kasvu poolest. Näiteks Blinki käivitatav fail võtab vaid 221 KB (vähendatud versiooniga 115 KB), võrreldes qemu-x86_64 4 MB-ga, ning mõnes testis, näiteks GCC emulaatoris töötamisel ja matemaatiliste tehtete sooritamisel, edestab see QEMU-d umbes kaks korda.
Suure jõudluse tagamiseks kasutatakse JIT-kompilaatorit, mis teisendab lähtekoodi käsud lennult sihtplatvormi masinkoodiks. Emulaatoris toetatakse otsest käivitamist ELF-, PE- (Portable Executables) ja bin- (Flat executables) vormingutes käivitatavate failide puhul, mis on kompileeritud standardsete C-teekidega Cosmopolitan, Glibc ja Musl. Rakendatud on natiivne tugi 180 Linuxi süsteemikõnele ja ligikaudu 600 x86 protsessori käsu emuleerimine, mis hõlmavad käskude komplekte i8086, i386, SSE2, x86_64, SSE3, SSSE3, CLMUL, POPCNT, ADX, BMI2 (MULX, PDEP, PEXT), X87, RDRND, RDSEED ja RDTSCP.
Lisaks arendatakse Blinki abil utiliiti blinkenlights, mis pakub liidest programmi täitmise visualiseerimiseks ja mälusisu analüüsimiseks. Utiliiti saab kasutada silurina, toetades pöördsilumist ning võimaldades täitmisajaloos tagasi navigeerimist ja naasmist eelnevalt täidetud punkti. Projekti arendab selliste projektide autor nagu Cosmopolitan C teek, pandi isolatsioonimehhanismi port Linuxile ja Redbeani universaalne täitmissüsteem.

Allikas: opennet.ru
