From af7c02e0d5ae93b2769201ad37f6589ed8910c9c Mon Sep 17 00:00:00 2001 From: cschen Date: Sun, 8 Mar 2026 11:25:47 +0100 Subject: [PATCH 01/13] feat/tests: automatic API coverage checks --- Cargo.lock | 164 ++++++++++++++++++++ Cargo.toml | 1 + src/tests/ffi_coverage.rs | 311 ++++++++++++++++++++++++++++++++++++++ src/tests/mod.rs | 2 + 4 files changed, 478 insertions(+) create mode 100644 src/tests/ffi_coverage.rs diff --git a/Cargo.lock b/Cargo.lock index 4e7f4c38..1ea579ab 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -78,6 +78,7 @@ dependencies = [ "proc-macro2", "quote", "syn 2.0.98", + "syn 2.0.117", ] [[package]] @@ -247,6 +248,8 @@ dependencies = [ "pyo3-build-config", "serde", "thiserror 2.0.11", + "syn 2.0.117", + "thiserror 2.0.12", "tokio", "tokio-stream", "tonic", @@ -759,12 +762,63 @@ dependencies = [ "windows-sys 0.45.0", ] +[[package]] +name = "jni" +version = "0.22.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "295dc9997acda1562fdf8d299f56063c936443b60f078e63a5d8d3c34ef2642b" +dependencies = [ + "cfg-if", + "combine", + "java-locator", + "jni-macros", + "jni-sys 0.4.1", + "libloading", + "log", + "simd_cesu8", + "thiserror 2.0.12", + "walkdir", + "windows-link 0.2.1", +] + +[[package]] +name = "jni-macros" +version = "0.22.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c3d1da60c95c98847b26b9d45f4360fee718b31de746df016d9cd6de916a7ef" +dependencies = [ + "proc-macro2", + "quote", + "rustc_version", + "simd_cesu8", + "syn 2.0.117", +] + [[package]] name = "jni-sys" version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8eaf4bc02d17cbdd7ff4c7438cafcdf7fb9a4613313ad11b4f8fefe7d3fa0130" +[[package]] +name = "jni-sys" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c6377a88cb3910bee9b0fa88d4f42e1d2da8e79915598f65fb0c7ee14c878af2" +dependencies = [ + "jni-sys-macros", +] + +[[package]] +name = "jni-sys-macros" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38c0b942f458fe50cdac086d2f946512305e5631e720728f2a61aabcd47a6264" +dependencies = [ + "quote", + "syn 2.0.117", +] + [[package]] name = "jni-toolbox" version = "0.2.2" @@ -785,6 +839,7 @@ dependencies = [ "proc-macro2", "quote", "syn 2.0.98", + "syn 2.0.117", ] [[package]] @@ -955,6 +1010,7 @@ dependencies = [ "proc-macro2", "quote", "syn 2.0.98", + "syn 2.0.117", ] [[package]] @@ -999,6 +1055,7 @@ dependencies = [ "proc-macro2", "quote", "syn 2.0.98", + "syn 2.0.117", ] [[package]] @@ -1014,6 +1071,7 @@ dependencies = [ "regex", "semver", "syn 2.0.98", + "syn 2.0.117", ] [[package]] @@ -1158,6 +1216,7 @@ dependencies = [ "proc-macro2", "quote", "syn 2.0.98", + "syn 2.0.117", ] [[package]] @@ -1201,6 +1260,7 @@ checksum = "6924ced06e1f7dfe3fa48d57b9f74f55d8915f5036121bef647ef4b204895fac" dependencies = [ "proc-macro2", "syn 2.0.98", + "syn 2.0.117", ] [[package]] @@ -1249,6 +1309,7 @@ dependencies = [ "prost-types", "regex", "syn 2.0.98", + "syn 2.0.117", "tempfile", ] @@ -1263,6 +1324,7 @@ dependencies = [ "proc-macro2", "quote", "syn 2.0.98", + "syn 2.0.117", ] [[package]] @@ -1323,6 +1385,7 @@ dependencies = [ "pyo3-macros-backend", "quote", "syn 2.0.98", + "syn 2.0.117", ] [[package]] @@ -1336,6 +1399,7 @@ dependencies = [ "pyo3-build-config", "quote", "syn 2.0.98", + "syn 2.0.117", ] [[package]] @@ -1609,6 +1673,7 @@ dependencies = [ "proc-macro2", "quote", "syn 2.0.98", + "syn 2.0.117", ] [[package]] @@ -1712,8 +1777,10 @@ dependencies = [ [[package]] name = "syn" version = "2.0.98" +version = "2.0.117" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "36147f1a48ae0ec2b5b3bc5b537d267457555a10dc06f3dbc8cb11ba3006d3b1" +checksum = "e665b8803e7b1d2a727f4023456bbbbe74da67099c585258af0ad9c5013b9b99" dependencies = [ "proc-macro2", "quote", @@ -1773,6 +1840,7 @@ dependencies = [ "proc-macro2", "quote", "syn 2.0.98", + "syn 2.0.117", ] [[package]] @@ -1784,6 +1852,7 @@ dependencies = [ "proc-macro2", "quote", "syn 2.0.98", + "syn 2.0.117", ] [[package]] @@ -1821,6 +1890,7 @@ dependencies = [ "proc-macro2", "quote", "syn 2.0.98", + "syn 2.0.117", ] [[package]] @@ -1912,6 +1982,32 @@ name = "tonic-build" version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9557ce109ea773b399c9b9e5dca39294110b74f1f342cb347a80d1fce8c26a11" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "18262cdd13dec66e8e3f2e3fe535e4b2cc706fab444a7d3678d75d8ac2557329" +dependencies = [ + "prettyplease", + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "tonic-prost" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d8b5b7a44512c59f5ad45e0c40e53263cbbf4426d74fe6b569e04f1d4206e9c" +dependencies = [ + "bytes", + "prost", + "tonic", +] + +[[package]] +name = "tonic-prost-build" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "114cca66d757d72422ef8cccf8be3065321860ac9fa4be73aab37a8a20a9a805" dependencies = [ "prettyplease", "proc-macro2", @@ -1939,6 +2035,9 @@ dependencies = [ "tower-layer", "tower-service", "tracing", + "syn 2.0.117", + "tempfile", + "tonic-build", ] [[package]] @@ -1987,6 +2086,7 @@ dependencies = [ "proc-macro2", "quote", "syn 2.0.98", + "syn 2.0.117", ] [[package]] @@ -2149,6 +2249,7 @@ dependencies = [ "proc-macro2", "quote", "syn 2.0.98", + "syn 2.0.117", "wasm-bindgen-shared", ] @@ -2171,6 +2272,7 @@ dependencies = [ "proc-macro2", "quote", "syn 2.0.98", + "syn 2.0.117", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -2222,6 +2324,67 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9" dependencies = [ "windows-targets 0.52.6", +version = "0.61.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0fdd3ddb90610c7638aa2b3a3ab2904fb9e5cdbecc643ddb3647212781c4ae3" +dependencies = [ + "windows-implement", + "windows-interface", + "windows-link 0.1.3", + "windows-result", + "windows-strings", +] + +[[package]] +name = "windows-implement" +version = "0.60.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a47fddd13af08290e67f4acabf4b459f647552718f683a7b415d290ac744a836" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "windows-interface" +version = "0.59.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd9211b69f8dcdfa817bfd14bf1c97c9188afa36f4750130fcdf3f400eca9fa8" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "windows-link" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e6ad25900d524eaabdbbb96d20b4311e1e7ae1699af4fb28c17ae66c80d798a" + +[[package]] +name = "windows-link" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5" + +[[package]] +name = "windows-result" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56f42bd332cc6c8eac5af113fc0c1fd6a8fd2aa08a0119358686e5160d0586c6" +dependencies = [ + "windows-link 0.1.3", +] + +[[package]] +name = "windows-strings" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56e6c93f3a0c3b36176cb1327a4958a0353d5d166c2a35cb268ace15e91d3b57" +dependencies = [ + "windows-link 0.1.3", ] [[package]] @@ -2415,6 +2578,7 @@ dependencies = [ "proc-macro2", "quote", "syn 2.0.98", + "syn 2.0.117", ] [[package]] diff --git a/Cargo.toml b/Cargo.toml index 37da241f..d1a1c34d 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -55,6 +55,7 @@ pyo3 = { version = "0.23", features = ["extension-module", "multiple-pymethods"] # extra async-trait = { version = "0.1", optional = true } serde = { version = "1.0", features = ["derive"], optional = true } +syn = { version = "2.0.117", features = ["full", "visit"] } [build-dependencies] # glue (js) diff --git a/src/tests/ffi_coverage.rs b/src/tests/ffi_coverage.rs new file mode 100644 index 00000000..38c6b423 --- /dev/null +++ b/src/tests/ffi_coverage.rs @@ -0,0 +1,311 @@ +#![allow(missing_docs)] // internal test helper + +use std::collections::{BTreeMap, BTreeSet}; +use std::fs; + +fn parse(path: &str) -> syn::File { + syn::parse_file(&fs::read_to_string(path).expect("Could not parse file")).unwrap() +} + +// 1) Discover core API from target objects +fn discover_core_surface(files: &[&str], targets: &[&str]) -> BTreeMap> { + let mut out_targets: BTreeMap> = targets + .iter() + .map(|t| (t.to_string(), BTreeSet::new())) + .collect(); + + let mut supertraits_to_check: BTreeMap = BTreeMap::new(); + + for file in files { + let ast = parse(file); + + for item in ast.items { + match item { + syn::Item::Impl(item_impl) => { + let ty = match &*item_impl.self_ty { + syn::Type::Path(p) => p.path.segments.last().unwrap().ident.to_string(), + _ => continue, + }; + + if !out_targets.contains_key(&ty) { + continue; + } + + if item_impl.trait_.is_none() { + for it in item_impl.items { + if let syn::ImplItem::Fn(f) = it { + if matches!(f.vis, syn::Visibility::Public(_)) { + out_targets + .get_mut(&ty) + .unwrap() + .insert(f.sig.ident.to_string()); + } + } + } + } + } + + syn::Item::Trait(item_trait) => { + let trait_name = item_trait.ident.to_string(); + if !out_targets.contains_key(&trait_name) { + continue; + } + + if !item_trait.supertraits.is_empty() { + for tb in item_trait.supertraits { + // we save the supertypes to check also those if present in a second pass. + if let syn::TypeParamBound::Trait(trait_bound) = tb { + supertraits_to_check.insert( + trait_bound.path.segments.last().unwrap().ident.to_string(), + trait_name.clone(), + ); + } + } + } + + // if our trait has any defined method that needs to be implemented add it. + if !item_trait.items.is_empty() { + for it in item_trait.items { + if let syn::TraitItem::Fn(f) = it { + // only add the function that don't have a default body. + if f.default.is_none() { + out_targets + .get_mut(&trait_name) + .unwrap() + .insert(f.sig.ident.to_string()); + } + } + } + } + } + _ => continue, + } + } + } + + // second pass to explore also all supertraits + for file in files { + let ast = parse(file); + + for item in ast.items { + match item { + syn::Item::Trait(item_trait) => { + let trait_name = item_trait.ident.to_string(); + if !supertraits_to_check.contains_key(&trait_name) { + continue; + } + + // if our trait has any defined method that needs to be implemented add it + // (to the already existing trait for which this trait is a supertype) + if !item_trait.items.is_empty() { + let target_trait = supertraits_to_check.get(&trait_name).unwrap(); + + for it in item_trait.items { + if let syn::TraitItem::Fn(f) = it { + // only add the function that don't have a default body. + if f.default.is_none() { + out_targets + .get_mut(target_trait) + .unwrap() + .insert(f.sig.ident.to_string()); + } + } + } + } + } + _ => continue, + } + } + } + + out_targets +} + +// search in the ffi source file to see which methods are present or not. very crude. +fn missing_methods(ffi_src: &str, required: BTreeSet) -> Vec { + required + .iter() + .filter(|method| !ffi_src.contains(&format!(".{}(", method))) + .map(|method| (*method).to_string()) + .collect() +} + +// build a "report" of which required methods are missing from the lang ffi. +fn missing_lang_coverage( + lang: &str, + ffi_src: &str, + required: BTreeMap>, + ignore: &[&str], +) -> Vec { + let mut missing = BTreeSet::new(); + for (target, methods) in required { + for method in missing_methods(ffi_src, methods) { + let full_name = format!("{target}.{method}"); + if ignore.contains(&full_name.as_str()) { + continue; + } + + missing.insert(full_name); + } + } + + if missing.is_empty() { + Vec::new() + } else { + vec![format!( + "{lang}: {}", + missing.into_iter().collect::>().join(", ") + )] + } +} + +#[test] +fn python_ffi_should_cover_rust_api_surface() { + let targets = &[ + "Client", + "Workspace", + "BufferController", + "CursorController", + "Controller", + ]; + + let files = &[ + "src/client.rs", + "src/workspace.rs", + "src/buffer/controller.rs", + "src/cursor/controller.rs", + "src/api/controller.rs", + ]; + + let required = discover_core_surface(files, targets); + + let python_src = concat!( + include_str!("../ffi/python/client.rs"), + include_str!("../ffi/python/workspace.rs"), + include_str!("../ffi/python/controllers.rs"), + ); + + let python_ignore = ["Client.connect"]; + + let missings = missing_lang_coverage("python", python_src, required, &python_ignore); + + assert!( + missings.is_empty(), + "missing ffi coverage:\n{}", + missings.join("\n") + ); +} + +#[test] +fn javascript_ffi_should_cover_rust_api_surface() { + let targets = &[ + "Client", + "Workspace", + "BufferController", + "CursorController", + "Controller", + ]; + + let files = &[ + "src/client.rs", + "src/workspace.rs", + "src/buffer/controller.rs", + "src/cursor/controller.rs", + "src/api/controller.rs", + ]; + + let required = discover_core_surface(files, targets); + + let js_src = concat!( + include_str!("../ffi/js/client.rs"), + include_str!("../ffi/js/workspace.rs"), + include_str!("../ffi/js/buffer.rs"), + include_str!("../ffi/js/cursor.rs"), + ); + + let js_ignore = []; + + let missings = missing_lang_coverage("javascript", js_src, required, &js_ignore); + + assert!( + missings.is_empty(), + "missing ffi coverage:\n{}", + missings.join("\n") + ); +} + +#[test] +fn lua_ffi_should_cover_rust_api_surface() { + let targets = &[ + "Client", + "Workspace", + "BufferController", + "CursorController", + "Controller", + ]; + + let files = &[ + "src/client.rs", + "src/workspace.rs", + "src/buffer/controller.rs", + "src/cursor/controller.rs", + "src/api/controller.rs", + ]; + + let required = discover_core_surface(files, targets); + + let lua_src = concat!( + include_str!("../ffi/lua/client.rs"), + include_str!("../ffi/lua/workspace.rs"), + include_str!("../ffi/lua/buffer.rs"), + include_str!("../ffi/lua/cursor.rs"), + ); + + let lua_ignore = ["Client.connect"]; + + let missings = missing_lang_coverage("lua", lua_src, required, &lua_ignore); + + assert!( + missings.is_empty(), + "missing ffi coverage:\n{}", + missings.join("\n") + ); +} + +#[test] +fn java_ffi_should_cover_rust_api_surface() { + let targets = &[ + "Client", + "Workspace", + "BufferController", + "CursorController", + "Controller", + ]; + + let files = &[ + "src/client.rs", + "src/workspace.rs", + "src/buffer/controller.rs", + "src/cursor/controller.rs", + "src/api/controller.rs", + ]; + + let required = discover_core_surface(files, targets); + + let java_src = concat!( + include_str!("../ffi/java/client.rs"), + include_str!("../ffi/java/workspace.rs"), + include_str!("../ffi/java/buffer.rs"), + include_str!("../ffi/java/cursor.rs"), + ); + + let java_ignore = []; + + let missings = missing_lang_coverage("java", java_src, required, &java_ignore); + + assert!( + missings.is_empty(), + "missing ffi coverage:\n{}", + missings.join("\n") + ); +} diff --git a/src/tests/mod.rs b/src/tests/mod.rs index 63496521..98de6bd9 100644 --- a/src/tests/mod.rs +++ b/src/tests/mod.rs @@ -4,6 +4,8 @@ mod client; #[cfg(all(test, feature = "test-e2e"))] mod server; +mod ffi_coverage; + pub mod fixtures; use crate::errors::{ConnectionError, RemoteError}; From ed54960d83da65c5d9efa585e272fd63206faf48 Mon Sep 17 00:00:00 2001 From: cschen Date: Mon, 9 Mar 2026 19:31:21 +0100 Subject: [PATCH 02/13] fix: cargo lock --- Cargo.lock | 1025 ++++++++++++++++++++++++++-------------------------- 1 file changed, 508 insertions(+), 517 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 1ea579ab..b2d5ebb8 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2,36 +2,15 @@ # It is not intended for manual editing. version = 4 -[[package]] -name = "addr2line" -version = "0.24.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dfbe277e56a376000877090da837660b4427aad530e3028d44e0bffe4f89a1c1" -dependencies = [ - "gimli", -] - -[[package]] -name = "adler2" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627" - [[package]] name = "aho-corasick" -version = "1.1.3" +version = "1.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" +checksum = "ddd31a130427c27518df266943a5308ed92d4b226cc639f5a8f1002816174301" dependencies = [ "memchr", ] -[[package]] -name = "android-tzdata" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0" - [[package]] name = "android_system_properties" version = "0.1.5" @@ -43,9 +22,9 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.95" +version = "1.0.102" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34ac096ce696dc2fcabef30516bb13c0a68a11d30131d3df6f04711467681b04" +checksum = "7f202df86484c868dbad7eaa557ef785d5c66295e41b460ef922eca0723b842c" [[package]] name = "async-stream" @@ -66,18 +45,17 @@ checksum = "c7c24de15d275a1ecfd47a380fb4d5ec9bfe0933f309ed5e705b775596a3574d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.117", ] [[package]] name = "async-trait" -version = "0.1.86" +version = "0.1.89" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "644dd749086bf3771a2fbc5f256fdb982d53f011c7d5d560304eafeecebce79d" +checksum = "9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", "syn 2.0.117", ] @@ -89,9 +67,9 @@ checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" [[package]] name = "autocfg" -version = "1.4.0" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" +checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" [[package]] name = "axum" @@ -115,7 +93,7 @@ dependencies = [ "rustversion", "serde", "sync_wrapper", - "tower 0.5.2", + "tower 0.5.3", "tower-layer", "tower-service", ] @@ -140,21 +118,6 @@ dependencies = [ "tower-service", ] -[[package]] -name = "backtrace" -version = "0.3.74" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d82cb332cdfaed17ae235a638438ac4d4839913cc2af585c3c6746e8f8bee1a" -dependencies = [ - "addr2line", - "cfg-if", - "libc", - "miniz_oxide", - "object", - "rustc-demangle", - "windows-targets 0.52.6", -] - [[package]] name = "base64" version = "0.22.1" @@ -163,15 +126,15 @@ checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" [[package]] name = "bitflags" -version = "2.8.0" +version = "2.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f68f53c83ab957f72c32642f3868eec03eb974d1fb82e453128456482613d36" +checksum = "843867be96c8daad0d758b57df9392b6d8d271134fce549de6ce169ff98a92af" [[package]] name = "bstr" -version = "1.11.3" +version = "1.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "531a9155a481e2ee699d4f98f43c0ca4ff8ee1bfd55c31e9e98fb29d2b176fe0" +checksum = "63044e1ae8e69f3b5a92c736ca6269b8d12fa7efe39bf34ddb06d102cf0e2cab" dependencies = [ "memchr", "serde", @@ -179,28 +142,23 @@ dependencies = [ [[package]] name = "bumpalo" -version = "3.17.0" +version = "3.20.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1628fb46dfa0b37568d12e5edd512553eccf6a22a78e8bde00bb4aed84d5bdbf" - -[[package]] -name = "byteorder" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" +checksum = "5d20789868f4b01b2f2caec9f5c4e0213b41e3e5702a50157d699ae31ced2fcb" [[package]] name = "bytes" -version = "1.10.0" +version = "1.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f61dac84819c6588b558454b194026eb1f09c293b9036ae9b159e74e73ab6cf9" +checksum = "1e748733b7cbc798e1434b6ac524f0c1ff2ab456fe201501e6497c8417a4fc33" [[package]] name = "cc" -version = "1.2.14" +version = "1.2.56" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c3d1b2e905a3a7b00a6141adb0e4c0bb941d11caf55349d863942a1cc44e3c9" +checksum = "aebf35691d1bfb0ac386a69bac2fde4dd276fb618cf8bf4f5318fe285e821bb2" dependencies = [ + "find-msvc-tools", "shlex", ] @@ -212,22 +170,21 @@ checksum = "6d43a04d8753f35258c91f8ec639f792891f748a1edbd759cf1dcea3382ad83c" [[package]] name = "cfg-if" -version = "1.0.0" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" +checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" [[package]] name = "chrono" -version = "0.4.39" +version = "0.4.44" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e36cc9d416881d2e24f9a963be5fb1cd90966419ac844274161d10488b3e825" +checksum = "c673075a2e0e5f4a1dde27ce9dee1ea4558c7ffe648f576438a20ca1d2acc4b0" dependencies = [ - "android-tzdata", "iana-time-zone", "js-sys", "num-traits", "wasm-bindgen", - "windows-targets 0.52.6", + "windows-link", ] [[package]] @@ -247,9 +204,8 @@ dependencies = [ "pyo3", "pyo3-build-config", "serde", - "thiserror 2.0.11", "syn 2.0.117", - "thiserror 2.0.12", + "thiserror 2.0.18", "tokio", "tokio-stream", "tonic", @@ -303,9 +259,9 @@ dependencies = [ [[package]] name = "core-foundation" -version = "0.10.0" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b55271e5c8c478ad3f38ad24ef34923091e0548492a266d19b3c0b4d82574c63" +checksum = "b2a6cd9ae233e7f62ba4e9353e81a88df7fc8a5987b8d445b4d90c879bd156f6" dependencies = [ "core-foundation-sys", "libc", @@ -345,7 +301,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "32a2785755761f3ddc1492979ce1e48d2c00d09311c39e4466429188f3dd6501" dependencies = [ "quote", - "syn 2.0.98", + "syn 2.0.117", ] [[package]] @@ -383,9 +339,9 @@ dependencies = [ [[package]] name = "either" -version = "1.13.0" +version = "1.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0" +checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719" [[package]] name = "encoding_rs" @@ -404,22 +360,23 @@ checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" [[package]] name = "erased-serde" -version = "0.4.5" +version = "0.4.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24e2389d65ab4fab27dc2a5de7b191e1f6617d1f1c8855c0dc569c94a4cbb18d" +checksum = "d2add8a07dd6a8d93ff627029c51de145e12686fbc36ecb298ac22e74cf02dec" dependencies = [ "serde", + "serde_core", "typeid", ] [[package]] name = "errno" -version = "0.3.10" +version = "0.3.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33d852cb9b869c2a9b3df2f71a3074817f01e1844f839a144f5fcef059a4eb5d" +checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb" dependencies = [ "libc", - "windows-sys 0.59.0", + "windows-sys 0.61.2", ] [[package]] @@ -428,6 +385,12 @@ version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" +[[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.5.7" @@ -440,85 +403,86 @@ version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" +[[package]] +name = "foldhash" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" + [[package]] name = "futures-channel" -version = "0.3.31" +version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10" +checksum = "07bbe89c50d7a535e539b8c17bc0b49bdb77747034daa8087407d655f3f7cc1d" dependencies = [ "futures-core", ] [[package]] name = "futures-core" -version = "0.3.31" +version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" +checksum = "7e3450815272ef58cec6d564423f6e755e25379b217b0bc688e295ba24df6b1d" [[package]] name = "futures-sink" -version = "0.3.31" +version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7" +checksum = "c39754e157331b013978ec91992bde1ac089843443c49cbc7f46150b0fad0893" [[package]] name = "futures-task" -version = "0.3.31" +version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988" +checksum = "037711b3d59c33004d3856fbdc83b99d4ff37a24768fa1be9ce3538a1cde4393" [[package]] name = "futures-util" -version = "0.3.31" +version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" +checksum = "389ca41296e6190b48053de0321d02a77f32f8a5d2461dd38762c0593805c6d6" dependencies = [ "futures-core", "futures-task", "pin-project-lite", - "pin-utils", + "slab", ] [[package]] name = "getrandom" -version = "0.2.15" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" +checksum = "ff2abc00be7fca6ebc474524697ae276ad847ad0a6b3faa4bcb027e9a4614ad0" dependencies = [ "cfg-if", "libc", - "wasi 0.11.0+wasi-snapshot-preview1", + "wasi", ] [[package]] name = "getrandom" -version = "0.3.1" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43a49c392881ce6d5c3b8cb70f98717b7c07aabbdff06687b9030dbfbe2725f8" +checksum = "0de51e6874e94e7bf76d726fc5d13ba782deca734ff60d5bb2fb2607c7406555" dependencies = [ "cfg-if", "libc", - "wasi 0.13.3+wasi-0.2.2", - "windows-targets 0.52.6", + "r-efi", + "wasip2", + "wasip3", ] -[[package]] -name = "gimli" -version = "0.31.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f" - [[package]] name = "glob" -version = "0.3.2" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8d1add55171497b4705a648c6b583acafb01d58050a51727785f0b2c8e0a2b2" +checksum = "0cc23270f6e1808e30a928bdc84dea0b9b4136a8bc82338574f23baf47bbd280" [[package]] name = "h2" -version = "0.4.7" +version = "0.4.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ccae279728d634d083c00f6099cb58f01cc99c145b84b8be2f6c74618d79922e" +checksum = "2f44da3a8150a6703ed5d34e164b875fd14c2cdab9af1252a9a1020bde2bdc54" dependencies = [ "atomic-waker", "bytes", @@ -526,7 +490,7 @@ dependencies = [ "futures-core", "futures-sink", "http", - "indexmap 2.7.1", + "indexmap 2.13.0", "slab", "tokio", "tokio-util", @@ -547,9 +511,18 @@ checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" [[package]] name = "hashbrown" -version = "0.15.2" +version = "0.15.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf151400ff0baff5465007dd2f3e717f3fe502074ca563069ce3a6629d07b289" +checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1" +dependencies = [ + "foldhash", +] + +[[package]] +name = "hashbrown" +version = "0.16.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100" [[package]] name = "heck" @@ -559,12 +532,11 @@ checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" [[package]] name = "http" -version = "1.2.0" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f16ca2af56261c99fba8bac40a10251ce8188205a4c448fbb745a2e4daa76fea" +checksum = "e3ba2a386d7f85a81f119ad7498ebe444d2e22c2af0b86b069416ace48b3311a" dependencies = [ "bytes", - "fnv", "itoa", ] @@ -580,12 +552,12 @@ dependencies = [ [[package]] name = "http-body-util" -version = "0.1.2" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "793429d76616a256bcb62c2a2ec2bed781c8307e797e2598c50010f2bee2544f" +checksum = "b021d93e26becf5dc7e1b75b1bed1fd93124b374ceb73f43d4d4eafec896a64a" dependencies = [ "bytes", - "futures-util", + "futures-core", "http", "http-body", "pin-project-lite", @@ -593,9 +565,9 @@ dependencies = [ [[package]] name = "httparse" -version = "1.10.0" +version = "1.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2d708df4e7140240a16cd6ab0ab65c972d7433ab77819ea693fde9c43811e2a" +checksum = "6dbf3de79e51f3d586ab4cb9d5c3e2c14aa28ed23d180cf89b4df0454a69cc87" [[package]] name = "httpdate" @@ -611,13 +583,14 @@ checksum = "02296996cb8796d7c6e3bc2d9211b7802812d36999a51bb754123ead7d37d026" [[package]] name = "hyper" -version = "1.6.0" +version = "1.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc2b571658e38e0c01b1fdca3bbbe93c00d3d71693ff2770043f8c29bc7d6f80" +checksum = "2ab2d4f250c3d7b1c9fcdff1cece94ea4e2dfbec68614f7b87cb205f24ca9d11" dependencies = [ + "atomic-waker", "bytes", "futures-channel", - "futures-util", + "futures-core", "h2", "http", "http-body", @@ -625,6 +598,7 @@ dependencies = [ "httpdate", "itoa", "pin-project-lite", + "pin-utils", "smallvec", "tokio", "want", @@ -645,9 +619,9 @@ dependencies = [ [[package]] name = "hyper-util" -version = "0.1.10" +version = "0.1.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df2dcfbe0677734ab2f3ffa7fa7bfd4706bfdc1ef393f2ee30184aed67e631b4" +checksum = "96547c2556ec9d12fb1578c4eaf448b04993e7fb79cbaad930a656880a6bdfa0" dependencies = [ "bytes", "futures-channel", @@ -655,8 +629,9 @@ dependencies = [ "http", "http-body", "hyper", + "libc", "pin-project-lite", - "socket2", + "socket2 0.6.3", "tokio", "tower-service", "tracing", @@ -664,14 +639,15 @@ dependencies = [ [[package]] name = "iana-time-zone" -version = "0.1.61" +version = "0.1.65" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "235e081f3925a06703c2d0117ea8b91f042756fd6e7a6e5d901e8ca1a996b220" +checksum = "e31bc9ad994ba00e440a8aa5c9ef0ec67d5cb5e5cb0cc7f8b744a35b389cc470" dependencies = [ "android_system_properties", "core-foundation-sys", "iana-time-zone-haiku", "js-sys", + "log", "wasm-bindgen", "windows-core", ] @@ -685,6 +661,12 @@ dependencies = [ "cc", ] +[[package]] +name = "id-arena" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d3067d79b975e8844ca9eb072e16b31c3c1c36928edf9c6789548c524d0d954" + [[package]] name = "indexmap" version = "1.9.3" @@ -697,25 +679,30 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.7.1" +version = "2.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c9c992b02b5b4c94ea26e32fe5bccb7aa7d9f390ab5c1221ff895bc7ea8b652" +checksum = "7714e70437a7dc3ac8eb7e6f8df75fd8eb422675fc7678aff7364301092b1017" dependencies = [ "equivalent", - "hashbrown 0.15.2", + "hashbrown 0.16.1", + "serde", + "serde_core", ] [[package]] name = "indoc" -version = "2.0.5" +version = "2.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b248f5224d1d606005e02c97f5aa4e88eeb230488bcc03bc9ca4d7991399f2b5" +checksum = "79cf5c93f93228cf8efb3ba362535fb11199ac548a09ce117c9b1adc3030d706" +dependencies = [ + "rustversion", +] [[package]] name = "inventory" -version = "0.3.19" +version = "0.3.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54b12ebb6799019b044deaf431eadfe23245b259bba5a2c0796acec3943a3cdb" +checksum = "009ae045c87e7082cb72dab0ccd01ae075dd00141ddc108f43a0ea150a9e7227" dependencies = [ "rustversion", ] @@ -731,9 +718,9 @@ dependencies = [ [[package]] name = "itoa" -version = "1.0.14" +version = "1.0.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d75a2a4b1b190afb6f5425f10f6a8f959d2ea0b9c2b1d79553551850539e4674" +checksum = "92ecc6618181def0457392ccd0ee51198e065e016d1d527a7ac1b6dc7c1f09d2" [[package]] name = "java-locator" @@ -762,63 +749,12 @@ dependencies = [ "windows-sys 0.45.0", ] -[[package]] -name = "jni" -version = "0.22.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "295dc9997acda1562fdf8d299f56063c936443b60f078e63a5d8d3c34ef2642b" -dependencies = [ - "cfg-if", - "combine", - "java-locator", - "jni-macros", - "jni-sys 0.4.1", - "libloading", - "log", - "simd_cesu8", - "thiserror 2.0.12", - "walkdir", - "windows-link 0.2.1", -] - -[[package]] -name = "jni-macros" -version = "0.22.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c3d1da60c95c98847b26b9d45f4360fee718b31de746df016d9cd6de916a7ef" -dependencies = [ - "proc-macro2", - "quote", - "rustc_version", - "simd_cesu8", - "syn 2.0.117", -] - [[package]] name = "jni-sys" version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8eaf4bc02d17cbdd7ff4c7438cafcdf7fb9a4613313ad11b4f8fefe7d3fa0130" -[[package]] -name = "jni-sys" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c6377a88cb3910bee9b0fa88d4f42e1d2da8e79915598f65fb0c7ee14c878af2" -dependencies = [ - "jni-sys-macros", -] - -[[package]] -name = "jni-sys-macros" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38c0b942f458fe50cdac086d2f946512305e5631e720728f2a61aabcd47a6264" -dependencies = [ - "quote", - "syn 2.0.117", -] - [[package]] name = "jni-toolbox" version = "0.2.2" @@ -838,15 +774,14 @@ checksum = "609491ce00edcf12946945a514d033bf6e8bfbab02c6a25a46ed8cd4749707da" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", "syn 2.0.117", ] [[package]] name = "js-sys" -version = "0.3.77" +version = "0.3.91" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1cfaf33c695fc6e08064efbc1f72ec937429614f25eef83af942d0e227c3a28f" +checksum = "b49715b7073f385ba4bc528e5747d02e66cb39c6146efb66b781f131f0fb399c" dependencies = [ "once_cell", "wasm-bindgen", @@ -868,11 +803,17 @@ version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" +[[package]] +name = "leb128fmt" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09edd9e8b54e49e587e4f6295a7d29c3ea94d469cb40ab8ca70b288248a81db2" + [[package]] name = "libc" -version = "0.2.169" +version = "0.2.183" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5aba8db14291edd000dfcc4d620c7ebfb122c613afb886ca8803fa4e128a20a" +checksum = "b5b646652bf6661599e1da8901b3b9522896f01e736bad5f723fe7a3a27f899d" [[package]] name = "libloading" @@ -886,35 +827,34 @@ dependencies = [ [[package]] name = "libloading" -version = "0.8.6" +version = "0.8.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc2f4eb4bc735547cfed7c0a4922cbd04a4655978c09b54f1f7b228750664c34" +checksum = "d7c4b02199fee7c5d21a5ae7d8cfa79a6ef5bb2fc834d6e9058e89c825efdc55" dependencies = [ "cfg-if", - "windows-targets 0.52.6", + "windows-link", ] [[package]] name = "linux-raw-sys" -version = "0.4.15" +version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d26c52dbd32dccf2d10cac7725f8eae5296885fb5703b261f7d0a0739ec807ab" +checksum = "32a66949e030da00e8c7d4434b251670a91556f4144941d37452769c25d58a53" [[package]] name = "lock_api" -version = "0.4.12" +version = "0.4.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17" +checksum = "224399e74b87b5f3557511d98dff8b14089b3dadafcab6bb93eab67d3aace965" dependencies = [ - "autocfg", "scopeguard", ] [[package]] name = "log" -version = "0.4.25" +version = "0.4.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04cbf5b083de1c7e0222a7a51dbfdba1cbe1c6ab0b15e29fff3f6c077fd9cd9f" +checksum = "5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897" [[package]] name = "lz4_flex" @@ -933,9 +873,9 @@ checksum = "0e7465ac9959cc2b1404e8e2367b43684a6d13790fe23056cc8c6c5a6b7bcb94" [[package]] name = "memchr" -version = "2.7.4" +version = "2.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" +checksum = "f8ca58f447f06ed17d5fc4043ce1b10dd205e060fb3ce5b979b8ed8e59ff3f79" [[package]] name = "memoffset" @@ -952,31 +892,22 @@ version = "0.3.17" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" -[[package]] -name = "miniz_oxide" -version = "0.8.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3b1c9bd4fe1f0f8b387f6eb9eb3b4a1aa26185e5750efb9140301703f62cd1b" -dependencies = [ - "adler2", -] - [[package]] name = "mio" -version = "1.0.3" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2886843bf800fba2e3377cff24abf6379b4c4d5c6681eaf9ea5b0d15090450bd" +checksum = "a69bcab0ad47271a0234d9422b131806bf3968021e5dc9328caf2d4cd58557fc" dependencies = [ "libc", - "wasi 0.11.0+wasi-snapshot-preview1", - "windows-sys 0.52.0", + "wasi", + "windows-sys 0.61.2", ] [[package]] name = "mlua" -version = "0.10.3" +version = "0.10.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3f763c1041eff92ffb5d7169968a327e1ed2ebfe425dac0ee5a35f29082534b" +checksum = "c1f5f8fbebc7db5f671671134b9321c4b9aa9adeafccfd9a8c020ae45c6a35d0" dependencies = [ "bstr", "either", @@ -986,15 +917,16 @@ dependencies = [ "num-traits", "parking_lot", "rustc-hash", + "rustversion", "serde", "serde-value", ] [[package]] name = "mlua-sys" -version = "0.6.7" +version = "0.6.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1901c1a635a22fe9250ffcc4fcc937c16b47c2e9e71adba8784af8bca1f69594" +checksum = "380c1f7e2099cafcf40e51d3a9f20a346977587aa4d012eae1f043149a728a93" dependencies = [ "cc", "cfg-if", @@ -1009,21 +941,20 @@ checksum = "870d71c172fcf491c6b5fb4c04160619a2ee3e5a42a1402269c66bcbf1dd4deb" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", "syn 2.0.117", ] [[package]] name = "multimap" -version = "0.10.0" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "defc4c55412d89136f966bbb339008b474350e5e6e78d2714439c386b3137a03" +checksum = "1d87ecb2933e8aeadb3e3a02b828fed80a7528047e68b4f424523a0981a3a084" [[package]] name = "napi" -version = "2.16.16" +version = "2.16.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "839ae2ee5e62c6348669c50098b187c08115bd3cced658c9c0bf945fca0fec83" +checksum = "55740c4ae1d8696773c78fdafd5d0e5fe9bc9f1b071c7ba493ba5c413a9184f3" dependencies = [ "bitflags", "chrono", @@ -1039,9 +970,9 @@ dependencies = [ [[package]] name = "napi-build" -version = "2.1.4" +version = "2.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db836caddef23662b94e16bf1f26c40eceb09d6aee5d5b06a7ac199320b69b19" +checksum = "d376940fd5b723c6893cd1ee3f33abbfd86acb1cd1ec079f3ab04a2a3bc4d3b1" [[package]] name = "napi-derive" @@ -1054,7 +985,6 @@ dependencies = [ "napi-derive-backend", "proc-macro2", "quote", - "syn 2.0.98", "syn 2.0.117", ] @@ -1070,7 +1000,6 @@ dependencies = [ "quote", "regex", "semver", - "syn 2.0.98", "syn 2.0.117", ] @@ -1080,17 +1009,16 @@ version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "427802e8ec3a734331fec1035594a210ce1ff4dc5bc1950530920ab717964ea3" dependencies = [ - "libloading 0.8.6", + "libloading 0.8.9", ] [[package]] name = "nu-ansi-term" -version = "0.46.0" +version = "0.50.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84" +checksum = "7957b9740744892f114936ab4a57b3f487491bbeafaf8083688b16841a4240e5" dependencies = [ - "overload", - "winapi", + "windows-sys 0.61.2", ] [[package]] @@ -1123,26 +1051,17 @@ dependencies = [ "syn 1.0.109", ] -[[package]] -name = "object" -version = "0.36.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62948e14d923ea95ea2c7c86c71013138b66525b86bdc08d2dcc262bdb497b87" -dependencies = [ - "memchr", -] - [[package]] name = "once_cell" -version = "1.20.3" +version = "1.21.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "945462a4b81e43c4e3ba96bd7b49d834c6f61198356aa858733bc4acf3cbe62e" +checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" [[package]] name = "openssl-probe" -version = "0.1.6" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d05e27ee213611ffe7d6348b942e8f942b37114c00cc03cec254295a4a17852e" +checksum = "7c87def4c32ab89d880effc9e097653c8da5d6ef28e6b539d313baaacfbafcbe" [[package]] name = "ordered-float" @@ -1153,17 +1072,11 @@ dependencies = [ "num-traits", ] -[[package]] -name = "overload" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" - [[package]] name = "parking_lot" -version = "0.12.3" +version = "0.12.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1bf18183cf54e8d6059647fc3063646a1801cf30896933ec2311622cc4b9a27" +checksum = "93857453250e3077bd71ff98b6a65ea6621a19bb0f559a85248955ac12c45a1a" dependencies = [ "lock_api", "parking_lot_core", @@ -1171,22 +1084,22 @@ dependencies = [ [[package]] name = "parking_lot_core" -version = "0.9.10" +version = "0.9.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" +checksum = "2621685985a2ebf1c516881c026032ac7deafcda1a2c9b7850dc81e3dfcb64c1" dependencies = [ "cfg-if", "libc", "redox_syscall", "smallvec", - "windows-targets 0.52.6", + "windows-link", ] [[package]] name = "percent-encoding" -version = "2.3.1" +version = "2.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" +checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220" [[package]] name = "petgraph" @@ -1195,35 +1108,34 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3672b37090dbd86368a4145bc067582552b29c27377cad4e0a306c97f9bd7772" dependencies = [ "fixedbitset", - "indexmap 2.7.1", + "indexmap 2.13.0", ] [[package]] name = "pin-project" -version = "1.1.9" +version = "1.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dfe2e71e1471fe07709406bf725f710b02927c9c54b2b5b2ec0e8087d97c327d" +checksum = "f1749c7ed4bcaf4c3d0a3efc28538844fb29bcdd7d2b67b2be7e20ba861ff517" dependencies = [ "pin-project-internal", ] [[package]] name = "pin-project-internal" -version = "1.1.9" +version = "1.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6e859e6e5bd50440ab63c47e3ebabc90f26251f7c73c3d3e837b74a1cc3fa67" +checksum = "d9b20ed30f105399776b9c883e68e536ef602a16ae6f596d2c473591d6ad64c6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", "syn 2.0.117", ] [[package]] name = "pin-project-lite" -version = "0.2.16" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" +checksum = "a89322df9ebe1c1578d689c92318e070967d1042b512afbe49518723f4e6d5cd" [[package]] name = "pin-utils" @@ -1233,33 +1145,32 @@ checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" [[package]] name = "pkg-config" -version = "0.3.31" +version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "953ec861398dccce10c670dfeaf3ec4911ca479e9c02154b3a215178c5f566f2" +checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c" [[package]] name = "portable-atomic" -version = "1.10.0" +version = "1.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "280dc24453071f1b63954171985a0b0d30058d287960968b9b2aca264c8d4ee6" +checksum = "c33a9471896f1c69cecef8d20cbe2f7accd12527ce60845ff44c153bb2a21b49" [[package]] name = "ppv-lite86" -version = "0.2.20" +version = "0.2.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77957b295656769bb8ad2b6a6b09d897d94f05c41b069aede1fcdaa675eaea04" +checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9" dependencies = [ "zerocopy", ] [[package]] name = "prettyplease" -version = "0.2.29" +version = "0.2.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6924ced06e1f7dfe3fa48d57b9f74f55d8915f5036121bef647ef4b204895fac" +checksum = "479ca8adacdd7ce8f1fb39ce9ecccbfe93a3f1344b3d0d97f20bc0196208f62b" dependencies = [ "proc-macro2", - "syn 2.0.98", "syn 2.0.117", ] @@ -1275,9 +1186,9 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.93" +version = "1.0.106" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60946a68e5f9d28b0dc1c21bb8a97ee7d018a8b322fa57838ba31cc878e22d99" +checksum = "8fd00f0bb2e90d81d1044c2b32617f68fcb9fa3bb7640c23e9c748e53fb30934" dependencies = [ "unicode-ident", ] @@ -1308,7 +1219,6 @@ dependencies = [ "prost", "prost-types", "regex", - "syn 2.0.98", "syn 2.0.117", "tempfile", ] @@ -1323,7 +1233,6 @@ dependencies = [ "itertools", "proc-macro2", "quote", - "syn 2.0.98", "syn 2.0.117", ] @@ -1338,9 +1247,9 @@ dependencies = [ [[package]] name = "pyo3" -version = "0.23.4" +version = "0.23.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57fe09249128b3173d092de9523eaa75136bf7ba85e0d69eca241c7939c933cc" +checksum = "7778bffd85cf38175ac1f545509665d0b9b92a198ca7941f131f85f7a4f9a872" dependencies = [ "cfg-if", "indoc", @@ -1357,9 +1266,9 @@ dependencies = [ [[package]] name = "pyo3-build-config" -version = "0.23.4" +version = "0.23.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1cd3927b5a78757a0d71aa9dff669f903b1eb64b54142a9bd9f757f8fde65fd7" +checksum = "94f6cbe86ef3bf18998d9df6e0f3fc1050a8c5efa409bf712e661a4366e010fb" dependencies = [ "once_cell", "target-lexicon", @@ -1367,9 +1276,9 @@ dependencies = [ [[package]] name = "pyo3-ffi" -version = "0.23.4" +version = "0.23.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dab6bb2102bd8f991e7749f130a70d05dd557613e39ed2deeee8e9ca0c4d548d" +checksum = "e9f1b4c431c0bb1c8fb0a338709859eed0d030ff6daa34368d3b152a63dfdd8d" dependencies = [ "libc", "pyo3-build-config", @@ -1377,40 +1286,44 @@ dependencies = [ [[package]] name = "pyo3-macros" -version = "0.23.4" +version = "0.23.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91871864b353fd5ffcb3f91f2f703a22a9797c91b9ab497b1acac7b07ae509c7" +checksum = "fbc2201328f63c4710f68abdf653c89d8dbc2858b88c5d88b0ff38a75288a9da" dependencies = [ "proc-macro2", "pyo3-macros-backend", "quote", - "syn 2.0.98", "syn 2.0.117", ] [[package]] name = "pyo3-macros-backend" -version = "0.23.4" +version = "0.23.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43abc3b80bc20f3facd86cd3c60beed58c3e2aa26213f3cda368de39c60a27e4" +checksum = "fca6726ad0f3da9c9de093d6f116a93c1a38e417ed73bf138472cf4064f72028" dependencies = [ "heck", "proc-macro2", "pyo3-build-config", "quote", - "syn 2.0.98", "syn 2.0.117", ] [[package]] name = "quote" -version = "1.0.38" +version = "1.0.45" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e4dccaaaf89514f546c693ddc140f729f958c247918a13380cccc6078391acc" +checksum = "41f2619966050689382d2b44f664f4bc593e129785a36d6ee376ddf37259b924" dependencies = [ "proc-macro2", ] +[[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.8.5" @@ -1438,23 +1351,23 @@ version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" dependencies = [ - "getrandom 0.2.15", + "getrandom 0.2.17", ] [[package]] name = "redox_syscall" -version = "0.5.8" +version = "0.5.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03a862b389f93e68874fbf580b9de08dd02facb9a788ebadaf4a3fd33cf58834" +checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d" dependencies = [ "bitflags", ] [[package]] name = "regex" -version = "1.11.1" +version = "1.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191" +checksum = "e10754a14b9137dd7b1e3e5b0493cc9171fdd105e0ab477f51b72e7f3ac0e276" dependencies = [ "aho-corasick", "memchr", @@ -1464,9 +1377,9 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.9" +version = "0.4.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908" +checksum = "6e1dd4122fc1595e8162618945476892eefca7b88c52820e74af6262213cae8f" dependencies = [ "aho-corasick", "memchr", @@ -1475,19 +1388,19 @@ dependencies = [ [[package]] name = "regex-syntax" -version = "0.8.5" +version = "0.8.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" +checksum = "dc897dd8d9e8bd1ed8cdad82b5966c3e0ecae09fb1907d58efaa013543185d0a" [[package]] name = "ring" -version = "0.17.9" +version = "0.17.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e75ec5e92c4d8aede845126adc388046234541629e76029599ed35a003c7ed24" +checksum = "a4689e6c2294d81e88dc6261c768b63bc4fcdb852be6d1352498b114f61383b7" dependencies = [ "cc", "cfg-if", - "getrandom 0.2.15", + "getrandom 0.2.17", "libc", "untrusted", "windows-sys 0.52.0", @@ -1502,12 +1415,6 @@ dependencies = [ "smallvec", ] -[[package]] -name = "rustc-demangle" -version = "0.1.24" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" - [[package]] name = "rustc-hash" version = "2.1.1" @@ -1516,22 +1423,22 @@ checksum = "357703d41365b4b27c590e3ed91eabb1b663f07c4c084095e60cbed4362dff0d" [[package]] name = "rustix" -version = "0.38.44" +version = "1.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fdb5bc1ae2baa591800df16c9ca78619bf65c0488b41b96ccec5d11220d8c154" +checksum = "b6fe4565b9518b83ef4f91bb47ce29620ca828bd32cb7e408f0062e9930ba190" dependencies = [ "bitflags", "errno", "libc", "linux-raw-sys", - "windows-sys 0.59.0", + "windows-sys 0.61.2", ] [[package]] name = "rustls" -version = "0.23.23" +version = "0.23.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "47796c98c480fce5406ef69d1c76378375492c3b0a0de587be0c1d9feb12f395" +checksum = "758025cb5fccfd3bc2fd74708fd4682be41d99e5dff73c377c0646c6012c73a4" dependencies = [ "log", "once_cell", @@ -1544,9 +1451,9 @@ dependencies = [ [[package]] name = "rustls-native-certs" -version = "0.8.1" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fcff2dd52b58a8d98a70243663a0d234c4e2b79235637849d15913394a247d3" +checksum = "612460d5f7bea540c490b2b6395d8e34a953e52b491accd6c86c8164c5932a63" dependencies = [ "openssl-probe", "rustls-pki-types", @@ -1565,15 +1472,18 @@ dependencies = [ [[package]] name = "rustls-pki-types" -version = "1.11.0" +version = "1.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "917ce264624a4b4db1c364dcc35bfca9ded014d0a958cd47ad3e960e988ea51c" +checksum = "be040f8b0a225e40375822a563fa9524378b9d63112f53e19ffff34df5d33fdd" +dependencies = [ + "zeroize", +] [[package]] name = "rustls-webpki" -version = "0.102.8" +version = "0.103.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64ca1bc8749bd4cf37b5ce386cc146580777b4e8572c7b97baf22c83f444bee9" +checksum = "d7df23109aa6c1567d1c575b9952556388da57401e4ace1d15f79eedad0d8f53" dependencies = [ "ring", "rustls-pki-types", @@ -1582,15 +1492,9 @@ dependencies = [ [[package]] name = "rustversion" -version = "1.0.19" +version = "1.0.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7c45b9784283f1b2e7fb61b42047c2fd678ef0960d4f6f1eba131594cc369d4" - -[[package]] -name = "ryu" -version = "1.0.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ea1a2d0a644769cc99faa24c3ad26b379b786fe7c36fd3c546254801650e6dd" +checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" [[package]] name = "same-file" @@ -1603,11 +1507,11 @@ dependencies = [ [[package]] name = "schannel" -version = "0.1.27" +version = "0.1.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f29ebaa345f945cec9fbbc532eb307f0fdad8161f281b6369539c8d84876b3d" +checksum = "891d81b926048e76efe18581bf793546b4c0eaf8448d72be8de2bbee5fd166e1" dependencies = [ - "windows-sys 0.59.0", + "windows-sys 0.61.2", ] [[package]] @@ -1618,9 +1522,9 @@ checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" [[package]] name = "security-framework" -version = "3.2.0" +version = "3.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "271720403f46ca04f7ba6f55d438f8bd878d6b8ca0a1046e8228c4145bcbb316" +checksum = "b7f4bc775c73d9a02cde8bf7b2ec4c9d12743edf609006c7facc23998404cd1d" dependencies = [ "bitflags", "core-foundation", @@ -1631,9 +1535,9 @@ dependencies = [ [[package]] name = "security-framework-sys" -version = "2.14.0" +version = "2.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49db231d56a190491cb4aeda9527f1ad45345af50b0851622a7adb8c03b01c32" +checksum = "6ce2691df843ecc5d231c0b14ece2acc3efb62c0a398c7e1d875f3983ce020e3" dependencies = [ "core-foundation-sys", "libc", @@ -1641,16 +1545,17 @@ dependencies = [ [[package]] name = "semver" -version = "1.0.25" +version = "1.0.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f79dfe2d285b0488816f30e700a7438c5a73d816b5b7d3ac72fbc48b0d185e03" +checksum = "d767eb0aabc880b29956c35734170f26ed551a859dbd361d140cdbeca61ab1e2" [[package]] name = "serde" -version = "1.0.217" +version = "1.0.228" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02fc4265df13d6fa1d00ecff087228cc0a2b5f3c0e87e258d8b94a156e984c70" +checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e" dependencies = [ + "serde_core", "serde_derive", ] @@ -1664,28 +1569,37 @@ dependencies = [ "serde", ] +[[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.217" +version = "1.0.228" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a9bf7cf98d04a2b28aead066b7496853d4779c9cc183c440dbac457641e19a0" +checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", "syn 2.0.117", ] [[package]] name = "serde_json" -version = "1.0.138" +version = "1.0.149" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d434192e7da787e94a6ea7e9670b26a036d0ca41e0b7efb2676dd32bae872949" +checksum = "83fc039473c5595ace860d8c4fafa220ff474b3fc6bfdb4293327f1a37e94d86" dependencies = [ "itoa", "memchr", - "ryu", "serde", + "serde_core", + "zmij", ] [[package]] @@ -1705,18 +1619,15 @@ checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" [[package]] name = "slab" -version = "0.4.9" +version = "0.4.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67" -dependencies = [ - "autocfg", -] +checksum = "0c790de23124f9ab44544d7ac05d60440adc586479ce501c1d6d7da3cd8c9cf5" [[package]] name = "smallvec" -version = "1.14.0" +version = "1.15.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fcf8323ef1faaee30a44a340193b1ac6814fd9b7b4e88e9d4519a3e4abe1cfd" +checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" [[package]] name = "smartstring" @@ -1731,14 +1642,24 @@ dependencies = [ [[package]] name = "socket2" -version = "0.5.8" +version = "0.5.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c970269d99b64e60ec3bd6ad27270092a5394c4e309314b18ae3fe575695fbe8" +checksum = "e22376abed350d73dd1cd119b57ffccad95b4e585a7cda43e286245ce23c0678" dependencies = [ "libc", "windows-sys 0.52.0", ] +[[package]] +name = "socket2" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3a766e1110788c36f4fa1c2b71b387a7815aa65f88ce0229841826633d93723e" +dependencies = [ + "libc", + "windows-sys 0.61.2", +] + [[package]] name = "static_assertions" version = "1.1.0" @@ -1776,10 +1697,8 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.98" version = "2.0.117" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36147f1a48ae0ec2b5b3bc5b537d267457555a10dc06f3dbc8cb11ba3006d3b1" checksum = "e665b8803e7b1d2a727f4023456bbbbe74da67099c585258af0ad9c5013b9b99" dependencies = [ "proc-macro2", @@ -1801,16 +1720,15 @@ checksum = "61c41af27dd6d1e27b1b16b489db798443478cef1f06a660c96db617ba5de3b1" [[package]] name = "tempfile" -version = "3.17.1" +version = "3.26.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22e5a0acb1f3f55f65cc4a866c361b2fb2a0ff6366785ae6fbb5f85df07ba230" +checksum = "82a72c767771b47409d2345987fda8628641887d5466101319899796367354a0" dependencies = [ - "cfg-if", "fastrand", - "getrandom 0.3.1", + "getrandom 0.4.2", "once_cell", "rustix", - "windows-sys 0.59.0", + "windows-sys 0.61.2", ] [[package]] @@ -1824,11 +1742,11 @@ dependencies = [ [[package]] name = "thiserror" -version = "2.0.11" +version = "2.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d452f284b73e6d76dd36758a0c8684b1d5be31f92b89d07fd5822175732206fc" +checksum = "4288b5bcbc7920c07a1149a35cf9590a2aa808e0bc1eafaade0b80947865fbc4" dependencies = [ - "thiserror-impl 2.0.11", + "thiserror-impl 2.0.18", ] [[package]] @@ -1839,65 +1757,60 @@ checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", "syn 2.0.117", ] [[package]] name = "thiserror-impl" -version = "2.0.11" +version = "2.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26afc1baea8a989337eeb52b6e72a039780ce45c3edfcc9c5b9d112feeb173c2" +checksum = "ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", "syn 2.0.117", ] [[package]] name = "thread_local" -version = "1.1.8" +version = "1.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b9ef9bad013ada3808854ceac7b46812a6465ba368859a37e2100283d2d719c" +checksum = "f60246a4944f24f6e018aa17cdeffb7818b76356965d03b07d6a9886e8962185" dependencies = [ "cfg-if", - "once_cell", ] [[package]] name = "tokio" -version = "1.43.0" +version = "1.50.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d61fa4ffa3de412bfea335c6ecff681de2b609ba3c77ef3e00e521813a9ed9e" +checksum = "27ad5e34374e03cfffefc301becb44e9dc3c17584f414349ebe29ed26661822d" dependencies = [ - "backtrace", "bytes", "libc", "mio", "pin-project-lite", - "socket2", + "socket2 0.6.3", "tokio-macros", - "windows-sys 0.52.0", + "windows-sys 0.61.2", ] [[package]] name = "tokio-macros" -version = "2.5.0" +version = "2.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e06d43f1345a3bcd39f6a56dbb7dcab2ba47e68e8ac134855e7e2bdbaf8cab8" +checksum = "5c55a2eff8b69ce66c84f85e1da1c233edc36ceb85a2058d11b0d6a3c7e7569c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", "syn 2.0.117", ] [[package]] name = "tokio-rustls" -version = "0.26.1" +version = "0.26.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f6d0975eaace0cf0fcadee4e4aaa5da15b5c079146f2cffb67c113be122bf37" +checksum = "1729aa945f29d91ba541258c8df89027d5792d85a8841fb65e8bf0f4ede4ef61" dependencies = [ "rustls", "tokio", @@ -1905,9 +1818,9 @@ dependencies = [ [[package]] name = "tokio-stream" -version = "0.1.17" +version = "0.1.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eca58d7bba4a75707817a2c44174253f9236b2d5fbd055602e9d5c07c139a047" +checksum = "32da49809aab5c3bc678af03902d4ccddea2a87d028d86392a4b1560c6906c70" dependencies = [ "futures-core", "pin-project-lite", @@ -1916,9 +1829,9 @@ dependencies = [ [[package]] name = "tokio-util" -version = "0.7.13" +version = "0.7.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7fcaa8d55a2bdd6b83ace262b016eca0d79ee02818c5c1bcdf0305114081078" +checksum = "9ae9cec805b01e8fc3fd2fe289f89149a9b66dd16786abd8b19cfa7b48cb0098" dependencies = [ "bytes", "futures-core", @@ -1929,9 +1842,9 @@ dependencies = [ [[package]] name = "toml_datetime" -version = "0.6.8" +version = "0.6.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0dd7358ecb8fc2f8d014bf86f6f638ce72ba252a2c3a2572f2a795f1d23efb41" +checksum = "22cddaf88f4fbc13c51aebbf5f8eceb5c7c5a9da2ac40a13519eb5b0a0e8f11c" [[package]] name = "toml_edit" @@ -1939,7 +1852,7 @@ version = "0.19.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421" dependencies = [ - "indexmap 2.7.1", + "indexmap 2.13.0", "toml_datetime", "winnow", ] @@ -1967,7 +1880,7 @@ dependencies = [ "prost", "rustls-native-certs", "rustls-pemfile", - "socket2", + "socket2 0.5.10", "tokio", "tokio-rustls", "tokio-stream", @@ -1982,39 +1895,13 @@ name = "tonic-build" version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9557ce109ea773b399c9b9e5dca39294110b74f1f342cb347a80d1fce8c26a11" -version = "0.14.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "18262cdd13dec66e8e3f2e3fe535e4b2cc706fab444a7d3678d75d8ac2557329" -dependencies = [ - "prettyplease", - "proc-macro2", - "quote", - "syn 2.0.117", -] - -[[package]] -name = "tonic-prost" -version = "0.14.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d8b5b7a44512c59f5ad45e0c40e53263cbbf4426d74fe6b569e04f1d4206e9c" -dependencies = [ - "bytes", - "prost", - "tonic", -] - -[[package]] -name = "tonic-prost-build" -version = "0.14.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "114cca66d757d72422ef8cccf8be3065321860ac9fa4be73aab37a8a20a9a805" dependencies = [ "prettyplease", "proc-macro2", "prost-build", "prost-types", "quote", - "syn 2.0.98", + "syn 2.0.117", ] [[package]] @@ -2035,16 +1922,13 @@ dependencies = [ "tower-layer", "tower-service", "tracing", - "syn 2.0.117", - "tempfile", - "tonic-build", ] [[package]] name = "tower" -version = "0.5.2" +version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d039ad9159c98b70ecfd540b2573b97f7f52c3e8d9f8ad57a24b916a536975f9" +checksum = "ebe5ef63511595f1344e2d5cfa636d973292adc0eec1f0ad45fae9f0851ab1d4" dependencies = [ "futures-core", "futures-util", @@ -2068,9 +1952,9 @@ checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" [[package]] name = "tracing" -version = "0.1.41" +version = "0.1.44" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0" +checksum = "63e71662fa4b2a2c3a26f570f037eb95bb1f85397f3cd8076caed2f026a6d100" dependencies = [ "pin-project-lite", "tracing-attributes", @@ -2079,21 +1963,20 @@ dependencies = [ [[package]] name = "tracing-attributes" -version = "0.1.28" +version = "0.1.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "395ae124c09f9e6918a2310af6038fba074bcf474ac352496d5910dd59a2226d" +checksum = "7490cfa5ec963746568740651ac6781f701c9c5ea257c58e057f3ba8cf69e8da" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", "syn 2.0.117", ] [[package]] name = "tracing-core" -version = "0.1.33" +version = "0.1.36" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e672c95779cf947c5311f83787af4fa8fffd12fb27e4993211a84bdfd9610f9c" +checksum = "db97caf9d906fbde555dd62fa95ddba9eecfd14cb388e4f491a66d74cd5fb79a" dependencies = [ "once_cell", "valuable", @@ -2112,9 +1995,9 @@ dependencies = [ [[package]] name = "tracing-subscriber" -version = "0.3.19" +version = "0.3.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8189decb5ac0fa7bc8b96b7cb9b2701d60d48805aca84a238004d665fcc4008" +checksum = "2f30143827ddab0d256fd843b7a66d164e9f271cfa0dde49142c5ca0ca291f1e" dependencies = [ "nu-ansi-term", "sharded-slab", @@ -2142,15 +2025,15 @@ dependencies = [ [[package]] name = "typeid" -version = "1.0.2" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e13db2e0ccd5e14a544e8a246ba2312cd25223f616442d7f2cb0e3db614236e" +checksum = "bc7d623258602320d5c55d1bc22793b57daff0ec7efc270ea7d55ce1d5f5471c" [[package]] name = "unicode-ident" -version = "1.0.16" +version = "1.0.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a210d160f08b701c8721ba1c726c11662f877ea6b7094007e1ca9a1041945034" +checksum = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75" [[package]] name = "unicode-segmentation" @@ -2158,11 +2041,17 @@ version = "1.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493" +[[package]] +name = "unicode-xid" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" + [[package]] name = "unindent" -version = "0.2.3" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7de7d73e1754487cb58364ee906a499937a0dfabd86bcb980fa99ec8c8fa2ce" +checksum = "7264e107f553ccae879d21fbea1d6724ac785e8c3bfc762137959b5802826ef3" [[package]] name = "untrusted" @@ -2172,12 +2061,14 @@ checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" [[package]] name = "uuid" -version = "1.13.2" +version = "1.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c1f41ffb7cf259f1ecc2876861a17e7142e63ead296f671f81f6ae85903e0d6" +checksum = "a68d3c8f01c0cfa54a75291d83601161799e4a89a39e0929f4b0354d88757a37" dependencies = [ - "getrandom 0.3.1", - "serde", + "getrandom 0.4.2", + "js-sys", + "serde_core", + "wasm-bindgen", ] [[package]] @@ -2213,51 +2104,46 @@ dependencies = [ [[package]] name = "wasi" -version = "0.11.0+wasi-snapshot-preview1" +version = "0.11.1+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" +checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" [[package]] -name = "wasi" -version = "0.13.3+wasi-0.2.2" +name = "wasip2" +version = "1.0.2+wasi-0.2.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26816d2e1a4a36a2940b96c5296ce403917633dff8f3440e9b236ed6f6bacad2" +checksum = "9517f9239f02c069db75e65f174b3da828fe5f5b945c4dd26bd25d89c03ebcf5" dependencies = [ - "wit-bindgen-rt", + "wit-bindgen", ] [[package]] -name = "wasm-bindgen" -version = "0.2.100" +name = "wasip3" +version = "0.4.0+wasi-0.3.0-rc-2026-01-06" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1edc8929d7499fc4e8f0be2262a241556cfc54a0bea223790e71446f2aab1ef5" +checksum = "5428f8bf88ea5ddc08faddef2ac4a67e390b88186c703ce6dbd955e1c145aca5" dependencies = [ - "cfg-if", - "once_cell", - "rustversion", - "wasm-bindgen-macro", + "wit-bindgen", ] [[package]] -name = "wasm-bindgen-backend" -version = "0.2.100" +name = "wasm-bindgen" +version = "0.2.114" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f0a0651a5c2bc21487bde11ee802ccaf4c51935d0d3d42a6101f98161700bc6" +checksum = "6532f9a5c1ece3798cb1c2cfdba640b9b3ba884f5db45973a6f442510a87d38e" dependencies = [ - "bumpalo", - "log", - "proc-macro2", - "quote", - "syn 2.0.98", - "syn 2.0.117", + "cfg-if", + "once_cell", + "rustversion", + "wasm-bindgen-macro", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-macro" -version = "0.2.100" +version = "0.2.114" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fe63fc6d09ed3792bd0897b314f53de8e16568c2b3f7982f468c0bf9bd0b407" +checksum = "18a2d50fcf105fb33bb15f00e7a77b772945a2ee45dcf454961fd843e74c18e6" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -2265,27 +2151,60 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.100" +version = "0.2.114" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ae87ea40c9f689fc23f209965b6fb8a99ad69aeeb0231408be24920604395de" +checksum = "03ce4caeaac547cdf713d280eda22a730824dd11e6b8c3ca9e42247b25c631e3" dependencies = [ + "bumpalo", "proc-macro2", "quote", - "syn 2.0.98", "syn 2.0.117", - "wasm-bindgen-backend", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.100" +version = "0.2.114" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a05d73b933a847d6cccdda8f838a22ff101ad9bf93e33684f39c1f5f0eece3d" +checksum = "75a326b8c223ee17883a4251907455a2431acc2791c98c26279376490c378c16" dependencies = [ "unicode-ident", ] +[[package]] +name = "wasm-encoder" +version = "0.244.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "990065f2fe63003fe337b932cfb5e3b80e0b4d0f5ff650e6985b1048f62c8319" +dependencies = [ + "leb128fmt", + "wasmparser", +] + +[[package]] +name = "wasm-metadata" +version = "0.244.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb0e353e6a2fbdc176932bbaab493762eb1255a7900fe0fea1a2f96c296cc909" +dependencies = [ + "anyhow", + "indexmap 2.13.0", + "wasm-encoder", + "wasmparser", +] + +[[package]] +name = "wasmparser" +version = "0.244.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "47b807c72e1bac69382b3a6fb3dbe8ea4c0ed87ff5629b8685ae6b9a611028fe" +dependencies = [ + "bitflags", + "hashbrown 0.15.5", + "indexmap 2.13.0", + "semver", +] + [[package]] name = "winapi" version = "0.3.9" @@ -2304,11 +2223,11 @@ checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" [[package]] name = "winapi-util" -version = "0.1.9" +version = "0.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb" +checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22" dependencies = [ - "windows-sys 0.59.0", + "windows-sys 0.61.2", ] [[package]] @@ -2319,27 +2238,22 @@ checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" [[package]] name = "windows-core" -version = "0.52.0" +version = "0.62.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9" -dependencies = [ - "windows-targets 0.52.6", -version = "0.61.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0fdd3ddb90610c7638aa2b3a3ab2904fb9e5cdbecc643ddb3647212781c4ae3" +checksum = "b8e83a14d34d0623b51dce9581199302a221863196a1dde71a7663a4c2be9deb" dependencies = [ "windows-implement", "windows-interface", - "windows-link 0.1.3", + "windows-link", "windows-result", "windows-strings", ] [[package]] name = "windows-implement" -version = "0.60.0" +version = "0.60.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a47fddd13af08290e67f4acabf4b459f647552718f683a7b415d290ac744a836" +checksum = "053e2e040ab57b9dc951b72c264860db7eb3b0200ba345b4e4c3b14f67855ddf" dependencies = [ "proc-macro2", "quote", @@ -2348,21 +2262,15 @@ dependencies = [ [[package]] name = "windows-interface" -version = "0.59.1" +version = "0.59.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd9211b69f8dcdfa817bfd14bf1c97c9188afa36f4750130fcdf3f400eca9fa8" +checksum = "3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358" dependencies = [ "proc-macro2", "quote", "syn 2.0.117", ] -[[package]] -name = "windows-link" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e6ad25900d524eaabdbbb96d20b4311e1e7ae1699af4fb28c17ae66c80d798a" - [[package]] name = "windows-link" version = "0.2.1" @@ -2371,20 +2279,20 @@ checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5" [[package]] name = "windows-result" -version = "0.3.4" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56f42bd332cc6c8eac5af113fc0c1fd6a8fd2aa08a0119358686e5160d0586c6" +checksum = "7781fa89eaf60850ac3d2da7af8e5242a5ea78d1a11c49bf2910bb5a73853eb5" dependencies = [ - "windows-link 0.1.3", + "windows-link", ] [[package]] name = "windows-strings" -version = "0.4.2" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56e6c93f3a0c3b36176cb1327a4958a0353d5d166c2a35cb268ace15e91d3b57" +checksum = "7837d08f69c77cf6b07689544538e017c1bfcf57e34b4c0ff58e6c2cd3b37091" dependencies = [ - "windows-link 0.1.3", + "windows-link", ] [[package]] @@ -2407,11 +2315,11 @@ dependencies = [ [[package]] name = "windows-sys" -version = "0.59.0" +version = "0.61.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" +checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc" dependencies = [ - "windows-targets 0.52.6", + "windows-link", ] [[package]] @@ -2545,12 +2453,91 @@ dependencies = [ ] [[package]] -name = "wit-bindgen-rt" -version = "0.33.0" +name = "wit-bindgen" +version = "0.51.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d7249219f66ced02969388cf2bb044a09756a083d0fab1e566056b04d9fbcaa5" +dependencies = [ + "wit-bindgen-rust-macro", +] + +[[package]] +name = "wit-bindgen-core" +version = "0.51.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea61de684c3ea68cb082b7a88508a8b27fcc8b797d738bfc99a82facf1d752dc" +dependencies = [ + "anyhow", + "heck", + "wit-parser", +] + +[[package]] +name = "wit-bindgen-rust" +version = "0.51.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b7c566e0f4b284dd6561c786d9cb0142da491f46a9fbed79ea69cdad5db17f21" +dependencies = [ + "anyhow", + "heck", + "indexmap 2.13.0", + "prettyplease", + "syn 2.0.117", + "wasm-metadata", + "wit-bindgen-core", + "wit-component", +] + +[[package]] +name = "wit-bindgen-rust-macro" +version = "0.51.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c0f9bfd77e6a48eccf51359e3ae77140a7f50b1e2ebfe62422d8afdaffab17a" +dependencies = [ + "anyhow", + "prettyplease", + "proc-macro2", + "quote", + "syn 2.0.117", + "wit-bindgen-core", + "wit-bindgen-rust", +] + +[[package]] +name = "wit-component" +version = "0.244.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3268f3d866458b787f390cf61f4bbb563b922d091359f9608842999eaee3943c" +checksum = "9d66ea20e9553b30172b5e831994e35fbde2d165325bec84fc43dbf6f4eb9cb2" dependencies = [ + "anyhow", "bitflags", + "indexmap 2.13.0", + "log", + "serde", + "serde_derive", + "serde_json", + "wasm-encoder", + "wasm-metadata", + "wasmparser", + "wit-parser", +] + +[[package]] +name = "wit-parser" +version = "0.244.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ecc8ac4bc1dc3381b7f59c34f00b67e18f910c2c0f50015669dde7def656a736" +dependencies = [ + "anyhow", + "id-arena", + "indexmap 2.13.0", + "log", + "semver", + "serde", + "serde_derive", + "serde_json", + "unicode-xid", + "wasmparser", ] [[package]] @@ -2561,28 +2548,32 @@ checksum = "fdd20c5420375476fbd4394763288da7eb0cc0b8c11deed431a91562af7335d3" [[package]] name = "zerocopy" -version = "0.7.35" +version = "0.8.42" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0" +checksum = "f2578b716f8a7a858b7f02d5bd870c14bf4ddbbcf3a4c05414ba6503640505e3" dependencies = [ - "byteorder", "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.7.35" +version = "0.8.42" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" +checksum = "7e6cc098ea4d3bd6246687de65af3f920c430e236bee1e3bf2e441463f08a02f" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", "syn 2.0.117", ] [[package]] name = "zeroize" -version = "1.8.1" +version = "1.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b97154e67e32c85465826e8bcc1c59429aaaf107c1e4a9e53c8d8ccd5eff88d0" + +[[package]] +name = "zmij" +version = "1.0.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde" +checksum = "b8848ee67ecc8aedbaf3e4122217aff892639231befc6a1b58d29fff4c2cabaa" From b45c62dd2fe38a675e5b9382340035c4f840f166 Mon Sep 17 00:00:00 2001 From: alemi Date: Mon, 9 Mar 2026 22:40:20 +0100 Subject: [PATCH 03/13] chore: move files around so it's easier to manage feature flag switches --- Cargo.toml | 1 + src/tests/{ffi_coverage.rs => coverage.rs} | 4 + src/tests/{ => e2e}/client.rs | 0 src/tests/{ => e2e}/fixtures.rs | 0 src/tests/e2e/mod.rs | 101 ++++++++++++++++++++ src/tests/{ => e2e}/server.rs | 0 src/tests/mod.rs | 105 +-------------------- 7 files changed, 110 insertions(+), 101 deletions(-) rename src/tests/{ffi_coverage.rs => coverage.rs} (98%) rename src/tests/{ => e2e}/client.rs (100%) rename src/tests/{ => e2e}/fixtures.rs (100%) create mode 100644 src/tests/e2e/mod.rs rename src/tests/{ => e2e}/server.rs (100%) diff --git a/Cargo.toml b/Cargo.toml index d1a1c34d..b8b1283f 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -70,6 +70,7 @@ async-trait = ["dep:async-trait"] serialize = ["dep:serde", "uuid/serde"] # special tests which require more setup test-e2e = [] +test-coverage = [] # ffi java = ["dep:jni", "dep:tracing-subscriber", "dep:jni-toolbox"] js = ["dep:napi-build", "dep:tracing-subscriber", "dep:napi", "dep:napi-derive"] diff --git a/src/tests/ffi_coverage.rs b/src/tests/coverage.rs similarity index 98% rename from src/tests/ffi_coverage.rs rename to src/tests/coverage.rs index 38c6b423..0831d502 100644 --- a/src/tests/ffi_coverage.rs +++ b/src/tests/coverage.rs @@ -160,6 +160,7 @@ fn missing_lang_coverage( } #[test] +#[cfg(all(test, feature = "py"))] fn python_ffi_should_cover_rust_api_surface() { let targets = &[ "Client", @@ -197,6 +198,7 @@ fn python_ffi_should_cover_rust_api_surface() { } #[test] +#[cfg(all(test, feature = "js"))] fn javascript_ffi_should_cover_rust_api_surface() { let targets = &[ "Client", @@ -235,6 +237,7 @@ fn javascript_ffi_should_cover_rust_api_surface() { } #[test] +#[cfg(all(test, feature = "lua"))] fn lua_ffi_should_cover_rust_api_surface() { let targets = &[ "Client", @@ -273,6 +276,7 @@ fn lua_ffi_should_cover_rust_api_surface() { } #[test] +#[cfg(all(test, feature = "java"))] fn java_ffi_should_cover_rust_api_surface() { let targets = &[ "Client", diff --git a/src/tests/client.rs b/src/tests/e2e/client.rs similarity index 100% rename from src/tests/client.rs rename to src/tests/e2e/client.rs diff --git a/src/tests/fixtures.rs b/src/tests/e2e/fixtures.rs similarity index 100% rename from src/tests/fixtures.rs rename to src/tests/e2e/fixtures.rs diff --git a/src/tests/e2e/mod.rs b/src/tests/e2e/mod.rs new file mode 100644 index 00000000..ce622965 --- /dev/null +++ b/src/tests/e2e/mod.rs @@ -0,0 +1,101 @@ +#[cfg(test)] +mod client; + +#[cfg(test)] +mod server; + +pub mod fixtures; + +use crate::errors::{ConnectionError, RemoteError}; + +#[derive(Debug)] +pub struct AssertionError(String); + +impl AssertionError { + pub fn new(msg: &str) -> Self { + Self(msg.to_string()) + } +} + +impl std::fmt::Display for AssertionError { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + write!(f, "{}", self.0) + } +} + +impl std::error::Error for AssertionError {} + +impl From for AssertionError { + fn from(value: ConnectionError) -> Self { + match value { + ConnectionError::Transport(error) => AssertionError::new(&format!( + "Connection::Transport error during setup of a test: {}", + error, + )), + ConnectionError::Remote(remote_error) => AssertionError::new(&format!( + "Connection::Remote error during setup of a test: {}", + remote_error, + )), + } + } +} + +impl From for AssertionError { + fn from(value: RemoteError) -> Self { + AssertionError::new(&format!("Remote error during setup of a test: {}", value,)) + } +} + +#[macro_export] +macro_rules! assert_or_err { + ($s:expr) => { + #[allow(clippy::bool_comparison)] + if !$s { + return Err($crate::tests::e2e::AssertionError::new(&format!( + "assertion failed at line {}: {}", + std::line!(), + stringify!($s) + )) + .into()); + } + }; + ($s:expr, $msg:literal) => { + #[allow(clippy::bool_comparison)] + if !$s { + return Err($crate::tests::e2e::AssertionError::new(&format!( + "{} (line {})", + $msg, + std::line!(), + )) + .into()); + } + }; + ($s:expr, raw $msg:literal) => { + #[allow(clippy::bool_comparison)] + if !$s { + return Err($crate::tests::e2e::AssertionError::new($msg).into()); + } + }; +} + +pub use assert_or_err; + +#[macro_export] +macro_rules! fixture { + ($fixture:expr => | $($arg:ident),* | $body:expr) => { + #[allow(unused_parens)] + $fixture + .with(|($($arg),*)| { + $( + let $arg = $arg.clone(); + )* + + async move { + $body + } + }) + .await; + }; +} + +pub use fixture; diff --git a/src/tests/server.rs b/src/tests/e2e/server.rs similarity index 100% rename from src/tests/server.rs rename to src/tests/e2e/server.rs diff --git a/src/tests/mod.rs b/src/tests/mod.rs index 98de6bd9..87da4d26 100644 --- a/src/tests/mod.rs +++ b/src/tests/mod.rs @@ -1,102 +1,5 @@ -#[cfg(all(test, feature = "test-e2e"))] -mod client; +#[cfg(feature = "test-e2e")] +pub mod e2e; -#[cfg(all(test, feature = "test-e2e"))] -mod server; - -mod ffi_coverage; - -pub mod fixtures; -use crate::errors::{ConnectionError, RemoteError}; - -#[derive(Debug)] -pub struct AssertionError(String); - -impl AssertionError { - pub fn new(msg: &str) -> Self { - Self(msg.to_string()) - } -} - -impl std::fmt::Display for AssertionError { - fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - write!(f, "{}", self.0) - } -} - -impl std::error::Error for AssertionError {} - -impl From for AssertionError { - fn from(value: ConnectionError) -> Self { - match value { - ConnectionError::Transport(error) => AssertionError::new(&format!( - "Connection::Transport error during setup of a test: {}", - error, - )), - ConnectionError::Remote(remote_error) => AssertionError::new(&format!( - "Connection::Remote error during setup of a test: {}", - remote_error, - )), - } - } -} - -impl From for AssertionError { - fn from(value: RemoteError) -> Self { - AssertionError::new(&format!("Remote error during setup of a test: {}", value,)) - } -} - -#[macro_export] -macro_rules! assert_or_err { - ($s:expr) => { - #[allow(clippy::bool_comparison)] - if !$s { - return Err($crate::tests::AssertionError::new(&format!( - "assertion failed at line {}: {}", - std::line!(), - stringify!($s) - )) - .into()); - } - }; - ($s:expr, $msg:literal) => { - #[allow(clippy::bool_comparison)] - if !$s { - return Err($crate::tests::AssertionError::new(&format!( - "{} (line {})", - $msg, - std::line!(), - )) - .into()); - } - }; - ($s:expr, raw $msg:literal) => { - #[allow(clippy::bool_comparison)] - if !$s { - return Err($crate::tests::AssertionError::new($msg).into()); - } - }; -} - -pub use assert_or_err; - -#[macro_export] -macro_rules! fixture { - ($fixture:expr => | $($arg:ident),* | $body:expr) => { - #[allow(unused_parens)] - $fixture - .with(|($($arg),*)| { - $( - let $arg = $arg.clone(); - )* - - async move { - $body - } - }) - .await; - }; -} - -pub use fixture; +#[cfg(feature = "test-coverage")] +mod coverage; From 99b1a436e646ee983a2f28198b1d28d50ba26443 Mon Sep 17 00:00:00 2001 From: alemi Date: Mon, 9 Mar 2026 22:40:44 +0100 Subject: [PATCH 04/13] ci: add test-coverage, one per language they could all run together but it's convenient to have 4 different checks on github, easy to see right away --- .github/workflows/test.yml | 40 ++++++++++++++++++++++++++++---------- 1 file changed, 30 insertions(+), 10 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 8d3d55e8..bb84d885 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -49,8 +49,31 @@ jobs: toolchain: ${{ matrix.toolchain }} - run: cargo test --verbose - test-functional: + test-build: needs: [test-unit] + runs-on: ${{ matrix.runner }} + strategy: + fail-fast: false + matrix: + runner: + - ubuntu-latest + - windows-latest + - macos-latest + features: + - java + - js + - py + - lua + steps: + - uses: arduino/setup-protoc@v3 + with: + repo-token: ${{ secrets.GITHUB_TOKEN }} + - uses: actions/checkout@v4 + - uses: dtolnay/rust-toolchain@stable + - run: cargo build --release --verbose --features=${{ matrix.features }} + + test-functional: + needs: [test-build] runs-on: ubuntu-latest steps: - uses: arduino/setup-protoc@v3 @@ -58,23 +81,19 @@ jobs: repo-token: ${{ secrets.GITHUB_TOKEN }} - uses: actions/checkout@v4 - uses: dtolnay/rust-toolchain@stable - - run: cargo test --verbose --features=test-e2e + - run: cargo test --verbose --features=test-e2e tests::e2e env: CODEMP_TEST_USERNAME_ALICE: ${{ secrets.CODEMP_TEST_USERNAME_ALICE }} CODEMP_TEST_PASSWORD_ALICE: ${{ secrets.CODEMP_TEST_PASSWORD_ALICE }} CODEMP_TEST_USERNAME_BOB: ${{ secrets.CODEMP_TEST_USERNAME_BOB }} CODEMP_TEST_PASSWORD_BOB: ${{ secrets.CODEMP_TEST_PASSWORD_BOB }} - test-build: - needs: [test-functional] - runs-on: ${{ matrix.runner }} + test-coverage: + needs: [test-build] + runs-on: ubuntu-latest strategy: fail-fast: false matrix: - runner: - - ubuntu-latest - - windows-latest - - macos-latest features: - java - js @@ -86,4 +105,5 @@ jobs: repo-token: ${{ secrets.GITHUB_TOKEN }} - uses: actions/checkout@v4 - uses: dtolnay/rust-toolchain@stable - - run: cargo build --release --verbose --features=${{ matrix.features }} + - run: cargo test --verbose --features=test-coverage,${{ matrix.features }} tests::coverage + From 418c1150d470bfe98d5b17328f21466e1a91a052 Mon Sep 17 00:00:00 2001 From: alemi Date: Mon, 9 Mar 2026 22:45:54 +0100 Subject: [PATCH 05/13] ci: dont test-build in release --- .github/workflows/test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index bb84d885..88f11291 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -70,7 +70,7 @@ jobs: repo-token: ${{ secrets.GITHUB_TOKEN }} - uses: actions/checkout@v4 - uses: dtolnay/rust-toolchain@stable - - run: cargo build --release --verbose --features=${{ matrix.features }} + - run: cargo build --verbose --features=${{ matrix.features }} test-functional: needs: [test-build] From 16e04f570c77b33f8cd90bcdbf945db53763cc66 Mon Sep 17 00:00:00 2001 From: alemi Date: Tue, 10 Mar 2026 11:06:26 +0100 Subject: [PATCH 06/13] fix: pyo3 no longer crashes in tests this is probably useless once we bump pyo3 but at least we know how to fix it now --- .github/workflows/test.yml | 2 +- Cargo.toml | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 88f11291..f37df651 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -105,5 +105,5 @@ jobs: repo-token: ${{ secrets.GITHUB_TOKEN }} - uses: actions/checkout@v4 - uses: dtolnay/rust-toolchain@stable - - run: cargo test --verbose --features=test-coverage,${{ matrix.features }} tests::coverage + - run: cargo test --no-default-features --features=${{ matrix.features }},test-coverage,py-abi3 tests::coverage diff --git a/Cargo.toml b/Cargo.toml index b8b1283f..91765ec8 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -50,7 +50,7 @@ napi = { version = "2.16", features = ["full"], optional = true } napi-derive = { version="2.16", optional = true} # glue (python) -pyo3 = { version = "0.23", features = ["extension-module", "multiple-pymethods"], optional = true} +pyo3 = { version = "0.23", features = ["multiple-pymethods"], optional = true} # extra async-trait = { version = "0.1", optional = true } @@ -64,7 +64,7 @@ napi-build = { version = "2.1", optional = true } pyo3-build-config = { version = "0.23", optional = true } [features] -default = ["lua-jit", "py-abi3"] +default = ["lua-jit", "py-abi3", "py-extmod"] # extra async-trait = ["dep:async-trait"] serialize = ["dep:serde", "uuid/serde"] @@ -80,6 +80,7 @@ lua = ["serialize", "dep:mlua", "dep:tracing-subscriber"] lua-jit = ["mlua?/luajit"] lua-54 = ["mlua?/lua54"] py-abi3 = ["pyo3?/abi3-py38"] +py-extmod = ["pyo3?/extension-module"] [package.metadata.docs.rs] # enabled features when building on docs.rs From a51315a75af68fc8c201654c85d4362999f2ecc5 Mon Sep 17 00:00:00 2001 From: alemi Date: Tue, 10 Mar 2026 11:15:40 +0100 Subject: [PATCH 07/13] ci: also include lua feature --- .github/workflows/test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index f37df651..271e6224 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -105,5 +105,5 @@ jobs: repo-token: ${{ secrets.GITHUB_TOKEN }} - uses: actions/checkout@v4 - uses: dtolnay/rust-toolchain@stable - - run: cargo test --no-default-features --features=${{ matrix.features }},test-coverage,py-abi3 tests::coverage + - run: cargo test --no-default-features --features=${{ matrix.features }},test-coverage,py-abi3,lua-jit tests::coverage From f6a9024435153bd4f63c54fa8efe9944e1ded07c Mon Sep 17 00:00:00 2001 From: alemi Date: Tue, 10 Mar 2026 11:31:14 +0100 Subject: [PATCH 08/13] ci: fancy test reports i wish it was easier but apparently we need 2 actions and all this setup to make it work... --- .github/workflows/test.yml | 52 +++++++++++++++++++++++++++++++++++--- 1 file changed, 48 insertions(+), 4 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 271e6224..c10163f2 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -18,7 +18,18 @@ jobs: repo-token: ${{ secrets.GITHUB_TOKEN }} - uses: actions/checkout@v4 - uses: dtolnay/rust-toolchain@stable - - run: cargo test --verbose + - run: cargo test --format json --report-time | tee result.json + - uses: innoq/action-cargo-test-report + id: cargo_reporter + with: + cargo-test-report-json: 'results.json' + - uses: mikepenz/action-junit-report@main + if: always() + with: + check_name: Unit+Doc tests report + fail_on_failure: true + require_tests: true + summary: ${{ steps.cargo_reporter.outputs.summary }} test-doc: runs-on: ubuntu-latest @@ -47,7 +58,18 @@ jobs: - uses: dtolnay/rust-toolchain@master with: toolchain: ${{ matrix.toolchain }} - - run: cargo test --verbose + - run: cargo test --format json --report-time | tee result.json + - uses: innoq/action-cargo-test-report + id: cargo_reporter + with: + cargo-test-report-json: 'result.json' + - uses: mikepenz/action-junit-report@main + if: always() + with: + check_name: Beta+Nightly tests report + fail_on_failure: true + require_tests: true + summary: ${{ steps.cargo_reporter.outputs.summary }} test-build: needs: [test-unit] @@ -81,12 +103,23 @@ jobs: repo-token: ${{ secrets.GITHUB_TOKEN }} - uses: actions/checkout@v4 - uses: dtolnay/rust-toolchain@stable - - run: cargo test --verbose --features=test-e2e tests::e2e + - run: cargo test --format json --report-time --features=test-e2e tests::e2e | tee result.json env: CODEMP_TEST_USERNAME_ALICE: ${{ secrets.CODEMP_TEST_USERNAME_ALICE }} CODEMP_TEST_PASSWORD_ALICE: ${{ secrets.CODEMP_TEST_PASSWORD_ALICE }} CODEMP_TEST_USERNAME_BOB: ${{ secrets.CODEMP_TEST_USERNAME_BOB }} CODEMP_TEST_PASSWORD_BOB: ${{ secrets.CODEMP_TEST_PASSWORD_BOB }} + - uses: innoq/action-cargo-test-report + id: cargo_reporter + with: + cargo-test-report-json: 'result.json' + - uses: mikepenz/action-junit-report@main + if: always() + with: + check_name: Functional tests report + fail_on_failure: true + require_tests: true + summary: ${{ steps.cargo_reporter.outputs.summary }} test-coverage: needs: [test-build] @@ -105,5 +138,16 @@ jobs: repo-token: ${{ secrets.GITHUB_TOKEN }} - uses: actions/checkout@v4 - uses: dtolnay/rust-toolchain@stable - - run: cargo test --no-default-features --features=${{ matrix.features }},test-coverage,py-abi3,lua-jit tests::coverage + - run: cargo test --format json --report-time --no-default-features --features=${{ matrix.features }},test-coverage,py-abi3,lua-jit tests::coverage | tee result.json + - uses: innoq/action-cargo-test-report + id: cargo_reporter + with: + cargo-test-report-json: 'result.json' + - uses: mikepenz/action-junit-report@main + if: always() + with: + check_name: FFI Coverage tests report + fail_on_failure: true + require_tests: true + summary: ${{ steps.cargo_reporter.outputs.summary }} From 8d8fef2d3a546ad0d47102c0e25b2766106f718c Mon Sep 17 00:00:00 2001 From: alemi Date: Tue, 10 Mar 2026 11:35:33 +0100 Subject: [PATCH 09/13] ci: needs @v1 ? --- .github/workflows/test.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index c10163f2..655ba957 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -19,7 +19,7 @@ jobs: - uses: actions/checkout@v4 - uses: dtolnay/rust-toolchain@stable - run: cargo test --format json --report-time | tee result.json - - uses: innoq/action-cargo-test-report + - uses: innoq/action-cargo-test-report@v1 id: cargo_reporter with: cargo-test-report-json: 'results.json' @@ -59,7 +59,7 @@ jobs: with: toolchain: ${{ matrix.toolchain }} - run: cargo test --format json --report-time | tee result.json - - uses: innoq/action-cargo-test-report + - uses: innoq/action-cargo-test-report@v1 id: cargo_reporter with: cargo-test-report-json: 'result.json' @@ -109,7 +109,7 @@ jobs: CODEMP_TEST_PASSWORD_ALICE: ${{ secrets.CODEMP_TEST_PASSWORD_ALICE }} CODEMP_TEST_USERNAME_BOB: ${{ secrets.CODEMP_TEST_USERNAME_BOB }} CODEMP_TEST_PASSWORD_BOB: ${{ secrets.CODEMP_TEST_PASSWORD_BOB }} - - uses: innoq/action-cargo-test-report + - uses: innoq/action-cargo-test-report@v1 id: cargo_reporter with: cargo-test-report-json: 'result.json' @@ -139,7 +139,7 @@ jobs: - uses: actions/checkout@v4 - uses: dtolnay/rust-toolchain@stable - run: cargo test --format json --report-time --no-default-features --features=${{ matrix.features }},test-coverage,py-abi3,lua-jit tests::coverage | tee result.json - - uses: innoq/action-cargo-test-report + - uses: innoq/action-cargo-test-report@v1 id: cargo_reporter with: cargo-test-report-json: 'result.json' From 7617f615e844394dd332d6556c5a0f60eaaa2d7c Mon Sep 17 00:00:00 2001 From: alemi Date: Tue, 10 Mar 2026 11:40:51 +0100 Subject: [PATCH 10/13] ci: oops? --- .github/workflows/test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 655ba957..2b1afd10 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -22,7 +22,7 @@ jobs: - uses: innoq/action-cargo-test-report@v1 id: cargo_reporter with: - cargo-test-report-json: 'results.json' + cargo-test-report-json: 'result.json' - uses: mikepenz/action-junit-report@main if: always() with: From 72d14528d9e296414a033a4acc438e4867a30519 Mon Sep 17 00:00:00 2001 From: alemi Date: Tue, 10 Mar 2026 11:46:06 +0100 Subject: [PATCH 11/13] ci: whatever its too complex, maybe another time --- .github/workflows/test.yml | 52 +++----------------------------------- 1 file changed, 4 insertions(+), 48 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 2b1afd10..271e6224 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -18,18 +18,7 @@ jobs: repo-token: ${{ secrets.GITHUB_TOKEN }} - uses: actions/checkout@v4 - uses: dtolnay/rust-toolchain@stable - - run: cargo test --format json --report-time | tee result.json - - uses: innoq/action-cargo-test-report@v1 - id: cargo_reporter - with: - cargo-test-report-json: 'result.json' - - uses: mikepenz/action-junit-report@main - if: always() - with: - check_name: Unit+Doc tests report - fail_on_failure: true - require_tests: true - summary: ${{ steps.cargo_reporter.outputs.summary }} + - run: cargo test --verbose test-doc: runs-on: ubuntu-latest @@ -58,18 +47,7 @@ jobs: - uses: dtolnay/rust-toolchain@master with: toolchain: ${{ matrix.toolchain }} - - run: cargo test --format json --report-time | tee result.json - - uses: innoq/action-cargo-test-report@v1 - id: cargo_reporter - with: - cargo-test-report-json: 'result.json' - - uses: mikepenz/action-junit-report@main - if: always() - with: - check_name: Beta+Nightly tests report - fail_on_failure: true - require_tests: true - summary: ${{ steps.cargo_reporter.outputs.summary }} + - run: cargo test --verbose test-build: needs: [test-unit] @@ -103,23 +81,12 @@ jobs: repo-token: ${{ secrets.GITHUB_TOKEN }} - uses: actions/checkout@v4 - uses: dtolnay/rust-toolchain@stable - - run: cargo test --format json --report-time --features=test-e2e tests::e2e | tee result.json + - run: cargo test --verbose --features=test-e2e tests::e2e env: CODEMP_TEST_USERNAME_ALICE: ${{ secrets.CODEMP_TEST_USERNAME_ALICE }} CODEMP_TEST_PASSWORD_ALICE: ${{ secrets.CODEMP_TEST_PASSWORD_ALICE }} CODEMP_TEST_USERNAME_BOB: ${{ secrets.CODEMP_TEST_USERNAME_BOB }} CODEMP_TEST_PASSWORD_BOB: ${{ secrets.CODEMP_TEST_PASSWORD_BOB }} - - uses: innoq/action-cargo-test-report@v1 - id: cargo_reporter - with: - cargo-test-report-json: 'result.json' - - uses: mikepenz/action-junit-report@main - if: always() - with: - check_name: Functional tests report - fail_on_failure: true - require_tests: true - summary: ${{ steps.cargo_reporter.outputs.summary }} test-coverage: needs: [test-build] @@ -138,16 +105,5 @@ jobs: repo-token: ${{ secrets.GITHUB_TOKEN }} - uses: actions/checkout@v4 - uses: dtolnay/rust-toolchain@stable - - run: cargo test --format json --report-time --no-default-features --features=${{ matrix.features }},test-coverage,py-abi3,lua-jit tests::coverage | tee result.json - - uses: innoq/action-cargo-test-report@v1 - id: cargo_reporter - with: - cargo-test-report-json: 'result.json' - - uses: mikepenz/action-junit-report@main - if: always() - with: - check_name: FFI Coverage tests report - fail_on_failure: true - require_tests: true - summary: ${{ steps.cargo_reporter.outputs.summary }} + - run: cargo test --no-default-features --features=${{ matrix.features }},test-coverage,py-abi3,lua-jit tests::coverage From fb21bc2209d68d69770bb6fa28c00947fa99af0d Mon Sep 17 00:00:00 2001 From: alemi Date: Tue, 10 Mar 2026 11:58:22 +0100 Subject: [PATCH 12/13] ci: try manually making github annotations --- .github/workflows/test.yml | 2 +- Cargo.toml | 2 ++ src/tests/coverage.rs | 20 ++++++++++++++++++++ 3 files changed, 23 insertions(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 271e6224..a1c22730 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -105,5 +105,5 @@ jobs: repo-token: ${{ secrets.GITHUB_TOKEN }} - uses: actions/checkout@v4 - uses: dtolnay/rust-toolchain@stable - - run: cargo test --no-default-features --features=${{ matrix.features }},test-coverage,py-abi3,lua-jit tests::coverage + - run: cargo test --no-default-features --features=ci,${{ matrix.features }},test-coverage,py-abi3,lua-jit tests::coverage diff --git a/Cargo.toml b/Cargo.toml index 91765ec8..f8ae8c97 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -81,6 +81,8 @@ lua-jit = ["mlua?/luajit"] lua-54 = ["mlua?/lua54"] py-abi3 = ["pyo3?/abi3-py38"] py-extmod = ["pyo3?/extension-module"] +# enables ci-specific stuff +ci = [] [package.metadata.docs.rs] # enabled features when building on docs.rs diff --git a/src/tests/coverage.rs b/src/tests/coverage.rs index 0831d502..f12a06d5 100644 --- a/src/tests/coverage.rs +++ b/src/tests/coverage.rs @@ -190,6 +190,11 @@ fn python_ffi_should_cover_rust_api_surface() { let missings = missing_lang_coverage("python", python_src, required, &python_ignore); + #[cfg(feature = "ci")] + if !missing.is_empty() { + println!("::error title=Coverage::python is missing ffi coverage: {}", missings.join(" ")); + } + assert!( missings.is_empty(), "missing ffi coverage:\n{}", @@ -229,6 +234,11 @@ fn javascript_ffi_should_cover_rust_api_surface() { let missings = missing_lang_coverage("javascript", js_src, required, &js_ignore); + #[cfg(feature = "ci")] + if !missing.is_empty() { + println!("::error title=Coverage::javascript is missing ffi coverage: {}", missings.join(" ")); + } + assert!( missings.is_empty(), "missing ffi coverage:\n{}", @@ -268,6 +278,11 @@ fn lua_ffi_should_cover_rust_api_surface() { let missings = missing_lang_coverage("lua", lua_src, required, &lua_ignore); + #[cfg(feature = "ci")] + if !missing.is_empty() { + println!("::error title=Coverage::lua is missing ffi coverage: {}", missings.join(" ")); + } + assert!( missings.is_empty(), "missing ffi coverage:\n{}", @@ -307,6 +322,11 @@ fn java_ffi_should_cover_rust_api_surface() { let missings = missing_lang_coverage("java", java_src, required, &java_ignore); + #[cfg(feature = "ci")] + if !missing.is_empty() { + println!("::error title=Coverage::java is missing ffi coverage: {}", missings.join(" ")); + } + assert!( missings.is_empty(), "missing ffi coverage:\n{}", From f948c242d2f4e343a8b3873159f21221a3408db2 Mon Sep 17 00:00:00 2001 From: alemi Date: Tue, 10 Mar 2026 12:07:14 +0100 Subject: [PATCH 13/13] ci: omggg --- src/tests/coverage.rs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/tests/coverage.rs b/src/tests/coverage.rs index f12a06d5..f4731f08 100644 --- a/src/tests/coverage.rs +++ b/src/tests/coverage.rs @@ -191,7 +191,7 @@ fn python_ffi_should_cover_rust_api_surface() { let missings = missing_lang_coverage("python", python_src, required, &python_ignore); #[cfg(feature = "ci")] - if !missing.is_empty() { + if !missings.is_empty() { println!("::error title=Coverage::python is missing ffi coverage: {}", missings.join(" ")); } @@ -235,7 +235,7 @@ fn javascript_ffi_should_cover_rust_api_surface() { let missings = missing_lang_coverage("javascript", js_src, required, &js_ignore); #[cfg(feature = "ci")] - if !missing.is_empty() { + if !missings.is_empty() { println!("::error title=Coverage::javascript is missing ffi coverage: {}", missings.join(" ")); } @@ -279,7 +279,7 @@ fn lua_ffi_should_cover_rust_api_surface() { let missings = missing_lang_coverage("lua", lua_src, required, &lua_ignore); #[cfg(feature = "ci")] - if !missing.is_empty() { + if !missings.is_empty() { println!("::error title=Coverage::lua is missing ffi coverage: {}", missings.join(" ")); } @@ -323,7 +323,7 @@ fn java_ffi_should_cover_rust_api_surface() { let missings = missing_lang_coverage("java", java_src, required, &java_ignore); #[cfg(feature = "ci")] - if !missing.is_empty() { + if !missings.is_empty() { println!("::error title=Coverage::java is missing ffi coverage: {}", missings.join(" ")); }