enso/docs
Pavel Marek f0de43a970
Add org.enso.compiler.dumpIr system prop (#10740)
Working on compiler IR is a daunting task. I have therefore added a new system property `enso.compiler.dumpIr` that will help with that. It dumps the encountered IRs to `ir-dumps` directory in the [GraphViz](www.graphviz.org) format. More info in updated docs.

Note that all the functionality to dump IRs to `dot` files was already implemented. This PR just adds the command line option and updates docs.

# Important Notes
- `--dump-graphs` cmd line option is removed as per [Jaroslav's request](https://github.com/enso-org/enso/pull/10740#pullrequestreview-2216676140).
- To dump graphs, use `-Dgraal.Dump=Truffle:2` system property passed via `JAVA_OPTS` env var.

If you run `env JAVA_OPTS='-Denso.compiler.dumpIr=true' enso --run tmp.enso` where `tmp.enso` is, e.g.:
```
from Standard.Base import all
main = 42
```
You will then have something like:
```
$ ls ir-dumps
Standard.Base.Data.Filter_Condition.dot     Standard.Base.Data.Time.dot              Standard.Base.System.Advanced.dot       Standard.Base.Warning.dot
Standard.Base.Data.Locale.dot               Standard.Base.Enso_Cloud.Enso_File.dot   Standard.Base.System.File.Advanced.dot  tmp.dot
Standard.Base.Data.Numeric.dot              Standard.Base.Errors.dot                 Standard.Base.System.File.dot
Standard.Base.Data.Numeric.Internal.dot     Standard.Base.Network.HTTP.Internal.dot  Standard.Base.System.File.Generic.dot
Standard.Base.Data.Text.Regex.Internal.dot  Standard.Base.Runtime.dot                Standard.Base.System.Internal.dot
```
You can then visualize any of these with `dot -Tsvg -O ir-dumps/tmp.dot`.

An example how that could look like is
![image.svg](https://github.com/user-attachments/assets/26ab8415-72cf-46da-bc63-f475e9fa628e)
2024-08-06 12:00:27 +00:00
..
debugger Rename Tests to Base_Tests to be more descriptive (#8781) 2024-01-17 16:19:19 +01:00
distribution Renaming launcher executable to ensoup (#10535) 2024-07-16 14:30:23 +00:00
infrastructure Renaming launcher executable to ensoup (#10535) 2024-07-16 14:30:23 +00:00
language-server initProtocol endpoint returns success when already initialized (#10542) 2024-07-23 07:45:53 +01: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 Update link to point to search page (#9139) 2024-02-22 14:23:16 +00:00
profiler Update docs following GUI1 removal (#9670) 2024-04-30 08:53:00 +00:00
rfcs Add a markdown style guide (#1022) 2020-07-21 13:59:40 +01:00
runtime Add org.enso.compiler.dumpIr system prop (#10740) 2024-08-06 12:00:27 +00:00
security EnsoGL context abstraction (#3293) 2022-03-04 15:13:23 +01:00
semantics Implement private methods (#10060) 2024-05-31 08:00:20 +00:00
style-guide Add TypeScript style guide (#6226) 2023-04-15 08:28:12 +00:00
syntax Replace all from ... export all with explicit exports (#10369) 2024-07-11 19:34:25 +02:00
types Equality with conversions (#9070) 2024-02-19 17:18:56 +01:00
CODE_OF_CONDUCT.md Update CODE_OF_CONDUCT.md 2023-02-13 23:10:51 +01:00
CONTRIBUTING.md Renaming launcher executable to ensoup (#10535) 2024-07-16 14:30:23 +00:00
enso-philosophy.md Consistent naming of visualization (#7124) 2023-06-26 17:04:35 +00:00
getting-enso.md Renaming launcher executable to ensoup (#10535) 2024-07-16 14:30:23 +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 Add org.enso.compiler.dumpIr system prop (#10740) 2024-08-06 12:00:27 +00:00
runtime-roadmap.md Autoscoped constructors (#9190) 2024-03-04 11:41:02 +00:00
sbt-cheatsheet.md ydoc-server is a separate module (#10156) 2024-06-07 12:56:42 +02: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.