use ;
use crateProgram;
use crate;
/// Lower a vyre `Program` to a complete WGSL compute shader string.
///
/// This is the lowering contract: every op's Rust CPU reference maps to a
/// specific WGSL template. The output contains:
/// - Buffer struct and binding declarations
/// - A `main` entry point with `@compute @workgroup_size(...)`
/// - All node/expression logic from the Program's entry body
///
/// # Errors
///
/// Returns `Err` if the Program references constructs that cannot be lowered
/// (e.g., unsupported Cast pairs). Validate the Program first via
/// `ir::validate()` to catch most issues at construction time.