behavior-contracts 0.5.0

Language-neutral IR runtime core (expression evaluation, template rendering, execution plan, canonical serialization) shared across DSL implementations. Passes the dsl-contracts conformance vectors byte-for-byte.
Documentation
[package]
name = "behavior-contracts"
version = "0.5.0"
edition = "2021"
rust-version = "1.70"
license = "MIT OR Apache-2.0"
description = "Language-neutral IR runtime core (expression evaluation, template rendering, execution plan, canonical serialization) shared across DSL implementations. Passes the dsl-contracts conformance vectors byte-for-byte."
repository = "https://github.com/foo-ogawa/behavior-contracts"
homepage = "https://github.com/foo-ogawa/behavior-contracts"
readme = "README.md"
keywords = ["ir", "runtime", "canonical", "serialization", "dsl"]
categories = ["data-structures", "parsing"]

[dependencies]
# preserve_order keeps JSON object key insertion order, which the canonical
# key-identity semantics (canonicalValue: top-level sort only, nested = insertion
# order) depend on when decoding wire values.
# OPTIONAL — only the IR/interpreter surface (`ir` feature: expression-IR evaluate,
# run_behavior IR walk, wire codec, envelope, guard, fingerprint) needs JSON. The CODEGEN
# runtime surface (primitives / rawabi / value / plan / template / canonical) is
# serde_json-FREE by design: generated code must never touch IR/JSON data, so codegen
# consumers depend with `default-features = false` and the dependency vanishes entirely.
serde_json = { version = "1", features = ["preserve_order"], optional = true }

[features]
default = ["ir"]
# The IR/interpreter surface. NOT for codegen consumers (their dep tree must not pull JSON).
ir = ["dep:serde_json"]

[[bin]]
name = "conformance"
path = "src/bin/conformance.rs"
required-features = ["ir"]

[lib]
name = "behavior_contracts"
path = "src/lib.rs"