There are some features like polyglot isolates that are currently EE, but they are just a use of native image isolates.
481 karma · joined July 19, 2016
There are some features like polyglot isolates that are currently EE, but they are just a use of native image isolates.
Also I will drop my truffle seminar shamelessly here for you to watch: https://youtu.be/pksRrON5XfU
So you can continue to use Graal as your last tier compiler or to compile Truffle languages on OpenJDK.
If you can read Java code and you are interested in how it is implemented start reading here: https://github.com/oracle/graal/blob/espresso/espresso/src/c...
If you are interested in a deep dive into the Truffle technology and are interested in why it makes sense to implement a language on top ofTruffle checkout my recent Rebase talk for a really long answer: https://youtu.be/O4icaN9khp4
If you don't have enough time for an 1h talk checkout my summary tweet: https://twitter.com/grashalm_/status/1212763944043139072
That being said, we cannot do it all on the Truffle side without help of the language implementation. Truffle languages speculate on certain aspects of the program data. If they do so, then we need to deoptimize and invalidate the optimized code when this speculation is violated. So the stability of the language implementation really is an important factor. Questions like "do we need to speculate on this value being constant or does give us enough benefit to justify the deoptimization overhead?" need to be answered by the language implementation and not the Truffle framework. Afaik this was not a priority for TruffleSqueak so far, but it might be in the future. So there are potentialy future improvements also on the TruffleSqueak side.
Indeed. That description should be fixed. One click away there is a Windows build: https://github.com/oracle/graal/releases
We are working with a very high priority on JDK 11 support. We should be able to ship it in a few months from now.
> So is graal polyglot already compatible with newer JDKs and it's just native image generation that's blocking the upgrade?
Not just. We also need to upgrade the JVMCI version we use in order to support libgraal (Graal compiler as native-image in HotSpot). Also, modules make everything a little bit more complicated as well.
In the end, you should not trust standard benchmarks and definitely not micro-benchmarks. Do perform tests with your own workload.
Does MoarVM use a meta-compilation technique? Pypy for example uses meta-tracing and Truffle uses Partial Evaluation to get from an interpreter specification to dynamically compiled code without duplicating the language logic. If yes, could you please point me to further information?
Meta-compilation is the primary innovation in Truffle. It allows to compose languages together and to compile them as one unit.
If you want to know more about the Truffle approach to meta-compilation see this PLDI paper from 2017[1].
[1] http://chrisseaton.com/rubytruffle/pldi17-truffle/pldi17-tru...
gu -c install org.graalvm.ruby
or from a local file
gu install ruby-installable-linux-amd64.jar
There are technical reasons we cannot have a CE for Mac OS as well. But we are working on that.
- Graal.python is pretty new and its really early days. So even basic language things might break right now. But we are investing a lot of resources in Python support.
You can check for compatibility of packages here (not yet for Python): http://graal-staging.us.oracle.com/docs/reference-manual/com...
BTW.: I'd recommend upgrading one Truffle release at a time. So it should always continue to compile. Just fix the deprecation warnings and continue with the next version until you reached the last version. We always keep deprecations for at least one version before we remove/break APIs.
If you want to discuss something in more detail feel free to join us in the Gitter chat: https://gitter.im/graalvm/graal-core
We don't bite.
From the website:
> In order to provide foreign polyglot values meaning in languages we have developed the so-called polyglot interoperability protocol. This interoperability protocol consists of a set of standardized messages that every Graal language implements and uses for foreign polyglot values. The protocol allows GraalVM to support interoperability between any combination of languages without requiring them to know of each other.
This technique is based on some research we did in 2015: http://chrisseaton.com/rubytruffle/dls15-interop/dls15-inter...
> Can I AOT with this (via SubstrateVM) and deploy to "mobile" targets, and specifically iOS?
Technically there is no reason to not support it. But support is not implemented yet.
> Are there any examples of embedding GraalVM in an existing native application (such as the noted idea of having GraalVM accessible inside of MySQL)?
Yes. Oracle MLE[1] and MySQL already work. Oracle MLE you can try already. We have a native embedding API (its very similar to the Java API). We could not yet quite finish the documentation of it for website. But its already included look for a file polyglot_api.h in the binary.
Currently we have the same APIs for CE and EE. So applications are easily portable between those two. We have no plans to change this.
But. You don't have to take our word for it. CE is open source and you may build, extend and maintain it yourself if you want to.
We don't test all of them but many.
We have considered .NET support but we are not actively working on it right now. But GraalVM is an open platform. Everyone can develop a language for it: http://www.graalvm.org/docs/graalvm-as-a-platform/
https://github.com/oracle/graal/blob/master/truffle/docs/Lan...
If not. Please let me know.