here are the contents of the FrontPage as of 2006-09-28
Resources
Mini Projects
The following have been suggested on the list and are either things that are needed, or good little experiments for interested people
- CommandLineCompiler Create a "javac" compatible command-line java compiler using the eclipse compiler
Motivations
- Focus on modular, interchangeable components
- exploit existing compilers, memory managers etc
- promote configurability (different components for different contexts)
- allow diversity in development approaches
- encourage large-scale contributions (here's a compiler)
- Bootstrap the project rapidly
- capture momentum
- seed the project with an existing VM-core (or cores)
- Design a clean core (or cores) from scratch
- do this concurrently with work on components in existing core/s
- the core should be lightweight
- multiple cores may make sense
- the needs of different contexts may require this
- competing approaches may be healthy
Requirements
Existing work for pluggability
Other usable components
Components
Decisions
- Object Layout
- synchronization
- getting the class pointer
- does the object point to the vtable?
- how does the GC know about the layout of the object?
- plain old ordering and packing of the fields
- Method Dispatch
- c++-style vtables vs constant-time dispatch tables
- Exception Handling
One Concerte Option
- Use two VMs as seeds
- Jikes RVM is a possible candidate
- Focus energy on cleaning it up and modularizing it. This is
something we've already begun (see earlier post), but will
take a lot of work.
- Get a very good optimizing compiler
- Get an efficient and modular memory management toolkit
(MMTk)
- Need to deal with licensing issues and gain the consent of
the community (not insurmountable)
- Need hard work to achieve modularity goal for whole VM
- Another very different VM (kaffe?)
- amenable to modularization
- amenable to other components (drop in MMTk?)
- Leverage extensive experience to build new core/s
- Start with a clean slate
- Leverage all of our diverse experience (gcj, kaffe, ovm, joqe,
jnode,...)
- Work concurrently with above work on components in old core/s,
miminize loss of momentum, try to really think it through
carefully.
- May be sensible to develop more than one core
- Develop new components
- Extract components from existing work, apply to new VM/s
- Develop new components from scratch
- Encourage porting of existing compilers etc into this framework
Issues
- What do we do about com.sun.* internal classes?
- Process for getting bugs fixed in Classpath?
- Use java for bulk of the code (like JikesRVM?)
- modularity is compile-time?
- handling memory fragmentation in a long running process?
Volunteers with contributions
Random Thoughts
- write a new jikesrvm back end?
- write a new vm around llvm?
- m4 to speeup things?
- writing an excellent jit is not easy, reuse is perhaps more efficient, eg use LLVM for that chunk?
Bookmarks
Papers
Articles
Tutorials
Related Pages
IRC channels on irc.freenode.net
- #harmony
- #kaffe
- #classpath
- #sablevm
What to do if you want to help NOW!