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