DIA
Language / Pre-alpha
Build: Active
00 / INTRO
A language for application programming

Dia

For the whole application.

Dia stands for “do it all”. It aims to be the only language you need for application programming, from the interface to the code underneath. Native compilation, a reactive UI library, and direct access to C libraries are part of that design.

Pre-alpha — under active development
TargetsNative · WASM · GPU
MemoryOwnership · Arenas · No GC
InteropC ABI
StatusPre-alpha / Active
01 / EXAMPLES

A few examples.

counter.diaDia / illustrative
import ui.{View, run, Column, Text, Button, state}

@observable
struct CounterState {
  value: i32
}

fn Counter(): View !{alloc} {
  let s = state(CounterState{ value: 0 })

  <Column spacing=12>
    <Text>"Count: ${s.value}"</Text>
    <Button
      label="Increment"
      on_click=() => { s.value += 1 }
    />
  </Column>
}

pub fn main(): void !{alloc, io} {
  run(() => <Counter />)
}
Representative UI syntax. The library and compiler surface are still evolving.
02 / PRINCIPLES

Design notes.

01 — PRODUCT

Application programming first

One language for servers, native interfaces, browsers and GPU code.

02 — MEMORY

Native without lifetime annotations

Safe ownership using owning pointers, second-class borrows and arenas for cyclic structures. No tracing GC.

03 — INTEROP

Import C headers

Import real C headers directly. Manifests add ownership, errors and safety contracts without redeclaring the ABI.

04 — FEEDBACK

Short feedback loops

Incremental compilation, editor-oriented checking and state-preserving native hot reload are architectural features.

03 / STATUS

Current status

Dia is a pre-alpha research implementation. The compiler already has native and WebAssembly code generation, C-header interoperability, ownership checking, structured concurrency and an executable reactive runtime. The standard library, UI renderer and developer tooling are still being built.

It is not ready for production use yet.

04 / LOG

Latest development note

Design note / 001 The vision behind Dia

Why I’m building Dia

A language for the whole application: native interfaces, reusable UI and editor libraries, and the freedom to replace the parts you need. Where the ideas come from, who Dia is for, and what’s still ahead.

Read the design note
Language design · Native UI · Application programming