What You Can Do To Help This document lists some of the tasks that I would need help from. If you are interested in working on them, please do contact me, and we will get things coordinated. As for timeline, the tasks listed here are usually quite orthogonal to what I am actively developing, and so interference should be minimal, and I don't have a strict deadline for them. So you can do it in whatever pace you like. Basically, the earlier you finish it, the earlier your code will get into the next release. :-) If you would like to contribute to something that is not listed below, do not hesitate to talk to me. Help is always welcome. Please also read the file HACKING, which contains information you will need if you want to contribute. Thank you for your interest. Philip Fong pwlfong@users.sourceforge.net PS: This file is best viewed in emacs outline mode. * One-time tasks Each of the following tasks is a small, self-contained project. ** Accurate conversions between String and float/double (2002/06/12) Need to implement accurate parsing and printing algorithms for float and double along the line of the following work: Burger and Dybvig, "Printing Floating-Point Numbers Quickly and Accurately", SIGPLAN Conference on Programming Language Design and Implementation, 1996, pp 108-116. Available at the following URL: http://citeseer.nj.nec.com/28233.html ** Implementing java.lang.StrictMath (2002/06/09) Need someone good at numerical methods to implement the StrictMath class. Currently, it delegates calls to java.lang.Math. The Java API spec says that it should be implemented exactly as in fdlibm: http://www.netlib.org/fdlibm/ ** Optimizing java.lang.String and java.lang.StringBuffer (2002/06/09) Implement a more memory efficient version of the two built-in classes. Possible optimization include copy-on-write for java.lang.StringBuffer and char[] sharing of substrings in java.lang.String. ** Representing boolean arrays as bitmaps (2002/03/12) The current implementation represents boolean arrays as arrays of unsigned bytes. A better implementation would be to save space by representing boolean arrays as bitmaps. The changes, though small scale, is spread across several source files. This is a good way to for starters to get familiar with the code base. ** Hacking GNU gengetopt (2002/03/07) The Aegis VM parses command line options using the GNU gengetopt utility. Some very important features are missing from its current form. For example, it does not allow multiple occurrence of the same option (e.g. "aegisvm -Dx=y -Du=v"). I would be nice if someone could help me implement those features. Gengetopt is written in C, and uses lex/yacc (actually flex/bison) to parse specification files. If you are looking for quick results, this is ideal for you. Although this is no longer JVM implementation work, what you do will benefit more than one project. * On-going tasks The following are not as self-contained as the above tasks. I constantly need help in these areas as I more and more features are added into the VM. ** Porting to Other Platforms (2002/10/17) It is always nice to see Aegis VM run on platforms other than Linux. ** Testing the VM agains Mauve (2002/10/17) Mauve is a test suite for Java virtual machines. It would be nice to know how many of Mauve tests does Aegis VM pass. ** Integration with GNU Classpath (2002/06/09) We need someone to try using aegisvm to run large Java programs in order to find out if it has been integrated properly with the GNU Classpath class library. Those who help out will need to characterize the missing pieces in the Aegis VM, and probably hack out a solution. One approach is to pick a well established, console-based Java program (e.g. one of those XML processing apps), and try to check if Aegis VM run it successfully. ** Fixing bugs (2002/03/27) Please consult the BUGS file in the distribution for a list of known bugs. Bug fixing is a great way for beginners to contribute. ** Improving Java Native Interface (JNI) support (2002/03/07) There are still quite a number of missing pieces in JNI support. I have already implemented some JNI interface functions, and Gildas contributed some hundred of the other. There is a large portion of functionities that are already built into the VM, but the corresponding JNI interface functions are not yet there. I need someone who can learn both the VM internal and the JNI spec to work on this. Do not underestimate the complexity of this task --- some JNI functions does so much more than data marshalling and unmarshalling. In certain cases, you might even need to add code to the VM internal (e.g. global/weak references), but I won't begin with those... ** Test suite (2002/03/07) Currently, the test suite is not very complete. As a developer, I am definitely biased to think that my code works. I need shrewed testers who are thorough and creative. If you enjoy breaking other people's software and watching a seemingly well-mannered program crash, this is just the right job for you :-) This involves Java programming and some lightweight shell programming. In certain cases when JNI is being tested, then some C programming might be needed. ** Built-in class library (2002/03/07) I am trying not to write my own class library but rather use those already written by others (i.e. the GNU classpath library). However, it turns out that some classes require internal support from the VM (e.g. java.lang.Class, java.lang.Object, etc). I have already done some preliminary implementation of a few of such classes, but they are far from being standard compliant. I need Java hackers to make these library classes more complete and mature. See the FEATURES file for more information.