runmat 0.4.5

High-performance MATLAB/Octave syntax mathematical runtime
Documentation
use anyhow::Result;
use runmat_config::RunMatConfig;
use runmat_gc::gc_stats;

pub fn show_version(detailed: bool) {
    println!("RunMat v{}", env!("CARGO_PKG_VERSION"));

    if detailed {
        println!(
            "Built with Rust {}",
            std::env::var("RUSTC_VERSION").unwrap_or_else(|_| "unknown".to_string())
        );
        println!(
            "Target: {}",
            std::env::var("TARGET").unwrap_or_else(|_| "unknown".to_string())
        );
        println!(
            "Profile: {}",
            if cfg!(debug_assertions) {
                "debug"
            } else {
                "release"
            }
        );
    }
}

pub async fn show_system_info(config: &RunMatConfig) -> Result<()> {
    println!("RunMat System Information");
    println!("==========================");
    println!();

    println!("Version: {}", env!("CARGO_PKG_VERSION"));
    println!(
        "Rust Version: {}",
        std::env::var("RUSTC_VERSION").unwrap_or_else(|_| "unknown".to_string())
    );
    println!(
        "Target: {}",
        std::env::var("TARGET").unwrap_or_else(|_| "unknown".to_string())
    );
    println!();

    println!("Runtime Configuration:");
    println!(
        "  JIT Compiler: {}",
        if config.jit.enabled {
            "enabled"
        } else {
            "disabled"
        }
    );
    println!("  JIT Threshold: {}", config.jit.threshold);
    println!("  JIT Optimization: {:?}", config.jit.optimization_level);
    println!(
        "  GC Preset: {:?}",
        config
            .gc
            .preset
            .as_ref()
            .map(|p| format!("{p:?}"))
            .unwrap_or_else(|| "default".to_string())
    );
    if let Some(young_size) = config.gc.young_size_mb {
        println!("  GC Young Generation: {young_size}MB");
    }
    if let Some(threads) = config.gc.threads {
        println!("  GC Threads: {threads}");
    }
    println!("  GC Statistics: {}", config.gc.collect_stats);
    println!();

    println!("Environment:");
    println!("  RUNMAT_DEBUG: {:?}", std::env::var("RUNMAT_DEBUG").ok());
    println!(
        "  RUNMAT_LOG_LEVEL: {:?}",
        std::env::var("RUNMAT_LOG_LEVEL").ok()
    );
    println!(
        "  RUNMAT_TIMEOUT: {:?}",
        std::env::var("RUNMAT_TIMEOUT").ok()
    );
    println!(
        "  RUNMAT_JIT_ENABLE: {:?}",
        std::env::var("RUNMAT_JIT_ENABLE").ok()
    );
    println!(
        "  RUNMAT_GC_PRESET: {:?}",
        std::env::var("RUNMAT_GC_PRESET").ok()
    );
    println!();

    let gc_stats = gc_stats();
    println!("Garbage Collector Status:");
    println!("{}", gc_stats.summary_report());
    println!();

    println!("Help:");
    println!("  See 'runmat --help' for commands.");
    println!("  See 'runmat <command> --help' for subcommand details.");

    Ok(())
}