Next rounds of prototype

Brian Goetz brian.goetz at
Thu Jul 9 14:33:41 UTC 2015

In the next week or two, we'll be pushing parts of our next round of 
prototype for anyfied generics.

The central complaint about the existing prototype has been the lack of
a common supertype between Foo<int> and Foo<String>, other than Object. 
  (Much existing code relies on wildcards, for better or worse.)

Of course, we didn't pursue the original path because we loved the
resulting type system; we pursued this path because it was *what was
possible with the JVM architecture we have*.  That's not to say that
changing the JVM is off the table (as it was in Java 5), but doing so is
even more costly than changing the language (which is already quite
expensive), and it would have been irresponsible to pursue VM-centric
options without first exploring what could be done without VM changes.

Of course, even once "change the VM" is under consideration, there is a
broad spectrum of cost, ranging from "merely extremely expensive" to
"obscenely expensive."  So a responsible investigation involves
extensive exploration to identify sensible and cost-effective improvements.

To that end, we've spent the past several months identifying what we
could do in the VM to enable a useful common supertype for all
instantiations (whether that is spelled "Foo<?>" is a separate
question), and, after several rounds, have pared this down to something
that is conceivably implementable with a tractibly-small set of VM
changes.  In the next week or two, we'll be pushing a prototype
implementation of the compiler.  We'll follow that up with some new new 
documents describing what we've done, and prototypes of some of the VM 
features that are needed to plug the holes.  I'm sure there are lots of 
questions; hopefully they will be answered when we can write it all up.

As always, the most important feedback we can get is from people *using*
the prototype.  We'll post a short summary of the language changes so 
folks can play with the prototype more effectively.

More information about the valhalla-dev mailing list