lambda compiler implementation - third milestone
Maurizio Cimadamore
maurizio.cimadamore at oracle.com
Thu May 24 08:43:55 PDT 2012
Dear lambditizens,
in the last few months I've been busy updating the javac infrastructure
in the JDK 8 repo [1..10] and then rewrote (after a couple of painful
merge rounds ;-)) the type-checking support for lambda/method reference
from scratch, leveraging such architectural changes. This resulted in a
much more cohesive implementation [11], that closely reflects the
direction the language appears to be headed in (see below). There are,
of course, few holes and gaps here and there, but, with your help, we'll
work towards chasing'em all.
One of the most important features supported in this new implementation
is the long-awaited generalized support for target-typing in method
context - this means that if you call a generic method or pass a diamond
in a method context, javac will try its best in order to figure out what
the inferred types are. Not all situations are handled, but the obvious
ones should work as expected.
As this is a big revolution in the way in which javac type-checks method
calls, there could be some initial hiccups - in order to reduce the
chance of regression as much as possible we also put in place a biggie
suite of combinatorial test cases [12] - but please, be patient as new
bugs might be uncovered.
I would like to thank the many of you who provided very valuable
feedback and bug reports - please keep it going!
Maurizio
[1] - http://hg.openjdk.java.net/jdk8/jdk8/langtools/rev/51fb17abfc32
[2] - http://hg.openjdk.java.net/jdk8/jdk8/langtools/rev/e28a06a3c5d9
[3] - http://hg.openjdk.java.net/jdk8/jdk8/langtools/rev/568e70bbd9aa
[4] - http://hg.openjdk.java.net/jdk8/jdk8/langtools/rev/161230ec7c73
[5] - http://hg.openjdk.java.net/jdk8/jdk8/langtools/rev/6f0ed5a89c25
[6] - http://hg.openjdk.java.net/jdk8/jdk8/langtools/rev/2827076dbf64
[7] - http://hg.openjdk.java.net/jdk8/jdk8/langtools/rev/38ae13dcd215
[8] - http://hg.openjdk.java.net/jdk8/jdk8/langtools/rev/48ee63caaa93
[9] - http://hg.openjdk.java.net/jdk8/jdk8/langtools/rev/d2508136751c
[10] - http://hg.openjdk.java.net/jdk8/jdk8/langtools/rev/dda6a5b15580
[11] - http://hg.openjdk.java.net/lambda/lambda/langtools/rev/314e550e28af
[12] - http://hg.openjdk.java.net/lambda/lambda/jdk/rev/7152aca9aef1
More information about the lambda-dev
mailing list