enso/engine
Pavel Marek 76061e1c04
Add IRDumper for Scala IR (#9543)
Debugging/inspecting/watching changes in the [Scala IR](fe0f9046db/engine/runtime-parser/src/main/java/org/enso/compiler/core/IR.java) has always been very tricky. The only way to do that, other than attaching the debugger and inspecting nested object structures, has been [IR.pretty](fe0f9046db/engine/runtime-parser/src/main/java/org/enso/compiler/core/IR.java (L91)) method, that is not useful for large IRs. This PR add an [IRDumper](a98b674f9e/engine/runtime-compiler/src/main/java/org/enso/compiler/dump/IRDumper.java) utility class that dumps the `IR` into a [GraphViz](https://graphviz.org/) textual format that can be further processed by the [dot](https://graphviz.org/download/) program to generate, e.g., svg files from these IRs.

A simple example (dumped by `IRDumper` into a file that is processed with `dot -O -Tsvg file`):
![fqn_end_tmp gv](https://github.com/enso-org/enso/assets/14013887/7441dc31-45ac-469e-9e06-4c98795a95eb)

# Important Notes
- GraphViz format is even simpler than JSON format.
- No dependencies added, just 3 simple Java classes.
- Dumping the IR is optional and not used anywhere, when desired, one can dump IRs for example from [Compiler.runPipeline](9a91b7bcc6/engine/runtime-compiler/src/main/scala/org/enso/compiler/Compiler.scala (L438))
2024-03-27 09:19:47 +00:00
..
interpreter-dsl-test/src/test/java/org/enso/interpreter/dsl/test Update java formatter sbt plugin (#8543) 2023-12-15 14:45:23 +00:00
language-server Put all reexports of given entry in Suggestion Database (#9454) 2024-03-26 16:33:25 +00:00
launcher/src Drop inefficient SemVer implementation (#9089) 2024-02-22 09:59:09 +00:00
polyglot-api/src Put all reexports of given entry in Suggestion Database (#9454) 2024-03-26 16:33:25 +00:00
runner Add --disable-private-check runner option (#9556) 2024-03-27 09:03:35 +00:00
runtime Put all reexports of given entry in Suggestion Database (#9454) 2024-03-26 16:33:25 +00:00
runtime-benchmarks/src/main dry-run benchmarks exits when some benchmark fails (#9397) 2024-03-14 15:21:38 +00:00
runtime-compiler/src/main Add IRDumper for Scala IR (#9543) 2024-03-27 09:19:47 +00:00
runtime-fat-jar/src/main/java Edits are processed in the order of submission (#8787) 2024-01-22 23:05:41 +00:00
runtime-instrument-common/src Speedup visualization and widget responses (#9371) 2024-03-21 14:06:48 +00:00
runtime-instrument-id-execution/src/main/java/org/enso/interpreter/instrument Update java formatter sbt plugin (#8543) 2023-12-15 14:45:23 +00:00
runtime-instrument-repl-debugger/src/main/java/org/enso/interpreter/instrument Introducing engine/runtime-compiler project (#8197) 2023-11-01 12:42:34 +01:00
runtime-instrument-runtime-server/src/main/java/org/enso/interpreter/instrument Edits are processed in the order of submission (#8787) 2024-01-22 23:05:41 +00:00
runtime-integration-tests/src/test Put all reexports of given entry in Suggestion Database (#9454) 2024-03-26 16:33:25 +00:00
runtime-language-arrow/src Arrow builder is not an Array (#9358) 2024-03-13 14:37:41 +00:00
runtime-language-epb/src Syntax Color and Debug JavaScript/Python in Enso Source (#9440) 2024-03-15 10:28:13 +01:00
runtime-parser/src Autoscope syntax (#9372) 2024-03-12 19:31:16 +00:00
runtime-test-instruments/src/main/java Binary operator resolution based on that value (#8779) 2024-01-27 08:38:47 +01:00
README.md Add a markdown style guide (#1022) 2020-07-21 13:59:40 +01:00

The Enso Engine

The Enso engine is the codebase responsible for compiling and executing Enso code, as well as providing language server functionality to users of the language. It is subdivided into two major components:

  • Language Server: The Enso language service.
  • Polyglot API: The truffle-boundary safe API for communication between the language server and the runtime.
  • Runner: The command-line interface for Enso.
  • Runtime: The compiler and interpreter for Enso.