// the take
A ~3000-line JVM implementation written in Scala that can interpret Java/Scala bytecode (including, metacircularly, its own bytecode). It's aimed at people who want to study or hack on how a JVM works without wading through HotSpot's million lines of C++, not at anyone looking for a production runtime.
The scope is genuinely impressive for the line count: a bytecode interpreter, a stack-to-SSA bytecode translator, and a custom copying garbage collector all fit in 3000 lines. The test suite validates correctness by running the same code through both Metascala and real reflection and diffing the results, which is a solid way to catch interpreter bugs. The Bindings abstraction is a clean design: every interaction with the host system goes through one swappable interface, which is what makes the 'run untrusted bytecode safely' story actually hold together rather than being a marketing claim.
Performance is, in the author's own words, 'absolutely abysmal' - this isn't a toy caveat, it's a structural consequence of the immutable/functional implementation style and isn't getting fixed without a rewrite. It has no multithreading, no custom ClassLoaders, and no enforcement of access-control modifiers, so anything beyond toy programs will hit a missing feature fast. The native method bindings needed to run real code are, per the README, 'completely undocumented' and the only way to discover what's missing is to run your program and watch it crash. The toolchain is pinned to Scala 2.10 and SBT 12, and there's been no real feature work in years - this is a frozen research artifact, not something you'd build on expecting fixes or updates.
We read the README, the directory tree and a key source file in October 2026. Nobody pays to be listed. How we judge →