From browser to server
When WebAssembly appeared in 2015, the task was simple: to give the browser a speed close to the native one. But the key properties are portability, sandbox-security, compactness and polyglotism - are ideal for both server and edge cases.
Why Wasm "went" to the server
One binary for all platforms
"Default" isolation without heavy VMs
Start in milliseconds and small memory requirements
Where it's useful right now
Serverless/FaaS with cold start 1–10 ms
Edge computing on PoP/CDN nodes
Plugin systems with untrusted code

WASI: system interfaces for Wasm
If WebAssembly is an "assembler for the web", then WASI — its "POSIX". It standardizes access to the file system, network, and time.
// A simple WASI example in Rust
use std::fs;
fn main() {
let content = fs::read_to_string("/data/config.json")
.expect("Failed to read file");
println!("Config: {}", content);
}Compile in wasm32-wasi and run on Linux, macOS, Windows, and embedded systems with a compatible runtime.
Runtimes: Wasmtime, WasmEdge, Wasmer
Runtime | Focus | Where it is good |
|---|---|---|
Wasmtime | Safety, speed | Server, plugins, embedding |
WasmEdge | Edge/IoT, ML extensions | Embedded devices, CDN nodes |
Wasmer | SDK and embedding | Applications with plugins/scripting |
# Installing Wasmtime
curl https://wasmtime.dev/install.sh -sSf | bash
# Module launch
wasmtime run app.wasmPractical applications
1) Serverless and FaaS
Instant cold start and small footprint make Wasm ideal for functions-as-a-service.
// Fastly Compute@Edge (example)
use fastly::{Error, Request, Response};
#[fastly::main]
fn main(req: Request) -> Result<Response, Error> {
let mut resp = Response::from_body("Hello from Edge!");
resp.set_header("X-Custom-Header", "Wasm-powered");
Ok(resp)
}2) Plugin systems
Isolated untrusted code without VM and containers.
// Envoy Proxy: Wasm filter
use proxy_wasm::traits::*;
use proxy_wasm::types::*;
#[no_mangle]
pub fn _start() {
proxy_wasm::set_http_context(|_, _| -> Box<dyn HttpContext> {
Box::new(CustomFilter)
});
}
struct CustomFilter;
impl HttpContext for CustomFilter {
fn on_http_request_headers(&mut self, _: usize) -> Action {
self.set_http_request_header("X-Wasm-Filter", Some("active"));
Action::Continue
}
}3) Microservices and containers 🧱→🧊
Benefits: images "in kilobytes", start in milliseconds, memory consumption 10-100 times less.
# Example of Pod with Wasm (runwasi)
apiVersion: v1
kind: Pod
metadata:
name: wasm-app
spec:
runtimeClassName: wasmtime
containers:
- name: app
image: myregistry.io/wasm-app:latest4) Edge and IoT
WasmEdge is optimized for embedded systems and ML inference.
# Launching a module with TensorFlow Lite support
wasmedge --dir .:. \
wasmedge-tensorflow-lite \
model.wasm input.jpgComponent model: assembly of blocks
WebAssembly Component Model and WIT describe interfaces and contracts between modules — regardless of languages.
// WIT: calculator interface
package example:calculator
interface math {
add: func(a: s32, b: s32) -> s32
multiply: func(a: s32, b: s32) -> s32
}
world calculator {
export math
}The result is that libraries are composed, contracts are strict, and teams can choose the “best language” for each component.
Languages and assembly
First-class support
Rust (
rustc)C/C++ (LLVM/Emscripten)
AssemblyScript
Actively developing
Go (TinyGo)
Python (Pyodide)
.NET, Swift
# Rust -> Wasm
cargo build --target wasm32-wasi --release
# Go (TinyGo) -> Wasm
tinygo build -o app.wasm -target=wasi main.goWasm is no longer a "browser accelerator", but a basic platform for secure, portable and fast applications on the server and at the edge of the network. Start with a small experiment, and you will quickly understand where exactly in your stack it will replace heavy containers.
In the attachment Code you will go from basics to practice: Rust, Go, Python, algorithms, network services and even projects with WebAssembly. You will find interactive exercises, mini-projects, achievements and a supportive community.
🔹 Short, clear lessons and practice
🔹 PRO subscription with additional courses and projects
🔹 Our Telegram channel - news, reviews and help from the team and community
Join us, level up your skills and build a portfolio!
