jzhao.xyz

Search

Search IconIcon to open search

WebAssembly

Last updated Apr 29, 2023 Edit Source

A binary instruction format for a stack-based virtual machine

# Distributed Invocation

Source and talk on Homestar

We can imagine WASM modules as functions that execute some behaviour. If we content address it, we now have a consistent way of referring to the same computation. We can imagine a particular WASM module call with a set of parameters as a suspended closure that is deterministic1.

Then, if we know we’ve ran that module with a specific set of parameters and have a receipt that it produced a certain result, we can be sure that we can just use the result instead of doing the computation again. Memoization at global scale!

Once we have a way for compute to be orchestrated at a global scale (e.g. IPVM through Homestar), this means we pretty much have a global mapping from source code + arguments to result.

This actually gives us superlinear results as we increase concurrency (opposite of what the Universal Scaling Law says! BitTorrent does this too)

# Nondeterminism

Nondeterministic execution can only occur in a small number of well-defined cases (described below) and, in those cases, the implementation may select from a limited set of possible behaviors.

See a list of nondeterministic behaviours in WASM


  1. See point on nondeterminism ↩︎