astral-sh
uv
BlogDocsChangelog

Ensure `uv.exe` exits when `uvw.exe` or `uvx.exe` is killed

#17500
Comparing
zaniebot:claude/investigate-issue-17492-znH4F
(
934469f
) with
main
(
b6332f6
)
CodSpeed Performance Gauge
0%
Untouched
5
Ignored
1

Benchmarks

Passed

resolve_warm_jupyter_universal
crates/uv-bench/benches/uv.rs::uv::resolve_warm_jupyter_universal
CodSpeed Performance Gauge
+2%
210.4 ms205.9 ms
resolve_warm_jupyter
crates/uv-bench/benches/uv.rs::uv::resolve_warm_jupyter
CodSpeed Performance Gauge
+1%
74 ms73.1 ms
resolve_warm_airflow
crates/uv-bench/benches/uv.rs::uv::resolve_warm_airflow
CodSpeed Performance Gauge
0%
466.7 ms466.7 ms
resolve_warm_jupyter_universal
crates/uv-bench/benches/uv.rs::uv::resolve_warm_jupyter_universal
CodSpeed Performance Gauge
0%
139.5 ms139.8 ms
resolve_warm_jupyter
crates/uv-bench/benches/uv.rs::uv::resolve_warm_jupyter
CodSpeed Performance Gauge
-2%
42 ms42.9 ms

Ignored

resolve_warm_airflow
crates/uv-bench/benches/uv.rs::uv::resolve_warm_airflow
Ignored
CodSpeed Performance Gauge
-4%
783.6 ms820 ms

Commits

Click on a commit to change the comparison range
Base
main
b6332f6
+0.2%
Fix uvw not terminating child uv process when killed On Windows, use Job Objects to ensure the child `uv.exe` process is terminated when wrapper processes (`uvw.exe`, `uvx.exe`) are killed. This is important for tools like Task Scheduler that terminate the wrapper process. The fix uses the `JOB_OBJECT_LIMIT_KILL_ON_JOB_CLOSE` flag which instructs Windows to terminate all processes associated with the job when the job object handle is closed (which happens when the wrapper is terminated). This change: - Creates a shared `windows_spawn` module with the Job Object logic - Updates both `uvw.exe` and `uvx.exe` to use this shared module - Matches the approach used by the trampoline in `bounce.rs` Closes #17492
934469f
17 hours ago
by claude
© 2026 CodSpeed Technology
Home Terms Privacy Docs