Lleva a Erlang, Elixir y otros idiomas funcionales a sistemas realmente pequeños.
AtomVM implementa desde cero una VM de Erlang mínima que admite un subconjunto de características de ERLANGVM y que puede ejecutar binarios de haz sin modificar en sistemas realmente pequeños como MCU.
AtomVM tiene como objetivo ser fácilmente portátil a nuevas plataformas con un esfuerzo mínimo, por lo que las plataformas adicionales podrían ser compatibles en un futuro cercano.
Hay mucha más información, incluida una "Guía de inicio" más completa, ejemplos, instrucciones de compilación detalladas e información de contacto disponible en el sitio web del proyecto AtomVM.
No olvide ver el repositorio de ejemplos para ayudarlo a comenzar su próximo proyecto IoT.
Por favor, use las versiones V0.6.X, la rama principal es para fines de desarrollo y puede ser inestable.
Requerido para la construcción:
Documentación y cobertura:
make coverage ). $ mkdir build
$ cd build
$ cmake ..
$ make
$ ./src/AtomVM ./examples/erlang/hello_world.avm
Ejecutar pruebas dentro del directorio de compilación con:
$ ./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
Las instrucciones completas de compilación están disponibles en la documentación para unix genérico (Linux, MacOS, FreeBSD, Dragonfly), ESP32, STM32, Raspberry Pi Pico y Pico 2 (RP2) y WASM (NodeJS/Web).

AtomVM todavía está en sus primeras etapas, pero puede ejecutar aplicaciones simples similares a las disponibles en ejemplos y pruebas.
AtomVM podría bloquearse con un mensaje similar:
Undecoded opcode: 15
Aborted (core dumped)
Básicamente, esto significa que aún no se ha implementado una instrucción, o que se ha utilizado una versión obsoleta. Por favor, asegúrese de ejecutar siempre AtomVM usando la última versión.
Este proyecto es un trabajo en progreso, por lo que hay varias limitaciones conocidas, que evitarán ejecutar software no modificado, algunos de ellos son:
Todas estas limitaciones se fijarán en un tiempo razonable.
Este proyecto ha sido creado por Davide Bettio, y ahora se desarrolla a partir de un número creciente de contribuyentes.
Cualquier tipo de contribución es bienvenida, puede contribuir a este repositorio mejorando la máquina virtual, las bibliotecas centrales o la documentación o contribuyendo a cualquiera de los repositorios de la organización.
Este proyecto está bajo los términos de la licencia Apache 2.0.