Quick Start

Get WCL running in a few minutes: declare a type, write data, check and evaluate.

Install

WCL is pre-release only for now, so install the newest pre-release with the install script:

curl -fsSL https://wcl.dev/install.sh | sh -s -- --pre

On a platform without a prebuilt binary (e.g. macOS), build from source with Cargo instead:

cargo install --git https://github.com/wiltaylor/wcl -p wcl --locked

If ~/.local/bin is not on your PATH, add it. Verify with wcl --version.

What WCL is

WCL is a typed configuration & schema language: you declare record types, compose a document of block instances, and the toolchain validates and evaluates it.

A minimal document

Declare a block type, point a @document at it, then write an instance:

@block("server") type Server {
  @inline(0) id: identifier
  host: utf8
  @default(8080) port: u16
}
@document type Config { @children("server") servers: list<Server> }

server web { host = "localhost" }

Check and evaluate

Validate the document against its schema, then evaluate it:

$ wcl check config.wcl     # type-checks the document, reports errors
$ wcl eval config.wcl      # prints the evaluated data

Where to go next

Walk the essentials: Fields & Blocks, Records, Schema & Decorators, and the CLI.