The AtomVM team is pleased to announce that version 0.6.4 of the AtomVM virtual machine has been released. We are a little late getting the news to you again, but this release is of much more interest to Elixir developers anyway.
This release focused on expanding Elixir support, many new modules and functions are supported:
- Implement missing opcode 161 (raw_raise), that looks more likely to be generated with Elixir code
- Support for Elixir Kernel:
- Kernel.struct and Kernel.struct!
- Kernel.min and Kernel.max
- MapSet module
- Range module
- Enum functions: split_with, join, map_join, into, reverse, slice and to_list
- Map.replace/3 and Map.replace!/3
- IO.iodata_to_binary/1
- Support for Elixir Enumerable and Collectable protocol
- Support for Elixir exceptions: Exception module and the other error related modules such as ArgumentError, UndefinedFunctionError, etc…
- Support (as stub) for erlang:error/3 (that is required from Elixir code)
Continued expansion of Elixir support is currently under development for upcoming releases.
The only other change in this release is the addition of support for gpio:init/1
on the ESP32 platform, for some pins that are set to a specific mode that blocks gpio use by the bootloader (this is not a common scenario).
Binaries are available for most platforms on the AtomVM GitHub Release page .
Documentation of the AtomVM virtual machine, including a Getting Started Guide , and API reference documentation for AtomVM Erlang libraries can be found in the AtomVM v0.6.4 Documentation . Unfortunately we do not currently include the Elixir modules in our on-line documentation. (This is a complicated situation that I would love to sort out, but that is the topic for a separate post.)
If you discover any bugs, errors in the documentation, or have a feature you need implemented to get your microcontroller application working, we always encourage opening an issue on GitHub, and of course code and documentation contributions are always welcome. We are often active in the Telegram Chat (with members around the globe, so somebody is usually around to help trouble shoot), or contact us here on the erlangforums.com AtomVM Forum.
Many thanks go to Davide Bettio , for creating and maintaining such a fine work of software, and to the rest of the contributors and testers who have helped make this release possible.
The AtomVM team