The Jikes RVM project aims to provide a high-quality state-of-the-art open-source infrastructure for programming language research. Of course, this requires a significant investment in system maintenance and enhancement, to keep the system running on new environments and to keep up with the latest innovations in language design and implementation practice.
Feedback and contributions from the research community are the indispensable, invaluable resource that will ensure the project's continued success. Please help to improve some aspect of the system; no improvement is too small or too simple! The more volunteers can contribute, the better the system will serve the research community, resulting in faster and more solid research results.
How can you help Jikes RVM?
Jikes RVM is a fairly large, complex, and perhaps intimidating system. However, there are many to-do items which don't require extensive Jikes RVM expertise.
This page highlights a selection of low-hanging fruit for potential code contributions. Many of these selections also appear in our issue tracker. Please volunteer to pluck these fruit, or suggest other high-priority, but low-effort tasks by creating new tracker entries. This list is of course nowhere near comprehensive, but exists just as a sampling of potential activities.
All contributions to Jikes RVM are managed in our JIRA-based issue tracker.
Please let us know if the list below is out-of-date by entering a bug against the website.
Some low-hanging fruit in no particular order
- Contribute missing sections or clarifications to the User Guide: If you run across some problem or area that is not well-documented in the User Guide, please write a short section for inclusion. Also, please help us improve the installation section to cover any installation problems you run into that are not documented. If you are interesting in contributing to the User Guide, or to other pieces
of online documentation maintained in our wiki, we're quite willing to give you write access to the wiki pages. Please contact a Steering Committee member.
- Improve Javadoc comments in system code: We realize that the quality of Javadoc ™ comments is haphazard; please help us improve it.
- Contribute sanity and performance tests: The system's test infrastructure is set up to test and run standard benchmarks and sanity tests in a uniform framework. This functionality helps foster reproducible performance results, and exercises the system nightly to shake out bugs. If you're adding new code to the system, please consider contributing tests for it.
- Contribute unit tests: Support for unit tests was recently added to the Jikes RVM by João Reys Santos for Google Summer of Code 2012. There is an initial set of tests but it is not very extensive. In the long term, we should have a unit test for almost every class.
- Confirm, triage or fix bugs: The issue tracker contains a lot of open bugs. If a bug interests you, try to reproduce and fix it. If you can't fix the bug but can provide a test case that reliably reproduces the bug, that is also very helpful. If you provide a fix, please consider providing test cases for the bug. Patches with test cases require less effort from the commiters and will reach the mainline sooner.
- Review commits and patches: You can review commits (subscribe to the commit mailing list to receive commit notifications) and patches on the issue tracker to improve code quality and catch bugs.
- Complete missing pieces of library interface: There are a handful of methods in Jikes RVM's implementation of a few core library classes (java.lang.Class, java.lang.Runtime, java.lang.Throwable) that throw VM_UnimplementedError. Provide an implementation for one of these methods.
- Improve efficiency of some optimizing compiler phase: Many of the optimizing compiler passes use sub-optimal data structures, and compile-time could easily be improved. Some simple phases to start with include the local optimizations and flow-insensitive optimizations.
- Strip mining: This optimization would be profitable, by reducing the overhead of yield point checks in tight loops.
- Global Array Bounds Check Elimination: While the literature presents several algorithms for array bounds check elimination, the optimizing compiler does not have a complete implementation. Note that there are some non-trivial technical difficulties with ABCD, regarding integer overflow. A simple range propagation dataflow solver would be an improvement over what the system has now (namely nothing).
- Implement missing JNI functionality: See tracker items: CreateJavaVM, Attach/DetachCurrentThread. OnUnload is also missing but not a high priority because the Jikes RVM currently does not implement class unloading.
- A number of other possible projects can be found on the Project proposals / ideas pages that are linked from for our Google Summer of Code pages.