AtomVM Update Instructions
v0.6.6 -> Unreleased
Ports now represent the native processes. Port drivers should return a port (instead of a pid), by using
term_port_from_local_process_idinstead ofterm_from_local_process_id. Sockets, from port socket driver, are also represented by a port and some matching code may need to be updated fromis_pid/1tois_port/1.Ports and pids can be registered. Function
globalcontext_get_registered_processresult now is a term that can be aport()or apid().bsl(Bitshift left) now checks for overflows, this shouldn’t be a practical issue for existing code, since integers were limited to 64 bits, however make sure to bitmask values before left bitshifts: e.g.(16#FFFF band 0xF) bsl 252.binary_to_integerandlist_to_integerdo not raiseoverflowerror anymore, they instead raisebadargwhen trying to parse an integer that exceeds 256 bits. Update any relevant error handling code.
v0.6.4 -> v0.6.5
ESP32:
esp32boot.avmdoesn’t contain anymore Elixir standard library, use insteadelixir_esp32boot.avm, or the Elixir release flavor when using an image.ESP32: partitioning schema for Elixir flavor is different, so app offset has been changed for Elixir images. Make sure to use
0x250000as offset in your mix.exs or when performing manual flashing.ESP32 a bug was discovered in
i2c:write_bytes/2that has not been fixed yet. Writing bytes sequentally usingi2c:write_byte/2still works as a temporary workaround.STM32 devices with 512k of flash are not supported in this release, due to lack of flash space. Support may return in a future release.
v0.6.0-beta.1 -> v0.6.0-rc.0
Drivers that send messages from Esp32 callbacks should use new functions
port_send_message_from_task,globalcontext_send_message_from_taskormemory_destroy_heap_from_taskinstead ofport_send_message,globalcontext_send_messageandmemory_destroy_heap.
v0.6.0-alpha.2 -> v0.6.0-beta.0
Registers are no longer preserved by GC by default when invoking nifs, as part of the fix of interpretation of the emulator of the live parameter of many opcodes. NIFs may need to call
memory_ensure_free_with_rootsand pass their arguments are roots, instead ofmemory_ensure_freeormemory_ensure_free_opt.Port call message tuple format has been changed, hence previous version of the standard library cannot be used. Libraries (or boot .avm file) from latest version must be used.
v0.6.0-alpha.0 -> v0.6.0-alpha.1
Libraries (or boot .avm file) from latest version must be used. Standard library from
v0.6.0-alpha.0cannot work on top of latest version.Address (offset) of programs for Pico was changed from 0x100A0000 to 0x10100000. UF2 binaries need to be rebuilt with the proper offset using
uf2tool.On ESP32, SSID and PSK stored in NVS are no longer read by network module. Applications must fetch the values and pass them to
network:start/1ornetwork:start_link/1.The
lib.avmpartition is no longer supported on ESP32. If you have been using a spacialized partitioning of your ESP32 flash (uncommon), AtomVM will no longer try to load code off this partition name.