Dev News Daily ENDE

uv 0.12.19 previews leaner lockfiles and stops needless reinstalls

uv 0.12.19, Astral's Python package and project manager, was released on 24 September. It is a small release, but two of its changes touch things teams notice in daily work: lockfile churn and packages that reinstall for no reason.

The first is a preview feature, resolution-inputs. With it enabled, uv omits unused resolution settings from uv.lock and ignores changes to them when checking whether the lockfile is fresh. Preview features in uv are opt-in, so nothing changes unless a project turns it on. A second preview, build-lazy-imports, runs build-backend hooks with lazy imports on CPython 3.15 and later.

The second is a bug fix: uv now preserves signed and encoded query parameters in direct-URL metadata, which, according to the notes, avoids reinstalling packages that have not changed. Other fixes make the installed-package check accept 1.0.0 as satisfying ===1, matching what the resolver already did; keep always-false python_version markers intact when their serialised form is parsed; and stop Git checkout readiness markers from colliding with .ok files in dependencies. The release also adds PyPy 3.11.16 and 3.12.14, moves GraalPy 3.13.0 to build 25.4.4, and restores a public FlatDistributions export for tools that use uv's Rust API.

uv 0.12.19 previews leaner lockfiles and stops needless reinstalls
uv 0.12.19 previews leaner lockfiles and stops needless reinstalls — Dev News Daily

What it means

Both main changes are about the same thing: making "nothing changed" look like nothing changed. A lockfile that records settings which did not affect the result produces diffs, merge conflicts and freshness checks that fail for reasons unrelated to dependencies. A package whose URL metadata is rewritten on the way in looks different from itself on the next sync and gets installed again, which wastes time in CI and makes caches less useful.

Neither is dramatic, which is why they are easy to live with for months. If your team sees uv.lock change on branches that did not touch dependencies, the resolution-inputs preview is worth trying on one project first; if packages installed from signed URLs, such as a private index behind a CDN, reinstall on every run, 0.12.19 should stop that.

Primary source
astral-sh/uv - release 0.12.19
https://github.com/astral-sh/uv/releases/tag/0.12.19