-
Announcing AtomVM v0.6.0
2024/03/23 Announcing AtomVM v0.6.0
We missed announcing the last few beta and rc releases that all came in a flurry as we were busy doing tests on hardware and this announcement is actually late, but for anyone who missed it, we are pleased to announce that we have a new v0.6.0 stable release!
In this release SPI, I2C, and UART peripheral configurations have been changed, for details consult the documentation for these modules in the
eavmlib
documentation. There is now an ESP32 API for allowing coexistence of native and Erlang I2C drivers, for example, allowing the use of the nativeatomvm_ssd1306
Display driver, with a pure erlang driver for the SHT3x temperature sensor. GPIO interrupt (currently only supported on ESP32 and STM32 platforms) messages can now be sent to a designated receiver usinggpio:set_int/4
. Support forlists:split/2
has also been added. ESP32 platform now supports retrieving the device’s e-fuse MAC address withesp:get_default_mac/0
.AtomVM now uses UTF-8 encoding for atoms when using
erlang:term_to_binary/1
, in conformance with OTP-26, andbinary_to_atom/1
andatom_to_binary/1
now default to utf8. Support has been added for utf8 encoding to*_to_atom
andatom_to_*
functions.We have made improvements to the rp2040 platform that should make development workflows much smoother. The device will now accept re-flashing a new application using the
atomvm_rebar3_plugin
pico_flash
task after the application has exited. Previously the device would be unresponsive after exiting. There is also a default 20 second timeout, which the device will wait for a USB console connection to be established, before running the application. Previously our default build would start the application immediately, giving the user no time to connect to be able to see the output ofhello_world
before the application exited, and the device became unresponsive.The port call tuple format has been changed to the same format as gen_server, so cast support can be added. This change means older versions of
atomvmlib
will not work, libraries from latest version must be used. Check the Update Instructions for other breaking changes for both BEAM application developers, as well as for contributors, and driver developers using nifs or ports.Under the hood enhancements feature a new atom table, which uses less memory, and has improved performance.
Several memory related bugs have been fixed. A random number generation bug has been fixed on ESP32 and RPi2040, as well as a bug shared by both platforms that would cause invalid GPIO pull directions to be silently set to
floating
without an error.For the full set of bug fixes, changes and additions consult the Changelog, and check the Updating Instructions.
Download images and binaries are available for most platforms, except STM32 (and some generic_unix hosts for this release due to specific Mbed-TLS requirements) are available from AtomVM Releases on GitHub. STM32 users as well as anyone needing to build a generic_unix port for a device without release binaries should consult the Build Instructions.
The git repository and tarballs of the AtomVM source release for all platforms can be found on our GitHub AtomVM page.
Documentation for the v0.6.0 pre-release of the AtomVM virtual machine, including a Getting Started Guide, can be found at the AtomVM Documentation page.
As always, tools, drivers, and modules are available on the GitHub AtomVM Project page.
Many thanks go to Davide Bettio, for creating such a fine work of software, as well as the contributors and testers who have helped make this release possible.
The AtomVM team
-
Announcing AtomVM v0.6.0-beta.1 (Pre-release)
2024/02/29 Announcing AtomVM v0.6.0-beta.1 (Pre-release)
We are pleased to announce that our pre-release of v0.6.0 is now in beta!
Wait! What happened to the v0.6.0-beta.0 release? Our all volunteer QA team (thank you @petermm) discovered a problem with the ESP32S3 builds that caused starting
esp32init.beam
to crash the VM. This is the default network application that will create a wireless AP on an ESP32 that has been flashed with the AtomVM image, but does not have a user application flashed yet. Once connected to the “AtomVM-ESP32” network that is created you can access an alisp console at 192.168.4.1 on port 2323, or connect to http port 8080 to change the network to station mode and connect to a wifi network, where the arepl console will be available on port 2323 on the devices acquired IP address. We have determined the cause of the problem, but it has not been fixed in this release.In this release SPI, I2C, and UART peripheral configurations have been changed, for details consult the documentation for these modules in the
eavmlib
documentation. There is now an ESP32 API for allowing coexistence of native and Erlang I2C drivers, for example, allowing the use of the nativeatomvm_ssd1306
Display driver, with a pure erlang driver for the SHT3x temperature sensor. GPIO interrupt (currently only supported on ESP32 and STM32 platforms) messages can now be sent to a designated receiver usinggpio:set_int/4
. Support forlists:split/2
has also been added. ESP32 platform now supports retrieving the device’s e-fuse MAC address withesp:get_default_mac/0
.AtomVM now uses UTF-8 encoding for atoms when using
erlang:term_to_binary/1
, in conformance with OTP-26, andbinary_to_atom/1
andatom_to_binary/1
now default to utf8. Support has been added for utf8 encoding to*_to_atom
andatom_to_*
functions.We have made improvements to the rp2040 platform that should make development workflows much smoother. The device will now accept re-flashing a new application using the
atomvm_rebar3_plugin
pico_flash
task after the application has exited. Previously the device would be unresponsive after exiting. There is also a default 20 second timeout, which the device will wait for a USB console connection to be established, before running the application. Previously our default build would start the application immediately, giving the user no time to connect to be able to see the output ofhello_world
before the application exited, and the device became unresponsive.The port call tuple format has been changed to the same format as gen_server, so cast support can be added. This change means older versions of
atomvmlib
will not work, libraries from latest version must be used. Check the Update Instructions for other breaking changes for both BEAM application developers, as well as for contributors, and driver developers using nifs or ports.Under the hood enhancements feature a new atom table, which uses less memory, and has improved performance.
Several memory related bugs have been fixed. A random number generation bug has been fixed on ESP32 and RPi2040, as well as a bug shared by both platforms that would cause invalid GPIO pull directions to be silently set to
floating
without an error.For the full set of bug fixes, changes and additions since the v0.6.0-alpha.2 release consult the Changelog, and check the Updating Instructions.
Download images and binaries are available for most platforms, except STM32 (and some generic_unix hosts for this release due to specific Mbed-TLS requirements) are available from AtomVM Releases on GitHub. STM32 users as well as anyone needing to build a generic_unix port for a device without release binaries should consult the Build Instructions.
The git repository and tarballs of the AtomVM source release for all platforms can be found on our GitHub AtomVM page.
Documentation for the v0.6.0-beta.1 pre-release of the AtomVM virtual machine, including a Getting Started Guide, can be found at the AtomVM Documentation page.
As always, tools, drivers, and modules are available on the GitHub AtomVM Project page.
Many thanks go to Davide Bettio, for creating such a fine work of software, as well as the contributors and testers who have helped make this release possible.
The AtomVM team
-
AtomVM `master` branch renamed
2024/02/22 Recent updates to the name of the
master
branch.Earlier this month the name of the AtomVM
master
branch was renamed tomain
. If you have previously made a local clone of the repository, and would like to keep up to date with changes to themain
branch, there are a fewgit
commands that will rename your local copy and update the git configuration to track themain
AtomVM branch on GitHub.From inside your local clone of AtomVM:
shell$ git branch -m master main shell$ git fetch origin shell$ git branch -u origin/main main shell$ git remote set-head origin -a
At this point you now have a local clone that will stay up to date with changes in the upstream AtomVM
main
branch.We have also recently created the
release-0.6
branch, which should be used if you wish to contribute any bug fixes. If you do find a bug, please open an issue on GitHub.If you encounter a feature you think we are lacking, please open an issue for that too. Any contributions of new features should be made on the
main
branch.The AtomVM team
-
Previous Announcements
2023/12/10 Announcing AtomVM v0.6.0-alpha.2 (Pre-release)
This pre-release has a build dependency change from OpenSSL to one on Mbed-TLS to provide cryptographic functions for the generic_unix platform.
Numerous bugs have been fixed since the last release including where guards would raise exceptions instead of just being false, precision of integers used with timers which could yield to halts and wait times smaller than expected, and big endian CPUs are working again.
New features include the introduction of OTP socket interface support, support for
net:getaddrinfo/1,2
, minimal OTPssl
interface support,crypto:strong_rand_bytes/1
using Mbed-TLS on generic_unix, ESP32 and RP2040 platforms, support forcrypto:one_time/4,5
on Unix and Pico as well as forcrypto:hash/2
on Pico. Improvements for the STM32 platform include complete device configuration without the need to edit hardcoded values in the source files, complete GPIO driver support, and improved performance by enabling flash cache and i-cache.For the full set of bug fixes, changes and additions consult the Changelog.
Download images and binaries are available for most platforms, except STM32 (and some generic_unix hosts for this release due to specific Mbed-TLS requirements) are available from AtomVM Releases on GitHub. STM32 users as well as anyone needing to build a generic_unix port for a device without release binaries should consult the Build Instructions.
The git repository and tarballs of the AtomVM source release for all platforms can be found on our GitHub AtomVM page.
Documentation for the v0.6.0-alpha.2 pre-release of the AtomVM virtual machine, including a Getting Started Guide, can be found at the AtomVM Documentation page.
As always, tools, drivers, and modules are available on the GitHub AtomVM Project page.
Many thanks go to Davide Bettio, for creating such a fine work of software, as well as the contributors and testers who have helped make this release possible.
The AtomVM team
2023/10/09 Announcing AtomVM v0.6.0-alpha.1 (Pre-release)
This is a follow up to the recent v0.6.0-alpha.0 release that fixes some bugs and adds a few new features.
The ESP32 port gains support for ULP wakeup, and expands crypto support. Basic wifi support has been added for the RPi Pico W. There is now the ability to select from heap growth strategies as a fine-tuning option to
spawn_opt/2,4
. Several platforms now have the ability to set the system clock withatomvm:posix_clock_settime/2
. A few more standard Erlang functions have been added to the core libraries as well. For a complete list of all the changes consult the Changelog.Download images and binaries are available for most platforms (for now stm32 ports must be build locally) are available from AtomVM Releases on GitHub.
The git repository and tarballs of the AtomVM source release for all platforms can be found on our GitHub AtomVM page.
Documentation for the v0.6.0-alpha.1 pre-release of the AtomVM virtual machine, including a Getting Started Guide, can be found at the AtomVM Documentation page.
We have a growing collection of tools, drivers, and modules available on the GitHub AtomVM Project page.
Many thanks go to Davide Bettio, for creating such a fine work of software, as well as the contributors and testers who have helped make this release possible.
The AtomVM team
2023/09/01 Announcing AtomVM v0.6.0-alpha.0 (Pre-release)
After many months of work, we are happy to announce a pre-release of v0.6.0-alpha.0 of the AtomVM virtual machine, a lightweight implementation of the BEAM for small and cheap micro-controllers!
This pre-view contains many improvements and bug fixes that the AtomVM team has been working on, including SMP support on all multi-core platforms, support for the ESP32-S3, ESP32-C3, and ESP32-S2 chips, and the addition of a very basic rp2040 (a.k.a. Raspberry Pi Pico) port, as well as an emscripten port using nodejs with Wasm to run AtomVM in the browser. See the Changelog for all the improvements, bug fixes, and breaking changes since the 0.5.0 release.
Download images for the ESP32 family are available on the AtomVM Releases GitHub page. Other platforms should consult the Build Instructions for the v0.6.0-alpha.0 release.
The git repository and tarballs of the AtomVM source release for all platforms can be found on our GitHub AtomVM page.
Documentation for the v0.6.0-alpha.0 pre-release of the AtomVM virtual machine, including a Getting Started Guide, can be found at the AtomVM Documentation page.
We have a growing collection of tools, drivers, and modules available on the GitHub AtomVM Project page.
Many thanks go to Davide Bettio, for creating such a fine work of software, as well as the contributors and testers who have helped make this release possible.
The AtomVM team
2022/04/05 AtomVM Example Programs
We have extracted our example programs into a self-contained and growing github repo with minimal dependencies. For example, if you have flashed the AtomVM image to an ESP32 device, you can simply use rebar3 to build and flash your applications, making the compile/flash/debug cycle you experience on embedded devices fairly painless.
Please note that at this stage, support for building Elixir programs is quite far behind that of Erlang, so best to stick with Erlang until further notice.
© 2024 atomvm.net
•
Theme Moonwalk