v0.6.5 release
Please, read the getting started guide for flashing instructions.
Important note: this version uses a different partitioning layout for ESP32 Elixir images (and dedicated images) that have room for additional Elixir modules. Make sure to use updated tooling and offsets.
Known Issues
i2c:write_bytes
on ESP32 seems not working, usei2c:write_byte
instead.
Added
- ESP32: add a new Elixir release "flavor" with a bigger boot.avm partition that has room for
Elixir standard library modules - ESP32:
--boot
option to mkimage.sh tool - Add
erlang:atom_to_binary/1
that is equivalent toerlang:atom_to_binary(Atom, utf8)
- Support for Elixir
String.Chars
protocol, now functions such asEnum.join
are able to take
also non string parameters (e.g.Enum.join([1, 2], ",")
- Support for Elixir
Enum.at/3
- Add support for
is_bitstring/1
construct which is used in Elixir protocols runtime. - Add support to Elixir
Enumerable
protocol also forEnum.all?
,Enum.any?
,Enum.each
,
Enum.filter
,Enum.flat_map
,Enum.reject
,Enum.chunk_by
andEnum.chunk_while
- Support for
maps:merge_with/3
- Support for
lists:last/1
andlists:mapfoldl/3
- Add support to Elixir for
Process.send/2
Process.send_after/3/4
andProcess.cancel_timer/1
- Add support for
handle_continue
callback ingen_server
- Support for Elixir
List.Chars
protocol - Support for
gen_server:start_monitor/3,4
- Support for
code:ensure_loaded/1
- Support for
io_lib:latin1_char_list/1
- Add support to Elixir for
Keyword.split/2
- Support for
binary:split/3
andstring:find/2,3
- Support for large tuples (more than 255 elements) in external terms.
- Support for
io:put_chars/2
- Support for
lists:nthtail/2
- Support for Elixir
IO.chardata_to_string/1
- Support for Elixir
List.duplicate/2
- Support for
binary:copy/1,2
- Support for directory listing using POSIX APIs: (
atomvm:posix_opendir/1
,
atomvm:posix_readdir/1
,atomvm:posix_closedir/1
). - ESP32: add support for
esp_adc
ADC driver, with Erlang and Elixir examples - Add handler for ESP32 network driver STA mode
beacon_timeout
(event: 21), see issue
#1100 - Support for mounting/unmounting storage on ESP32 (such as SD or internal flash) using
esp:mount/4
andesp:umount/1
- Support for
binary_to_integer/2
- Support for
binary:decode_hex/1
andbinary:encode_hex/1,2
- Support for Elixir
Base.decode16/2
andBase.encode16/2
- Make external term serialize functions available without using
externalterm_to_binary
so terms
can be written directly to a buffer. - Support for
erlang:list_to_integer/2
- Add
externalterm_to_term_copy
that can be safely used from NIFs taking temporary buffers
Changed
- ESP32: Elixir library is not shipped anymore with
esp32boot.avm
. Useelixir_esp32boot.avm
instead Enum.find_index
andEnum.find_value
support Enumerable and not just lists- Install AtomVM libraries source code and binaries for better dialyzer integration
- Made the
device_config
properties list inspi:open/1
optional (defaults to[]
), so you can use the function with only abus_config
Fixed
- ESP32: content of
boot.avm
partition is not truncated anymore - ESP32:
Fixed gpio:set_int
to accept any pin, not only pin 2 - Fix memory corruption in
unicode:characters_to_binary
- Fix handling of large literal indexes and large extended literal indexes
unicode:characters_to_list
: fixed bogus out_of_memory error on some platforms such as ESP32- Fix crash in Elixir library when doing
inspect(:atom)
- General inspect() compliance with Elixir behavior (but there are still some minor differences)
- Fix several uses of free on prevously released memory on ESP32, under certain error condition using
network:start/1
, that would lead to a hard crash of the VM. - Fix a bug in ESP32 network driver where the low level driver was not being stopped and resoureces were not freed
whennetwork:stop/0
was used, see issue #643 uart:open/1,2
now works with uppercase peripheral names