Show HN: LoongArch Userspace Emulator

HN loses it over a tiny “run-anything” engine with wild speed claims

TLDR: A super-fast LoongArch emulator for game scripting and mods hit HN, boasting tiny overhead and big performance. The crowd split between cheering the dev’s speed flex and requesting ports for retro fantasies like SPARC/Solaris, with memes asking if it can run Doom—or even Internet Explorer 5.

A new LoongArch emulator just dropped on Hacker News, and the comments turned into a street parade of nostalgia, hype, and playful chaos. LoongArch is a CPU design from China, and this tool pretends to be that chip so software can run elsewhere—think game mods and scripts at wild speed. The dev flexed with “~4ns call overhead” (translation: calls are super fast), JIT mode (a “just-in-time” speed boost), and tiny code size. Cue the crowd: one camp is begging for ports to old-school systems, with anthk dreaming about SPARC/Solaris and joking about dusting off Internet Explorer 5 for “educational purposes.” Another camp is full-on hero worship—“Fwsgonzo, what a legend”—as fans pile into the HN comments and Discord to swap war stories. Skeptics tossed spicy questions like, “Who needs LoongArch, anyway?” while modders cheered the pause/resume and safety features as game-dev catnip. Performance numbers sparked meme math (“38% of native? So… it’s fast-fast, not slow-fast”), and the running joke became: Can it run Doom… or IE5? In pure internet fashion, the thread morphed from benchmark gawking to a nostalgia road trip, with everyone agreeing on one thing: this tiny engine makes big noise.

Key Points

  • libloong is a 64-bit LoongArch userspace emulator library built on libriscv for embedding and scripting applications.
  • It features a fast interpreter with optional JIT, supports LSX/LASX vector instructions, and offers a C++ API with Rust and Go bindings, with zero dependencies.
  • Design targets game engine scripting with ~4ns call overhead, compared to ~150ns for Lua and typical Java run-times.
  • CMake build options include LA_DEBUG, LA_BINARY_TRANSLATION, LA_THREADED, and LA_MASKED_MEMORY_BITS; quick-start demonstrates loading a LoongArch ELF and running via simulate().
  • Benchmarks report STREAM memory results, interpreter reaching 3000+ CoreMark, JIT at ~38% of native (~15.5k vs ~41k), and embedded binary translation at ~77% (~31.96k vs ~41k), with a stated upper bound around ~90%.

Hottest takes

"I'd love this for Sparc/Solaris." — anthk
"Fwsgonzo, what a legend man!!" — Imustaskforhelp
Made with <3 by @siedrix and @shesho from CDMX. Powered by Forge&Hive.