• Stars
    star
    576
  • Rank 74,854 (Top 2 %)
  • Language
    Rust
  • License
    MIT License
  • Created over 6 years ago
  • Updated about 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

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://app.fossa.io/api/projects/git%2Bgithub.com%2Fkvakvs%2FErlangRT.svg?type=shield

ErlangRT - 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%
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

Contributing

See CONTRIBUTING.rst

License Inspection

https://app.fossa.io/api/projects/git%2Bgithub.com%2Fkvakvs%2FErlangRT.svg?type=large

More Repositories

1

beam-wisdoms

Wiki containing pieces of information and knowledge about BEAM Virtual machine (which runs Erlang/OTP and other BEAM-based languages).
526
star
2

hge

HGE 1.9 configured with CMake DirectX9 version, with shaders. The classic 1.8.1. version is in the `master` branch if you ever need that.
CMake
247
star
3

E4VM

A small portable virtual machine that would run Erlang on embedded systems
Erlang
130
star
4

tx

Erlang term explorer. Pastebin type app which displays terms of any complexity straight from your erlang shell in web browser. No external deps (inets only).
CSS
80
star
5

gluonvm1

OUTDATED see https://github.com/kvakvs/ErlangRT, https://github.com/kvakvs/ErlangAoT and https://github.com/kvakvs/E4VM instead -- Gluon BEAM-compatible Erlang Abstract Machine (GLEAM) written in portable C++
C++
65
star
6

Ironclad

A RUSTy fusion of OTP lib/dialyzer and lib/compiler empowering regular Erlang with type inference
Rust
35
star
7

eia

Erlang in Anger (Russian)
TeX
25
star
8

hge_skel

Skeleton of a side-scroller 2D game for Windows, that uses HGE. Use this to create your very own Super Mario Bros clone. All code is well commented and split into smaller pieces for easier comprehension. Best start for HGE newbies to learn something about game making.
CMake
21
star
9

playable_alpha2

Terraria-like digging sandbox made with Unity3D/C#
C#
15
star
10

ErlangAoT

An ahead-of-time compiler from Erlang (intermediate language) to LLVM IR and a runtime library for linking against it
Erlang
14
star
11

learn_blockchain

A very basic implementation of blockchain in Erlang to demonstrate the main principles. Single simple module.
Erlang
8
star
12

Quokka

Native GUI visualisation tool for Erlang nodes and clusters, accepting streams of data from trace files and live nodes, written in Rust/Dear ImGUI (OpenGL).
Rust
8
star
13

vemdog

Erlang and Elixir VM trace collection and diagraming tool
Erlang
8
star
14

TypedErlang

Experimental stage for Erlang compiler which attempts to transpile Core Erlang AST to C++ source
Erlang
6
star
15

bearded_rs

Dwarf Fortress/Rimworld style world simulator written in Rust with physics, chemistry, body health simulation, mood, room beauty etc. This is a low priority project also expect this to eventually go private.
Rust
5
star
16

BuffomatClassic

Maintained Buffomat addon for Classic World of Warcraft and Classic TBC.
Lua
4
star
17

sourcetrail-erlang

Python script for Sourcetrail which reads compiled Erlang BEAM files and writes debug info into Sourcetrail database
4
star
18

RazeAndPlunder

RnP (and Kittens) is Starcraft Broodwar BWAPI AI, based on Opprimo Bot by Johan HagelbΓ€ck
C++
4
star
19

BeardedMen

"Bearded Men (and a Fortress)" is a simulation game in a 3D voxel world (renderer: OpenGL/Qt) based on PolyVox engine
C++
2
star
20

jsdefrag_evo

Modernized C++ source of JkDefrag, the opensource disk defragmenter for Windows
C++
1
star
21

WowLogScan

Scans a raw WoW Classic combatlog file for raid preparation (world buffs and consumables)
F#
1
star
22

Skylines-UXLibrary

Cities Skylines: User Experience library (for use by other mods). Provides On-screen help and keyboard hints panel (shared with all other mods using the panel), also keybinds options for use in mods
C#
1
star
23

grade

Tool extracts xref and trace data from Erlang applications to store in Neo4j database or in memory and displays in a nice way
JavaScript
1
star
24

grpc_demo

Minimal example of defining a gRPC proto API in Elixir and calling it in the interactive shell
Elixir
1
star
25

beam_bots

UnrealEngine4 (UE4) based game with robots controlled via API. Primarily intended as training exercise for students who learn programming.
C++
1
star