v0.6.5
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_byteson ESP32 seems not working, usei2c:write_byteinstead.
Added
- ESP32: add a new Elixir release "flavor" with a bigger boot.avm partition that has room for
Elixir standard library modules - ESP32:
--bootoption to mkimage.sh tool - Add
erlang:atom_to_binary/1that is equivalent toerlang:atom_to_binary(Atom, utf8) - Support for Elixir
String.Charsprotocol, now functions such asEnum.joinare able to take
also non string parameters (e.g.Enum.join([1, 2], ",") - Support for Elixir
Enum.at/3 - Add support for
is_bitstring/1construct which is used in Elixir protocols runtime. - Add support to Elixir
Enumerableprotocol also forEnum.all?,Enum.any?,Enum.each,
Enum.filter,Enum.flat_map,Enum.reject,Enum.chunk_byandEnum.chunk_while - Support for
maps:merge_with/3 - Support for
lists:last/1andlists:mapfoldl/3 - Add support to Elixir for
Process.send/2Process.send_after/3/4andProcess.cancel_timer/1 - Add support for
handle_continuecallback ingen_server - Support for Elixir
List.Charsprotocol - 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/3andstring: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_adcADC 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/4andesp:umount/1 - Support for
binary_to_integer/2 - Support for
binary:decode_hex/1andbinary:encode_hex/1,2 - Support for Elixir
Base.decode16/2andBase.encode16/2 - Make external term serialize functions available without using
externalterm_to_binaryso terms
can be written directly to a buffer. - Support for
erlang:list_to_integer/2 - Add
externalterm_to_term_copythat 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_indexandEnum.find_valuesupport Enumerable and not just lists- Install AtomVM libraries source code and binaries for better dialyzer integration
- Made the
device_configproperties list inspi:open/1optional (defaults to[]), so you can use the function with only abus_config
Fixed
- ESP32: content of
boot.avmpartition is not truncated anymore - ESP32:
Fixed gpio:set_intto 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/0was used, see issue #643 uart:open/1,2now works with uppercase peripheral names