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) |
||
---|---|---|
.. | ||
nbproject | ||
src | ||
.gitignore | ||
.vscodeignore | ||
IGV.md | ||
package-lock.json | ||
package.json | ||
pom.xml | ||
README.md | ||
tsconfig.json | ||
webpack.config.js |
Enso Language Support for VSCode
Downloading
Enso Tools for VSCode is available from VSCode marketplace. Simply install it from there.
It is possible to download the latest development version of the "VSCode
Extension" artifact from the
latest actions run.
After downloading the ZIP file unzip a .vsix
from it and install the .vsix
file into VSCode.
Your Enso files will get proper syntax coloring. You'll be able to debug Java/Enso code interchangeably.
After installing the Enso .vsix
file (and reloading window) we can find
following two extensions in the system:
Outline View
Since version 1.40 the extension fills content of Outline View on supported platforms (Linux amd64, Mac, Windows):
Debugging a Single Enso File
Open any .enso
files. Click left editor gutter to place breakpoints. Then
choose Run/Start Debugging. If asked, choose debug with Java+ (Enso is
Java virtual machine friendly). A prompt appears asking for path to bin/enso
binary:
Locate bin/enso
executable in the Enso engine download. If binding from source
code, the executable is located at root of
Enso repository in
./built-distribution/enso-engine-*/enso-*/bin/enso
. The .enso
file gets
executed and output is printed in the area below editor:
Workspace Debugging
To work with all Enso code base continue with choosing File/Open Folder... and opening root of Enso Git Repository (presumably already built with sbt buildEngineDistribution). Following set of projects is opened and ready for use:
With the workspace opened, you can open any Enso or Java file. Let's open for
example Vector_Spec.enso
- a set of unit tests for Vector
- a core class of
Enso standard library:
It is now possible to place breakpoints into the Vector_Spec.enso
file. Let's
place one on line 120:
To debug the test/Base_Tests/src/Data/Vector_Spec.enso
file with the root of
Enso repository opened in the VSCode workspace, choose preconfigured Launch
Enso File debug configuration before Run/Start Debugging.:
The rest of the workflow remains the same as in case of individual (without any
project ).enso
file case.
Attach Debugger to a Process
Let's do a bit of debugging. Select "Listen to 5005" debug configuration:
And then just execute the engine distribution in debug mode:
sbt:enso> runEngineDistribution --debug --run test/Base_Tests/src/Data/Vector_Spec.enso
After a while the breakpoint is hit and one can inspect variables, step over the statements and more...
...as one can seamlessly switch to debugging on the Enso interpreter itself! One
can place breakpoint into Java class like PanicException.java
and continue
debugging with F5
:
Should one ever want to jump back from Java to Enso one can use the "Pause in
GraalVM Script" action. Select it and continue with F5
- as soon as the code
reaches a statement in Enso, it stops:
Read more on Enso & Java Debugging
Building VSCode Extension
To build this VSCode extension and obtain Enso syntax coloring as well as
support for editing and debugging of engine/runtime
sources in VSCode:
enso/tools/enso4igv$ mvn clean install -Pvsix
enso/tools/enso4igv$ ls *.vsix
enso4vscode-*.vsix
one needs to have npm
, Java and mvn
available to successfully build the
VSCode extension.
Once the .vsix
file is created, it can be installed into VSCode. Select
Extension perspective and choose Install from VSIX... menu item.
Reference
There are extensions for NetBeans and also for IGV. Read more here.