c3d809d276
## Summary I believe `zlib-rs` is now a better choice on ARM and x86, so I'm just going to assume it's a better choice everywhere. It's much easier to build (removes our CMake dependency), and in my benchmarking, it's substantially faster on ARM and faster or ~exactly even on my x86 Windows machine. We migrated to `zlib-rs` once before (#9184); however, I later reverted it as I learned that they were only doing compile-time feature detection, and so `zlib-rs` was meaningfully slower on x86. They now perform runtime feature detection: https://trifectatech.org/blog/zlib-rs-is-faster-than-c/. To benchmark, I wrote a script to create a local Simple API-compliant registry (see the commit history) for a single package. Then I ran the `install-cold` benchmark against that registry to install NumPy. On ARM: ``` ❯ uv run resolver --uv-pip-path ../../zlib-ng --uv-pip-path ../../zlib-rs \ --benchmark install-cold \ req.txt --warmup 10 --min-runs 30 Benchmark 1: ../../zlib-ng (install-cold) Time (mean ± σ): 165.7 ms ± 34.7 ms [User: 64.4 ms, System: 93.2 ms] Range (min … max): 141.8 ms … 293.2 ms 30 runs Benchmark 2: ../../zlib-rs (install-cold) Time (mean ± σ): 150.9 ms ± 16.2 ms [User: 57.4 ms, System: 86.4 ms] Range (min … max): 135.3 ms … 202.4 ms 30 runs Summary ../../zlib-rs (install-cold) ran 1.10 ± 0.26 times faster than ../../zlib-ng (install-cold) ``` I benchmarked this about 100 times on my Windows machine and found it difficult to conclude anything beyond "They're nearly the same". Here's an example: ``` PS C:\Users\crmar\workspace\puffin> hyperfine --prepare "uv venv" "zlib-rs.exe pip sync ./scripts/benchmark/req.txt" "zlib-ng.exe pip sync ./scripts/benchmark/req.txt" "zlib-rs.exe pip sync ./scripts/benchmark/req.txt" "zlib-ng.exe pip sync ./scripts/benchmark/req.txt" --runs 10 --warmup 5 Benchmark 1: zlib-rs.exe pip sync ./scripts/benchmark/req.txt Time (mean ± σ): 240.6 ms ± 10.8 ms [User: 6.1 ms, System: 92.2 ms] Range (min … max): 229.4 ms … 267.9 ms 10 runs Benchmark 2: zlib-ng.exe pip sync ./scripts/benchmark/req.txt Time (mean ± σ): 241.3 ms ± 6.2 ms [User: 7.7 ms, System: 90.6 ms] Range (min … max): 233.9 ms … 252.1 ms 10 runs Benchmark 3: zlib-rs.exe pip sync ./scripts/benchmark/req.txt Time (mean ± σ): 242.8 ms ± 7.7 ms [User: 6.2 ms, System: 23.4 ms] Range (min … max): 236.1 ms … 262.8 ms 10 runs Benchmark 4: zlib-ng.exe pip sync ./scripts/benchmark/req.txt Time (mean ± σ): 245.9 ms ± 5.7 ms [User: 1.5 ms, System: 59.4 ms] Range (min … max): 240.9 ms … 257.3 ms 10 runs Summary zlib-rs.exe pip sync ./scripts/benchmark/req.txt ran 1.00 ± 0.05 times faster than zlib-ng.exe pip sync ./scripts/benchmark/req.txt 1.01 ± 0.06 times faster than zlib-rs.exe pip sync ./scripts/benchmark/req.txt 1.02 ± 0.05 times faster than zlib-ng.exe pip sync ./scripts/benchmark/req.txt ``` Closes #11885.
98 lines
3.2 KiB
TOML
98 lines
3.2 KiB
TOML
[build-system]
|
|
requires = ["maturin>=1.0,<2.0"]
|
|
build-backend = "maturin"
|
|
|
|
[project]
|
|
name = "uv"
|
|
version = "0.6.3"
|
|
description = "An extremely fast Python package and project manager, written in Rust."
|
|
authors = [{ name = "Astral Software Inc.", email = "hey@astral.sh" }]
|
|
requires-python = ">=3.8"
|
|
keywords = [
|
|
"uv", "requirements", "packaging"
|
|
]
|
|
classifiers = [
|
|
"Development Status :: 5 - Production/Stable",
|
|
"Environment :: Console",
|
|
"Intended Audience :: Developers",
|
|
"Operating System :: OS Independent",
|
|
"License :: OSI Approved :: MIT License",
|
|
"License :: OSI Approved :: Apache Software License",
|
|
"Programming Language :: Python",
|
|
"Programming Language :: Python :: 3.8",
|
|
"Programming Language :: Python :: 3.9",
|
|
"Programming Language :: Python :: 3.10",
|
|
"Programming Language :: Python :: 3.11",
|
|
"Programming Language :: Python :: 3.12",
|
|
"Programming Language :: Python :: 3.13",
|
|
"Programming Language :: Python :: 3 :: Only",
|
|
"Topic :: Software Development :: Quality Assurance",
|
|
"Topic :: Software Development :: Testing",
|
|
"Topic :: Software Development :: Libraries",
|
|
]
|
|
readme = "README.md"
|
|
|
|
[project.urls]
|
|
Repository = "https://github.com/astral-sh/uv"
|
|
Documentation = "https://docs.astral.sh/uv"
|
|
Changelog = "https://github.com/astral-sh/uv/blob/main/CHANGELOG.md"
|
|
Releases = "https://github.com/astral-sh/uv/releases"
|
|
Discord = "https://discord.gg/astral-sh"
|
|
|
|
[tool.maturin]
|
|
bindings = "bin"
|
|
manifest-path = "crates/uv/Cargo.toml"
|
|
module-name = "uv"
|
|
python-source = "python"
|
|
strip = true
|
|
include = [
|
|
{ path = "rust-toolchain.toml", format = ["sdist", "wheel"] },
|
|
# this one isn't discovered by maturin because it's behind a feature flag
|
|
{ path = "crates/uv-performance-memory-allocator/**/*", format = ["sdist", "wheel"] },
|
|
{ path = "crates/uv-trampoline/trampolines/*", format = "sdist" },
|
|
{ path = "LICENSE-APACHE", format = "sdist" },
|
|
{ path = "LICENSE-MIT", format = "sdist" },
|
|
]
|
|
|
|
[tool.rooster]
|
|
major_labels = [] # We do not use the major version number yet
|
|
minor_labels = ["breaking"]
|
|
changelog_ignore_labels = ["internal", "ci", "testing"]
|
|
changelog_sections.breaking = "Breaking changes"
|
|
changelog_sections.enhancement = "Enhancements"
|
|
changelog_sections.compatibility = "Enhancements"
|
|
changelog_sections.preview = "Preview features"
|
|
changelog_sections.error_messages = "Enhancements"
|
|
changelog_sections.cli = "Enhancements"
|
|
changelog_sections.configuration = "Configuration"
|
|
changelog_sections.performance = "Performance"
|
|
changelog_sections.bug = "Bug fixes"
|
|
changelog_sections.rustlib = "Rust API"
|
|
changelog_sections.documentation = "Documentation"
|
|
changelog_sections.__unknown__ = "Other changes"
|
|
|
|
# We exclude contributors from the CHANGELOG file
|
|
# Generate separately with `rooster contributors` for the GitHub release page
|
|
changelog_contributors = false
|
|
|
|
version_files = [
|
|
"README.md",
|
|
"crates/uv/Cargo.toml",
|
|
"crates/uv-version/Cargo.toml",
|
|
"docs/getting-started/installation.md",
|
|
"docs/guides/integration/docker.md",
|
|
"docs/guides/integration/pre-commit.md",
|
|
"docs/guides/integration/github.md",
|
|
"docs/guides/integration/aws-lambda.md",
|
|
]
|
|
|
|
[tool.mypy]
|
|
ignore_missing_imports = true
|
|
files = [
|
|
"crates/uv-python/*.py",
|
|
"python/uv/*.py",
|
|
]
|
|
|
|
[tool.uv]
|
|
managed = false
|