cairo-native 0.8.0

A compiler to convert Cairo's IR Sierra code to MLIR and execute it.
#![cfg(feature = "testing")]

use cairo_lang_runner::SierraCasmRunner;
use cairo_lang_sierra::program::Program;
use std::sync::Arc;
use walkdir::WalkDir;

pub fn prepare_programs(path: &str) -> Vec<(Arc<Program>, String)> {
    WalkDir::new(path)
        .into_iter()
        .filter_map(|entry| {
            let e = entry.unwrap();
            let path = e.path();
            match path.extension().map(|x| x.to_str().unwrap()) {
                Some("cairo") => Some((
                    cairo_native::utils::testing::cairo_to_sierra(path).unwrap(),
                    path.display().to_string(),
                )),
                _ => None,
            }
        })
        .collect::<Vec<_>>()
}

#[allow(unused)] // its used but clippy doesn't detect it well
pub fn create_vm_runner(program: &Program) -> SierraCasmRunner {
    SierraCasmRunner::new(
        program.clone(),
        Some(Default::default()),
        Default::default(),
        None,
    )
    .unwrap()
}