truce-loader 0.49.7

Hot-reloadable plugin logic for truce (native ABI, dylib loading)
Documentation
fn main() {
    let output = std::process::Command::new("rustc")
        .arg("--version")
        .arg("--verbose")
        .output()
        .expect("rustc not found");
    let version = String::from_utf8_lossy(&output.stdout);
    let hash = fnv1a_64(version.as_bytes());
    println!("cargo:rustc-env=TRUCE_RUSTC_HASH={hash}");
    println!("cargo:rerun-if-changed=../../rust-toolchain.toml");
}

fn fnv1a_64(bytes: &[u8]) -> u64 {
    let mut hash: u64 = 0xcbf2_9ce4_8422_2325;
    for &b in bytes {
        hash ^= u64::from(b);
        hash = hash.wrapping_mul(0x0100_0000_01b3);
    }
    hash
}