From ef77deff5f675130eb2c9a14a222b386f6312ff3 Mon Sep 17 00:00:00 2001 From: jyviko <2501648+jyviko@users.noreply.github.com> Date: Thu, 15 Oct 2026 15:07:48 -0400 Subject: [PATCH] build(deps): finish the zip 9 port and lock it The 3MF reader's name_for_index now returns a Result in zip 9, and the geometry test writer still wrapped last_modified_time in Some. Cargo.lock gains zip 9.0.3 beside SolidCraft's zip 3. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01UhhZMBTviDQxZvwnyP89fo --- Cargo.lock | 57 +++++++++++++++++++++++------- crates/geometry/src/tagged_mesh.rs | 6 ++-- 2 files changed, 48 insertions(+), 15 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index be7a26a..6b356cb 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1203,7 +1203,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb" dependencies = [ "libc", - "windows-sys 0.60.2", + "windows-sys 0.61.2", ] [[package]] @@ -1328,7 +1328,7 @@ dependencies = [ "serde", "serde_json", "thiserror 2.0.21", - "zip", + "zip 9.0.3", ] [[package]] @@ -1363,7 +1363,7 @@ dependencies = [ "solidcraft-io", "solidcraft-kernel", "thiserror 2.0.21", - "zip", + "zip 9.0.3", ] [[package]] @@ -1376,7 +1376,7 @@ dependencies = [ "serde_json", "sha2 0.11.1", "thiserror 2.0.21", - "zip", + "zip 9.0.3", ] [[package]] @@ -1496,7 +1496,7 @@ dependencies = [ "tar", "thiserror 2.0.21", "ureq", - "zip", + "zip 9.0.3", ] [[package]] @@ -2355,6 +2355,18 @@ dependencies = [ "jni-sys 0.3.1", ] +[[package]] +name = "nix" +version = "0.31.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf20d2fde8ff38632c426f1165ed7436270b44f199fc55284c38276f9db47c3d" +dependencies = [ + "bitflags 2.13.2", + "cfg-if", + "cfg_aliases", + "libc", +] + [[package]] name = "nohash-hasher" version = "0.2.0" @@ -3389,7 +3401,7 @@ dependencies = [ "errno", "libc", "linux-raw-sys 0.12.1", - "windows-sys 0.60.2", + "windows-sys 0.61.2", ] [[package]] @@ -3446,7 +3458,7 @@ dependencies = [ "security-framework", "security-framework-sys", "webpki-root-certs", - "windows-sys 0.60.2", + "windows-sys 0.61.2", ] [[package]] @@ -3854,7 +3866,7 @@ dependencies = [ "solidcraft-geom", "solidcraft-kernel", "thiserror 2.0.21", - "zip", + "zip 3.0.0", ] [[package]] @@ -4002,7 +4014,7 @@ dependencies = [ "getrandom 0.4.3", "once_cell", "rustix 1.1.5", - "windows-sys 0.60.2", + "windows-sys 0.61.2", ] [[package]] @@ -4343,6 +4355,12 @@ dependencies = [ "rustc-hash 2.1.3", ] +[[package]] +name = "typed-path" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e28f89b80c87b8fb0cf04ab448d5dd0dd0ade2f8891bae878de66a75a28600e" + [[package]] name = "typenum" version = "1.20.1" @@ -4357,7 +4375,7 @@ checksum = "f2f6fb2847f6742cd76af783a2a2c49e9375d0a111c7bef6f71cd9e738c72d6e" dependencies = [ "memoffset", "tempfile", - "windows-sys 0.60.2", + "windows-sys 0.61.2", ] [[package]] @@ -4947,7 +4965,7 @@ version = "0.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22" dependencies = [ - "windows-sys 0.60.2", + "windows-sys 0.61.2", ] [[package]] @@ -5292,7 +5310,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7d6f32a0ff4a9f6f01231eb2059cc85479330739333e0e58cadf03b6af2cca10" dependencies = [ "cfg-if", - "windows-sys 0.60.2", + "windows-sys 0.61.2", ] [[package]] @@ -5517,6 +5535,21 @@ dependencies = [ "zopfli", ] +[[package]] +name = "zip" +version = "9.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c2d98561b612a84ae525331a7a094429ef8a5772514ed507ff6db5f54badc971" +dependencies = [ + "crc32fast", + "flate2", + "indexmap", + "memchr", + "nix", + "typed-path", + "zopfli", +] + [[package]] name = "zlib-rs" version = "0.6.8" diff --git a/crates/geometry/src/tagged_mesh.rs b/crates/geometry/src/tagged_mesh.rs index 20e1b89..c347655 100644 --- a/crates/geometry/src/tagged_mesh.rs +++ b/crates/geometry/src/tagged_mesh.rs @@ -58,8 +58,8 @@ fn bad(msg: impl std::fmt::Display) -> Result { fn read_part(zip: &mut zip::ZipArchive>, name: &str) -> Result>> { let want = name.trim_start_matches('/').to_ascii_lowercase(); - let Some(idx) = - (0..zip.len()).find(|i| zip.name_for_index(*i).is_some_and(|n| n.replace('\\', "/").trim_start_matches('/').to_ascii_lowercase() == want)) + let Some(idx) = (0..zip.len()) + .find(|i| zip.name_for_index(*i).is_some_and(|n| n.is_ok_and(|n| n.replace('\\', "/").trim_start_matches('/').to_ascii_lowercase() == want))) else { return Ok(None); }; @@ -446,7 +446,7 @@ mod tests { for (name, data) in [("[Content_Types].xml", types), ("_rels/.rels", rels), ("3D/3dmodel.model", x.as_str())] { let o = zip::write::SimpleFileOptions::default() .compression_method(zip::CompressionMethod::Deflated) - .last_modified_time(Some(zip::DateTime::default())); + .last_modified_time(zip::DateTime::default()); zip.start_file(name, o).unwrap(); zip.write_all(data.as_bytes()).unwrap(); }