Build backend: Add fast path (#9556)
Going through PEP 517 to build a package is slow, so when building a package with the uv build backend, we can call into the uv build backend directly. This is the basis for the `uv build --list`. This does not enable the fast path for general source dependencies. There is a possible difference in execution if the latest uv version is newer than the one currently running: The PEP 517 path would use the latest version, while the fast path uses the current version. Please review commit-by-commit ### Benchmark `built_with_uv`, using the fast path: ``` $ hyperfine "~/projects/uv/target/profiling/uv build" Time (mean ± σ): 9.2 ms ± 1.1 ms [User: 4.6 ms, System: 4.6 ms] Range (min … max): 6.4 ms … 12.7 ms 290 runs ``` `hatcling_editable`, with hatchling being optimized for fast startup times: ``` $ hyperfine "~/projects/uv/target/profiling/uv build" Time (mean ± σ): 270.5 ms ± 18.4 ms [User: 230.8 ms, System: 44.5 ms] Range (min … max): 250.7 ms … 298.4 ms 10 runs ```
This commit is contained in:
@@ -7888,6 +7888,10 @@ uv build [OPTIONS] [SRC]
|
||||
<p>Normally, configuration files are discovered in the current directory, parent directories, or user configuration directories.</p>
|
||||
|
||||
<p>May also be set with the <code>UV_NO_CONFIG</code> environment variable.</p>
|
||||
</dd><dt><code>--no-fast-path</code></dt><dd><p>Always build through PEP 517, don’t use the fast path for the uv build backend.</p>
|
||||
|
||||
<p>By default, uv won’t create a PEP 517 build environment for packages using the uv build backend, but use a fast path that calls into the build backend directly. This option forces always using PEP 517.</p>
|
||||
|
||||
</dd><dt><code>--no-index</code></dt><dd><p>Ignore the registry index (e.g., PyPI), instead relying on direct URL dependencies and those provided via <code>--find-links</code></p>
|
||||
|
||||
</dd><dt><code>--no-progress</code></dt><dd><p>Hide all progress outputs.</p>
|
||||
|
||||
Reference in New Issue
Block a user