
The fastest LoongArch sandbox
libloong ist eine 64-Bit-Hochleistungs-LoongArch-Emulatorbibliothek, die für Einbettung und hochfrequentes Scripting entwickelt wurde. Basierend auf der Architektur von libriscv bietet es die schnellste verfügbare 64-Bit-Interpreterleistung bei kompaktem ~18k LOC Codebasis ohne Abhängigkeiten.
Sie können LoongArch64-Linux-Programme auch in der Befehlszeilenschnittstelle ausführen.
In den CoreMark 1.0 Interpreter-Benchmarks (Dezember 2025) führt libloong die 64-Bit-Kategorie auf dem Ryzen 7950X an und erreicht zuverlässig eine Punktzahl von 3000+.
Erweiterte Modi: Während der Interpreter für die Portabilität im Vordergrund steht, enthält libloong einen leichten JIT, der 38% der nativen Leistung erreicht (15,5k CoreMark) und einen eingebetteten Binärübersetzer, der ~77% der nativen Leistung erreicht (31,9k CoreMark).
Game-Engine-Scripting ist der Bereich, in dem libloong glänzt. Traditionelle Spiele bieten Modding über gemeinsam genutzte Bibliotheken (voller Systemzugriff), eingebettete VMs wie Lua (~150ns Aufruf-Overhead) oder Java-Laufzeiten an. libloong hat einen ~4ns Aufruf-Overhead.

Siehe das Beispiel-Asteroiden-Spiel.
CMake-Konfigurationsoptionen:
LA_DEBUG=ON/OFF - Debug-Ausgabe aktivieren (Standard: AUS)LA_BINARY_TRANSLATION=ON/OFF - Binärübersetzung aktivieren (Standard: AUS)LA_THREADED=ON/OFF - Threaded-Bytecode-Dispatch aktivieren (Standard: EIN)LA_MASKED_MEMORY_BITS=N - Größe der maskierten Speicher-Arena auf 2^N Bytes setzen (0 = deaktiviert, Standard: 0)Beispiel mit Optionen:
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();
}
| Interpreter | Architektur | Punktzahl |
|---|
| libloong | 64-bit LoongArch | 3045 |
| libriscv | 64-bit RISC-V | 2865 |
| stitch | Wasm | 2743 |
| wasm3 | Wasm | 2368 |
| wasmer (WAMR) | Wasm | 2314 |
| wasmi | Wasm | 1967 |