Enso Dev Blog — Friday 17th July

Enso (formerly Luna)
3 min readJul 24, 2020

--

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

It’s been really exciting to share our progress with our community, and with others interested in Enso. Since we started this series, we had some great questions about the future of Enso, as a business, and a product. Our CEO, Wojciech Danilo, answered some of your questions earlier this week, you can check those out here.

Integrated Development Environment

Nodes

Ports and edges from ports are now coloured according to their type. This is an important part of visual Enso, helping you understand the transformation of data in complicated workflows at a glance.

An expression “make_maps size (distribution normal)”, showing colours changing as ports are interacted with

Searcher

The searcher will be a tool in the IDE that will allow users to search for functions in the standard and imported libraries, and access key features of the IDE. The search is context sensitive, providing autocomplete-like functionality where possible. For example, when searching from a particular node, it will recommend methods on that type.

This sprint, the database for these suggestions has been implemented.

Some Enso code on the left, with developer console open to show the resulting suggestions database output.

Project Management

Renaming projects (covered in the previous blog) got some flashy new visuals this week.

A project in the Enso IDE being renamed

Engine

Parser

Work has continued on reimplementing the parser in Rust. This week, that work has been focused on the flexer. The flexer is a finite-automata-based engine for generating highly-optimised lexers, and was previously implemented in Scala. Not only must the flexer itself be reimplemented in Rust, but it must now generate Rust code from the lexer definition.

Progress on the parser rewrite can be followed at this Epic.

Launcher

The launcher will be used to run Enso commands, and manage Enso versions. This sprint saw the start of a user-friendly CLI with plugin support for the launcher.

The output of `enso help`, showing the user interface for the enso launcher CLI

Standard Library

The standard library is shaping up, with some extensions and quality of life improvements.

Layered State

We now have the ability to run computations in multiple kinds of Stateat once, keyed on an arbitrary type.

List Utilities

A bunch of useful methods for the List type, including a tail-recursive version of map .

Test Framework

A framework for BDD-style testing has been built into the standard library.

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.