metascala 是使用 scala 編寫的極小 metacircular java virtual machine (jvm)。metascala 大約有 3000 行的 scala 代碼,但是是完整的 jvm,可以解析自己。使用 scala 編寫,編譯為 java 位元組碼,metascala jvm 要求一個主機 jvm 才可以運作。
metascala 的目的是建立一個 jvm 平台,使用 3000 行 scala 代碼編寫,比 1,000,000 行的 c/c++ 代碼更便捷更容易完成。metascala 可以構成一個标準的實作 hotspot,更容易實作一些有趣的特性,比如 continuations, isolates 或者 value classes。3000 行的代碼可以讓你:
位元組碼解析器,包括所有運作時資料結構
一個 stack-machine,作為 ssa 注冊機制位元組碼轉換器
一個自定義的 heap
實作部分的 jvm 原生接口