2026.07.11 🏪
This release drops Python 3.9 and brings a batch of performance improvements, like caching uv detection and interpreter discovery, plus lazy module imports on Python 3.15. Various bugs were fixed as well.
We'd like to thank the following folks who contributed to this release:
- @henryiii
- @davidhewitt
- @SAY-5 (first contribution)
- @Himanshuagrawal4 (first contribution)
- @TejasAmle (first contribution)
- @felixfontein (first contribution)
Features:
- Drop Python 3.9 by @henryiii in #1049
- Add
return_codeproperty toCommandFailedexception by @felixfontein in #1129
Performance:
- Cache session-name normalization, uv detection, interpreter discovery, and metadata reads by @henryiii in #1113
- Lazy modules on Python 3.15 by @henryiii in #1115
Fixes:
- Script-mode pip resolution on Windows and
--download-pythonfallback by @henryiii in #1110 - Don't crash when a parametrized session has an empty parameter list by @henryiii in #1109
- Hash fully non-ASCII session names instead of returning the envdir by @henryiii in #1108
- Interpreter-resolution edge cases in
virtualenv.pyby @henryiii in #1111 - Create missing parent directories for the session cache dir by @henryiii in #1104
- Enforce
--error-on-external-runeven whenlog=Falseby @henryiii in #1107 - Handle
=inset_envvalues and out-of-treechange_dirintox-to-noxby @henryiii in #1105 - Return empty dict from
load_tomlwhen script file is missing by @SAY-5 in #1096 - Show envvars in CLI help by @henryiii in #1085
Documentation:
- Add PyO3 as a user by @davidhewitt in #1123
- List micromamba in
--default-venv-backendsupported names by @SAY-5 in #1092 - Clarify
session.notifytarget docs by @Himanshuagrawal4 in #1099 - Document venv backend for EOL Python by @Himanshuagrawal4 in #1101
- Fix typo in README installation section by @TejasAmle in #1097
Internal changes:
- Add Python 3.15 to the test matrix and classifiers by @henryiii in #1133
- Isolate
run_noxenvdir to fix flakytest_main_requiresby @henryiii in #1134 - Assorted simplifications and dead-code removal by @henryiii in #1112
- Remove Python 3.9-era pins/backports and tighten generator annotations by @henryiii in #1106
- Run tests in parallel by @henryiii in #965
- Prevent coverage data corruption from artifact name collisions by @henryiii in #1116
- Reduce the number of times we contact conda-forge servers on non-Windows by @henryiii in #1120
- Experimental MSYS2/MinGW test run by @henryiii in #1122
- Update pre-commit (and dependabot) by @henryiii in #1119
- Bump conda pin to fix signature-verification plugin conflict by @henryiii in #1103
- Bump setup-uv to maintained tag scheme by @henryiii in #1084