Overview
Comline takes a schema you write by hand and carries it through a fixed pipeline:
parse → resolve imports → validate → freeze → generate
Each stage has its own page in this guide; this is the map.
1. Write a schema — IDL
A project is a directory with a package manifest (config.idp) and one or more
.ids schema files under src/. The schema language defines
structures, enums, protocols,
errors and settings, with docstrings
attached to any of them.
2. Compile to the Intermediate Representation
comline check parses, resolves imports and validates. comline build does that
and then freezes the result: the schema becomes a set of immutable IR units
written into a content-addressable store, .comline/, as a new
commit in an append-only chain.
The package version bumps automatically on each build, by the largest change since the last one — see Versioning rules.
3. Generate code
comline generate turns the compiled schema into source for a target language.
What languages a package supports is declared in config.idp; where the code
lands and in what layout is the consumer's choice, in
comline.toml. One schema history can be
generated across several languages and
several past versions at once.
4. Runtime
At run time a runtime library handles transport, message parsing and routing a protocol call to its implementation, over a pluggable call system (JSON-RPC, a compact binary framing, or your own).
Where things are owned
| Concern | File | Owner | Frozen into CAS |
|---|---|---|---|
| Schema shape, package identity, which languages are supported | config.idp |
package author | yes |
| Output location, layout, which versions to emit | comline.toml |
consumer | no |
See Packages & dependencies for the manifest, and the Design section for the reasoning behind the split.