AtomVM

微型 Erlang 虚拟机。「Tiny Erlang VM」

Github星跟踪图

AtomVM

Brings Erlang, Elixir and other functional
languages to really small systems.

AtomVM implements from scratch a minimal Erlang VM that supports a subset of ErlangVM features and that is able to run unmodified BEAM binaries on really small systems like MCUs.

Supported Platforms

AtomVM aims to be easily portable to new platforms with a minimum effort, so additional platforms
might be supported in a near future.

Getting Started

There is much more information, including a more complete
"Getting Started Guide",
extensive documentation,
examples,
detailed build instructions,
and contact information available on the
AtomVM project website.

Don't forget to check out the examples repository to
help get you started on your next IoT project.

Please, use v0.6.x releases, main branch
is for development purposes and it might be unstable.

Dependencies

Required for building:

Documentation and Coverage:

  • gcov and lcov are optionally required to generate coverage report (make coverage).
  • For documentation build requirements consult the Documentation README.

Step-by-Step Build Instructions (generic unix platform)

$ mkdir build
$ cd build
$ cmake ..
$ make
$ ./src/AtomVM ./examples/erlang/hello_world.avm

Run tests within build directory with:

$ ./tests/test-erlang
$ ./tests/test-enif
$ ./tests/test-mailbox
$ ./tests/test-structs
$ ./src/AtomVM ./tests/libs/estdlib/test_estdlib.avm
$ ./src/AtomVM ./tests/libs/eavmlib/test_eavmlib.avm
$ ./src/AtomVM ./tests/libs/alisp/test_alisp.avm

Complete Build Instructions are
available in the documentation for
Generic UNIX (Linux, MacOS, FreeBSD),
ESP32,
STM32,
Raspberry Pi Pico
(rp2040), and
WASM (NodeJS/Web).

Project Status

Build and Test

AtomVM is still in its early stages, but it can run simple applications similar to those available
in examples and tests.

AtomVM might crash with a similar message:

Undecoded opcode: 15
Aborted (core dumped)

This basically means that an instruction has not been implemented yet, or that an outdated version has been used. Please, make sure to always run AtomVM using latest version.

Known Limitations

This project is a work in progress, so there are several known limitations, that will prevent to run unmodified software, some of them are:

  • There is a minimal standard library, so several standard functions are missing.
  • Several instructions are not yet implemented.

All of these limitations are going to be fixed in a reasonable amount of time.

About This Project

This project has been created by Davide Bettio, and now is developed
from a growing number of contributors.

How to Contribute

Any kind of contribution is welcome, you can either contribute to this repository
by improving the virtual machine, the core libraries or the documentation or by contributing to any
of the organization repositories.

License

This project is under the terms of the Apache 2.0 license.

主要指标

概览
名称与所有者nickng/dingo-hunter
主编程语言Go
编程语言C (语言数: 4)
平台
许可证Apache License 2.0
所有者活动
创建于2015-08-29 22:05:05
推送于2023-10-11 23:24:50
最后一次提交2023-02-24 22:06:20
发布数2
最新版本名称v1.0.0 (发布于 2019-01-10 18:37:39)
第一版名称popl17ae (发布于 )
用户参与
星数319
关注者数16
派生数27
提交数188
已启用问题?
问题数26
打开的问题数16
拉请求数5
打开的拉请求数3
关闭的拉请求数0
项目设置
已启用Wiki?
已存档?
是复刻?
已锁定?
是镜像?
是私有?