enso/docs
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
..
debugger Invoke all Enso benchmarks via JMH (#7101) 2023-08-07 12:39:01 +00:00
distribution Upgrade enso to GraalVM for jdk 21 (#7991) 2023-11-17 18:02:36 +00:00
infrastructure Upgrade enso to GraalVM for jdk 21 (#7991) 2023-11-17 18:02:36 +00:00
language-server Backend self sampling (#8309) 2023-11-17 15:04:10 +00:00
libraries Change layout of local library search path in order to be able to move Round_Spec.enso back to Tests (#7634) 2023-09-01 20:20:04 +00:00
parser Preparation for more parser work (#1363) 2020-12-18 14:25:30 +00:00
polyglot Support for Python libraries like numpy (#7678) 2023-08-30 06:10:18 +02:00
profiler Enable profiling for all commands of runner executable (#8254) 2023-11-08 19:30:28 +00:00
rfcs Add a markdown style guide (#1022) 2020-07-21 13:59:40 +01:00
runtime [Gui2] Opening projects and language server connection (#7813) 2023-09-22 03:43:25 +00:00
security EnsoGL context abstraction (#3293) 2022-03-04 15:13:23 +01:00
semantics Implement private modules (#7840) 2023-10-04 10:33:10 +00:00
style-guide Add TypeScript style guide (#6226) 2023-04-15 08:28:12 +00:00
syntax Runtime checking of ascribed expression types (#7796) 2023-09-14 14:09:41 +02:00
types Runtime checking of ascribed expression types (#7796) 2023-09-14 14:09:41 +02:00
CODE_OF_CONDUCT.md Update CODE_OF_CONDUCT.md 2023-02-13 23:10:51 +01:00
CONTRIBUTING.md Upgrade enso to GraalVM for jdk 21 (#7991) 2023-11-17 18:02:36 +00:00
enso-philosophy.md Consistent naming of visualization (#7124) 2023-06-26 17:04:35 +00:00
getting-enso.md Bump the development version number (#1389) 2021-01-06 08:57:02 +00:00
graalvm-m1-mac.md Fix typos in graalmv-m1-mac.md (#3253) 2022-02-09 09:30:41 +01:00
README.md Update some documentation for clarity (#2005) 2021-10-01 14:13:20 +01:00
runtime-guide.md IGV can jump to JMH sources & more (#4008) 2022-12-30 05:30:32 +00:00
runtime-roadmap.md Consistent naming of visualization (#7124) 2023-06-26 17:04:35 +00:00
SECURITY.md Add a markdown style guide (#1022) 2020-07-21 13:59:40 +01:00

layout title category tags order
docs-index Enso Engine Developer Documentation summary
summary
readme
0

Enso Engine Developer Documentation

This folder contains the documentation for the implementation of the Enso programming language. The documentation is broken up by subject, within the below-listed categories, and each subject combines information about the design, specification, and implementation of the feature to which it pertains.

We provide a number of useful resources for getting a quick understanding of the Enso project:

  • The Enso Philosophy: Information on the design philosophy behind Enso, and why we build things in the way we do.
  • Contributing Guidelines: Information for people wanting to contribute to Enso (in many different ways).
  • Community Code of Conduct: The code of conduct for members of our community, developers and users alike.
  • Security Guidelines: Security guidelines for the Enso project, including supported versions and our vulnerability reporting process.
  • Getting Enso: Instructions for how to get and run a copy of Enso.
  • Runtime Roadmap: An analysis of the pressing changes that should be made to the runtime.
  • Runtime Guide: A tour of the runtime, and some pointers as to useful resources.

It is broken up into categories as follows:

  • Distribution: Information on how we distribute Enso to our users, and how Enso packages themselves work.
  • Language Server: Information on the Enso language server, its protocol, and how it integrates with the runtime.
  • Polyglot: Information on Enso's polyglot functionality, and how it is integrated into the surface Enso language.
  • RFCs: RFCs for Enso's development and evolution.
  • Runtime: Specification and documentation of the way that the Enso runtime is designed and implemented.
  • Semantics: A specification of Enso's semantics.
  • Style Guides: Style guides for the code written as part of the Enso project.
  • Syntax: A specification of Enso's syntax.
  • Types: A specification of Enso's type system and type theory.
  • Debugger: A specification of Enso's debugger.
  • Parser: Design and specification of the Enso parser.
  • Infrastructure: Description of the infrastructure for building Enso.
  • Libraries: Description of Enso's Library Ecosystem.