Skip to content

SiliconA systems language built for WebAssembly.

Zig-level control, ML-level ergonomics (sum types, pattern matching, inference), and a gradual memory model that's no-GC when you need speed and garbage-collected (wasm-gc) when you don't — with first-class JavaScript/host interop.

A small example

silicon
@type Shape := $Circle r Int | $Square s Int;

\\ size (Shape) -> Int
@fn size sh := {
    @match(sh,
        $Circle r, { r },
        $Square s, { s })
};

@export size;

Types live on a \\ signature line, not inline; sum-type variants are constructed by calling the generated constructor (Some(x)) and destructured by @match.

sgl run compiles, executes in wasmtime. sgl build --release produces a native binary via the QBE backend.

Install in 60 seconds

sh
curl -fsSL https://raw.githubusercontent.com/NatesCode/silicon/main/scripts/install.sh | sh
sgl init hello
cd hello
sgl run

Continue with the 15-minute tutorial →