Research language · edition alpha-2027 (draft)

Compile a learning system, from its mathematics to its GPU instructions.

Alpha is a dependently typed language and compiler. It checks a model, its learner and its hardware pairing as one program, then emits every byte of a self-contained executable: host code, GPU code, launch tables and memory plan.

Hello.alphaalpha-2027
module Hello

def double : (pi unrestricted n : Nat . Nat) =
  (lambda unrestricted n : Nat . (nat-add n n))

def main : Nat =
  (double 21)
alpha run → exit status 42 · a 29 KB static x86-64 ELF

Results

35,683tokens/sCoppelius training on an RTX 30901.51× PyTorch with CUDA graphs and 2.35× eager PyTorch, in matched 2,000-step runs from the same checkpoint (27 Sep 2026).10,000stepsOne uninterrupted training run57.7M parameters on the RTX 3090 with ten checkpoints, every loss finite, then resumed in a fresh process.2GPU architecturesFrom one model sourceAmpere (sm_86: RTX 3070, 3090) and Blackwell (sm_121: DGX Spark GB10). Only the device pairing changes.0vendor runtimesBetween the program and the driverNo CUDA, no PyTorch, no libc. The executable issues its own driver calls, launches and memory mappings.

How it works

One program, one executable.

A system in Alpha is a model, a learner, a run policy and a pairing with a device. The compiler sees all of it before it specializes anything.

  1. 01

    Describe

    Write the model, the learner, the run policy and the target device as ordinary Alpha definitions: one closure, no configuration files.

  2. 02

    Check

    Dependent types, quantities and effects are checked across the whole closure. Shapes, layouts and resource limits are facts, not comments.

  3. 03

    Realize

    The compiler plans memory, schedules launches and lowers kernels to GPU machine code, and refuses any image that fails its hazard check.

  4. 04

    Run

    One static ELF trains, checkpoints and predicts. Runs are recorded as observation streams, so claims can cite what happened.

The language

Strict where it matters.

Alpha is built so that invalid programs are rejected before anything runs: on the CPU, on the GPU, or on a rented card by the hour.

Read the language guide →
Dependent types
Types can mention values, so a tile that does not fit shared memory, or a buffer of the wrong length, is a type error.
Quantities
Every binder is erased, affine, linear or unrestricted. Proofs and type-level data vanish from the executable by construction.
Explicit effects
Effects and partiality are part of a computation's type. Nothing performs I/O or diverges without saying so.
No fallbacks
If a target cannot do something, compilation stops with a stable diagnostic. Work never silently moves to the host.

Built for agents

A compiler an agent can take apart.

Most of Alpha is written by AI agents. Everything from a GPU instruction to a launch schedule is a named, typed value, and checks take seconds, so an agent can change the mathematics and its hardware realization together and find out quickly whether the result is valid.

Why this matters for agents →
  • Stable diagnostics. Errors carry stable codes and point at the exact source span; catalogued codes come with a repair.
  • Machine-readable everything. Receipts, observation streams and inventories are JSON with schemas.
  • Checked results, untrusted producers. Schedulers and allocators can be rewritten freely; their output is still checked.
  • Evidence, not assertions. A claim about speed or loss cites the recorded run behind it.

Where next

Pick a starting point.