Java 8 compatibility

Thomas Wuerthinger thomas.wuerthinger at oracle.com
Sat Apr 4 22:23:25 UTC 2015


Charles,

Sorry to hear that the initial building process gave you a bad impression and thanks for your input. I agree that test coverage is a very important aspect of a project and we therefore have an extensive gate system that includes thousands of unittests “mx unittest”, bug detection tools “mx findbugs”, formatting checking tools “mx eclipseformat”, and tools for checking module dependencies “mx canonicalizeprojects”. We also create JaCoCo test coverage reports for every push.

The reason behind our dependency on JDK7 when building Graal is not technical debt, but the requirement that the Truffle API must be usable for language implementations that require Java 7 for backwards compatibility. JRuby is the most prominent example for this at the moment. Building with JDK7 is the only way for us to ensure 100% that we do not break these language projects depending on Truffle.

There are points of interaction between the compiler and the JDK in particular around compiler intrinsics where we replace JDK methods with more efficient representations in the compiler’s IR. Additionally, the compiler itself uses large part of the standard library. The differences a JDK version makes are usually not big and often none at all. However, fixing the JDK version Graal is built with makes sure that this is also the exact same version we run our extensive testing and benchmark structure with.

That all said, we will investigate how we can make the initial build step for people new to Graal simpler. I hope with Graal becoming now more mature and stable, there will be a larger incentive for people to experiment with the technology (both in source and binary form).

- thomas


> On 04 Apr 2015, at 16:13, Charles Beyer <cjbeyer at gmail.com> wrote:
> 
> To add data to the point I think Stefan is trying to make, I refrained from starting a Truffle/Graal project recently because of this bad first impression.
> 
> It was a yellow flag that I needed an old JDK7 installed but a red flag that I need an old JDK8.  Also, I needed a different version of JDK8 for IGV than for building graal - another red flag.
> 
> With a software system this complex, a big part in evaluating its use (for me) is trying to measure how professional the development team behind the project is.  Things like test coverage and how much technical debt has accumulated in the build system is a natural measure of that.  The current dependency requirements didn't leave me with a warm fuzzy feeling.
> 
> That aside, I'm very excited about where the project is going so don't take this as trolling.  Rather, I just decided to wait until the JDK8 dependency issue is resolved.
> 
> -Charles



More information about the graal-dev mailing list