Enso Dev Blog — Friday 11th September

Enso (formerly Luna)
4 min readSep 24, 2020

--

We’re back! This update on the development of Enso is a double bill, featuring updates from the 11th of September and the 28th of August. If you want to keep up with the development of Enso in real time, you can follow along on GitHub.

Integrated Development Environment

Searcher

The searcher is a context sensitive tool to find nodes in available libraries and quickly access key features in the IDE. With autocomplete for function names and arguments, the Searcher is key to quickly building Enso workflows. In previous issues, we covered the addition of the suggestions database which powers the Searcher recommendations. In this update, the Searcher has now been added to the IDE. The Searcher is invoked with shift+tab, and can then be used to create new nodes by searching for definitions.

In the above gif, the Searcher is used to create a new node by searching for foo. In Enso, Main is the module treated as the entry-point to the library, and in this example is where foo is defined. The Searcher finds this definition, and from it creates a node for Main.foo . The Searcher then displays possible arguments for foo , those being a b and c , also defined in this module. You may note that the list of possible arguments is displayed multiple times in the searcher — that’s the kind of fun bug that you read a dev blog for. It’ll be fixed soon!

Visualizations

Every node in Enso can be visualized. Enso will have a variety of inbuilt visualizations, as well as the ability to define custom visualizations. This week, some new visualizations have landed in the IDE, including table view, scatter plots, and maps.

Nodes

As we covered in previous posts, multiple nodes can be collapsed into one node. This not only helps with management of complicated projects, but allows easy reuse of groups in nodes — in other words, collapsing nodes is defining a function! In the gif below, you can see 3 nodes being collapsed into one node, and the resulting function definition in the textual editor.

Theme

The Enso dev team are diehard dark mode fans, but have been convinced to add a new light theme to the IDE.

Do you have an editor theme you’re particularly attached to that you’d like to see in Enso? Let us know in the comments!

Engine

Standard Library

This week there’s been some big additions to the standard library, in the form of several fundamental types, as well as a new module system.

New to the types are unbound-size integers and doubles, with fast transition between representations. As well as number types, boxed vectors have been added. You can see examples of numbers here, and vectors here.

The new module system has improved importing, including renaming and selecting specific names from the module, as well as re-exporting names. For the purpose of accessing, the module system now treats types and methods similarily. An effect of this is that methods can be auto-resolved and called as functions by calling with an uppercase name:

pi = 3.14 
circumference r = 2 * Pi * r

You can read more about the module system here.

Launcher

The launcher now auto-upgrades. When attempting to install a version of the engine that requires a newer version of the launcher, it will offer to upgrade for the user.

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.