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.
- 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%
Tests in priv/test2.erl
work. Running make test
tries to run init:boot/1
and produces the output above.
- 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 intarget/doc/erlang_rt/
*make test
- runs the tests *make build
andmake 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).
I am using and strongly recommend IntelliJ IDEA CE (free version) with IntelliJ-Rust plugin (available in repositories tab inside IntelliJ).
- BEAM Wisdoms (I run this one)
- The BEAM book (I am also one of the editors there)
See CONTRIBUTING.rst