1个不稳定版本
0.1.0 | 2019年1月1日 |
---|
#11 in #beam
587 星 & 38 关注者
500KB
13K SLoC
ErlangRT - 运行时
Erlang替代疗法。这是尝试在Rust中实现Erlang运行时(BEAM仿真器)。这不是第一次尝试,所以我大概知道我在做什么。
概念验证进展
- Term库 80%(剩余80%正在进行中)
- 外部术语格式(解码器70%,编码器0%)
- BEAM加载器 - 主要完成
- 虚拟机和进程 40%
- 虚拟机循环和操作码 45%(168个中的74个)
- 一些基本BIFs <15%
- 二进制、子二进制、二进制堆、二进制操作码:<20%

测试在priv/test2.erl工作。运行make test尝试运行init:boot/1并产生上述输出。
编译
源代码假定您在otp/中有一个Git子模块,并且stdlib和preload BEAM文件已编译并准备就绪。Makefile负责此事。
通过Rustup安装最新的Rust和Cargo
运行make并通过Bash自动完成的魔法,查看它支持哪些目标。您可能喜欢
- make run- 运行可执行文件并带有测试参数,开发者设定的任何参数,不要期望它展示任何神奇技巧;
- make doc- 在target/doc/erlang_rt/
- make test- 运行测试
- make build和make build-rel- 分别构建但不运行调试和发布目标
当前仿真器期望在
otp/
Git子模块中预加载OTP 22+的BEAM模块(Makefile负责此事)。
编辑和代码导航
- BEAM Wisdoms (我运营这个网站)
- BEAM 书籍 (我也是那里的编辑之一)
贡献
查看CONTRIBUTING.rst
lib.rs
:
ErlangRT
是用 Rust 编写的替代 Erlang BEAM 运行时。这是一个库,要运行它,请将其链接并调用 start_emulator()。这可以在 erl
和 ct_run
项目中完成。
依赖项
~9–19MB
~100K SLoC