Skip to content

v1.10.2

Choose a tag to compare

@pirate pirate released this 13 Apr 11:03
· 105 commits to main since this release
b677650

abxpkg v1.10.2

✨ Highlights

  • Renamed the project from abx-pkg / abx_pkg to abxpkg, including the Python package name, docs, examples, and release surface.
  • Added a much richer CLI runtime model around abxpkg run, abx, and abxpkg run --script, with consistent provider ENV/PATH merging for real subprocess execution.
  • Added provider-local derived.env caches for resolved binaries and installer binaries, including version, sha256, mtime, and euid tracking.
  • Tightened provider ownership and provenance reporting so installer binaries, upstream dependency binaries, and installed binaries are surfaced more explicitly.
  • Simplified provider state: much more work now happens lazily at setup() / first-use time instead of during import or construction.

🧭 Quick Examples

pip install abxpkg
abxpkg --global install yt-dlp
abx --binproviders=env,uv,pip,brew yt-dlp --version
abxpkg --min-version=1.2.3 --min-release-age=7 install yt-dlp
abxpkg --overrides='{"pip":{"install_args":["yt-dlp[default]"]}}' install yt-dlp
abxpkg --install-args='["black==24.2.0"]' install black
#!/usr/bin/env -S abxpkg run --script node
// /// script
// dependencies = [
//   {name = "node", binproviders = ["env", "apt", "brew"], min_version = "22.0.0"},
//   {name = "playwright", binproviders = ["pnpm", "npm"]},
// ]
// ///

🛠 What Changed

  • Reworked the core provider engine around the new abxpkg/ package layout and a much larger BinProvider / Binary runtime surface.
  • Added loaded_mtime and loaded_euid alongside loaded_abspath, loaded_version, and loaded_sha256, and threaded them through provider caches, summaries, and binary models.
  • Added provider-local derived.env metadata caching, installer caching, and dependency caching so repeated loads can skip expensive version probes when the fingerprint still matches.
  • Standardized pip and uv install-root layouts so hermetic environments live at <install_root>/venv while provider metadata stays at <install_root>.
  • Hardened install semantics so package-manager success only counts if a runnable binary is actually produced; failed installs now roll back generically in the base provider flow.
  • Split runtime dependency reporting into clearer concepts like INSTALLER_BINARY, depends_on_binaries, and installed_binaries.
  • Extended the CLI with --global as a thin alias for --lib=None, hidden upgrade aliases, richer provider/version reporting, and direct handler-style override flags such as --install-args, --version, --abspath, and --packages.
  • Improved abx so it stays a very thin wrapper over abxpkg run --install ... while still forwarding the expanded CLI surface correctly.
  • Added inline /// script dependency parsing for abxpkg run --script, including [tool.abxpkg] env injection and dependency provider ENV/PATH merging before script execution.
  • Reworked logging output and CLI rendering substantially: quieter non-debug failures, better subprocess output formatting, better method highlighting, and richer provider/version summaries.

⚠️ Behavioral Changes

  • The package/import surface is now abxpkg, not abx-pkg / abx_pkg.
  • CLI managed mode is now the default; use --global or --lib=None to force provider global mode.
  • load() / install() correctness is stricter: providers no longer get to report success unless they can resolve a runnable binary afterward.
  • Provider ownership/provenance is less hand-wavy now: upstream installer/dependency binaries are tracked separately from installed binaries.