pyfaasm

High-performance stateful serverless runtime based on WebAssembly

Showing:

Popularity

Downloads/wk

0

GitHub Stars

508

Maintenance

Last Commit

6d ago

Contributors

12

Package

Dependencies

0

License

Categories

Readme

Faasm Tests License Release Contributors

Faasm is a high-performance stateful serverless runtime.

Faasm provides multi-tenant isolation, yet allows functions to share regions of memory. These shared memory regions give low-latency concurrent access to data, and are synchronised globally to support large-scale parallelism.

Faasm combines software fault isolation from WebAssembly with standard Linux tooling, to provide security and resource isolation at low cost. Faasm runs functions side-by-side as threads of a single runtime process, with low overheads and fast boot times.

Faasm is built on Faabric which provides the distributed messaging and state layer.

The underlying WebAssembly execution and code generation is built using WAVM. Support for running functions inside SGX enclaves is achieved using WAMR.

Faasm defines a custom host interface which extends WASI to include function inputs and outputs, chaining functions, managing state, accessing the distributed filesystem, dynamic linking, pthreads, OpenMP and MPI.

Our paper from Usenix ATC '20 on Faasm can be found here.

Quick start

Update submodules:

git submodule update

Start a Faasm cluster locally using docker-compose:

docker-compose up -d --scale worker=2 nginx

To compile, upload and invoke a C++ function using this local cluster you can use the faasm/cpp container:

docker-compose run cpp /bin/bash

# Compile the demo function
inv func demo hello

# Upload the demo "hello" function
inv func.upload demo hello

# Invoke the function
inv func.invoke --host=nginx demo hello

More information

More detail on some key features and implementations can be found below:

Experiments and benchmarks

Rate & Review

Great Documentation0
Easy to Use0
Performant0
Highly Customizable0
Bleeding Edge0
Responsive Maintainers0
Poor Documentation0
Hard to Use0
Slow0
Buggy0
Abandoned0
Unwelcoming Community0
100
No reviews found
Be the first to rate

Alternatives

No alternatives found

Tutorials

No tutorials found
Add a tutorial