7

Lunatic - An Erlang-inspired runtime for WebAssembly | Lunatic

 2 years ago
source link: https://lunatic.solutions/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

An Erlang-inspired runtime for WebAssembly

Lunatic is an Erlang-inspired runtime for WebAssembly

By combining the fault-tolerance and massive concurrency of Erlang with the capability-based security of WebAssembly, it creates a powerful programming model.

Architecture

Lunatic is a single executable and runs on Windows, macOS and Linux. It spawns lightweight processes from WebAssembly modules that have their own heap/stack. These processes are preemptively scheduled on a multi-threaded executor.

Processes

Lunatic's design is all about super lightweight processes. Processes are fast to create, have a small memory footprint and a low scheduling overhead. They are designed for massive concurrency.

Isolation

Lunatic sits between your operating system and the running processes. This allows it to decide on a per process basis what syscalls are going to be forwarded to the operating systems.

If you would like to run some untrusted code, you can. Just spawn it inside of a process without any privileges.

architecture_top-598d8676430a548c51d3a24a6acf21b4.svg
architecture_mid-eebcf7d03a446174f8654b6aec6a1741.svg
architecture_bot-842285a2a6c968f818ddea59a9e9cd7f.svg

Features

Open source

Lunatic is an open source project licensed under the MIT/Apache license. You can check out the code on Github.

Secure

Lunatic builds on WebAssembly's security. We all use unaudited third-party libs that get deployed with our code, Lunatic can use capability based security to limit them.

Lunatic uses Wasmtime to run Wasm and just-in-time compile your Wasm to machine code (using Cranelift).

Multi-lingual

We want to support all languages that compile to Wasm. Some are better suited for Lunatic's use-cases. Currently, we are focused on Rust and AssemblyScript.

No lock-in

You have the freedom to architecture your app in any way you want. Ideally you should be able to compile your existing app to Wasm and enjoy some benefits of Lunatic.

Robust

Lunatic processes are completely isolated, with a per-process stack and heap. If a process crashes, it won't affect others in the runtime.

Find us onGitHub iconDiscord iconTwitter iconor subscribe to our mailing list...
Subscribe

Recommend

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK