enso/docs/distribution
Pavel Marek 5a7ad6bfe4
Upgrade enso to GraalVM for jdk 21 (#7991)
Upgrade to GraalVM JDK 21.
```
> java -version
openjdk version "21" 2023-09-19
OpenJDK Runtime Environment GraalVM CE 21+35.1 (build 21+35-jvmci-23.1-b15)
OpenJDK 64-Bit Server VM GraalVM CE 21+35.1 (build 21+35-jvmci-23.1-b15, mixed mode, sharing)
```

With SDKMan, download with `sdk install java 21-graalce`.

# Important Notes
- After this PR, one can theoretically run enso with any JRE with version at least 21.
- Removed `sbt bootstrap` hack and all the other build time related hacks related to the handling of GraalVM distribution.
- `project-manager` remains backward compatible - it can open older engines with runtimes. New engines now do no longer require a separate runtime to be downloaded.
- sbt does not support compilation of `module-info.java` files in mixed projects - https://github.com/sbt/sbt/issues/3368
- Which means that we can have `module-info.java` files only for Java-only projects.
- Anyway, we need just a single `module-info.class` in the resulting `runtime.jar` fat jar.
- `runtime.jar` is assembled in `runtime-with-instruments` with a custom merge strategy (`sbt-assembly` plugin). Caching is disabled for custom merge strategies, which means that re-assembly of `runtime.jar` will be more frequent.
- Engine distribution contains multiple JAR archives (modules) in `component` directory, along with `runner/runner.jar` that is hidden inside a nested directory.
- The new entry point to the engine runner is [EngineRunnerBootLoader](https://github.com/enso-org/enso/pull/7991/files#diff-9ab172d0566c18456472aeb95c4345f47e2db3965e77e29c11694d3a9333a2aa) that contains a custom ClassLoader - to make sure that everything that does not have to be loaded from a module is loaded from `runner.jar`, which is not a module.
- The new command line for launching the engine runner is in [distribution/bin/enso](https://github.com/enso-org/enso/pull/7991/files#diff-0b66983403b2c329febc7381cd23d45871d4d555ce98dd040d4d1e879c8f3725)
- [Newest version of Frgaal](https://repo1.maven.org/maven2/org/frgaal/compiler/20.0.1/) (20.0.1) does not recognize `--source 21` option, only `--source 20`.
2023-11-17 18:02:36 +00:00
..
bundles.md Better component handling in the project manager (#1399) 2021-01-15 15:26:51 +00:00
distribution.md Upgrade enso to GraalVM for jdk 21 (#7991) 2023-11-17 18:02:36 +00:00
fallback-launcher-release-infrastructure.md Better component handling in the project manager (#1399) 2021-01-15 15:26:51 +00:00
launcher-cli.md Fallback for Launcher Upgrades (#1139) 2020-09-14 11:05:37 +02:00
launcher.md Convert Any.== to a builtin (#3956) 2022-12-29 21:20:00 +00:00
licenses.md Forking Language Server in the Project Manager (#1305) 2020-12-02 16:56:47 +01:00
nightly.md Release process (#3909) 2022-12-02 02:56:22 +01:00
packaging.md Allow users to give a project other than Upper_Snake_Case name (#7397) 2023-07-28 13:44:39 +00:00
README.md Add a workflow for building nightly releases (#1689) 2021-05-05 11:58:14 +01:00
release-policy.md Upgrade enso to GraalVM for jdk 21 (#7991) 2023-11-17 18:02:36 +00:00
standard-libraries.md various default branch switch - related updates 2021-11-01 01:37:30 +01:00

layout title category tags order
section-summary Enso Distribution distribution
distribution
readme
0

Enso Distribution

Documents in this section deal with the process of packaging both Enso and its dependencies, and Enso projects for use by our users.

  • Distribution: Information on how we distribute Enso to our users, and for use by the IDE.
  • Packaging: Information on the structure of an Enso project/package.
  • Release Policy: Information on the release policy for Enso and this repository.
  • Launcher: Information on the design of Enso launcher, the tool for launching various components and managing Enso versions.
  • Launcher CLI: Explanation of the command-line interface of the launcher.
  • Licenses: Information on gathering license information of dependencies included in the distribution.
  • Fallback Launcher Release Infrastructure: Explanation of the fallback infrastructure that can be enabled to keep launcher updates functioning even if the primary release provider stops working.
  • Standard Libraries: A brief explanation of the standard libraries for Enso.
  • Bundles An explanation of distributed bundles that contain all components necessary to run Enso out of the box.
  • Nightly Description of the infrastructure related to the nightly builds.