Blink, эмулятор x86-64 для запуска приложений Linux, скомпилированных на других архитектурах.

Мигать

blink — это виртуальная машина, которая запускает программы x86-64-linux в разных операционных системах.

Недавно появились новости о выпуск первой основной версии проекта Blink, который представляет собой эмулятор процессора x86-64, позволяющий запускать статически и динамически созданные приложения Linux на виртуальной машине с эмулируемым процессором.

Стоит отметить, что проект разрабатывается автором таких разработок, как библиотека Cosmopolitan C, порт механизма изоляции коммитов для Linux и универсальной исполняемой файловой системы Redbean.



С точки зрения функциональности, Блинк выглядит как команда qemu-x86_64, Но отличается от QEMU более компактной конструкцией и значительным увеличением производительности. Например, размер исполняемого файла Blink составляет всего 220 КБ вместо 4 МБ для qemu-x86_64, а с точки зрения производительности в тестовом прогоне на эмуляторе GCC, Blink дважды обходит QEMU.



С Blink программы Linux, скомпилированные для архитектуры x86-64, могут работать в других операционных системах, совместимых с POSIX (macOS, FreeBSD, NetBSD, OpenBSD, Cygwin), а также на оборудовании с другими аппаратными архитектурами (x86, ARM, RISC-V, MIPS, PowerPC, s390x).

Главные новости Blink

Выход версии 1.0 выделяется тем, что в основном является статическим бинарным файлом без зависимостей размером 220 КБ который реализует около 600 инструкций x86 и 180 системных вызовов Linux, что позволяет Blink довольно хорошо запускать простые программы командной строки.



Чтобы обеспечить высокую производительность, используется JIT-компилятор, который преобразует исходные инструкции в машинный код для целевой платформы на лету. Поддерживается прямой запуск на эмуляторе исполняемых файлов в форматах ELF, PE (Portable Executables) и bin (Flat Executable), скомпилированных с помощью стандартных C-библиотек Cosmopolitan, Glibc и Musl.

Blink имеет быстрый JIT, который в некоторых случаях в 2 раза быстрее, чем Qemu для вариантов использования. Это связано с тем, что Blink имеет базовый JIT, который быстро генерирует код с использованием DSL в стиле printf. Это означает, что у Blink есть доступная кодовая база, поскольку у нас всего 63 500 строк кода ANSI C11. В настоящее время Blink даже не пытается оптимизировать, что делает этот проект совершенно новым полем для алгоритмов.

Упоминается, что Blink лучше всего работает с программами командной строки, хотя Blink также имеет некоторую поддержку эмуляции приложений с графическим интерфейсом. В отличие от qemu-user (который работает только в Linux), Blink можно запускать и в других операционных системах, поскольку есть возможность скомпилировать Blink на Cygwin (Windows), а затем запустить Bash внутри chroot Alpine Linux.

Blink достаточно хорошо эмулирует пользовательское пространство Linux, чтобы обмануть neofetch , хотя Blink представляет собой исполняемый файл без зависимостей размером всего 250 КБ.

Стоит отметить, что Blink также очень хорошо работает на Apple Silicon, поскольку, например, он может заставить neofetch думать, что MacOS M1 — это Alpine x86_64.



Кроме того, на основе Blink, разрабатывается утилита blinkenlights, который предоставляет интерфейс для просмотра выполнения программы и анализа содержимого памяти. Утилита может использоваться как отладчик, поддерживающий режим обратной отладки (Reverse Debugging) и позволяющий вернуться в историю выполнения и вернуться к ранее выполненной точке.

Лучшая функция, которую предлагает Blinkenlights TUI, — это обратная отладка.. В объявлении о выпуске упоминается, что вам нужно только прокрутить колесо на экране сборки. Blink также отображает функции вашей программы в режиме реального времени, если вы нажмете клавишу p. Вы также можете управлять колесом панорамирования памяти, чтобы уменьшить масштаб памяти с помощью ядра.



В конце концов Если вы хотите узнать больше о том, как работает Blink, вы можете сделать это из по следующей ссылке.

Получить Блинк

Для тех, кто заинтересован в возможности попробовать мигание, они должны знать, что его компиляция чрезвычайно проста, им нужно только получить исходный код, они могут сделать это по следующей ссылке или из терминала, введя следующую команду :

wget https://github.com/jart/blink/releases/download/1.0.0/blink-1.0.0.tar.gz

tar xvzf blink-1.0.0.tar.gz

cd blink-1.0.0

./configure MODE=tiny

make -j8 MODE=tiny o/tiny/x86_64/blink/blink

o/third_party/gcc/x86_64/bin/x86_64-linux-musl-strip o/tiny/x86_64/blink/blink

o/tiny/x86_64/blink/blink -v




2023-06-10T10:33:08
GNU / Linux