For those not following the Multi-Language Virtual Machine ("DaVinci
Machine") mailing list [1], there is a new thread [2] with updates on
the status of various sub-projects.
John Rose, invoke dynamic & etc:
http://mail.openjdk.java.net/pipermail/mlvm-dev/2009-January/000321.html
Rémi Forax, invoke dynamic backport:
http://mail.openjdk.java.net/pipermail/mlvm-dev/2009-January/000323.html
Tobias Ivarsson, interface injection:
http://mail.openjdk.java.net/pipermail/mlvm-dev/2009-January/000327.html
Arnold Schwaighofer, tail calls:
http://mail.openjdk.java.net/pipermail/mlvm-dev/2009-January/000331.html
Regards,
Patrick
1: http://mail.openjdk.java.net/mailman/listinfo/mlvm-dev
2: http://mail.openjdk.java.net/pipermail/mlvm-dev/2009-January/000321.html
All super-exciting stuff, especially the fact that Arnold claims that
tail calls are almost finished. We're going to have some wonderful toys
soon.
- Charlie
Yup. IMO it seems like an important near-term goal is to ensure that
the patch/build loop for the relevant bits is smooth enough that every
lang implementor has something stable to work against. I imagine at
least a build server, if not some kind of VM image, would be a great
nice-to-have. That will help set up a feedback loop as people roll
these features into their compilers.
Patrick
On Jan 21, 2009, at 4:57 AM, Patrick Wright wrote:
> For those not following the Multi-Language Virtual Machine ("DaVinci
> Machine") mailing list [1], there is a new thread [2] with updates on
> the status of various sub-projects.
I think once we have basic support in Java for method handles,
invokedynamic, and exotic identifiers, we can use Java as a system
language to write language runtime support in many cases where we'd
otherwise have to roll the bytecodes by hand.
(Tailcalls are another important feature for runtimes; clearly
runtime systems want to use tailcalls to delegate bits of work
between modules without adding to the control stack. That will come
pretty soon, thanks to Arnold.)
As Attila said at the Summit in September, this new stuff probably
has strong implications on the design of a MOP. The main example is
using method handles to express units of procedural semantics; the
MOP's job of handing out such units is streamlined if those units can
be directly invoked (as in invokevirtual or invokedynamic) by the MOP
client, instead of called through a reflective veil of boxed
varargs. Getting this working requires that the client code which
uses the MOP must be able to emit method handle calls. If the Java
language supports these things, then the MOP clients can be written
using javac not just ASM, which makes a JSR 292-based MOP viable.
-- John
That will help set up a feedback loop as people roll
these features into their compilers.
On a sidenote, I would also be a happy user of a prebuilt MLVM binary
(for Mac OS X, no less; alternatively, I might really look into
installing OpenSolaris into VMWare).
Attila.