
Самая быстрая песочница для LoongArch
libloong — это 64-битная высокопроизводительная библиотека-эмулятор LoongArch, предназначенная для встраивания и высокочастотного скриптинга. Построенная на архитектуре libriscv, она обеспечивает самую быструю доступную производительность 64-битного интерпретатора, сохраняя компактный объём кодовой базы ~18k LOC без каких-либо зависимостей.
Вы также можете запускать программы LoongArch64 Linux в интерфейсе командной строки.
В интерпретаторных бенчмарках CoreMark 1.0 (декабрь 2025 года) libloong лидирует в категории 64-битных архитектур на Ryzen 7950X, стабильно достигая результата 3000+.
Расширенные режимы: Хотя интерпретатор является основным направлением для переносимости, libloong включает лёгкий JIT, достигающий 38% от нативной производительности (15.5k CoreMark), и встроенный бинарный транслятор, достигающий ~77% от нативной производительности (31.9k CoreMark).
Скриптинг игровых движков — та область, где libloong превосходит других. Традиционные игры предоставляют моддинг через разделяемые библиотеки (полный доступ к системе), встроенные VM, такие как Lua (~150 нс накладных расходов на вызов), или среды выполнения Java. У libloong накладные расходы на вызов составляют ~4 нс.

См. пример игры Asteroid.
Параметры конфигурации CMake:
LA_DEBUG=ON/OFF — Включить вывод отладочной информации (по умолчанию: OFF)LA_BINARY_TRANSLATION=ON/OFF — Включить бинарную трансляцию (по умолчанию: OFF)LA_THREADED=ON/OFF — Включить многопоточную диспетчеризацию байт-кода (по умолчанию: ON)LA_MASKED_MEMORY_BITS=N — Установить размер маскированной арены памяти в 2^N байт (0 = отключено, по умолчанию: 0)Пример с параметрами:
cmake .. -DCMAKE_BUILD_TYPE=Release \
-DLA_MASKED_MEMORY_BITS=32 \
-DLA_BINARY_TRANSLATION=ON
make -j6
#include <libloong/machine.hpp>
int main() {
// Load a LoongArch ELF binary
std::vector<uint8_t> binary = load_file("program.elf");
// Create a machine with 64MB memory
loongarch::Machine machine { binary, {
.memory_max = 64 * 1024 * 1024
}};
// Setup program arguments
machine.setup_linux({"program"}, {"LC_ALL=C"});
// Run the program
machine.simulate();
}
| Интерпретатор | Архитектура | Результат |
|---|
| libloong | 64-битный LoongArch | 3045 |
| libriscv | 64-битный RISC-V | 2865 |
| stitch | Wasm | 2743 |
| wasm3 | Wasm | 2368 |
| wasmer (WAMR) | Wasm | 2314 |
| wasmi | Wasm | 1967 |