enso/docs/runtime
Jaroslav Tulach dc30e44b60
Register instruments/language in their own compilation units to fix the sbt build issues (#3509)
New plan to [fix the `sbt` build](https://www.pivotaltracker.com/n/projects/2539304/stories/182209126) and its annoying:
```
log.error(
"Truffle Instrumentation is not up to date, " +
"which will lead to runtime errors\n" +
"Fixes have been applied to ensure consistent Instrumentation state, " +
"but compilation has to be triggered again.\n" +
"Please re-run the previous command.\n" +
"(If this for some reason fails, " +
s"please do a clean build of the $projectName project)"
)
```
When it is hard to fix `sbt` incremental compilation, let's restructure our project sources so that each `@TruffleInstrument` and `@TruffleLanguage` registration is in individual compilation unit. Each such unit is either going to be compiled or not going to be compiled as a batch - that will eliminate the `sbt` incremental compilation issues without addressing them in `sbt` itself.

fa2cf6a33ec4a5b2e3370e1b22c2b5f712286a75 is the first step - it introduces `IdExecutionService` and moves all the `IdExecutionInstrument` API up to that interface. The rest of the `runtime` project then depends only on `IdExecutionService`. Such refactoring allows us to move the `IdExecutionInstrument` out of `runtime` project into independent compilation unit.
2022-06-13 14:09:08 +00:00
..
builtin-base-methods.md Opt-in TCO (#1219) 2020-10-15 16:52:26 +02:00
caching.md Add a markdown style guide (#1022) 2020-07-21 13:59:40 +01:00
demand-analysis.md Add a markdown style guide (#1022) 2020-07-21 13:59:40 +01:00
execution-server-flow.md Add a markdown style guide (#1022) 2020-07-21 13:59:40 +01:00
function-call-flow.md Opt-in TCO (#1219) 2020-10-15 16:52:26 +02:00
instruments.md Register instruments/language in their own compilation units to fix the sbt build issues (#3509) 2022-06-13 14:09:08 +00:00
ir-caching.md Load IR Caches from Disk (#1996) 2021-09-18 13:48:13 +01:00
README.md Design the support for IR serialization (#1868) 2021-07-15 13:14:32 +01:00
runtime-features.md Add a markdown style guide (#1022) 2020-07-21 13:59:40 +01:00
searcher.md Add HTML Documentation API (#1758) 2021-06-01 15:43:22 +03:00
unbounded-recursion.md Add a markdown style guide (#1022) 2020-07-21 13:59:40 +01:00

layout title category tags order
section-summary Enso Runtime runtime
runtime
readme
0

Enso Runtime

The Enso runtime refers to both the compiler and the optimising JIT runtime for Enso. While this might seem like a strange choice, it makes sense internally as the components are integrated to a level not seen in most languages. It encompasses the following functionality:

  • Parsing: Taking Enso code as input and generating an AST that maintains a sophisticated set of information about the input.
  • Desugaring: Reducing the user-facing Enso code into a simplified language known as Core.
  • Type Inference: Inferring the types of bindings in the user's code.
  • Type Checking: Checking that the inferred and provided types for bindings match up across the codebase.
  • Optimisation: Static optimisation processes to improve the performance of the user's program.
  • Code Execution: Actually running the Enso code.
  • Introspection Hooks: Providing hooks into the running code to allow the language server to inspect information about the code as it runs.

This folder contains all of the documentation related to the runtime, which is broken up as follows:

  • Caching: A description of the runtime's value caching mechanism.
  • Demand Analysis: A specification for the demand analysis process in the Enso compiler that assists users with working with suspended computations.
  • Function Calling Flow: A description of the involved logic that goes into a calling a function performantly in the Enso runtime, while also supporting the flexible function syntax.
  • Runtime Features: A description of (and plan for) the features of the Enso runtime.
  • Unbounded Recursion: An exploration of techniques for achieving unbounded recursion on the JVM.
  • Instruments: A description of instrumentation in the language runtime.
  • Execution Server Flow: An explanation of how the execution server orchestrates Enso's execution.
  • Builtin Base Methods: An explanation of the DSL we use for defining builtin types and methods.
  • Searcher: An explanation of how the searcher works.
  • Instruments: An explanation of how we compile Truffle instrumentation.
  • IR Caching: An explanation of how we cache the compiler IR to reduce startup times.