Enso Dev Blog — Friday 14th August

Enso (formerly Luna)
2 min readAug 20, 2020

--

This update on the development of Enso is from the sprint ending 31st of July 2020. If you want to keep up with the development of Enso in real time, you can follow along on GitHub.

Integrated Development Environment

Engine compatibility

Recent API changes in the Engine meant that the IDE was incompatible with newer versions. The IDE has been updated to the newer API, fixing the incompatibility issues. Great news if you’re looking to take Enso for a test drive.

Dual representation

Code in the visual editor is updated in real time when expressions are edited in a node within the graph editor.

Engine

Standard Library

A new library, Base.Process, allows spawning operating system processes. This is an important milestone in making Enso a useful general purpose programming language. Here’s some examples:

Print to Stdout:

import Base.Process

main = Process.shell "echo" ["Hello World!"]

Read from Stdin:

import Base.Process

main =
Process.shell "bash" ["-c", "read name; echo Hello $name!"]

Return exit code:

import Base.Process

main =
exit_code = Process.shell "bash" ["-c", "exit 42"]
IO.println exit_code

Parser

In previous editions, we’ve covered work on the flexer, an engine for generating parsers. The flexer is now generating working lexers, and has updated documentation, including a tutorial on using the flexer to generate a lexer.

With that complete, the flexer can now be used to write the Enso lexer, translating the existing rules from Scala to Rust.

More information

That’s all for this developer update. We’ll be back with more after the next sprint. You can continue to follow along with Enso development on GitHub, by joining our Discord server, or subscribing to updates on our developer mailing list.

--

--

Enso (formerly Luna)

Hybrid visual and textual functional programming language for data processing.