ALPHA ยท experimental, and honest about it

A polyglot, capability-based language

Write Python, JavaScript, and Bash inside one program, and hand code exactly the authority it needs โ€” no more. Compiled to CASM bytecode and run on the CVM1 virtual machine. Early, incomplete, and moving fast.

Crush Banner
example.crush
_

What it is

๐ŸŒ

Polyglot Embedding

Drop into another language mid-program with @python { }, @javascript { } or @bash { }. Python and JavaScript hand typed values back to Crush; Bash returns its output as text. A block only runs when it's granted.

๐Ÿ”‘

Capability-Based

No ambient authority. A program gets io.print, fs.read, net.get only when you grant them โ€” and nothing it wasn't handed. This is the core idea the language is built around.

โš™๏ธ

CASM, CVM1 & WASM

Crush compiles to CASM bytecode and runs on the CVM1 virtual machine, natively or compiled to WebAssembly in your browser. Packaged as capsules, the same granted capability set is enforced whether a capsule runs natively or in the browser: try it.

Where it's honestly at

Crush is alpha. Here's the real state, so you can decide what to try.

โœ…

Works today

The language, compiler and VM run real programs: functions, structs, ranges (for i in 0..n), exceptions, input with io.read, the capability system, typed @python / @javascript round trips, and a standard library that's on by default. File, environment, time and HTTP access each sit behind their own grant. cargo install crush-lang-sdk gets you crush, crushc, crush-run and crush-repl (0.4.0); crush-pkg builds and runs a package in one command and checks its declared capabilities against what it uses. Every example in the guide that can run in a browser has a Run button, and every chapter downloads as a notebook.

๐Ÿšง

Rough edges

Lambdas don't parse yet, and import doesn't load anything, so code can't be shared across files. The execution engines can still disagree in corners; differential tests across all of them are in progress. Walkers for languages beyond JavaScript, Python, C and Bash are thin.

โš ๏ธ

Known limitation

A polyglot block only runs when it's granted, but once granted it runs as a normal host process with your full authority: it steps outside the capability sandbox. An opt-in sandbox exists on Linux but isn't on by default yet. Don't run untrusted Crush with --polyglot. Sandboxing granted blocks is first on the roadmap below. We'd rather say so than surprise you.

What's next

Plans, not promises. Each item is tracked in crush-ast; nothing here works until it says so above.

๐Ÿ”จ

Now

  • Sandbox granted polyglot blocks, and grant them per language
  • Lambdas and working imports
  • Make every engine agree, with differential tests across them
  • A larger standard library
๐Ÿงญ

Next

  • Java and Kotlin walkers; deeper Python, JavaScript and C walkers; crush run file.py
  • Timeouts on every blocking call, instruction budgets, a deterministic mode
  • CI on macOS, Windows and ARM
  • Debugger stepping and watchpoints
  • JavaScript blocks that run inside the browser playground
๐ŸŒ’

Later

  • The notebook kernel running entirely in the browser
  • A WebAssembly walker and WebAssembly compiled ahead of time
  • JIT optimisations and a precise garbage collector
  • CAISON as first-class Crush data, with its confidence and annotations intact

Games written by LLMs

Each model was pointed at crush-ast and asked one thing: "can you learn crush?" They had no task spec, and each one shipped a self-playing game. Eight games and two interpreters run in your browser.

๐Ÿงฑ

Breakout

By DeepSeek-v4. 30 bricks stored as bits in a single integer, with an AI paddle.

๐Ÿงฉ

Fifteen puzzle

By DeepSeek-v4. Scrambles, then solves optimally with IDA* search.

โญ•

Tic-tac-toe

By a Qwen3.8-27B fine-tune. Two strategies play each other; the board is one base-3 integer.

The Crush Ecosystem

Crush AST

crush-ast

The core: compiler frontend, the CVM1 runtime, the CASM assembler, and the language-frontend crates.

๐Ÿ“š

Crush Language Guide

The language, the capability model, CAST and CASM. Every example that can run in a browser has Run and Edit buttons.

๐Ÿ““

crush-notebook

Notebooks for Crush: a .crush-nb document format, an MCP kernel that runs cells with shared variables, and an HTML renderer. cargo install crush-notebook-kernel.

๐ŸŽฎ

awesome-crush

Self-playing ASCII games written in Crush, each by a different LLM given only "can you learn crush?".