AtomVM: Erlang virtual machine for IoT devices