Back in April, the Erlang community was stunned to hear that we had been given an answer to IPython, IHaskell, and IJulia – IErlang. However, as Robbie noted in the list of outstanding issues at the end of the IErlang demo notebook, not a lot of time had been set aside to develop a more standard project structure. Furthermore, the setup and installation of IErlang to get to the point where you could try it out was a rather arduous process. All of that has now changed …

Running the New Demo

The IErlang project has a series of open PRs that address several of the organizational issues Robbie had lamented, but you don't have to wait until they get merged; you can get it now:

$ git clone
$ cd ierlang
$ make demo

Yup. That's it.

This will do the following for you:

  • Set up a Python virtual environment in the project's working directory (in ./.venv-py2)
  • Install IPython and its dependencies into that virtual environment
  • Patch IPython to support Erlang
  • Download the Erlang project dependencies
  • Compile the Erlang dependency modules
  • Compile the ierl_* modules
  • Start up the demo notebook in your browser


As you might have guessed, this requires that you have the following installed in your $PATH:

  • erl and erlscript
  • rebar
  • Python 2.7 (Python 3.4 support is in the works; see the ticket)

Outstanding Issues

As you can see at the bottom of the IErlang notebook demo, many of the issues that Robbie identified earlier this year still remain. In particular, I've added another one to that list: high CPU usage for both console and notebook mode.

A minor issue I didn't add, but which I may take up (being the code janitor that I am) is function-level organization in the modules: most functions are too long and entail too much logic. They need to be split out (which will also make it easier for folks to contribute).

As referenced above, currently only Python 2.7 is supported. Python 3.4 support is in-progress, but requires cleaning up str and bytes handling.

Future Work

The next logical step is to generalize this work (through refactoring!) so that LFE, Elixir, Joxa, Luerl, Erlog, Haskerl, and others may also be used with IErlang :-)



06 December 2014