Skip to content

Releases: atomvm/AtomVM

v0.6.0-alpha.1

09 Oct 11:51
v0.6.0-alpha.1
c239678
Compare
Choose a tag to compare
v0.6.0-alpha.1 Pre-release
Pre-release

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 and system_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

13 Aug 16:22
v0.6.0-alpha.0
f7f26f2
Compare
Choose a tag to compare
v0.6.0-alpha.0 Pre-release
Pre-release

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 and spi: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 in gen_udp and gen_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 and erlang:integer_to_binary/2
  • Added functions esp:sleep_enable_ext0_wakeup/2 and esp: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, and utf-32 bit syntax modifiers (put and match)
  • Added support for Erlang gpio:close/1 and Elixir GPIO.close/1 for ESP32
  • Added support for the Erlang gen_event module
  • Added start_link support for the network module
  • Added support for erlang:monotonic_time/1
  • Added start_link support for the gen_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 and nvs_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 and io_lib:format/2
  • Added unicode module with characters_to_list/1,2 and characters_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 atom ok. Applications that use network: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.

v0.5.0

22 Mar 22:58
v0.5.0
165a056
Compare
Choose a tag to compare

First AtomVM release.