Blink 1.0 已正式发布。
Blink 是无特权用户空间虚拟机,支持在任何 POSIX 平台上模拟 x86-64-linux 二进制文件,声称是最小的 x86 Linux 模拟器。
总的来说,它是一个 220kb 的无依赖静态二进制文件,实现了大约 600 条 x86 指令和 180 条 Linux 系统调用。因此 Blink 在运行简单的命令行程序方面相当出色。
./configure# use `./configure --help | less` for help
make -j8 # build blink and blinkenlights
doas make install# doas is modern sudo
blink program# use `man blink` for help
Blink 包含一个简洁的 JIT,在某些情况下,对于像临时程序(ephemeral programs)这样的用例,它比 Qemu 快 2 倍。原因在于 Blink 的基线 JIT,它使用 printf 风格的 DSL 快速生成代码。这意味着 Blink 拥有一个易于使用的代码库(只有 63,500 行 ANSI C11 代码)。
虽然 Blink 是命令行工具,但它也有一个 TUI 界面(称为blinkenlights
),支持实时调试和可视化程序。
下面是一个运行裸机 Game of Life 演示的示例,该演示程序采用 Rust 编写,它以 i8086 模式从 BIOS 启动,引导至长模式,然后绘制到 Blinkenlight 基于文本的 CGA 显示器。
man blinkenlights
blinkenlights -jmr third_party/gameoflife/gameoflife.bin
# Press CTRL-T several times for Turbo mode
Blink 最适合用于命令行程序,当然它也支持模拟 GUI 应用程序。下图是 Blink 在 Debian Linux 上运行 Emacs GUI 的屏幕截图:
详情查看 Release Notes。