GraalJS support
It is possible to use GraalJS instead of Rhino JS for javascript evaluation. GraalJS is fully ECMAScript 2022 compliant while Rhino JS only supports ES5.
This feature is experimental for now, but we intend to make GraalJS the default if all goes well.
Enable GraalJS via Flow config
ℹ️ Note This only has an effect if present at the top-level flow. It is ignored when included in any subflows.
Enable GraalJS via environment variable
⚠️ Warning This env var will have no effect when running on Maestro Cloud. Use the Flow config above instead to opt into GraalJS on Maestro Cloud.
GraalJS behavior differences
There are some differences between the new GraalJsEngine
and the current RhinoJsEngine
implementation that are worth noting. All of the differences below and some others are documented and tested by the GraalJsEngineTest
and RhinoJsEngineTest
tests.
tldr; The variable scoping with the GraalJS implementation is more consistent and understandable
Rhino JS | GraalJS |
---|---|
|
|
Some examples
Example | Rhino JS | GraalJS | |
---|---|---|---|
Redeclaring variables across scripts | ❌ Variable redeclarations throw an error | ✅ Variable names can be reused across scripts | |
Accessing variables across scripts | ✅ Variables are accessible across scripts | ❌ Variables can't be accessed across scripts | |
Special character handling | ❌ Single backslash causes an exception | ✅ Single backslash and all other special chars are handled correctly |
Last updated