Skip to content

Turn all GraalVM Languages artifacts into standard Maven dependencies for Polyglot Embedders #6852

Closed

Description

Image for: Description

TL;DR

Currently, to use GraalVM languages as a polyglot embedder, you have to install languages using the GraalVM Updater tool (gu).
In the future, we want to ship GraalPy, Graal.js, TruffleRuby, and other GraalVM languages entirely as Maven artifacts.
Polyglot embedders will need to depend on those artifacts using the application module path.

Goals

  • The configuration of the application module path should be the same, whether you run on OpenJDK, Oracle JDK, or a GraalVM JDK.
  • Languages can be picked up from the application module path and have priority over languages installed using GraalVM Updater.
  • JVM built-in tools that support module dependencies like jlink work and are tested with GraalVM languages.
  • To prevent accidental use of internal APIs, Truffle and language implementations are isolated from the embedder using Java module-based isolation. This means that all GraalVM languages are migrated to Java modules.
  • All Truffle artifacts, including non-open-source parts, are published as Maven artifacts.
  • Backward and forward compatibility of all Truffle artifacts to the latest JDK LTS, starting with JDK 21.
  • Truffle and its languages will continue to be versioned using a year-based versioning scheme. For example, GraalVM for JDK 21 will be compatible with version 23.1 of the GraalVM languages.

Non-Goals

Metadata

Image for: Metadata

Metadata

Image for: Metadata

Assignees

Labels

Type

No type

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions

Image for: Issue actions