GPL.
No comment beyond that but I thought I might save someone a few clicks.
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...
What it actually provides is a form of "universal abstract syntax tree". So if a C program wants to access a JavaScript object by writing "a->b = c" then the dereference is turned into a snippet of JavaScript code (in effect) and inlined right into the C function.
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.