Announcing AtomVM v0.6.3
July 2024 (373 Words, 3 Minutes)
2024/07/22 Announcing AtomVM v0.6.3
We are pleased to announce the release of v0.6.3 of the AtomVM virtual machine!
This release expands OTP coverage to include the Erlang sets
and queue
modules and several
Elixir Keyword
functions: Keyword.merge
, Keyword.take
, Keyword.pop(!)
, Keyword.keyword?
,
and Keyword.has_key?
. Support for ~kp
with io_lib:format/2
and maps:iterator/2
that were
introduced with OTP26 have added, along with maps:from_keys/2
. The lists
modules gains support
for lists:keytake/3
, lists:keystore/4
, and lists:filtermap/2
. Support for erlang:size/1
and
erlang:apply/2
has also been added.
A simple http client,
that can be used for different use cases, such as downloading OTA updates has been added to
eavmlib
.
The channel used in access point mode
can now be changed in the
network
driver.
This release adds support for ESP32-H2 devices. Support has also been added for USB serial output on ESP32 devices with native USB support (ESP32-S2 for example).
Notable changes include:
- the default size of ESP32 RTC slow memory being bumped from 4086 to 4096, except on ESP32-H2 where it’s 3072 bytes
- updates to
byte_size/1
andbit_size/1
to implement OTP27 match context reuse optimization OTP-18987 - ESP32 network driver messages for event 40 (home channel change events) are now suppressed, but the details for the channel changes can be observed in the console log if “debug” level logging is enabled in ESP-IDF Kconfig options.
Several bugs have been fixed, including the creation of multiple links for the same process and links not being removed at trapped exits. A bug affecting binary pattern matching (for builds with OTP-21) has been fixed, and several memory related bugs have been corrected, as well as a bug that could yield crashes when functions are sent in messages. The error that is raised when a function is undefined has also been fixed.
For the full set of bug fixes, changes and additions consult the Changelog.
Download images and binaries are available for most platforms, except STM32, 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. MacOS
users also have the option of
installing with macports
,
and an updated HomeBrew tap should be available in the near future. The “tap” is currently out of date, but a fix
has already been submitted.
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.3 release of the AtomVM virtual machine, including a Getting Started Guide, can be found in the AtomVM Documentation.
As always, tools, drivers, and modules are available on the GitHub AtomVM Project page.
Many thanks go to Davide Bettio, for creating and maintaining such a fine work of software. Special thanks also to takasehideki and Mikael Karlsson for their first contributions to the project, along with the rest of the contributors and testers who have helped make this release possible.
The AtomVM team