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.
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.
Deterministic reference counting plus arena { }
regions reclaim memory the moment it's done. No borrow
checker, no lifetimes, no stop-the-world collector.
go and typed channels on an M:N scheduler.
Blocking calls park the goroutine, not the thread. No
async, no await, no function
colouring.
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.
Result / Option / ?,
exhaustive match, traits, generics, and no
null. If you know Rust, Go, or F#, you can
already read it.
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.
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)
}
Short, focused guides that map what you already know onto Gossamer.
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).