Back Original

Gossamer: a Rust-flavoured language with real goroutines and pause-free memory

Why Gossamer

Expressive and clear syntax

Forward pipes (|>), immutable by default, and one obvious way to do things. Data flows top-to-bottom, the way you wrote it — not nested inside-out.

Automatic memory, no GC pauses

Deterministic reference counting plus arena { } regions reclaim memory the moment it's done. No borrow checker, no lifetimes, no stop-the-world collector.

Real goroutines, colorless functions

go and typed channels on an M:N scheduler. Blocking calls park the goroutine, not the thread. No async, no await, no function colouring.

Run it, or ship it

A bytecode VM and a REPL for fast iteration; a single, dependency-free native binary via LLVM when you ship. Same language, your choice of tier.

Familiar types, fewer surprises

Result / Option / ?, exhaustive match, traits, generics, and no null. If you know Rust, Go, or F#, you can already read it.

Batteries included, extensible in Rust

A broad standard library — HTTP, JSON, crypto, SQL, compression, and more — and a clean path to drop down into safe Rust when you need it.

See it in a few lines

Hit Run on any sample — it executes right in your browser, no install. Gossamer's VM is compiled to WebAssembly.

fn double(x: i64) -> i64 { x * 2 }
fn add(a: i64, b: i64) -> i64 { a + b }
fn clamp(lo: i64, hi: i64, x: i64) -> i64 {
    if x < lo { lo } else if x > hi { hi } else { x }
}

fn main() {
    let n = 3 |> double |> add(10) |> clamp(0, 100)
    println!("answer: {}", n)
}

Coming from another language?

Short, focused guides that map what you already know onto Gossamer.

Get started

Write a .gos file and run it with the gos toolchain — no build step needed while you iterate:

$ gos run hello.gos
hello, gossamer

$ gos build --release hello.gos   # one native binary, ready to ship

Runs on Linux (x86_64, aarch64, armv7), macOS (Intel & Apple Silicon), and Windows (x86_64).

Install → Read the docs