@@ -29,6 +29,69 @@ Unreleased changes are tracked as individual files in the [news/](./news)
2929directory, or view the [ latest generated
3030changelog] ( https://rules-python.readthedocs.io/en/latest/changelog.html ) .
3131
32+ {#v2-4-0}
33+ ## [ 2.4.0] - 2026-09-22
34+
35+ [ 2.4.0 ] : https://github.com/bazel-contrib/rules_python/releases/tag/2.4.0
36+
37+ {#v2-4-0-changed}
38+ ### Changed
39+ * (bootstrap) {obj}` sys.path ` adds the Python runtime in runfiles instead
40+ of the underlying Bazel repository cache directory
41+ ([ #4104 ] ( https://github.com/bazel-contrib/rules_python/pull/4104 ) ).
42+ * (gazelle) Deprecate the ` requirements ` argument of ` gazelle_python_manifest `
43+ in favor of the format-agnostic ` lockfiles ` argument, which supports ` uv.lock ` .
44+ * (toolchain) Updated default Python 3.15 runtime from ` 3.15.0a8 ` to ` 3.15.0rc1 `
45+ ([ #4122 ] ( https://github.com/bazel-contrib/rules_python/pull/4122 ) ).
46+ * (toolchain) Updated the default Python toolchain version from ` 3.11 ` to ` 3.14 `
47+ in {obj}` python.defaults ` , {obj}` python_register_toolchains ` , and
48+ {obj}` python_register_multi_toolchains `
49+ ([ #4023 ] ( https://github.com/bazel-contrib/rules_python/pull/4023 ) ).
50+
51+ {#v2-4-0-fixed}
52+ ### Fixed
53+ * Include the Python toolchain's static libraries when ` current_py_cc_libs ` is used
54+ as a dependency of ` cc_shared_library ` .
55+ * (bzlmod) Fixed a type mismatch error when using {obj}` coverage_tool ` with
56+ {obj}` python.single_version_platform_override `
57+ ([ #2570 ] ( https://github.com/bazel-contrib/rules_python/issues/2570 ) ).
58+ * (precompile) Fixed handling of directory and ` .pyc ` file inputs in
59+ {obj}` srcs ` when {obj}` precompile ` is enabled on {obj}` py_library ` ,
60+ {obj}` py_binary ` , and {obj}` py_test ` targets
61+ ([ #4113 ] ( https://github.com/bazel-contrib/rules_python/pull/4113 ) ).
62+ * (pypi) Fixed wheel RECORD file generation on Windows so that rewritten shebang
63+ scripts correctly include the ` .bat ` extension
64+ ([ #4114 ] ( https://github.com/bazel-contrib/rules_python/pull/4114 ) ).
65+ * (pypi) Fixed {obj}` RECORD ` file paths for extracted ` .data ` directory contents
66+ so that {obj}` importlib.metadata.files() ` correctly locates installed
67+ distribution files ([ #4025 ] ( https://github.com/bazel-contrib/rules_python/pull/4025 ) ).
68+ * (pypi) Venv mode now works on NixOS and no longer requires coreutils to process
69+ wheel scripts and RECORD files
70+ ([ #4125 ] ( https://github.com/bazel-contrib/rules_python/pull/4125 ) ).
71+ * (rules) Fixed loading Python extension modules from paths longer than ` MAX_PATH ` on Windows.
72+ * (runfiles) Updated {obj}` runfiles.Path ` method signatures for Python 3.14
73+ typeshed compatibility and fixed {obj}` runfiles.Path.match ` on Python 3.12+.
74+ ([ #4023 ] ( https://github.com/bazel-contrib/rules_python/issues/4023 ) )
75+ * (stamping) The build data spawn action is now skipped when ` --stamp=false ` and,
76+ instead the metadata file is written at analysis time via ` ctx.actions.write() ` .
77+ * (toolchain) Fixed a crash in {obj}` py_test ` main validation
78+ ({obj}` validate_test_main ` ) on Windows: the interpreter used for the check
79+ couldn't find its DLLs or its stdlib once relocated
80+ ([ #4079 ] ( https://github.com/bazel-contrib/rules_python/issues/4079 ) ).
81+ * (toolchain) Fixed a crash on Windows when precompiling is enabled:
82+ the precompiler's interpreter couldn't find its DLLs once relocated
83+ ([ #4082 ] ( https://github.com/bazel-contrib/rules_python/issues/4082 ) ).
84+
85+ {#v2-4-0-added}
86+ ### Added
87+ * (runfiles) Added {obj}` Runfiles.CreateOrRaise ` to return a ` Runfiles ` instance
88+ or raise an error if runfiles cannot be found.
89+ * (uv) Added {obj}` directory ` attribute to {obj}` lock ` to support running ` uv `
90+ commands within subdirectories when generating lock files. Defaults to the
91+ package directory, set it to ` None ` or ` "" ` to set it to the root of the repo
92+ ([ #4029 ] ( https://github.com/bazel-contrib/rules_python/issues/4029 ) ).
93+
94+
3295{#v2-3-3}
3396## [ 2.3.3] - 2026-09-04
3497
0 commit comments