Grasm v1.0.0 Get started

More

A language built on twenty years of research.

Grasm is a systems language with an effect system, capability ceilings on packages, and tiered ownership without lifetime annotations. It is version 1.0.0, it has 660 libraries, and every one of them was written inside this repository.

The lineage

Every mechanism in Grasm has a research pedigree — a decade or two of papers and prototypes behind it, in languages most working programmers never get to use. Grasm is where they arrive together, in one toolchain, with gates that prove the combination holds.

In GrasmWhere it came from
let / inout / own, value semantics, no lifetimes Hylo (formerly Val) has let/inout/sink. Swift has exclusivity, ARC and copy-on-write.
Effect rows, inferred and unified Koka — row-based effect types with inference. Also OCaml 5, Unison, Eff, Frank.
Capability ceiling per module Austral — capability-secure, no ambient I/O. Wyvern, and the E language before it.
Reference counting with copy-on-write Swift, Nim.
Generational references The slotmap pattern, in every entity-component system.
A reference interpreter as the specification WebAssembly set the precedent: a reference implementation that is the specification.

The closest single comparison is Hylo plus Koka, tied to a manifest the way Austral does it — and that combination has never shipped as one language before. Each of those ideas is proven on its own; putting all of them in the same type system, and holding them there with 113 gates on every build, is the part that is new.

The honest edge

Version 1.0, built inside one repository. Everything above is real and gated; here is precisely where the edge of it sits today, so nobody finds out the hard way:

Who it is for

Anyone who treats an untrusted dependency reaching the network or the filesystem as a threat, and who wants the compiler to enforce that boundary rather than a sandbox at run time. Rust, Go, Zig and Python all leave that gap wide open. Closing it is the whole point of this language.

How it is built

254 normative clauses in 3,561 lines of specification, under a hard ceiling — every addition since has been paid for by compressing prose already written. 167 clauses are stable and will not change incompatibly before 2.0; 26 are provisional and 65 are experimental. Version 1.0 promoted nothing: a clause moves when it passes the five-part test, one at a time, on its own evidence.

A count on this site — clauses, libraries, programs, gates — is computed from the repository as the page is written. A measurement is read out of the document that recorded it, so the page and the record cannot disagree and a record that changes shape fails the build rather than leaving a stale number here. If a gate has not run, the page says so rather than printing a figure nobody took. That is not a claim that nothing here is typed: a target, and a number quoted from a story about how something was found, are both typed, and both say where they came from.