add graph module

[?]
AAAAC3NzaC1lZDI1NTE5AAAAIP9PKBeqBh9i7lpfwbz1e0S9vijakQ65s6hUb0nwdJzd
Jun 27, 2026, 2:42 PM
NKN2ARCTZA4OWUERAZ5G2ANLOPI7F5RVGNHJAYXCUPCCEC2UWDBQC

Dependencies

Change contents

  • edit in src/main.rs at line 1
    [2.49]
    [3.0]
    mod graph;
    use graph::PijulGraph;
  • edit in src/main.rs at line 20
    [3.386][3.386:387]()
  • edit in src/main.rs at line 24
    [3.419]
    [3.419]
    let mut pijul_graph = PijulGraph::new();
  • file addition: graph.rs (----------)
    [2.15]
    use std::collections::{HashMap, HashSet};
    use std::fs::File;
    use std::io::Write;
    use std::path::Path;
    use walkdir::WalkDir;
    use libpijul::changestore::{ChangeStore, filesystem::FileSystem};
    use libpijul::pristine::Hash;
    use libpijul::Base32;
    use petgraph::graph::{DiGraph, NodeIndex};
    use petgraph::dot::{Dot, Config};
    #[derive(Debug, Clone, Copy, PartialEq, Eq)]
    pub enum DependencyKind {
    Standard,
    Context,
    }
    /// パッチ単体の情報を保持する構造体
    #[derive(Debug, Clone)]
    pub struct PatchInfo {
    pub hash: Hash,
    pub message: String,
    pub timestamp: String,
    pub author: String,
    }
    pub struct PijulGraph {
    pub graph: DiGraph<PatchInfo, DependencyKind>,
    node_indices: HashMap<Hash, NodeIndex>,
    }
    impl PijulGraph {
    pub fn new() -> Self {
    Self {
    graph: DiGraph::new(),
    node_indices: HashMap::new(),
    }
    }
    /// .pijul/changes からリポジトリの状態をロードしてDAGを構築する
    pub fn load_from_repo<P: AsRef<Path>>(&mut self, repo_path: P) -> Result<(), Box<dyn std::error::Error>> {
    let dot_pijul = repo_path.as_ref().join(".pijul");
    if !dot_pijul.exists() {
    return Err("Not a Pijul repository (missing .pijul directory)".into());
    }
    let store = FileSystem::from_root(repo_path.as_ref(), 0);
    let changes_dir = dot_pijul.join("changes");
    let mut edges_to_add = Vec::new();
    for entry in WalkDir::new(&changes_dir).into_iter().filter_map(|e| e.ok()) {
    let path = entry.path();
    if path.is_file() && !path.file_name().unwrap().to_string_lossy().starts_with('.') {
    let relative = path.strip_prefix(&changes_dir)?;
    let hash_str = relative.to_string_lossy().replace(std::path::MAIN_SEPARATOR, "");
    let hash_pure = hash_str.split('.').next().unwrap_or(&hash_str);
    let current_hash = match Hash::from_base32(hash_pure.as_bytes()) {
    Some(h) => h,
    None => continue,
    };
    let change = match store.get_change(&current_hash) {
    Ok(c) => c,
    Err(_) => continue,
    };
    let header = change.hashed.header;
    let author = header.authors.first().map(|a| format!("{:?}", a)).unwrap_or_else(|| "Unknown".to_string());
    let info = PatchInfo {
    hash: current_hash,
    message: header.message,
    timestamp: format!("{:?}", header.timestamp),
    author,
    };
    let node_idx = self.graph.add_node(info);
    self.node_indices.insert(current_hash, node_idx);
    for dep in change.hashed.dependencies {
    edges_to_add.push((current_hash, dep, DependencyKind::Standard));
    }
    for extra in change.hashed.extra_known {
    edges_to_add.push((current_hash, extra, DependencyKind::Context));
    }
    }
    }
    for (child, parent, kind) in edges_to_add {
    if let (Some(&child_idx), Some(&parent_idx)) = (self.node_indices.get(&child), self.node_indices.get(&parent)) {
    self.graph.add_edge(child_idx, parent_idx, kind);
    }
    }
    Ok(())
    }
    /// Graphviz形式のファイルをエクスポートする
    pub fn write_dot_file<P: AsRef<Path>>(&self, output_path: P) -> std::io::Result<()> {
    // 表示用に文字列だけのグラフにマップ
    let string_graph = self.graph.map(
    |_, node| {
    let s_hash = node.hash.to_base32();
    format!("[{}] {}", if s_hash.len() > 8 { &s_hash[0..8] } else { &s_hash }, node.message.replace('\n', " "))
    },
    |_, &kind| kind
    );
    let dot_output = format!("{:?}", Dot::with_config(&string_graph, &[Config::EdgeNoLabel]));
    let dot_output = dot_output.replace("label = \"Context\"", "style = \"dashed\", color = \"gray\", label = \"*\"");
    let mut file = File::create(output_path)?;
    file.write_all(dot_output.as_bytes())?;
    Ok(())
    }
    /// ★ 新機能:論理的に破綻のないすべてのパッチの組み合わせ(世界線)を列挙する
    /// 修正:上限付きで世界線を列挙する安全弁を追加
    pub fn enumerate_ideals(&self, limit: usize) -> Vec<HashSet<Hash>> {
    let mut results = Vec::new();
    let mut topo_order = match petgraph::algo::toposort(&self.graph, None) {
    Ok(order) => order,
    Err(_) => return Vec::new(),
    };
    topo_order.reverse();
    let mut current_set = HashSet::new();
    self.backtrack_ideals(0, &topo_order, &mut current_set, &mut results, limit);
    results.sort_by_key(|set| set.len());
    results
    }
    fn backtrack_ideals(
    &self,
    idx: usize,
    topo_order: &[NodeIndex],
    current_set: &mut HashSet<NodeIndex>,
    results: &mut Vec<HashSet<Hash>>,
    limit: usize,
    ) {
    // 上限に達したら探索を打ち切る
    if results.len() >= limit {
    return;
    }
    if idx == topo_order.len() {
    let hash_set = current_set.iter().map(|&n| self.graph[n].hash).collect();
    results.push(hash_set);
    return;
    }
    let node = topo_order[idx];
    // 選択肢①: 含めない
    self.backtrack_ideals(idx + 1, topo_order, current_set, results, limit);
    // 選択肢②: 含める
    let mut parents_satisfied = true;
    for parent in self.graph.neighbors_directed(node, petgraph::Direction::Outgoing) {
    if !current_set.contains(&parent) {
    parents_satisfied = false;
    break;
    }
    }
    if parents_satisfied {
    current_set.insert(node);
    self.backtrack_ideals(idx + 1, topo_order, current_set, results, limit);
    current_set.remove(&node);
    }
    }
    /// ★新機能:特定のパッチが依存する「最小の閉じられた世界」を爆速で計算する (主イデアル)
    pub fn get_minimal_world_for(&self, target_hash: &Hash) -> Option<HashSet<Hash>> {
    let start_node = *self.node_indices.get(target_hash)?;
    let mut closure = HashSet::new();
    let mut dfs = petgraph::visit::Dfs::new(&self.graph, start_node);
    // ターゲットから到達可能な(=依存している)過去のノードをすべて回収
    while let Some(nx) = dfs.next(&self.graph) {
    closure.insert(self.graph[nx].hash);
    }
    Some(closure)
    }
    }
  • edit in Cargo.toml at line 7
    [2.214]
    [3.452]
    libpijul = "1.0.0-beta"
    walkdir = "2.5"
    petgraph = "0.6"
  • edit in Cargo.lock at line 4
    [2.354]
    [3.503]
    [[package]]
    name = "adler32"
    version = "1.2.0"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "aae1277d39aeec15cb388266ecc24b11c80469deae6067e17a1a7aa9e5c1f234"
    [[package]]
    name = "aes"
    version = "0.7.5"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "9e8b47f52ea9bae42228d07ec09eb676433d7c4ed1ebdf0f1d1c29ed446f1ab8"
    dependencies = [
    "cfg-if",
    "cipher",
    "cpufeatures 0.2.17",
    "ctr",
    "opaque-debug",
    ]
    [[package]]
    name = "aho-corasick"
    version = "1.1.4"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "ddd31a130427c27518df266943a5308ed92d4b226cc639f5a8f1002816174301"
    dependencies = [
    "memchr",
    ]
  • replacement in Cargo.lock at line 69
    [3.1472][3.1472:1488]()
    "windows-sys",
    [3.1472]
    [3.1488]
    "windows-sys 0.61.2",
  • replacement in Cargo.lock at line 80
    [3.1741][3.1741:1757]()
    "windows-sys",
    [3.1741]
    [3.1757]
    "windows-sys 0.61.2",
    ]
    [[package]]
    name = "arrayref"
    version = "0.3.9"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "76a2e8124351fda1ef8aaaa3bbd7ebbcb486bbcd4225aca0aa0d84bb2db8fecb"
    [[package]]
    name = "arrayvec"
    version = "0.7.7"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "f02882884d3e1bc524fb12c79f107f6ad0e1cfd498c536ffb494301740995dfe"
    [[package]]
    name = "bincode"
    version = "1.3.3"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad"
    dependencies = [
    "serde",
    ]
    [[package]]
    name = "bitflags"
    version = "1.3.2"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
    [[package]]
    name = "bitflags"
    version = "2.13.0"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "b4388bee8683e3d04af747c73422af53102d2bd24d9eadb6cbc100baef4b43f8"
    dependencies = [
    "serde_core",
    ]
    [[package]]
    name = "blake3"
    version = "1.8.5"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "0aa83c34e62843d924f905e0f5c866eb1dd6545fc4d719e803d9ba6030371fce"
    dependencies = [
    "arrayref",
    "arrayvec",
    "cc",
    "cfg-if",
    "constant_time_eq",
    "cpufeatures 0.3.0",
    ]
    [[package]]
    name = "block-buffer"
    version = "0.9.0"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "4152116fd6e9dadb291ae18fc1ec3575ed6d84c29642d97890f4b4a3417297e4"
    dependencies = [
    "generic-array",
    ]
    [[package]]
    name = "bs58"
    version = "0.4.0"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "771fe0050b883fcc3ea2359b1a96bcfbc090b7116eae7c3c512c7a083fdf23d3"
    [[package]]
    name = "bstr"
    version = "1.12.3"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "5cee35f73844aa3014bb606320a6c1f010249dbdf43342fe54b5a4f6a8ed4b79"
    dependencies = [
    "memchr",
    "serde_core",
    ]
    [[package]]
    name = "bumpalo"
    version = "3.20.3"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "72f5acc6cb2ba439de613abc23857ec3d78374d8ed5ac84e9d11336e87da8649"
    [[package]]
    name = "byteorder"
    version = "1.5.0"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b"
    [[package]]
    name = "canonical-path"
    version = "2.0.2"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "e6e9e01327e6c86e92ec72b1c798d4a94810f147209bbe3ffab6a86954937a6f"
    [[package]]
    name = "cc"
    version = "1.2.65"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "e228eec9be7c17ccb640b59b36a5cd805ea2a564a4c5e162c2f659fea30d3b96"
    dependencies = [
    "find-msvc-tools",
    "shlex",
  • edit in Cargo.lock at line 187
    [2.367]
    [3.1760]
    name = "cfg-if"
    version = "1.0.4"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801"
    [[package]]
    name = "chardetng"
    version = "0.1.17"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "14b8f0b65b7b08ae3c8187e8d77174de20cb6777864c6b832d8ad365999cf1ea"
    dependencies = [
    "cfg-if",
    "encoding_rs",
    "memchr",
    ]
    [[package]]
    name = "cipher"
    version = "0.3.0"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "7ee52072ec15386f770805afd189a01c8841be8696bed250fa2f13c4c0d6dfb7"
    dependencies = [
    "generic-array",
    ]
    [[package]]
  • edit in Cargo.lock at line 257
    [3.2895]
    [3.2895]
    [[package]]
    name = "constant_time_eq"
    version = "0.4.2"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "3d52eff69cd5e647efe296129160853a42795992097e8af39800e1060caeea9b"
    [[package]]
    name = "cpufeatures"
    version = "0.2.17"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280"
    dependencies = [
    "libc",
    ]
    [[package]]
    name = "cpufeatures"
    version = "0.3.0"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "8b2a41393f66f16b0823bb79094d54ac5fbd34ab292ddafb9a0456ac9f87d201"
    dependencies = [
    "libc",
    ]
    [[package]]
    name = "crc32fast"
    version = "1.5.0"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "9481c1c90cbf2ac953f07c8d4a58aa3945c425b7185c9154d67a65e4230da511"
    dependencies = [
    "cfg-if",
    ]
    [[package]]
    name = "crossbeam-deque"
    version = "0.8.6"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "9dd111b7b7f7d55b72c0a6ae361660ee5853c9af73f70c3c2ef6858b950e2e51"
    dependencies = [
    "crossbeam-epoch",
    "crossbeam-utils",
    ]
    [[package]]
    name = "crossbeam-epoch"
    version = "0.9.18"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e"
    dependencies = [
    "crossbeam-utils",
    ]
    [[package]]
    name = "crossbeam-utils"
    version = "0.8.21"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28"
    [[package]]
    name = "crypto-mac"
    version = "0.11.1"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "b1d1a86f49236c215f271d40892d5fc950490551400b02ef360692c29815c714"
    dependencies = [
    "generic-array",
    "subtle",
    ]
    [[package]]
    name = "ctr"
    version = "0.8.0"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "049bb91fb4aaf0e3c7efa6cd5ef877dbbbd15b39dad06d9948de4ec8a75761ea"
    dependencies = [
    "cipher",
    ]
    [[package]]
    name = "curve25519-dalek"
    version = "3.2.1"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "90f9d052967f590a76e62eb387bd0bbb1b000182c3cefe5364db6b7211651bc0"
    dependencies = [
    "byteorder",
    "digest",
    "rand_core 0.5.1",
    "subtle",
    "zeroize",
    ]
    [[package]]
    name = "curve25519-dalek"
    version = "4.1.3"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "97fb8b7c4503de7d6ae7b42ab72a5a59857b4c937ec27a3d4539dba95b5ab2be"
    dependencies = [
    "cfg-if",
    "cpufeatures 0.2.17",
    "curve25519-dalek-derive",
    "fiat-crypto",
    "rustc_version",
    "serde",
    "subtle",
    "zeroize",
    ]
    [[package]]
    name = "curve25519-dalek-derive"
    version = "0.1.1"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3"
    dependencies = [
    "proc-macro2",
    "quote",
    "syn",
    ]
    [[package]]
    name = "data-encoding"
    version = "2.11.0"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "a4ae5f15dda3c708c0ade84bfee31ccab44a3da4f88015ed22f63732abe300c8"
    [[package]]
    name = "defmt"
    version = "1.1.0"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "a6e524506490a1953d237cb87b1cfc1e46f88c18f10a22dfe0f507dc6bfc7f7f"
    dependencies = [
    "bitflags 1.3.2",
    "defmt-macros",
    ]
    [[package]]
    name = "defmt-macros"
    version = "1.1.0"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "f0a27770e9c8f719a79d8b638281f4d828f77d8fd61e0bd94451b9b85e576a0b"
    dependencies = [
    "defmt-parser",
    "proc-macro-error2",
    "proc-macro2",
    "quote",
    "syn",
    ]
    [[package]]
    name = "defmt-parser"
    version = "1.0.0"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "10d60334b3b2e7c9d91ef8150abfb6fa4c1c39ebbcf4a81c2e346aad939fee3e"
    dependencies = [
    "thiserror 2.0.18",
    ]
    [[package]]
    name = "diffs"
    version = "0.5.1"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "ff116c9781d74b71b9b8958281309dd2faaeabad2f0a3df27e50bd79ce5dc805"
    [[package]]
    name = "digest"
    version = "0.9.0"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "d3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066"
    dependencies = [
    "generic-array",
    ]
    [[package]]
    name = "ed25519"
    version = "1.5.3"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "91cff35c70bba8a626e3185d8cd48cc11b5437e1a5bcd15b9b5fa3c64b6dfee7"
    dependencies = [
    "serde",
    "signature",
    ]
    [[package]]
    name = "ed25519-dalek"
    version = "1.0.1"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "c762bae6dcaf24c4c84667b8579785430908723d5c889f469d76a41d59cc7a9d"
    dependencies = [
    "curve25519-dalek 3.2.1",
    "ed25519",
    "rand 0.7.3",
    "serde",
    "serde_bytes",
    "sha2",
    "zeroize",
    ]
    [[package]]
    name = "encoding_rs"
    version = "0.8.35"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "75030f3c4f45dafd7586dd6780965a8c7e8e285a5ecb86713e63a79c5b2766f3"
    dependencies = [
    "cfg-if",
    ]
    [[package]]
    name = "equivalent"
    version = "1.0.2"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f"
    [[package]]
    name = "errno"
    version = "0.3.14"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb"
    dependencies = [
    "libc",
    "windows-sys 0.61.2",
    ]
    [[package]]
    name = "fastrand"
    version = "2.4.1"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "9f1f227452a390804cdb637b74a86990f2a7d7ba4b7d5693aac9b4dd6defd8d6"
    [[package]]
    name = "fiat-crypto"
    version = "0.2.9"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "28dea519a9695b9977216879a3ebfddf92f1c08c05d984f8996aecd6ecdc811d"
    [[package]]
    name = "find-msvc-tools"
    version = "0.1.9"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "5baebc0774151f905a1a2cc41989300b1e6fbb29aff0ceffa1064fdd3088d582"
    [[package]]
    name = "fixedbitset"
    version = "0.4.2"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80"
    [[package]]
    name = "foldhash"
    version = "0.1.5"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2"
  • edit in Cargo.lock at line 509
    [3.2908]
    [3.2908]
    name = "fs4"
    version = "0.6.6"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "2eeb4ed9e12f43b7fa0baae3f9cdda28352770132ef2e09a23760c29cae8bd47"
    dependencies = [
    "rustix 0.38.44",
    "windows-sys 0.48.0",
    ]
    [[package]]
    name = "futures-core"
    version = "0.3.32"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "7e3450815272ef58cec6d564423f6e755e25379b217b0bc688e295ba24df6b1d"
    [[package]]
    name = "futures-task"
    version = "0.3.32"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "037711b3d59c33004d3856fbdc83b99d4ff37a24768fa1be9ce3538a1cde4393"
    [[package]]
    name = "futures-util"
    version = "0.3.32"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "389ca41296e6190b48053de0321d02a77f32f8a5d2461dd38762c0593805c6d6"
    dependencies = [
    "futures-core",
    "futures-task",
    "pin-project-lite",
    "slab",
    ]
    [[package]]
    name = "generic-array"
    version = "0.14.9"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "4bb6743198531e02858aeaea5398fcc883e71851fcbcb5a2f773e2fb6cb1edf2"
    dependencies = [
    "typenum",
    "version_check",
    ]
    [[package]]
    name = "getrandom"
    version = "0.1.16"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce"
    dependencies = [
    "cfg-if",
    "libc",
    "wasi 0.9.0+wasi-snapshot-preview1",
    ]
    [[package]]
    name = "getrandom"
    version = "0.2.17"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "ff2abc00be7fca6ebc474524697ae276ad847ad0a6b3faa4bcb027e9a4614ad0"
    dependencies = [
    "cfg-if",
    "js-sys",
    "libc",
    "wasi 0.11.1+wasi-snapshot-preview1",
    "wasm-bindgen",
    ]
    [[package]]
    name = "getrandom"
    version = "0.3.4"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd"
    dependencies = [
    "cfg-if",
    "libc",
    "r-efi 5.3.0",
    "wasip2",
    ]
    [[package]]
    name = "getrandom"
    version = "0.4.3"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "300e883d756b2e4ec94e02791f39b04b522276138852cfc41d9fb7e904106099"
    dependencies = [
    "cfg-if",
    "libc",
    "r-efi 6.0.0",
    ]
    [[package]]
    name = "globset"
    version = "0.4.18"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "52dfc19153a48bde0cbd630453615c8151bce3a5adfac7a0aebfbf0a1e1f57e3"
    dependencies = [
    "aho-corasick",
    "bstr",
    "log",
    "regex-automata",
    "regex-syntax",
    ]
    [[package]]
    name = "hashbrown"
    version = "0.15.5"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1"
    dependencies = [
    "foldhash",
    ]
    [[package]]
    name = "hashbrown"
    version = "0.17.1"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "ed5909b6e89a2db4456e54cd5f673791d7eca6732202bbf2a9cc504fe2f9b84a"
    [[package]]
  • edit in Cargo.lock at line 632
    [3.3083]
    [3.3083]
    [[package]]
    name = "hermit-abi"
    version = "0.5.2"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "fc0fef456e4baa96da950455cd02c081ca953b141298e41db3fc7e36b1da849c"
    [[package]]
    name = "hmac"
    version = "0.11.0"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "2a2a2320eb7ec0ebe8da8f744d7812d9fc4cb4d09344ac01898dbcb6a20ae69b"
    dependencies = [
    "crypto-mac",
    "digest",
    ]
    [[package]]
    name = "ignore"
    version = "0.4.26"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "b915661dd01db3f05050265b2477bcc6527b3792388e2749b41623cc592be67d"
    dependencies = [
    "crossbeam-deque",
    "globset",
    "log",
    "memchr",
    "regex-automata",
    "same-file",
    "walkdir",
    "winapi-util",
    ]
    [[package]]
    name = "imara-diff"
    version = "0.1.8"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "17d34b7d42178945f775e84bc4c36dde7c1c6cdfea656d3354d009056f2bb3d2"
    dependencies = [
    "hashbrown 0.15.5",
    ]
  • edit in Cargo.lock at line 675
    [3.3096]
    [3.3096]
    name = "indexmap"
    version = "2.14.0"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "d466e9454f08e4a911e14806c24e16fba1b4c121d1ea474396f396069cf949d9"
    dependencies = [
    "equivalent",
    "hashbrown 0.17.1",
    ]
    [[package]]
    name = "instant"
    version = "0.1.13"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "e0242819d153cba4b4b05a5a8f2a7e9bbf97b6055b2a002b395c96b5ff3c0222"
    dependencies = [
    "cfg-if",
    ]
    [[package]]
  • edit in Cargo.lock at line 698
    [3.3288]
    [3.3288]
    [[package]]
    name = "itoa"
    version = "1.0.18"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "8f42a60cbdf9a97f5d2305f08a87dc4e09308d1276d28c869c684d7777685682"
    [[package]]
    name = "jiff"
    version = "0.2.29"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "34f877a98676d2fb664698d74cc6a51ce6c484ce8c770f05d0108ec9090aeb46"
    dependencies = [
    "defmt",
    "jiff-static",
    "jiff-tzdb-platform",
    "log",
    "portable-atomic",
    "portable-atomic-util",
    "serde_core",
    "windows-link",
    ]
    [[package]]
    name = "jiff-static"
    version = "0.2.29"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "0666b5ab5ecaca213fc2a85b8c0083d9004e84ee2d5f9a7e0017aaf50986f25f"
    dependencies = [
    "proc-macro2",
    "quote",
    "syn",
    ]
    [[package]]
    name = "jiff-tzdb"
    version = "0.1.6"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "c900ef84826f1338a557697dc8fc601df9ca9af4ac137c7fb61d4c6f2dfd3076"
  • edit in Cargo.lock at line 739
    [3.3301]
    [3.3301]
    name = "jiff-tzdb-platform"
    version = "0.1.3"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "875a5a69ac2bab1a891711cf5eccbec1ce0341ea805560dcd90b7a2e925132e8"
    dependencies = [
    "jiff-tzdb",
    ]
    [[package]]
    name = "js-sys"
    version = "0.3.103"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "53b44bfcdb3f8d5837a46dae1ca9660a837176eee74a28b229bc626816589102"
    dependencies = [
    "cfg-if",
    "futures-util",
    "wasm-bindgen",
    ]
    [[package]]
    name = "lazy_static"
    version = "1.5.0"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe"
    [[package]]
    name = "libc"
    version = "0.2.186"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "68ab91017fe16c622486840e4c83c9a37afeff978bd239b5293d61ece587de66"
    [[package]]
    name = "libpijul"
    version = "1.0.0-beta.11"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "f625e90234ef1fd164dfe7980ffb04a3036a08e31e051cc29e6273a0c9a7a7e7"
    dependencies = [
    "adler32",
    "aes",
    "bincode",
    "bitflags 2.13.0",
    "blake3",
    "bs58",
    "byteorder",
    "canonical-path",
    "chardetng",
    "crossbeam-deque",
    "curve25519-dalek 4.1.3",
    "data-encoding",
    "diffs",
    "ed25519-dalek",
    "encoding_rs",
    "generic-array",
    "getrandom 0.2.17",
    "hmac",
    "ignore",
    "imara-diff",
    "jiff",
    "log",
    "lru-cache",
    "nom",
    "parking_lot 0.12.5",
    "path-slash",
    "pbkdf2",
    "pijul-macros",
    "rand 0.9.4",
    "regex",
    "sanakirja",
    "serde",
    "serde_derive",
    "serde_json",
    "sha2",
    "tempfile",
    "thiserror 2.0.18",
    "toml",
    "twox-hash",
    "zstd-seekable",
    ]
    [[package]]
    name = "linked-hash-map"
    version = "0.5.6"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "0717cef1bc8b636c6e1c1bbdefc09e6322da8a9321966e8928ef80d20f7f770f"
    [[package]]
    name = "linux-raw-sys"
    version = "0.4.15"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "d26c52dbd32dccf2d10cac7725f8eae5296885fb5703b261f7d0a0739ec807ab"
    [[package]]
    name = "linux-raw-sys"
    version = "0.12.1"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "32a66949e030da00e8c7d4434b251670a91556f4144941d37452769c25d58a53"
    [[package]]
    name = "lock_api"
    version = "0.4.14"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "224399e74b87b5f3557511d98dff8b14089b3dadafcab6bb93eab67d3aace965"
    dependencies = [
    "scopeguard",
    ]
    [[package]]
    name = "log"
    version = "0.4.33"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "0ceec5bc11778974d1bcb055b18002eba7f4b3518b6a0081b3af5f21666da9ad"
    [[package]]
    name = "lru-cache"
    version = "0.1.2"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "31e24f1ad8321ca0e8a1e0ac13f23cb668e6f5466c2c57319f6a5cf1cc8e3b1c"
    dependencies = [
    "linked-hash-map",
    ]
    [[package]]
    name = "memchr"
    version = "2.8.2"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "88904434abc2901f197fe8cc55f0445e7ded921dba5911dad2e2b39b48e663c4"
    [[package]]
    name = "memmap2"
    version = "0.9.11"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "d1219ed1b7f229ee7104d281dd01d6802fe28bb6e95d292942c4daacdeb798c0"
    dependencies = [
    "libc",
    ]
    [[package]]
    name = "minimal-lexical"
    version = "0.2.1"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a"
    [[package]]
    name = "nom"
    version = "7.1.3"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a"
    dependencies = [
    "memchr",
    "minimal-lexical",
    ]
    [[package]]
    name = "num_cpus"
    version = "1.17.0"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "91df4bbde75afed763b708b7eee1e8e7651e02d97f6d5dd763e89367e957b23b"
    dependencies = [
    "hermit-abi",
    "libc",
    ]
    [[package]]
    name = "once_cell"
    version = "1.21.4"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50"
    [[package]]
  • edit in Cargo.lock at line 914
    [3.3504]
    [2.367]
    name = "opaque-debug"
    version = "0.3.1"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "c08d65885ee38876c4f86fa503fb49d7b507c2b62552df7c70b2fce627e06381"
    [[package]]
    name = "parking_lot"
    version = "0.11.2"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "7d17b78036a60663b797adeaee46f5c9dfebb86948d1255007a1d6be0271ff99"
    dependencies = [
    "instant",
    "lock_api",
    "parking_lot_core 0.8.6",
    ]
    [[package]]
    name = "parking_lot"
    version = "0.12.5"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "93857453250e3077bd71ff98b6a65ea6621a19bb0f559a85248955ac12c45a1a"
    dependencies = [
    "lock_api",
    "parking_lot_core 0.9.12",
    ]
    [[package]]
    name = "parking_lot_core"
    version = "0.8.6"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "60a2cfe6f0ad2bfc16aefa463b497d5c7a5ecd44a23efa72aa342d90177356dc"
    dependencies = [
    "cfg-if",
    "instant",
    "libc",
    "redox_syscall 0.2.16",
    "smallvec",
    "winapi",
    ]
    [[package]]
    name = "parking_lot_core"
    version = "0.9.12"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "2621685985a2ebf1c516881c026032ac7deafcda1a2c9b7850dc81e3dfcb64c1"
    dependencies = [
    "cfg-if",
    "libc",
    "redox_syscall 0.5.18",
    "smallvec",
    "windows-link",
    ]
    [[package]]
    name = "path-slash"
    version = "0.2.1"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "1e91099d4268b0e11973f036e885d652fb0b21fedcf69738c627f94db6a44f42"
    [[package]]
    name = "pbkdf2"
    version = "0.9.0"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "f05894bce6a1ba4be299d0c5f29563e08af2bc18bb7d48313113bed71e904739"
    dependencies = [
    "crypto-mac",
    ]
    [[package]]
    name = "petgraph"
    version = "0.6.5"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "b4c5cc86750666a3ed20bdaf5ca2a0344f9c67674cae0515bec2da16fbaa47db"
    dependencies = [
    "fixedbitset",
    "indexmap",
    ]
    [[package]]
  • edit in Cargo.lock at line 997
    [3.3531]
    [3.3531]
    "libpijul",
    "petgraph",
    "walkdir",
    ]
    [[package]]
    name = "pijul-macros"
    version = "1.0.0-beta.13"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "97375a282175b20c2f2bd2ae73c106a3c9ffc3d36e81c56e08ee8c87e204a588"
    dependencies = [
    "proc-macro2",
    "quote",
    "syn",
    ]
    [[package]]
    name = "pin-project-lite"
    version = "0.2.17"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "a89322df9ebe1c1578d689c92318e070967d1042b512afbe49518723f4e6d5cd"
    [[package]]
    name = "pkg-config"
    version = "0.3.33"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "19f132c84eca552bf34cab8ec81f1c1dcc229b811638f9d283dceabe58c5569e"
    [[package]]
    name = "portable-atomic"
    version = "1.13.1"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "c33a9471896f1c69cecef8d20cbe2f7accd12527ce60845ff44c153bb2a21b49"
    [[package]]
    name = "portable-atomic-util"
    version = "0.2.7"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "c2a106d1259c23fac8e543272398ae0e3c0b8d33c88ed73d0cc71b0f1d902618"
    dependencies = [
    "portable-atomic",
    ]
    [[package]]
    name = "ppv-lite86"
    version = "0.2.21"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9"
    dependencies = [
    "zerocopy",
    ]
    [[package]]
    name = "proc-macro-error-attr2"
    version = "2.0.0"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "96de42df36bb9bba5542fe9f1a054b8cc87e172759a1868aa05c1f3acc89dfc5"
    dependencies = [
    "proc-macro2",
    "quote",
    ]
    [[package]]
    name = "proc-macro-error2"
    version = "2.0.1"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "11ec05c52be0a07b08061f7dd003e7d7092e0472bc731b4af7bb1ef876109802"
    dependencies = [
    "proc-macro-error-attr2",
    "proc-macro2",
    "quote",
    "syn",
  • edit in Cargo.lock at line 1085
    [3.3957]
    [3.3957]
    dependencies = [
    "proc-macro2",
    ]
    [[package]]
    name = "r-efi"
    version = "5.3.0"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f"
    [[package]]
    name = "r-efi"
    version = "6.0.0"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "f8dcc9c7d52a811697d2151c701e0d08956f92b0e24136cf4cf27b57a6a0d9bf"
    [[package]]
    name = "rand"
    version = "0.7.3"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03"
    dependencies = [
    "getrandom 0.1.16",
    "libc",
    "rand_chacha 0.2.2",
    "rand_core 0.5.1",
    "rand_hc",
    ]
    [[package]]
    name = "rand"
    version = "0.8.6"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "5ca0ecfa931c29007047d1bc58e623ab12e5590e8c7cc53200d5202b69266d8a"
    dependencies = [
    "libc",
    "rand_chacha 0.3.1",
    "rand_core 0.6.4",
    ]
    [[package]]
    name = "rand"
    version = "0.9.4"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "44c5af06bb1b7d3216d91932aed5265164bf384dc89cd6ba05cf59a35f5f76ea"
    dependencies = [
    "rand_chacha 0.9.0",
    "rand_core 0.9.5",
    ]
    [[package]]
    name = "rand_chacha"
    version = "0.2.2"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402"
    dependencies = [
    "ppv-lite86",
    "rand_core 0.5.1",
    ]
    [[package]]
    name = "rand_chacha"
    version = "0.3.1"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88"
    dependencies = [
    "ppv-lite86",
    "rand_core 0.6.4",
    ]
    [[package]]
    name = "rand_chacha"
    version = "0.9.0"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb"
    dependencies = [
    "ppv-lite86",
    "rand_core 0.9.5",
    ]
    [[package]]
    name = "rand_core"
    version = "0.5.1"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19"
    dependencies = [
    "getrandom 0.1.16",
    ]
    [[package]]
    name = "rand_core"
    version = "0.6.4"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c"
    dependencies = [
    "getrandom 0.2.17",
    ]
    [[package]]
    name = "rand_core"
    version = "0.9.5"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "76afc826de14238e6e8c374ddcc1fa19e374fd8dd986b0d2af0d02377261d83c"
    dependencies = [
    "getrandom 0.3.4",
    ]
    [[package]]
    name = "rand_hc"
    version = "0.2.0"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c"
    dependencies = [
    "rand_core 0.5.1",
    ]
    [[package]]
    name = "redox_syscall"
    version = "0.2.16"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a"
    dependencies = [
    "bitflags 1.3.2",
    ]
    [[package]]
    name = "redox_syscall"
    version = "0.5.18"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d"
    dependencies = [
    "bitflags 2.13.0",
    ]
    [[package]]
    name = "regex"
    version = "1.12.4"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "f1292b7759ae1cb9ec195452d1390a074f0cd8541ab7a5a8c31cd6db45d4a6ba"
    dependencies = [
    "aho-corasick",
    "memchr",
    "regex-automata",
    "regex-syntax",
    ]
    [[package]]
    name = "regex-automata"
    version = "0.4.14"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "6e1dd4122fc1595e8162618945476892eefca7b88c52820e74af6262213cae8f"
    dependencies = [
    "aho-corasick",
    "memchr",
    "regex-syntax",
    ]
    [[package]]
    name = "regex-syntax"
    version = "0.8.11"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "d6f6ff9a378485b298a5286656da665ba74413d36db0979633275d2e708145d4"
    [[package]]
    name = "rustc_version"
    version = "0.4.1"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92"
    dependencies = [
    "semver",
    ]
    [[package]]
    name = "rustix"
    version = "0.38.44"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "fdb5bc1ae2baa591800df16c9ca78619bf65c0488b41b96ccec5d11220d8c154"
    dependencies = [
    "bitflags 2.13.0",
    "errno",
    "libc",
    "linux-raw-sys 0.4.15",
    "windows-sys 0.59.0",
    ]
    [[package]]
    name = "rustix"
    version = "1.1.4"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "b6fe4565b9518b83ef4f91bb47ce29620ca828bd32cb7e408f0062e9930ba190"
    dependencies = [
    "bitflags 2.13.0",
    "errno",
    "libc",
    "linux-raw-sys 0.12.1",
    "windows-sys 0.61.2",
    ]
    [[package]]
    name = "rustversion"
    version = "1.0.22"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d"
    [[package]]
    name = "same-file"
    version = "1.0.6"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502"
    dependencies = [
    "winapi-util",
    ]
    [[package]]
    name = "sanakirja"
    version = "2.0.0-beta"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "4fc53a1e7a19d27c070749c0d2717427d1612c9b100274b205dbb438e605e34a"
    dependencies = [
    "crc32fast",
    "fs4",
    "lazy_static",
    "libc",
    "log",
    "memmap2",
    "parking_lot 0.11.2",
    "sanakirja-core",
    "serde",
    "thiserror 1.0.69",
    ]
    [[package]]
    name = "sanakirja-core"
    version = "2.0.0-beta"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "48a8500bcb79fe605b1433c30e8c5c078810b24dc4d04ffda35e88d712ff16f0"
    dependencies = [
    "crc32fast",
    ]
    [[package]]
    name = "scopeguard"
    version = "1.2.0"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49"
    [[package]]
    name = "semver"
    version = "1.0.28"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "8a7852d02fc848982e0c167ef163aaff9cd91dc640ba85e263cb1ce46fae51cd"
    [[package]]
    name = "serde"
    version = "1.0.228"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e"
    dependencies = [
    "serde_core",
    "serde_derive",
    ]
    [[package]]
    name = "serde_bytes"
    version = "0.11.19"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "a5d440709e79d88e51ac01c4b72fc6cb7314017bb7da9eeff678aa94c10e3ea8"
    dependencies = [
    "serde",
    "serde_core",
    ]
    [[package]]
    name = "serde_core"
    version = "1.0.228"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad"
    dependencies = [
    "serde_derive",
    ]
    [[package]]
    name = "serde_derive"
    version = "1.0.228"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79"
  • edit in Cargo.lock at line 1373
    [3.3990]
    [3.3990]
    "quote",
    "syn",
    ]
    [[package]]
    name = "serde_json"
    version = "1.0.150"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "e8014e44b4736ed0538adeecded0fce2a272f22dc9578a7eb6b2d9993c74cfb9"
    dependencies = [
    "itoa",
    "memchr",
    "serde",
    "serde_core",
    "zmij",
    ]
    [[package]]
    name = "serde_spanned"
    version = "0.6.9"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "bf41e0cfaf7226dca15e8197172c295a782857fcb97fad1808a166870dee75a3"
    dependencies = [
    "serde",
    ]
    [[package]]
    name = "sha2"
    version = "0.9.9"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "4d58a1e1bf39749807d89cf2d98ac2dfa0ff1cb3faa38fbb64dd88ac8013d800"
    dependencies = [
    "block-buffer",
    "cfg-if",
    "cpufeatures 0.2.17",
    "digest",
    "opaque-debug",
  • edit in Cargo.lock at line 1411
    [3.3992]
    [3.3992]
    [[package]]
    name = "shlex"
    version = "2.0.1"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "f8fadd59c855ef2080decdef8ff161eb6661b86933c9d82e5ba29dc602a55aba"
    [[package]]
    name = "signature"
    version = "1.6.4"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "74233d3b3b2f6d4b006dc19dee745e73e2a6bfb6f93607cd3b02bd5b00797d7c"
    [[package]]
    name = "slab"
    version = "0.4.12"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "0c790de23124f9ab44544d7ac05d60440adc586479ce501c1d6d7da3cd8c9cf5"
  • edit in Cargo.lock at line 1431
    [3.4005]
    [3.4005]
    name = "smallvec"
    version = "1.15.2"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "8ed6a63f02c8539c91a8685a86f4099661ba3da017932f6ebbea6de3f0fa7c90"
    [[package]]
    name = "static_assertions"
    version = "1.1.0"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f"
    [[package]]
  • edit in Cargo.lock at line 1449
    [3.4196]
    [3.4196]
    name = "subtle"
    version = "2.4.1"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "6bdef32e8150c2a081110b42772ffe7d7c9032b606bc226c8260fd97e0976601"
    [[package]]
  • edit in Cargo.lock at line 1466
    [3.4448]
    [3.4448]
    name = "tempfile"
    version = "3.27.0"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "32497e9a4c7b38532efcdebeef879707aa9f794296a4f0244f6f69e9bc8574bd"
    dependencies = [
    "fastrand",
    "getrandom 0.4.3",
    "once_cell",
    "rustix 1.1.4",
    "windows-sys 0.61.2",
    ]
    [[package]]
    name = "thiserror"
    version = "1.0.69"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52"
    dependencies = [
    "thiserror-impl 1.0.69",
    ]
    [[package]]
    name = "thiserror"
    version = "2.0.18"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "4288b5bcbc7920c07a1149a35cf9590a2aa808e0bc1eafaade0b80947865fbc4"
    dependencies = [
    "thiserror-impl 2.0.18",
    ]
    [[package]]
    name = "thiserror-impl"
    version = "1.0.69"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1"
    dependencies = [
    "proc-macro2",
    "quote",
    "syn",
    ]
    [[package]]
    name = "thiserror-impl"
    version = "2.0.18"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5"
    dependencies = [
    "proc-macro2",
    "quote",
    "syn",
    ]
    [[package]]
    name = "threadpool"
    version = "1.8.1"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "d050e60b33d41c19108b32cea32164033a9013fe3b46cbd4457559bfbf77afaa"
    dependencies = [
    "num_cpus",
    ]
    [[package]]
    name = "toml"
    version = "0.8.23"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "dc1beb996b9d83529a9e75c17a1686767d148d70663143c7854d8b4a09ced362"
    dependencies = [
    "indexmap",
    "serde",
    "serde_spanned",
    "toml_datetime",
    "toml_edit",
    ]
    [[package]]
    name = "toml_datetime"
    version = "0.6.11"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "22cddaf88f4fbc13c51aebbf5f8eceb5c7c5a9da2ac40a13519eb5b0a0e8f11c"
    dependencies = [
    "serde",
    ]
    [[package]]
    name = "toml_edit"
    version = "0.22.27"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "41fe8c660ae4257887cf66394862d21dbca4a6ddd26f04a3560410406a2f819a"
    dependencies = [
    "indexmap",
    "serde",
    "serde_spanned",
    "toml_datetime",
    "toml_write",
    "winnow",
    ]
    [[package]]
    name = "toml_write"
    version = "0.1.2"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "5d99f8c9a7727884afe522e9bd5edbfc91a3312b36a77b5fb8926e4c31a41801"
    [[package]]
    name = "twox-hash"
    version = "1.6.3"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "97fee6b57c6a41524a810daee9286c02d7752c4253064d0b05472833a438f675"
    dependencies = [
    "cfg-if",
    "rand 0.8.6",
    "static_assertions",
    ]
    [[package]]
    name = "typenum"
    version = "1.20.1"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "b6f5e870be6c3b371b77fe0ee0bafb859fa4964b4404c27de1d380043c4dda20"
    [[package]]
  • edit in Cargo.lock at line 1597
    [3.4826]
    [3.4826]
    [[package]]
    name = "version_check"
    version = "0.9.5"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a"
    [[package]]
    name = "walkdir"
    version = "2.5.0"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b"
    dependencies = [
    "same-file",
    "winapi-util",
    ]
    [[package]]
    name = "wasi"
    version = "0.9.0+wasi-snapshot-preview1"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519"
    [[package]]
    name = "wasi"
    version = "0.11.1+wasi-snapshot-preview1"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b"
    [[package]]
    name = "wasip2"
    version = "1.0.4+wasi-0.2.12"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "b67efb37e106e55ce722a510d6b5f9c17f083e5fc79afc2badeb12cc313d9487"
    dependencies = [
    "wit-bindgen",
    ]
    [[package]]
    name = "wasm-bindgen"
    version = "0.2.126"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "4b067c0c11094aef6b7a801c1e34a26affafdf3d051dba08456b868789aaf9a4"
    dependencies = [
    "cfg-if",
    "once_cell",
    "rustversion",
    "wasm-bindgen-macro",
    "wasm-bindgen-shared",
    ]
    [[package]]
    name = "wasm-bindgen-macro"
    version = "0.2.126"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "167ce5e579f6bcf889c4f7175a8a5a585de84e8ff93976ce393efa5f2837aab1"
    dependencies = [
    "quote",
    "wasm-bindgen-macro-support",
    ]
    [[package]]
    name = "wasm-bindgen-macro-support"
    version = "0.2.126"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "f3997c7839262f4ef12cf90b818d6340c18e80f263f1a94bf157d0ec4420380e"
    dependencies = [
    "bumpalo",
    "proc-macro2",
    "quote",
    "syn",
    "wasm-bindgen-shared",
    ]
    [[package]]
    name = "wasm-bindgen-shared"
    version = "0.2.126"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "dc1b4cb0cc549fcf58d7dfc081778139b3d283a081644e833e84682ad71cea24"
    dependencies = [
    "unicode-ident",
    ]
  • edit in Cargo.lock at line 1681
    [3.4839]
    [3.4839]
    name = "winapi"
    version = "0.3.9"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419"
    dependencies = [
    "winapi-i686-pc-windows-gnu",
    "winapi-x86_64-pc-windows-gnu",
    ]
    [[package]]
    name = "winapi-i686-pc-windows-gnu"
    version = "0.4.0"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
    [[package]]
    name = "winapi-util"
    version = "0.1.11"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22"
    dependencies = [
    "windows-sys 0.61.2",
    ]
    [[package]]
    name = "winapi-x86_64-pc-windows-gnu"
    version = "0.4.0"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
    [[package]]
  • edit in Cargo.lock at line 1716
    [3.5022]
    [3.5022]
    [[package]]
    name = "windows-sys"
    version = "0.48.0"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9"
    dependencies = [
    "windows-targets 0.48.5",
    ]
    [[package]]
    name = "windows-sys"
    version = "0.59.0"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b"
    dependencies = [
    "windows-targets 0.52.6",
    ]
  • edit in Cargo.lock at line 1743
    [3.5254]
    [[package]]
    name = "windows-targets"
    version = "0.48.5"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c"
    dependencies = [
    "windows_aarch64_gnullvm 0.48.5",
    "windows_aarch64_msvc 0.48.5",
    "windows_i686_gnu 0.48.5",
    "windows_i686_msvc 0.48.5",
    "windows_x86_64_gnu 0.48.5",
    "windows_x86_64_gnullvm 0.48.5",
    "windows_x86_64_msvc 0.48.5",
    ]
    [[package]]
    name = "windows-targets"
    version = "0.52.6"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973"
    dependencies = [
    "windows_aarch64_gnullvm 0.52.6",
    "windows_aarch64_msvc 0.52.6",
    "windows_i686_gnu 0.52.6",
    "windows_i686_gnullvm",
    "windows_i686_msvc 0.52.6",
    "windows_x86_64_gnu 0.52.6",
    "windows_x86_64_gnullvm 0.52.6",
    "windows_x86_64_msvc 0.52.6",
    ]
    [[package]]
    name = "windows_aarch64_gnullvm"
    version = "0.48.5"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8"
    [[package]]
    name = "windows_aarch64_gnullvm"
    version = "0.52.6"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3"
    [[package]]
    name = "windows_aarch64_msvc"
    version = "0.48.5"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc"
    [[package]]
    name = "windows_aarch64_msvc"
    version = "0.52.6"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469"
    [[package]]
    name = "windows_i686_gnu"
    version = "0.48.5"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e"
    [[package]]
    name = "windows_i686_gnu"
    version = "0.52.6"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b"
    [[package]]
    name = "windows_i686_gnullvm"
    version = "0.52.6"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66"
    [[package]]
    name = "windows_i686_msvc"
    version = "0.48.5"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406"
    [[package]]
    name = "windows_i686_msvc"
    version = "0.52.6"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66"
    [[package]]
    name = "windows_x86_64_gnu"
    version = "0.48.5"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e"
    [[package]]
    name = "windows_x86_64_gnu"
    version = "0.52.6"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78"
    [[package]]
    name = "windows_x86_64_gnullvm"
    version = "0.48.5"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc"
    [[package]]
    name = "windows_x86_64_gnullvm"
    version = "0.52.6"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d"
    [[package]]
    name = "windows_x86_64_msvc"
    version = "0.48.5"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538"
    [[package]]
    name = "windows_x86_64_msvc"
    version = "0.52.6"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec"
    [[package]]
    name = "winnow"
    version = "0.7.15"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "df79d97927682d2fd8adb29682d1140b343be4ac0f08fd68b7765d9c059d3945"
    dependencies = [
    "memchr",
    ]
    [[package]]
    name = "wit-bindgen"
    version = "0.57.1"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "1ebf944e87a7c253233ad6766e082e3cd714b5d03812acc24c318f549614536e"
    [[package]]
    name = "zerocopy"
    version = "0.8.52"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "ce1022995ff5ff5d841ad7d994facc23098cd40152f2c1d11cd607c6f530653f"
    dependencies = [
    "zerocopy-derive",
    ]
    [[package]]
    name = "zerocopy-derive"
    version = "0.8.52"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "1ae7f38b72ec2a254e2b87ef277cf2cd4fb97cbebf944faa6f33354da0867930"
    dependencies = [
    "proc-macro2",
    "quote",
    "syn",
    ]
    [[package]]
    name = "zeroize"
    version = "1.3.0"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "4756f7db3f7b5574938c3eb1c117038b8e07f95ee6718c0efad4ac21508f1efd"
    dependencies = [
    "zeroize_derive",
    ]
    [[package]]
    name = "zeroize_derive"
    version = "1.5.0"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "3c50655cbb0fe3fc43170059e702f1ce5e19b84cec58dc87b037a09935c2f328"
    dependencies = [
    "proc-macro2",
    "quote",
    "syn",
    ]
    [[package]]
    name = "zmij"
    version = "1.0.21"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "b8848ee67ecc8aedbaf3e4122217aff892639231befc6a1b58d29fff4c2cabaa"
    [[package]]
    name = "zstd-seekable"
    version = "0.1.23"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "574a117c5cdb88d1f13381ee3a19a6a45fb6ca0c98436d3a95df852b7ca6c3c2"
    dependencies = [
    "bincode",
    "cc",
    "libc",
    "pkg-config",
    "serde",
    "serde_derive",
    "thiserror 1.0.69",
    "threadpool",
    ]