0.11 系以降に溜まった正しさ・安全性・仕様整合の変更をまとめた版である。多くの利用者は設定変更なしで上げられる想定で、uv build backend の設定自体に破壊的変更はない。[build-system]uv_build に上限を付けている場合は、例として uv_build>=0.11.32,<0.13 のように 0.12 を許可する。

uv init は既定で [build-system]uv_build)を宣言し、アプリソースを src/<name> に置き、[project.scripts] エントリを付ける。プロジェクト自身を仮想環境へインストールし、uv run <name> で起動できる。既存プロジェクトは影響を受けない。以前の非パッケージ構成は uv init --no-package で作る。

console
$ uv init example
$ cd example
$ uv run example
Hello from example!

主な破壊的変更:

  • sdist は PEP 625 どおり .tar.gz のみ(.tar.bz2 / .tar.xz は拒否。既存 lockfile 参照も同様)。wheel 内エントリの bzip2 / LZMA / XZ 圧縮も拒否
  • ケース違いの Python など、仮想環境のインタプリタを上書きし得る wheel エントリ / data ファイルを拒否
  • プリリリース既定を if-necessary に変更。安定版を優先し、制約を満たす安定版が無いときだけプリリリースへフォールバック。旧 if-necessary-or-explicit はエイリアスとして非推奨
  • requirements.txt 内の --require-hashes を実際に有効化。ハッシュ検証モードでは MD5 のみのダイジェストを拒否
  • uv run path/to/script.py のプロジェクト探索をスクリプト所在ディレクトリ起点に変更。uv venv --clear は仮想環境以外のディレクトリを消さず、--force が必要

#参考文献