Project proposal: Multi-Language VM

Hello world. I propose a new OpenJDK project[1], the Multi-Language VM, to be abbreviated "mlvm", and to be sponsored by the HotSpot group[2]. This project will be open for prototyping JVM features aimed at efficiently supporting languages other than Java. The emphasis will be on completing the existing bytecode and execution architecture with general purpose extensions, as opposed to a new feature for just one language, or adjoining an unrelated new execution model. The emphasis will also be on work which removes "pain points" already observed by implementors of successful or influential languages, as opposed to more speculative work on unproven features or niche languages. Virtual machines produced by this project will be standards-conforming, in that they will not change the meaning or behavior of existing Java classes and classfile formats. They may define variations or extensions of the class format, or new kinds of objects, whose meaning and behavior are beyond the scope of current Java and JVM specifications. However, these extended codes and data structures will interoperate as much as possible with Java objects. In addition, as a way of delimiting separate prototyping efforts, each new feature will come with a switch which turns it off, and that switch will be "off" by default. This is the approach used in the Kitchen Sink Language project.[3] This proposal refines and completes a partial proposal I sent earlier this year to the HotSpot project, a proposal for a "Kitchen Sink VM"[4]. The present proposal is more specifically directed at supporting new languages (i.e., those languages which are new to the JVM). Here are some examples of features that could be prototyped in this project, if developers were found who are willing and able: - tail calls and tail recursion [5] - continuations and coroutines [6] - tuples and value-oriented types [7] - lightweight method objects [8] - runtime support for closures [9] - invokedynamic [10] Prototyping for JSR 292[11] is likely to occur as a part of this project. Note that none of the above suggested features is specific to any single language. As the current OpenJDK Project guidelines request, please send followups to the discussion list.[12] Thanks very much for your attention to this matter, -- John Rose http://blogs.sun.com/jrose/ [1] http://openjdk.java.net/projects/ [2] http://openjdk.java.net/groups/hotspot/ [3] http://ksl.dev.java.net/ (Kitchen Sink Language) [4] http://mail.openjdk.java.net/pipermail/hotspot-dev/2007-July/ 000091.html (Kitchen Sink VM) [5] http://blogs.sun.com/jrose/entry/tail_calls_in_the_vm [6] http://lambda-the-ultimate.org/node/1002 (Continuations for Java) [7] http://blogs.sun.com/jrose/entry/tuples_in_the_vm [8] http://groups.google.com/group/jvm-languages/t/dbc3a4a382868904 (Lightweight Methods) [9] http://www.javac.info/ (Java Closures) [10] http://groups.google.com/group/jvm-languages/web/implementation- of-multimethods-in-jvm-languages [11] http://jcp.org/en/jsr/detail?id=292#2 (Original JSR 292 request) [12] http://mail.openjdk.java.net/mailman/listinfo/discuss