Jacobin JVM at the 4-year Mark
We just completed year 4 of the development of the Jacobin JVM. We spent much of the past six months cleaning up the codebase, getting features to align more strictly with the HotSpot JVM, and writing tests...lots of tests!
Much of the new code written during the past six months was dedicated to rewriting native functions in go. This has been the unexpected obstacle in our work--that is, that much of the HotSpot JVM is written, not in Java, but in C++. Java portions of HotSpot frequently call these native methods and for us to be able to duplicate the functionality, we must reproduce these native methods in go. (Undeniably, some of the native functions are part of the standard libraries that ship with the JDK.)
What's ahead
We have a short roadmap of things we need to finish implementing and several features whose behavior we need to bring closer to that of the JDK. Our deepest hope is that in the next 12 months, we'll have a complete working JVM that can run any Java 21 code.
By the Numbers
During the last six months, we made 512 commits to the codebase. If you've read previous progress reports, you know that we pride ourselves on our commitment to testing. Currently, we run 1491 unit tests and 219 end-to-end tests (the latter as part of the Jacotest suite.)
Jacobin production code currently consists of 38,191 lines (include LOC, comments, and blank lines). Our test code (including the Jacotest suite) consists of 79,248 lines, meaning it's 2.08x the size of the production code. We keep hoping to increase this ratio, but for the last few years it's stayed roughly at this level. So, I guess you could say that we have become accustomed to writing two lines of test code for every line of production code.
Show your support
If you'd like to show your support for Jacobin JVM, we'd love a ⭐ on GitHub. That helps keep our motivation high!
No comments:
Post a Comment