Blinki projekti esimene oluline väljaanne on avaldatud. See arendab x86-64 protsessorite emulatorit, mis võimaldab jooksutada staatiliselt ja dünaamiliselt kompileeritud Linuxi rakendusi virtuaalmaailmas emuleeritud protsessoriga. Blink võimaldab x86-64 arhitektuurile kogutud Linuxi programme käitada ka teistes POSIX-ühilduvates operatsioonisüsteemides (macOS, FreeBSD, NetBSD, OpenBSD, Cygwin) ja riistvaral, millel on erinev arhitektuur (x86, ARM, RISC-V, MIPS, PowerPC, s390x). Projekti kood on kirjutatud C (ANSI C11) keeles ja levitatakse ISC litsentsi alusel. Nõutavad sõltuvused on ainult libc (POSIX.1-2017).
Funktsionaalsuselt meenutab Blink qemu-x86_64 käsku, kuid erineb QEMU-st kompaktsema teostuse ja märkimisväärse jõudluse suurenemise poolest. Näiteks Blink'i täidise suurus on vaid 221 KB (lühendatud versioon — 115 KB), samas kui qemu-x86_64 puhul on see 4 MB, ning jõudluse osas ületab Blink mõnedes testides, näiteks GCC emulaatoris käivitamisel ja matemaatiliste operatsioonide teostamisel, QEMU-d peaaegu kaks korda.
Selleks, et tagada kõrge jõudlus, kasutatakse JIT-kompilaatorit, mis muundab lähtekoodiga instruktsioonid reaalajas sihtplatvormi masinkoodiks. Toetatakse otsest käivitamist reklaamifailide emulaatoris formaatides ELF, PE (Portable Executables) ja bin (Flat executable), mis on koostatud standardsete C-raamatukogudega Cosmopolitan, Glibc ja Musl. Tugi on sisse ehitatud 180 Linuxi süsteemi kõnesse ning emuleeritakse umbes 600 x86 protsessori instruktsiooni, mis katab juhiste kogusid i8086, i386, SSE2, x86_64, SSE3, SSSE3, CLMUL, POPCNT, ADX, BMI2 (MULX, PDEP, PEXT), X87, RDRND, RDSEED ja RDTSCP.
Lisaks arendatakse Blink'i baasil tööriista blinkenlights, mis pakub liidest programmi täitmise visualiseerimiseks ja mälu sisu analüüsimiseks. Tööriista saab kasutada silurina, mis toetab pöörddebugimise režiimi (Reverse-Debugging) ja võimaldab liikuda tagasi täitmise ajaloos ning naasta eelnevalt tehtud punkti juurde. Projekti arendab autor sellistest arendusprojektidest nagu C-raamatukogu Cosmopolitan, mehhanismi isoleerimise pledge port Linuxile ja universaalsete täitmisfailide süsteem Redbean.

Allikas: opennet.ru
