Foi publicado o primeiro lançamento significativo do projeto Blink, que desenvolve um emulador de processadores x86-64, permitindo a execução de aplicativos Linux compilados de forma estática e dinâmica em uma máquina virtual com um processador emulado. Com o Blink, programas Linux compilados para a arquitetura x86-64 podem ser executados em outros sistemas operacionais compatíveis com POSIX (macOS, FreeBSD, NetBSD, OpenBSD, Cygwin) e em hardware com outras arquiteturas (x86, ARM, RISC-V, MIPS, PowerPC, s390x). O código do projeto é escrito na linguagem C (ANSI C11) e é distribuído sob a licença ISC. A única dependência necessária é apenas o libc (POSIX.1-2017).
Funcionalmente, o Blink se assemelha ao comando qemu-x86_64, mas difere do QEMU por sua execução mais compacta e um ganho de desempenho significativo. Por exemplo, o arquivo executável do Blink ocupa apenas 221 KB (na versão reduzida — 115 KB) em comparação aos 4 MB do qemu-x86_64, e em termos de desempenho, em alguns testes, como a execução no emulador GCC e a realização de operações matemáticas, o Blink supera o QEMU em cerca de duas vezes.
Para garantir alta performance, é utilizado um compilador JIT que transforma dinamicamente as instruções de origem em código de máquina para a plataforma alvo. Suporte é oferecido para a execução direta de arquivos executáveis nos formatos ELF, PE (Portable Executables) e bin (Flat executable), compilados com as bibliotecas padrão C Cosmopolitan, Glibc e Musl. O suporte embutido para 180 chamadas de sistema Linux e a emulação de cerca de 600 instruções de processador x86 estão implementados, abrangendo os conjuntos de instruções i8086, i386, SSE2, x86_64, SSE3, SSSE3, CLMUL, POPCNT, ADX, BMI2 (MULX, PDEP, PEXT), X87, RDRND, RDSEED e RDTSCP.
Adicionalmente, uma ferramenta chamada blinkenlights está sendo desenvolvida sobre a base do Blink, fornecendo uma interface para visualizar o progresso da execução do programa e analisar o conteúdo da memória. A ferramenta pode ser utilizada como um depurador, suportando o modo de depuração reversa (Reverse-Debugging) que permite navegar de volta na história de execução e retornar a um ponto que já foi executado anteriormente. O projeto é desenvolvido pelo autor de inovações como a biblioteca C Cosmopolitan, a porta do mecanismo de isolamento pledge para Linux e o sistema de arquivos executáveis universais Redbean.

Fonte: opennet.ru
