{"id":16849075,"url":"https://github.com/filmor/ierl","last_synced_at":"2025-07-13T07:37:50.967Z","repository":{"id":46653098,"uuid":"91479647","full_name":"filmor/ierl","owner":"filmor","description":"BEAM Jupyter Kernels Tool","archived":false,"fork":false,"pushed_at":"2025-01-05T09:53:03.000Z","size":204,"stargazers_count":32,"open_issues_count":10,"forks_count":3,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-04-09T21:16:42.227Z","etag":null,"topics":["elixir","erlang","jupyter","lfe"],"latest_commit_sha":null,"homepage":"","language":"Erlang","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/filmor.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-05-16T16:22:03.000Z","updated_at":"2025-01-05T09:27:13.000Z","dependencies_parsed_at":"2025-02-18T07:10:36.113Z","dependency_job_id":"afe4a2e3-fdff-43ec-acf1-8e42ba33c31f","html_url":"https://github.com/filmor/ierl","commit_stats":null,"previous_names":[],"tags_count":13,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/filmor%2Fierl","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/filmor%2Fierl/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/filmor%2Fierl/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/filmor%2Fierl/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/filmor","download_url":"https://codeload.github.com/filmor/ierl/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248111973,"owners_count":21049578,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["elixir","erlang","jupyter","lfe"],"created_at":"2024-10-13T13:14:01.777Z","updated_at":"2025-04-09T21:16:51.884Z","avatar_url":"https://github.com/filmor.png","language":"Erlang","funding_links":[],"categories":[],"sub_categories":[],"readme":"# BEAM Jupyter Kernels Tool\n\n[![Build Status](https://travis-ci.org/filmor/ierl.svg?branch=master)](https://travis-ci.org/filmor/ierl)\n[![Binder](https://mybinder.org/badge.svg)](https://mybinder.org/v2/gh/filmor/ierl/master)\n\n`ierl` is a command line tool based on\n[erlang-jupyter](https://github.com/filmor/erlang-jupyter) to allow running and\ninstalling Jupyter kernels on the Erlang Virtual Machine written in pure Erlang.\nA precompiled version can be downloaded from [the release page](https://github.com/filmor/ierl/releases/latest),\ndownload the `ierl` escript.\n\nCurrently, three kernels have been implemented to the point that they support\nrunning code, compiling modules, and code completion:\n\n### Erlang\n\nCurrently, only the `f` shell function to forget a variable is implemented.\nHowever, in contrast to the usual `erl` shell, this backend also supports\ndefining modules inline, i.e. one can have a cell\n\n```erlang\n-module(my_mod).\n\n-export([\n    func/1\n]).\n\nfunc(X) -\u003e\n    X.\n```\n\nand it will be compiled and usable after executing.\n\n### Elixir\n\nIf ierl has been built using `mix` (as are the releases that we provide here),\nElixir will be embedded and work without the need to install it locally.\nOtherwise, ierl will try to guess the path by running the Elixir executable,\nso make sure that `elixir`'s binary path is included in the `PATH`\nenvironment variable. It is also possible to override the Elixir installation\npath using the `--path` switch on installing the kernel.\n\nThe Jupyter Notebook will currently highlight the code as Ruby for lack of a\nbuilt-in Elixir mode in CodeMirror, but I will look into bundling \n[codemirror-mode-elixir](https://github.com/optick/codemirror-mode-elixir) in\nthe future.\n\n### LFE\n\nLFE is completely bundled and can be run without any further installation. The\nhighlighting is currently just straight Common Lisp, which means quite a few\nthings are not highlighted correctly (like `defmodule`, `defrecord`, atoms,\netc.).\n\n### Common functionality\n\nAll kernels can access the `jup_display` functions to print non-text output (in\nparticular on the Jupyter Notebook):\n\n```erlang\n% Print \nDisplayRef = jup_display:display(#{ html =\u003e \"\u003ch1\u003eSome Text\u003c/h1\u003e\" }).\n```\n\nThe key of the passed map is either `html`, `text`, or a binary or string\nindicating an actual MIME type like `text/html`. The value is an IO list with\ndata matching the MIME type. A displayed value can be updated within the same\ncell by using the returned reference:\n\n```erlang\njup_display:update(DisplayRef, #{ html =\u003e \"\u003ch1\u003eUpdated Text\u003c/h1\u003e\" }).\n```\n\nCurrently, the Jupyter Notebook will also update output sections that were\ninitialised before, but it's not specified, whether this implementation detail\nwill stay.\n\n## Usage\n\nThe released escript can be run directly by either making it executable\n(`chmod +x ierl`) and using it directly (`./ierl`) or starting it explicitly\nwith `escript ierl` (needed on Windows, for example). It will present the\navailable commands and backends.\n\nTo install an Erlang kernel, run\n\n```bash\n./ierl install erlang\n```\n\nAnalogously kernels for LFE and Elixir can be installed.\n\nTo specify the name of the installed kernelspec, pass it using `--name`. By\ndefault it will match the backend name (so `erlang`, `elixir` or `lfe`).\n\n```bash\n./ierl install erlang --name my_erlang_kernel\n```\n\nRemoting is also supported. Pass the node to connect to via `--node` and the\ncookie to use via `--cookie`.\n\n```bash\n./ierl install erlang --node remote_node@REMOTEHOST --cookie my_secret_cookie\n```\n\nIf no name is given, it will be inferred from the kernel name and the node the\nkernel is supposed to run against.\n\nThe installed kernels will be immediately available in the Jupyter Notebook, to\nuse them in the console run\n\n```bash\njupyter console --kernel my_erlang_kernel\n```\n\n## Building\n\nClone this repository and run\n\n```bash\n./_download_rebar3.sh\n```\n\nto download the most current [`rebar3`](http://www.rebar3.org). After this, run\n\n```bash\n./rebar3 escriptize\n```\n\nto download the dependencies and compile the `escript`. It will be created in\n`_build/default/bin/ierl`.\n\nFor development it might make sense to check out a local instance of\n[`erlang-jupyter`](https://github.com/filmor/erlang-jupyter) by running\n\n```bash\n./_checkout_jupyter.sh\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffilmor%2Fierl","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffilmor%2Fierl","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffilmor%2Fierl/lists"}