Releases: atomvm/AtomVM
Releases · atomvm/AtomVM
v0.6.0-alpha.2
v0.6.0-alpha.2 release.
Please, read the getting started guide for flashing instructions.
A number of Linux artifacts has not been published with this release, since they require a very specific Mbed-TLS version.
CHANGELOG
Fixed
- Fixed a bug where guards would raise exceptions instead of just being false
- Fixed support for big endian CPUs (such as some MIPS CPUs).
- Fixed STM32 not aborting when
AVM_ABORT()
is used - Fixed a bug that would leave the STM32 trapped in a loop on hard faults, rather than aborting
- Fixed a bug that would make the VM to loop and failing to process selected fds on Linux
- Fixed classes of exceptions in estdlib.
- Fixed STM32 code that was hard coded to the default target device, now configured based on the
cmake -DDEVICE=
parameter - Fixed hard fault on STM32 durung malloc on boards with more than one bank of sram
- Fixed invalid src_clk error on ESP-IDF >= 5.0
- Fixed changed default to
AVM_USE_32BIT_FLOAT=on
for STM32 platform to enable use of single precision hardware FPU on F4/F7 devices. - Fixed a bug where emscripten
register_*_callback/1
functions would use x[1] as second argument - Fixed precision of integers used with timers which could yield to halts and wait times smaller than expected
- Add support for ESP32-C6
Changed
- Crypto functions on generic_unix platform now rely on MbedTLS instead of OpenSSL
- Platform function providing time used by timers was changed from
sys_monotonic_millis
tosys_monotonic_time_u64
,sys_monotonic_time_u64_to_ms
andsys_monotonic_time_ms_to_u64
. - Implement
atomvm:random/0
andatomvm:rand_bytes/1
on top ofcrypto:strong_rand_bytes/1
on
generic_unix, ESP32 and RP2040 platforms. - Performance improvements
Added
- Added support for the OTP
socket
interface. - Enhancd performance of STM32 by enabling flash cache and i-cache with branch prediction.
- Added cmake configuration option
AVM_CONFIG_REBOOT_ON_NOT_OK
for STM32 - New gpio driver for STM32 with nif and port support for read and write functions.
- Added support for interrupts to STM32 GPIO port driver.
- Added suppoprt for PicoW extra gpio pins (led) to the gpio driver.
- Added support for
net:getaddrinfo/1,2
- Added minimal support for the OTP
ssl
interface. - Added support for
crypto:one_time/4,5
on Unix and Pico as well as forcrypto:hash/2
on Pico - Added ability to configure STM32 Nucleo boards onboard UART->USB-COM using the
-DBOARD=nucleo
cmake option - Added STM32 cmake option
-DAVM_CFG_CONSOLE=
to select a different uart peripheral for the system console - Added
crypto:strong_rand_bytes/1
using Mbed-TLS (only on generic_unix, ESP32 and RP2040
platforms) - Added support for setting the default receive buffer size for sockets via
socket:setopt/3
- Added support for pattern matching binaries containing 32 and 64 bit floating point values, but
only when aligned to byte boundaries (e.g.<<0:4, F:32/float>> = Bin
is not supported). - Added experimental backend to
get_tcp
andget_udp
based on the newsocket
interface - Added API for managing ESP32 watchdog (only on
esp-idf
>= v5.x)
Removed
- OpenSSL support, Mbed-TLS is required instead.
v0.6.0-alpha.1
v0.6.0-alpha.1 release.
Please, read the getting started guide for flashing instructions.
This release includes some changes that may require manual update steps, please read UPDATING.md for more information.
CHANGELOG
Added
- Added erlang:spawn_link/1,3
- Added erlang:exit/2
- Added links to process_info/2
- Added lists:usort/1,2
- Added missing documentation and specifications for available nifs
- Added configurable logging macros to stm32 platform
- Added support for ULP wakeup on ESP32
- Added heap growth strategies as a fine-tuning option to
spawn_opt/2,4
- Added
crypto:crypto_one_time/4,5
on ESP32 - Improved nif and port support on STM32
- Added support for
atomvm:posix_clock_settime/2
- Added support for creations of binaries with unaligned strings
- Added
-h
and-v
flags to generic_unix AtomVM command - Removed support to ESP32 NVS from network module in order to make it generic. See also [UPDATING.md].
- Added initial support for Pico-W: on-board LED, Wifi (STA and AP modes).
Changed
- Changed offset of atomvmlib and of program on Pico. See also [UPDATING.md].
Fixed
- Fixed incorrect exit reason for exceptions of class exit
- Fixed several incorrect type specifications
- Fixed
esp:nvs_set_binary
functions. - Fixed
monotonic_time/1
andsystem_time/1
functions for Raspberry Pi Pico - Fixed race conditions in atoms table.
- Fixed a bug in the STM32 port that caused the final result to never be returned.
- Fix bug when building a binary using a 64-bit integer on a 32-bit CPU.
- Fix (using 'auto' option) SPI on ESP32 models other than ESP32, such as ESP32S2, ESP32C3, ...
v0.6.0-alpha.0
v0.6.0-alpha.0 release.
Please, read the getting started guide for flashing instructions.
CHANGELOG
Added
- Added the ability to specify the HSPI or VSPI ESP32 hardware interfaces when initializing the
SPI Bus. - Added support for the
spi:close/1
function. - Added
AVM_VERBOSE_ABORT
CMake define, which when set to on, will print the C module and line
number when a VM abort occurs. This define is off by default. - Added
spi:write/3
andspi:write_read/3
functions to support generalized SPI transactions
and arbitrary-length reads and writes from SPI devices. - Added support for building ESP32 port with all currently supported versions of Espressif ESP-IDF,
version 4.1.x through 4.4.x. - Added support for
controlling_process/2
ingen_udp
andgen_tcp
modules. - Added ability to get the atomvm version via
erlang:system_info
. - Added
erlang:is_boolean/1
Bif. - Added support for
esp:partition_erase_range/2
- Added support for
i2c:close/1
- Added support for
erlang:unregister/1
- Added Elixir ESP32 LEDC driver and example
- Added support for
uart:close/1
- Added Bitwise support for Elixir
- Added support for esp32-s2, esp32-s3, and esp32-c3 chips.
- Added Elixir I2C driver and example
- Added the ability to specify the I2C port
- Added support for the OTP
math
module - Added support for
erlang:integer_to_list/2
anderlang:integer_to_binary/2
- Added functions
esp:sleep_enable_ext0_wakeup/2
andesp:sleep_enable_ext1_wakeup/2.
- Added support for FP opcodes 94-102 thus removing the need for
AVM_DISABLE_FP=On
with OTP-22+ - Added support for stacktraces
- Added support for
utf-8
,utf-16
, andutf-32
bit syntax modifiers (put and match) - Added support for Erlang
gpio:close/1
and ElixirGPIO.close/1
for ESP32 - Added support for the Erlang
gen_event
module - Added
start_link
support for thenetwork
module - Added support for
erlang:monotonic_time/1
- Added
start_link
support for thegen_statem
module - Added support for serializing floats in erlang external term encoding
- Added support for the
SMALL_BIG_EXT
erlang external term encoding - Added support for
erlang:memory(binary)
- Added support for callbacks on SNTP updates
- Multithreading support (SMP)
- Added support for code:load_abs/1, code:load_binary/3
- Added support for loading / closing AVMPacks at runtime
- Added support for ESP-IDF v5.x
- Added support for
calendar:system_time_to_universal_time/2
- Added support for
calendar:datetime_to_gregorian_seconds/1
- Added support for Raspberry Pi Pico
- Added support for nodejs with Wasm
- Added support for a subset of the OTP logger interface
- Added
esp:partition_list/0
function - Added
esp:nvs_fetch_binary/2
andnvs_put_binary/3
functions (esp:nvs_set_binary
and
functions that default to?ATOMVM_NVS_NS
are deprecated now). - Added most format possibilities to
io:format/2
andio_lib:format/2
- Added
unicode
module withcharacters_to_list/1,2
andcharacters_to_binary/1,2,3
functions - Added support for
crypto:hash/2
(ESP32 and generic_unix with openssl)
Fixed
- Fixed issue with formatting integers with io:format() on STM32 platform
- Fixed a bug in the order of child initialization in the
supervisor
module - Fixed a bug in the evaluation of
receive ... after infinity -> ...
expressions - Fixed a bug in when putting integers in bit syntax with integer field sizes
- Fixed numerous bugs in memory allocations that could crash the VM
- Fixed SNTP support that had been broken in IDF 4.x builds
- Fixed
erlang:send/2
not sending to registered name
Breaking Changes
IMPORTANT: These changes are incompatible with previous releases of AtomVM.
- Changed the configuration model of the SPI driver, in order to allow for multiple "follower"
devices to be attached to the same SPI Bus. - Changed the return value from
erlang:system_info(esp32_chip_info)
from a tuple to a map, with
additional information. - Changed the return type of the
network:start
function to return the tuple{ok, Pid}
on a
successful call, instead of the bare atomok
. Applications that usenetwork:start
and
check the return value will need to be modified. - The return type of
i2c:read_bytes
has changed from returning just a binary to
returning the tuple{ok, Binary}
when successful. - The return type of many
i2c
operations under error conditions has changed from
error
to{error, Reason}
, for improved diagnostics. - The eavmlib logger interface has been removed
Removed
- ESP-IDF v3.x support.