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

  • zlib
  • fdlibm
  • APR

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
    • biased for speed

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!

  • No labels