Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/kvakvs/erlangrt
Erlang Replacement Therapy. Another attempt to make Erlang runtime (BEAM emulator) in Rust. Good news: I know what to do. Bad news: I have no clue how to Rust
https://github.com/kvakvs/erlangrt
erlang erlang-developement erlang-vm runtime
Last synced: 7 days ago
JSON representation
Erlang Replacement Therapy. Another attempt to make Erlang runtime (BEAM emulator) in Rust. Good news: I know what to do. Bad news: I have no clue how to Rust
- Host: GitHub
- URL: https://github.com/kvakvs/erlangrt
- Owner: kvakvs
- License: mit
- Created: 2017-09-25T23:00:25.000Z (about 7 years ago)
- Default Branch: master
- Last Pushed: 2023-05-03T12:40:07.000Z (over 1 year ago)
- Last Synced: 2024-11-13T06:09:17.220Z (7 days ago)
- Topics: erlang, erlang-developement, erlang-vm, runtime
- Language: Rust
- Homepage:
- Size: 1.6 MB
- Stars: 594
- Watchers: 39
- Forks: 25
- Open Issues: 7
-
Metadata Files:
- Readme: README.rst
- Contributing: CONTRIBUTING.rst
- License: LICENSE
Awesome Lists containing this project
README
.. image:: https://app.fossa.io/api/projects/git%2Bgithub.com%2Fkvakvs%2FErlangRT.svg?type=shield
:target: https://app.fossa.com/projects/git%2Bgithub.com%2Fkvakvs%2FErlangRT?ref=badge_shieldErlangRT - Runtime
==================Erlang Replacement Therapy.
This is an attempt to make Erlang runtime (BEAM emulator) in Rust. This is not
the first attempt so I kinda know what I'm doing.Progress to the Proof of Concept
--------------------------------* Term library 80% (remaining 80% are in progress)
* External Term Format (decoder 70%, encoder 0%)
* BEAM Loader - mostly done
* VM and processes 40%
* VM loop and opcodes 45% (74 of 168)
* Some basic BIFs <15%
* Binaries, sub-binaries, binary heap, binary opcodes: <20%.. figure:: http://imgur.com/H5qypZG.png
:scale: 50%
:alt: Trying to run ``init:boot/1``Tests in ``priv/test2.erl`` work. Running ``make test`` tries to run ``init:boot/1`` and produces the output above.
Compiling
`````````* The source assumes that you have Erlang OTP 22+ source in a Git submodule in ``otp/``,
and the stdlib and preload BEAM files are compiled and ready. Makefile takes care of it.
* Install latest **Rust** and **Cargo** via `Rustup `_
* Run ``make`` and with the magic of Bash autocomplete see which targets it
supports. You might like:
* ``make run`` - runs the executable with test args, whatever set by the developer,
do not expect it to show any magical tricks;
* ``make doc`` - builds doc pages in ``target/doc/erlang_rt/``
* ``make test`` - runs the tests
* ``make build`` and ``make build-rel`` - builds but does not run the debug and
the release target respectively
Currently the emulator expects to have preloaded BEAM modules from OTP 22+ located in `otp/`
Git submodule (Makefile takes care of it).Editing and Code Navigation
```````````````````````````I am using and strongly recommend IntelliJ IDEA CE (free version) with
IntelliJ-Rust plugin (available in repositories tab inside IntelliJ).Reference Material
``````````````````* `BEAM Wisdoms `_ (I run this one)
* `The BEAM book `_
(I am also one of the editors there)Contributing
````````````See ``CONTRIBUTING.rst``
License Inspection
------------------.. image:: https://app.fossa.io/api/projects/git%2Bgithub.com%2Fkvakvs%2FErlangRT.svg?type=large
:target: https://app.fossa.com/projects/git%2Bgithub.com%2Fkvakvs%2FErlangRT?ref=badge_large