//! Mizan server-side IR substrate. Rust analog of `cores/mizan-python/src/mizan_core/`. //! //! Three load-bearing concerns: //! //! 1. **IR data model + KDL emitter.** `build_ir()` produces byte-equivalent //! KDL to the Python emitter. Both backends emit the same contract. //! 2. **Compile-time registry.** Proc macros from `mizan-macros` populate //! linkme distributed slices (`TYPES`, `CONTEXTS`, `FUNCTIONS`) at the //! consumer crate's expansion sites. //! 3. **Runtime helpers.** `compute_invalidation` / `compute_merges` / //! `lookup_function` ported from `mizan-fastapi`'s executor; the HTTP //! adapter calls these per request. //! //! Consumers `use mizan_core::prelude::*;` and alias the crate as `mizan` at //! their call sites so authored code reads `#[mizan::context]` / `#[mizan(...)]`. pub mod graph_check; pub mod ir; pub mod kdl; pub mod registry; pub mod runtime; pub mod traits; pub use ir::{ AffectTarget, DefaultValue, NamedType, Primitive, StructField, Transport, TypeShape, }; pub use kdl::{build_ir, snake_to_camel}; pub use registry::{ context_members, lookup_context, lookup_function, ContextEntry, TypeEntry, CONTEXTS, FUNCTIONS, TYPES, }; pub use runtime::{ compute_invalidation, compute_merges, InvalidationTarget, MergeEntry, MizanError, RequestHandle, }; pub use traits::{ContextMarker, FunctionSpec, InputParam, MizanType}; // Re-export proc macros so consumers depend on one crate. pub use mizan_macros::{client, context, Mizan}; pub mod prelude { pub use crate::ir::{ AffectTarget, DefaultValue, NamedType, Primitive, StructField, Transport, TypeShape, }; pub use crate::registry::{ContextEntry, TypeEntry}; pub use crate::runtime::{MizanError, RequestHandle}; pub use crate::traits::{ContextMarker, FunctionSpec, InputParam, MizanType}; pub use mizan_macros::Mizan; } /// Internal re-exports used by `mizan-macros`-generated code. Not part of /// the public API — consumers must not depend on names under `__priv`. #[doc(hidden)] pub mod __priv { pub use linkme; pub use serde_json; }