mirror of
https://github.com/enso-org/enso.git
synced 2024-12-23 02:21:54 +03:00
f0de43a970
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) |
||
---|---|---|
.. | ||
debugger | ||
distribution | ||
infrastructure | ||
language-server | ||
libraries | ||
parser | ||
polyglot | ||
profiler | ||
rfcs | ||
runtime | ||
security | ||
semantics | ||
style-guide | ||
syntax | ||
types | ||
CODE_OF_CONDUCT.md | ||
CONTRIBUTING.md | ||
enso-philosophy.md | ||
getting-enso.md | ||
graalvm-m1-mac.md | ||
README.md | ||
runtime-guide.md | ||
runtime-roadmap.md | ||
sbt-cheatsheet.md | ||
SECURITY.md |
layout | title | category | tags | order | ||
---|---|---|---|---|---|---|
docs-index | Enso Engine Developer Documentation | summary |
|
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.