Graal: Espresso Status

Created on 4 Sep 2019  路  9Comments  路  Source: oracle/graal

Based on some discussion with @pitr-ch, we've got a definite use case for the Espresso implementation of 'Java on Truffle'. However, checking the last issue to mention it or the researchgate page show no updates in quite a while.

Essentially, we're interested in the current status of the project and whatever additional information you can release (subject to safe harbour if need be).

question

Most helpful comment

I cannot comment on the release.
But here's a light up-to-date overview about Espresso:
Espresso is a Java bytecode interpreter implemented on top Truffle. More that just an interpreter, Espresso is a fully meta-circular JVM written in Java.

There are two key fronts, completeness/spec-compliance and performance.
On the completeness/spec-compliance side we have it easier compared to the other GraalVM languages.
The JVM is a very noble platform, incredibly well-architected despite its age. Espresso reuses the OpenJDK standard library and native libraries, compatibility is not a concern. It currently passes the Java Compatibility Kit (JCK) 8b, but it's not officially certified yet. Java 11 support is around the corner.

On the performance front we have it harder than the other GraalVM languages since we are chasing one of the most optimized, battle-tested, marvels of software ever written.

One of the claims of GraalVM for language implementors is being able to provide similar or better capabilities and performance at a fraction of the engineering cost; I think Espresso is the uber expression of that claim; it took Espresso just six months, from scratch, to reach meta-circularity, a little more than a year to pass the JCK. We easily beat other simple JVM implementations (e.g. see AvianVM), but not yet HotSpot/OpenJ9, on peak performance.
Performance is not a free perk, it's very language-specific, it takes (engineering) time. GraalVM/Truffle provide the right tools and abstractions to squeeze performance; IMHO what was considered state-of-the-art yesterday, are just Truffle basic building blocks today.

There's an internal video with Espresso running a fairly amusing selection of non-trivial applications (also featuring Scala, Kotlin and even Doom!). We'll definitely prepare something even better for the release.

All 9 comments

Apparently @dougxc is the person to be asking!

We're currently working on making Espresso 100% TCK compliant (about 1% to go). Soon after that, we plan to open source it.

That's brilliant news!

A brief point of clarification: is Espresso a Truffle interpreter for JVM bytecode, or for the Java source itself? Reading the resources available makes it sound like the first, but I couldn't find anywhere that explicitly states it.

It's a JVM bytecode interpreter.

That's properly brilliant. Thanks for the confirmation (and the astoundingly rapid response)!

@dougxc :
Would you provide a status update on Espresso? In your last status update (Sept 2019) you made it sound like open sourcing it was imminent!

Thanks!

I'll defer to @gilles-duboscq or @mukel to give a more recent update on status.

I cannot comment on the release.
But here's a light up-to-date overview about Espresso:
Espresso is a Java bytecode interpreter implemented on top Truffle. More that just an interpreter, Espresso is a fully meta-circular JVM written in Java.

There are two key fronts, completeness/spec-compliance and performance.
On the completeness/spec-compliance side we have it easier compared to the other GraalVM languages.
The JVM is a very noble platform, incredibly well-architected despite its age. Espresso reuses the OpenJDK standard library and native libraries, compatibility is not a concern. It currently passes the Java Compatibility Kit (JCK) 8b, but it's not officially certified yet. Java 11 support is around the corner.

On the performance front we have it harder than the other GraalVM languages since we are chasing one of the most optimized, battle-tested, marvels of software ever written.

One of the claims of GraalVM for language implementors is being able to provide similar or better capabilities and performance at a fraction of the engineering cost; I think Espresso is the uber expression of that claim; it took Espresso just six months, from scratch, to reach meta-circularity, a little more than a year to pass the JCK. We easily beat other simple JVM implementations (e.g. see AvianVM), but not yet HotSpot/OpenJ9, on peak performance.
Performance is not a free perk, it's very language-specific, it takes (engineering) time. GraalVM/Truffle provide the right tools and abstractions to squeeze performance; IMHO what was considered state-of-the-art yesterday, are just Truffle basic building blocks today.

There's an internal video with Espresso running a fairly amusing selection of non-trivial applications (also featuring Scala, Kotlin and even Doom!). We'll definitely prepare something even better for the release.

@mukel thanks for sharing these insights and development, a lot of us are curious about Espresso, would love to have a play when it's released. It will be monumental in terms of meta-development, using Java to write Java to run Java on Java!

Was this page helpful?
0 / 5 - 0 ratings