0.4.0
Released 2026-09-07
Added
- viv cache: prune, clean, size, gc of unreferenced archives (#20)
- Limits on extraction: size caps and entry counts (#21)
- Windows support (#22)
- Offline mode and --prefer-dist-cache behaviour (#23)
- Bitbucket OAuth token exchange and remaining auth.json types (#24)
- Cache scanned classmaps per archive for -o installs (#25)
- Release engineering: binaries, cargo-binstall, checksums (#26)
- tar.bz2 dists (#27)
- Small ponytail ceilings: sh proxy marker, adopt confirmation, content-hash slash escaping, pointer temp names (#29)
- Small drop-in differences: target-dir removal, stale sh proxies, empty vendor/bin, absolute vendor-dir depth, summary wording (#37)
- Honour preferred-install: source packages record installation-source source and keep a git checkout (#43)
- Plugin adapters: phpcodesniffer-composer-installer, tbachert/spi, phpstan/extension-installer (#52)
- Plugin adapter: cweagans/composer-patches (#53)
- Git source checkouts: match Composer's .git/config (#59)
- Partial update of a transitively-required package fails: not found in any version (#79)
Fixed
- Prune empty parent directories after removing a package (#56)
- Classmap differs from Composer on choks/password-policy-bundle (#71)
- macOS CI: snapshot filters must match the canonical /private/var temp path (#72)
- parse_constraint panics on multi-byte input (semver-php slices at a non-char boundary) (#73)
Tooling
- Fuzz the hand-written parsers with cargo-fuzz (#44)
- Publish test coverage from CI with cargo-llvm-cov (#45)
- Add cargo-machete to make check (#46)
- Silence cargo-deny licence warnings by allowing them explicitly (#47)
- Deny rustdoc warnings in make check and CI (#48)
- Profile viv install and record where the time goes (#54)
- Profile viv update and viv require once the resolver lands (#55)
- compat sweep: keep the last lines of composer's output for skipped rows (#64)