In priority order. The higher an item, the more it constrains later design.
cfg namespace vocabularyStatus: not started. The next item to pin down.
The shared foundation referenced by when predicates in dowel.toml,
match / when in dowel.build, toolchain selection, and ABI labels.
Working draft:
cfg.opt configuration (debug / release / …)
cfg.target target triple
host.os build host OS
host.arch build host architecture
feature.<name> feature flag
tc.c the selected C toolchain
To decide:
cfg (these become candidate components of the
ABI label)To make progress, the implementation adopts the draft above verbatim as a
closed vocabulary (crates/dowel-eval/src/config.rs). This is a
placeholder until Q1 is decided, not the decision itself. The live version is
available from dowel schema dump.
| Namespace | Implemented keys | Domain |
|---|---|---|
cfg |
opt |
debug / release |
cfg |
target |
target triple (free-form string) |
host |
os / arch |
build host values |
feature |
<name> |
boolean (only names declared in [features] of dowel.toml) |
tc |
c |
identifier of the selected C toolchain |
tc |
cxx |
identifier of the selected C++ toolchain |
Predicate composition is implicit AND only. Exhaustiveness checking of match
applies to keys with finite domains (cfg.opt / host.os / host.arch);
cfg.target has an unbounded domain and requires a _ arm. This asymmetry
will be revisited when Q1 is decided.
Status: deferred. Depends on the outcome of Q1.
The counterpart of Conan’s package_id. Granularity dominates the design.
Candidate components: toolchain ID, C++ standard version, standard library
implementation, _GLIBCXX_USE_CXX11_ABI, MSVC runtime kind, sanitizers, LTO,
exception model, floating-point model.
The Phase 0 verification (how many real mismatches are detected) will indicate the required granularity.
Status: skeleton only (20-architecture.md section 5).
import output is rejectedConfigurations extracted from an existing project may fail this system’s
verification (ABI mismatch, error_on_conflict, and so on).
Options:
The third is favored. The current implementation carries the mark as an
UNVERIFIED header comment on the generated files (human-facing, pointing at
migrate verify); whether a machine-readable mark should gate verification
per target — and what clears it — remains undecided.
The plan is to make scan actions first-class in the graph, but parts of this depend on the state of clangd support. Re-survey when Phase 2 starts.
The statements about Meson in 00-overview.md are based on prior knowledge. The wrap and lock behavior in particular may have changed in recent releases; confirmation against the official documentation has not been done.
Status: not started. ADR-0013 defined source builds only.
Building from source assumes a Rust toolchain. Widening the audience requires distributing prebuilt binaries. To decide:
Fetching itself can be delegated to curl, but verification has to be owned
here.