Decodal

Features

Decodal は embedded use と小さい runtime を優先する。 言語機能を追加するときは、値の合成・検証・materialization に直接必要なものを core に残し、重い依存や高度な推論は optional feature または外部 tooling に分ける。

Core feature boundary

Core に入れる機能は、基本的に deterministic な value transformation に限る。

  • arithmetic / logical / comparison operators
  • array concat
  • object / constraint composition
  • default materialization
  • pure function evaluation
  • host supplied import evaluation

Core に入れないものは以下である。

  • filesystem / network / environment access
  • time / random
  • mutation
  • reflection or existence probing
  • arbitrary host function calls
  • symbolic constraint solving beyond simple normalization

未解決 identifier や missing field は unknown として流れず、diagnostic になる。 この方針により、存在チェックや optional chaining のような dynamic object inspection は core language の対象外とする。

Constraint reasoning

Constraint normalization は軽量な範囲に留める。 primitive type conflict や明らかな numeric bound conflict は合成時に検出してよい。 一方で、symbolic arithmetic、boolean algebra、regex intersection、array length dependent typing のような重い推論は行わない。

評価済みの concrete value に対する検証は runtime / materialization で行う。 静的に完全な型検査フェーズを増やすのではなく、parse、evaluate、compose、materialize の各段階で自然に分かる error を diagnostic として返す。

Core defaults

decodal-core defaults to std only.

[features]
default = ["std"]
std = []
regex = ["std", "dep:regex"]

Building decodal-core with --no-default-features keeps the core in no_std + alloc mode and avoids optional dependencies.

Regex

Regex constraints are implemented behind the regex feature. When the feature is disabled, regex constraints parse and compose, but validating a concrete value against them returns an unsupported feature diagnostic.

cargo run -q -p decodal --features regex -- examples/regex/main.dcdl

Regex constraints are accumulated during & composition. The implementation does not try to prove whether the intersection of two regex constraints is empty. Concrete strings must match every regex constraint attached to the abstract value.

CLI features

decodal-cli exposes a matching regex feature that enables decodal-core/regex. The feature is not enabled by default so the default CLI binary remains small.