Skip to content

fix(workspace): pin zip to 7.1.0 to avoid transitive typed-path nightly requirement#96

Merged
BimaPangestu28 merged 1 commit intodevelopfrom
fix/pin-zip-7.1-avoid-typed-path-nightly
May 8, 2026
Merged

fix(workspace): pin zip to 7.1.0 to avoid transitive typed-path nightly requirement#96
BimaPangestu28 merged 1 commit intodevelopfrom
fix/pin-zip-7.1-avoid-typed-path-nightly

Conversation

@BimaPangestu28
Copy link
Copy Markdown
Member

Summary

zip 7.2.0+ (and all 8.x) introduced a transitive dependency on typed-path ^0.12. typed-path 0.12.x uses feature(wasip2) stdlib APIs that fail on stable Rust under wasm32-wasip2:

error[E0658]: use of unstable library feature `wasip2`
  --> typed-path-0.12.x/src/.../pathbuf.rs

This blocked greentic-biz/greentic-bundle-extensions#26 — bundle-standard's CI builds for wasm32-wasip2 on stable, and after pinning cards2pack-core / bundle-standard-core to the new 1.2.0-dev.25512130996 (which lands the cards2pack-core empty-routing fix from #95), the dep tree pulls typed-path and breaks the build.

Why zip 7.1.0

zip 7.1.0 is the most recent release before typed-path was introduced (zip 7.2.0 adds it). Released Jan 2026, 205k+ downloads, not yanked, still maintained. bundle-standard-core only uses minimal zip API:

API used 7.1 → 8.x compatibility
zip::ZipWriter::new(...) unchanged
zip::write::FileOptions::<()>::default() unchanged
.compression_method(zip::CompressionMethod::Deflated) unchanged
start_file(name, options) unchanged
write_all(bytes) (std::io::Write — not zip API)
finish() unchanged
zip::ZipArchive::new(cursor) unchanged

Zero code change required in bundle-standard-core. Verified empirically.

Verification

Check Result
cargo update -p zip --precise 7.1.0 removes typed-path ✅ "Removing typed-path v0.12.3"
cargo check -p bundle-standard-core --target wasm32-wasip2 (stable) ✅ clean
cargo test -p cards2pack-core (24 unit tests) ✅ all pass
cargo test -p cards2pack-core --test golden (11 snapshot tests) ✅ all pass
cargo fmt --all -- --check ✅ exit 0
cargo clippy --workspace --all-targets -- -D warnings ✅ exit 0
Full WASM build via cargo component build --target wasm32-wasip2 --release from bundle-standard ✅ Component artifact created

Downstream impact

After merge + dev-publish stamp:

  1. New cards2pack-core and bundle-standard-core published with NO typed-path in dep tree
  2. PR fix: scaffold only webchat-gui assets from provider packs #26 in greentic-bundle-extensions can re-pin to the new RUN_ID and drop the wasm32-wasip1 override — wasm32-wasip2 now builds cleanly on stable
  3. PR greenticai/.github#169 (which added wasm-target-install input as a workaround) becomes superseded — close as no-longer-needed
  4. Standard wasm32-wasip2 stays the org-wide CI default, no migration churn

Test plan

Future-proofing note

If we eventually want to upgrade to zip 8.x (e.g., for new features or security patches), the path is:

  1. Wait for typed-path upstream to drop the feature(wasip2) requirement (issue chipsenkbeil/typed-path#57) — they intentionally added it, so this is a maintainer decision
  2. Or migrate bundle-standard-core to a different ZIP crate
  3. Or org-wide adopt nightly Rust toolchain (heavy)

For now, =7.1.0 pin is the smallest blast-radius fix that keeps every downstream consumer working without changes.

…ly requirement

zip 7.2.0+ added a `typed-path ^0.12` dependency. typed-path 0.12.x
uses `feature(wasip2)` stdlib APIs that fail on stable Rust under
the wasm32-wasip2 target:

  error[E0658]: use of unstable library feature `wasip2`
    --> typed-path-0.12.x/src/.../pathbuf.rs

This blocked greentic-biz/greentic-bundle-extensions PR #26 from
taking up the cards2pack-core empty-routing fix (PR #95 of this
repo) — its CI builds for wasm32-wasip2 on stable.

zip 7.1.0 is the most recent zip release before the typed-path dep
was introduced (still maintained, 205k+ downloads, not yanked).
bundle-standard-core only uses minimal zip API (ZipWriter::new,
FileOptions::default, start_file, write_all, finish, ZipArchive::new)
which is unchanged across 7.x. Verified: zero code change required,
all 24 unit tests + 11 golden snapshot tests pass, full WASM build
via cargo-component succeeds for wasm32-wasip2 + wasm32-wasip1.

Pinning to =7.1.0 keeps the dep tree clean; downstream consumers
(bundle-standard.wasm) inherit the fix transparently when they re-
publish against the next dev-publish.yml stamp.
@BimaPangestu28 BimaPangestu28 merged commit d888610 into develop May 8, 2026
9 checks passed
@BimaPangestu28 BimaPangestu28 deleted the fix/pin-zip-7.1-avoid-typed-path-nightly branch May 8, 2026 02:42
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant