Skip to content

[3.14] GH-148726: Forward-port generational GC#148720

Merged
hugovk merged 19 commits intopython:3.14from
sergey-miryanov:feat/gc-gen-3.14
Apr 26, 2026
Merged

[3.14] GH-148726: Forward-port generational GC#148720
hugovk merged 19 commits intopython:3.14from
sergey-miryanov:feat/gc-gen-3.14

Conversation

@sergey-miryanov
Copy link
Copy Markdown
Contributor

@sergey-miryanov sergey-miryanov commented Apr 18, 2026

Co-Authored-By: Neil Schemenauer <nas@arctrix.com>
Co-Authored-By: Sergey Miryanov <sergey.miryanov@gmail.com>
Co-Authored-By: Zanie Blue <contact@zanie.dev>
Co-Authored-By: Zanie Blue <contact@zanie.dev>
@sergey-miryanov sergey-miryanov changed the title Feat/gc gen 3.14 Forward-port generational GC Apr 18, 2026
Co-Authored-By: Zanie Blue <contact@zanie.dev>
@sergey-miryanov sergey-miryanov changed the title Forward-port generational GC [3.14] GH-148726: Forward-port generational GC Apr 18, 2026
@nascheme
Copy link
Copy Markdown
Member

I've done a second pass of review and this looks good to merge. One minor nit, the Include/internal/pycore_interp_structs.h still has the _GCPhase enum, which is now unused.

@nascheme nascheme enabled auto-merge (squash) April 24, 2026 21:08
@nascheme
Copy link
Copy Markdown
Member

@hugovk I believe as release manager, you need to review the ABI changes (should be compatible, IMHO). I think when that's done, we need to commit the updated ABI file into this branch, before we can merge.

Comment thread Doc/library/gc.rst
Comment thread Doc/library/gc.rst
@hugovk hugovk disabled auto-merge April 25, 2026 12:16
@hugovk hugovk requested a review from encukou as a code owner April 25, 2026 14:27
@hugovk hugovk added the 🔨 test-with-buildbots Test PR w/ buildbots; report in status section label Apr 25, 2026
@bedevere-bot
Copy link
Copy Markdown

🤖 New build scheduled with the buildbot fleet by @hugovk for commit 39e803e 🤖

Results will be shown at:

https://buildbot.python.org/all/#/grid?branch=refs%2Fpull%2F148720%2Fmerge

If you want to schedule another build, you need to add the 🔨 test-with-buildbots label again.

@bedevere-bot bedevere-bot removed the 🔨 test-with-buildbots Test PR w/ buildbots; report in status section label Apr 25, 2026
sergey-miryanov and others added 3 commits April 26, 2026 01:01
…e-142516.GcGen315.rst

Co-authored-by: Hugo van Kemenade <1324225+hugovk@users.noreply.github.com>
Comment thread Doc/library/gc.rst Outdated
Co-authored-by: Hugo van Kemenade <1324225+hugovk@users.noreply.github.com>
@hugovk hugovk added the 🔨 test-with-buildbots Test PR w/ buildbots; report in status section label Apr 26, 2026
@bedevere-bot
Copy link
Copy Markdown

🤖 New build scheduled with the buildbot fleet by @hugovk for commit ba7443e 🤖

Results will be shown at:

https://buildbot.python.org/all/#/grid?branch=refs%2Fpull%2F148720%2Fmerge

If you want to schedule another build, you need to add the 🔨 test-with-buildbots label again.

@bedevere-bot bedevere-bot removed the 🔨 test-with-buildbots Test PR w/ buildbots; report in status section label Apr 26, 2026
@hugovk
Copy link
Copy Markdown
Member

hugovk commented Apr 26, 2026

These buildbots failures look unrelated: pre-existing failures or flaky tests.

@hugovk hugovk merged commit 9a7e205 into python:3.14 Apr 26, 2026
100 of 110 checks passed
tmeijn pushed a commit to tmeijn/dotfiles that referenced this pull request May 8, 2026
This MR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [uv](https://github.com/astral-sh/uv) | patch | `0.11.7` → `0.11.11` |

MR created with the help of [el-capitano/tools/renovate-bot](https://gitlab.com/el-capitano/tools/renovate-bot).

**Proposed changes to behavior should be submitted there as MRs.**

---

### Release Notes

<details>
<summary>astral-sh/uv (uv)</summary>

### [`v0.11.11`](https://github.com/astral-sh/uv/blob/HEAD/CHANGELOG.md#01111)

[Compare Source](astral-sh/uv@0.11.10...0.11.11)

Released on 2026-05-06.

##### Bug fixes

- Accept legacy ID format from pre-0.11.9 cache entries ([#&#8203;19301](astral-sh/uv#19301))

### [`v0.11.10`](https://github.com/astral-sh/uv/blob/HEAD/CHANGELOG.md#01110)

[Compare Source](astral-sh/uv@0.11.9...0.11.10)

Released on 2026-05-05.

##### Bug fixes

- Allow pre-release Python requests with non-zero patch versions ([#&#8203;19286](astral-sh/uv#19286))

### [`v0.11.9`](https://github.com/astral-sh/uv/blob/HEAD/CHANGELOG.md#0119)

[Compare Source](astral-sh/uv@0.11.8...0.11.9)

Released on 2026-05-04.

This release includes a special release candidate for the next Python 3.14 patch release. Python 3.14 included a new garbage collection implementation, which reduced pause times but caused significant unexpected memory pressure in production environments. In 3.14.5 and 3.15, the previous garbage collection implementation will be restored.

We would greatly appreciate if you tested the 3.14.5rc1 version included in this release. The stable version is expected to be released soon and any feedback on potential issues would be helpful to the Python development team.

For more context, see the [announcement](https://discuss.python.org/t/reverting-the-incremental-gc-in-python-3-14-and-3-15/107014), [issue](python/cpython#148726), and [pull request](python/cpython#148720).

Issues with the new release can be reported in the uv or CPython issue trackers.

##### Python

- Upgrade PyPy to v7.3.22
- Add CPython 3.14.5rc1
- On macOS, CPython statically links `libpython` to match Linux

##### Enhancements

- Omit compatible release desugaring for pre-release hints ([#&#8203;19267](astral-sh/uv#19267))
- Fix file locks on Android ([#&#8203;18323](astral-sh/uv#18323))

##### Preview

- `uv audit` add reporting for adverse project statuses ([#&#8203;19128](astral-sh/uv#19128))

##### Bug fixes

- Discover versioned Python executables when `requires-python` pins a version ([#&#8203;18700](astral-sh/uv#18700))
- Fix URL prefix matching to require path boundaries ([#&#8203;19154](astral-sh/uv#19154))
- Fix transitive Git path dependencies in lockfiles ([#&#8203;19269](astral-sh/uv#19269))
- Handle incorrect unlock error in `LockedFile::drop` on Wine ([#&#8203;19229](astral-sh/uv#19229))
- Prevent uninstalling site-packages for empty `top_level.txt` in `.egg-info` ([#&#8203;19114](astral-sh/uv#19114))
- Use symlinks instead of junctions on Wine ([#&#8203;19213](astral-sh/uv#19213))
- Fix floating-point environment handling on ARMv7 ([#&#8203;19157](astral-sh/uv#19157))
- Redact credentials from remote requirements URL in offline errors ([#&#8203;19216](astral-sh/uv#19216))
- Windows tramplolines no longer set `PYTHONHOME` and only set `__PYVENV_LAUNCHER__` for virtual environments ([#&#8203;19199](astral-sh/uv#19199))

##### Documentation

- Mark `--native-tls` and `UV_NATIVE_TLS` as deprecated ([#&#8203;18705](astral-sh/uv#18705))
- Re-add `pytorch-triton-rocm` to PyTorch ROCm docs ([#&#8203;19241](astral-sh/uv#19241))
- Tweak changelog entries for 0.11.8 ([#&#8203;19188](astral-sh/uv#19188))
- Add 'Exporting lockfiles' to the Concepts->Projects index ([#&#8203;19209](astral-sh/uv#19209))
- Clarify that `uv init` creates git files / folders in the projects guide ([#&#8203;19183](astral-sh/uv#19183))

### [`v0.11.8`](https://github.com/astral-sh/uv/blob/HEAD/CHANGELOG.md#0118)

[Compare Source](astral-sh/uv@0.11.7...0.11.8)

Released on 2026-04-27.

##### Enhancements

- Add `--python-downloads-json-url` to `python pin` ([#&#8203;19092](astral-sh/uv#19092))
- Fetch uv from Astral mirror during self-update ([#&#8203;18682](astral-sh/uv#18682))
- Support `pip uninstall -y` ([#&#8203;19082](astral-sh/uv#19082))
- Allow `exclude-newer` to be missing from the lockfile when `exclude-newer-span` is present ([#&#8203;19024](astral-sh/uv#19024))
- Only show the version number in `uv self version --short` ([#&#8203;19019](astral-sh/uv#19019))
- Silence warnings on empty `SSL_CERT_DIR` directory ([#&#8203;19018](astral-sh/uv#19018))
- Use a sentinel timestamp for relative `exclude-newer` and `exclude-newer-package` values in lockfiles ([#&#8203;19022](astral-sh/uv#19022), [#&#8203;19101](astral-sh/uv#19101))

##### Configuration

- Add `UV_PYTHON_NO_REGISTRY` ([#&#8203;19035](astral-sh/uv#19035))
- Add an environment variable for `UV_NO_PROJECT` ([#&#8203;19052](astral-sh/uv#19052))
- Expose `UV_PYTHON_SEARCH_PATH` for Python discovery `PATH` overrides ([#&#8203;19034](astral-sh/uv#19034))

##### Bug fixes

- Add `rust-toolchain.toml` to uv-build sdist ([#&#8203;19131](astral-sh/uv#19131))
- Ensure uv invocations of git do not inherit repository location environment variables ([#&#8203;19088](astral-sh/uv#19088))
- Redact pre-signed upload URLs in verbose output ([#&#8203;19146](astral-sh/uv#19146))
- Handle transitive URL dependencies in PEP 517 build requirements ([#&#8203;19076](astral-sh/uv#19076), [#&#8203;19086](astral-sh/uv#19086))
- Support `uv lock` on a `pyproject.toml` that only contains dependency-groups ([#&#8203;19087](astral-sh/uv#19087))
- Disable transparent Python upgrades in projects when a patch version is requested via `.python-version` ([#&#8203;19102](astral-sh/uv#19102))
- Fix Python variant tagging in the Windows registry ([#&#8203;19012](astral-sh/uv#19012))
- Ban external symlinks in `.tar.zst` wheels ([#&#8203;19144](astral-sh/uv#19144))

##### Distributions

- Remove deprecated license classifiers from uv-build and add Python 3.14 classifier ([#&#8203;19130](astral-sh/uv#19130))

##### Documentation

- Bump astral-sh/setup-uv version in docs ([#&#8203;19030](astral-sh/uv#19030))
- Update PyTorch documentation for PyTorch 2.11 ([#&#8203;19095](astral-sh/uv#19095))

</details>

---

### Configuration

📅 **Schedule**: (UTC)

- Branch creation
  - At any time (no schedule defined)
- Automerge
  - At any time (no schedule defined)

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever MR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this MR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this MR, check this box

---

This MR has been generated by [Mend Renovate](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4xNjguNSIsInVwZGF0ZWRJblZlciI6IjQzLjE2OC41IiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJSZW5vdmF0ZSBCb3QiLCJhdXRvbWF0aW9uOmJvdC1hdXRob3JlZCIsImRlcGVuZGVuY3ktdHlwZTo6cGF0Y2giXX0=-->
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants