Heavy development — not production ready
WCL is under heavy active development and is not ready for production use. The language, APIs, and wdoc output can change at any time without notice.
Why WCL?
WCL was created out of my desire to have a language that could express most forms of data in a natural way.
This then enables a lot of different use cases. Detailed configurations, WDoc which lets you model the data in a format that makes sense and then present multiple views on it.
A taste
A document is fields and blocks; a schema declared with decorators validates the structure.
@block("service")
type Service {
@inline(0) name: utf8 // service "web" → name = "web"
@default(80) port: u32
region: utf8
}
@document
type Config {
@children("service") services: list<Service>
}
service "web" {
region = "us-east-1"
}
service "api" {
port = 9090u32
region = "eu-west-1"
}