Yesterday I was working on an S3 Provider to provide blob store capabilities to WebAssembly modules i  n the waSCC ecosystem. If you’re not familiar

Rust Async and the Terrible, Horrible, No Good, Very Bad Day

submited by
Style Pass
2022-01-14 13:30:04

Yesterday I was working on an S3 Provider to provide blob store capabilities to WebAssembly modules i n the waSCC ecosystem. If you’re not familiar with the waSCC project, the idea is to take non-functional requirements (or cloud-native capabilities) and dynamically bind them to portable, secure WebAssembly modules that contain pure business logic. Our goal is to make it so you can write your business logic and plug in whatever key-value store, message broker, or blob store you want. You can execute your WebAssembly module logic against a local file system when developing on your laptop and something like S3 or Azure or Google blobs when you’re running in the cloud.

The problem I had sounds deceptively simple — just give the WebAssembly module access to the S3 blob store. It’s actually pretty tricky, but for a pretty fascinating reason if you’re into distributed systems design.

WebAssembly modules are single-threaded. Even though the waSCC dispatching and multiplexing is multi-threaded, once execution enters a wasm module, it’s single threaded internally.

Leave a Comment