home..

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 native atomvm_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 using gpio:set_int/4. Support for lists:split/2 has also been added. ESP32 platform now supports retrieving the device’s e-fuse MAC address with esp:get_default_mac/0.

AtomVM now uses UTF-8 encoding for atoms when using erlang:term_to_binary/1, in conformance with OTP-26, and binary_to_atom/1 and atom_to_binary/1 now default to utf8. Support has been added for utf8 encoding to *_to_atom and atom_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 of hello_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

© 2024 atomvm.net   •  Theme  Moonwalk