Skip to content

Release v0.5.0

Compare
Choose a tag to compare
@github-actions github-actions released this 29 Jul 18:19
· 287 commits to main since this release

Changes

Lunatic was completely re-written from scratch. Now it's built on top of Wasmtime's async support and doesn't contain any unsafe code.

The architecture of the runtime was changed to closer mirror Erlang's features. Processes now only contain one mailbox and the channels API was removed. Processes can also be linked together to propagate failure, so that supervisor like tools can be built on top of them.

Environments

Environments allow you to specify some characteristics of the execution, like how much memory or CPU processes can use. They can also define host function namespaces that are allowed to be called. Processes that are spawned into an environment inherit theses characteristics, allowing you to dynamically create execution contexts for new processes.

Dynamic module loading

WebAssembly modules can be loaded from other WebAssembly modules during runtime. Combined together with Environments this can be used to load untrusted code and run it inside a sandbox.

Libraries

The Rust library was also completely re-written to support the new abstractions. Check out the new docs!

The AssemblyScript update is still WIP.

Next steps

The next part is going to be adding support for distributed workloads. We should be able to build on top of the Environment abstraction and say "create a new environment but on this other machine". All processes spawned into this environment would be spawned onto a different node. All other parts like message passing and linking should stay transparent to processes, no matter on what machine they run.