Entering the next phase of Project Valhalla
Brian Goetz
brian.goetz at oracle.com
Fri Oct 5 14:31:52 UTC 2018
We had an in-person meeting last week in Burlington MA to thrash out
where we are, and where we're going next. It was a super-productive
meeting with broad attendance -- thanks to everyone who made the trip in
person, or dialed in. This was a good time to take stock, since we've
been doing Valhalla for a while -- over four years. And, like all
worthwhile projects, we hadn't realized quite how much we had bitten
off. (This is good, because if we had, we'd probably have given up.)
I think this marks the beginning of the Phase III of the project. Phase
I focused mostly on language and libraries, trying to wrap our heads
around exactly what a clean migration to value types and specialized
generics would look like -- including how we'd migrate core APIs like
Collections and Streams, and understanding the limitations of the VM we
had, so we could envision the VM we needed. This phase produced 3
prototypes (Models 1-3), whose areas of exploration included
specialization mechanics (M1), handling of wildcards (M2) and classfile
representations for specialization and erasure (M3). At which point we
realized the list of VM requirements was implausibly long and we needed
to come at this from the other direction for a while.
Phase II attacked the problem from the VM up, with two more rounds of
prototypes -- MVT and LW1. LW1 was a risky experiment; we hoped, but
weren't sure we could get away with, sharing the L-carrier and a*
bytecodes between references and values, without losing performance. If
we could do so, many of the problems we discovered in Phase I could go
away. And, all evidence seems to suggest that this was successful, and
we have a much richer base to build on.
So, I think this demarcates the start of Phase III -- where we have a
solid enough proof-of-concept that we can largely graduate from the
"risky experiments and wild theories" portion of the program (at least
for the VM). Fantastic work from everyone involved to get us here!
Looking ahead, our next target is L2 -- which will capture the choices
we've made so far, provide a useful testbed for doing library
experiments, and set the stage for drilling into the remaining open
questions between here and L10. L10 is our target for a first preview,
which should support value types and erased generics over values.
Stay tuned for a round of technical writeups capturing decisions and
open issues....
More information about the valhalla-spec-observers
mailing list