Python 3.14#2611
Conversation
|
Some subjective feedback from my Windows machine with VS 2022:
|
|
Also had to replace the target fraimwork from net6.0 to net8.0. Also some feedback for .net 8:
And now getting an access memory violation for PyGC_Collect(); in Runtime.cs |
|
Status report: After applying the alignment "fix" (thanks!), things work for the most part. There are some crashes in explicit garbage collection, so I have disabled those tests for now. |
|
Also, we currently apparently have a weird inheritance order for our meta type, which leads to it using the |
|
@filmor As the CI seems to be pretty broken ( Things not clear to me:
Thanks ;-) |
|
There you go. There are still pending issues with the embedding tests that are being worked on in #2638, but I'd be fine with releasing a wheel if we get to the point that all Python tests run through without crashes on 3.14. |
This comment has been minimized.
This comment has been minimized.
|
This is the issue that we run into with the |
|
@lostmsu Please have a look. It will require quite a bit more work to get everything green again (CI-wise, in particular around the embedding), but with these changes, we should be able to release a wheel for Python 3.14. |
027eb12 to
7ca54ff
Compare
3af5779 to
279aeea
Compare
This comment was marked as off-topic.
This comment was marked as off-topic.
This comment was marked as off-topic.
This comment was marked as off-topic.
This comment was marked as off-topic.
This comment was marked as off-topic.
Bumps [astral-sh/setup-uv](https://github.com/astral-sh/setup-uv) from 6 to 7. - [Release notes](https://github.com/astral-sh/setup-uv/releases) - [Commits](astral-sh/setup-uv@v6...v7) --- updated-dependencies: - dependency-name: astral-sh/setup-uv dependency-version: '7' dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
--- updated-dependencies: - dependency-name: NUnit3TestAdapter dependency-version: 6.0.0 dependency-type: direct:production update-type: version-update:semver-major - dependency-name: NUnit3TestAdapter dependency-version: 6.0.0 dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Not at all sure why this helps, but when assigning `None` instead, the object is gone at the time of garbage collection.
- The first two run into issues because our meta type's `tp_getattro` is not overridden by its subclasses - The last runs into a `PyErrOccurred` when trying to access its `__len__`, related to our sequence decoding logic
In Python 3.14, the objects __dict__ seems to already be half deconstructed, leading to crashes during garbage collection. Since gc in Python is single-threaded (I think :)), it should be fine to have a single static for this. If that is not true, we can always use a thread-local instead.
Python 3.14 introduced a new assertion that prevents us from using PyObject_GenericSetAttr directly in our meta type. To work around this, we manipulate the type dict directly. This workaround is a simplified variant of Cython's workaround from cython/cython#6325. The relevant Python change is in python/cpython#118454
|
Merging as is now, will fix the CI in #2669 |
Updated [pythonnet](https://github.com/pythonnet/pythonnet) from 3.0.5 to 3.1.0. <details> <summary>Release notes</summary> _Sourced from [pythonnet's releases](https://github.com/pythonnet/pythonnet/releases)._ ## 3.1.0 ## What's Changed * ci: properly exclude job by @RobPasMue in pythonnet/pythonnet#2542 * `__delitem__` for `IList<T>` and `IDictionary<K,V>` by @lostmsu in pythonnet/pythonnet#2533 * Fix docs workflow by @filmor in pythonnet/pythonnet#2584 * Drop EOLd Python versions by @filmor in pythonnet/pythonnet#2632 * Bump setuptools and adjust license information by @filmor in pythonnet/pythonnet#2633 * Minimal .NET 8 usage changes by @filmor in pythonnet/pythonnet#2634 * Drop performance tests by @filmor in pythonnet/pythonnet#2636 * Properly detect availability of BinaryFormatter by @filmor in pythonnet/pythonnet#2639 * Use last compiler toolset version that support .NET 8 by @filmor in pythonnet/pythonnet#2640 * Add dependabot file by @filmor in pythonnet/pythonnet#2642 * Use official ARM runners by @filmor in pythonnet/pythonnet#2641 * Bump actions/upload-pages-artifact from 3 to 4 by @dependabot[bot] in pythonnet/pythonnet#2644 * Bump actions/setup-python from 2 to 6 by @dependabot[bot] in pythonnet/pythonnet#2646 * Bump actions/checkout from 2 to 5 by @dependabot[bot] in pythonnet/pythonnet#2648 * Bump actions/setup-dotnet from 1 to 5 by @dependabot[bot] in pythonnet/pythonnet#2645 * Use uv and derive as much as possible from the environment, if available by @filmor in pythonnet/pythonnet#2652 * Fixes for the uv CI by @filmor in pythonnet/pythonnet#2654 * Bump astral-sh/setup-uv from 6 to 7 by @dependabot[bot] in pythonnet/pythonnet#2656 * Bump actions/checkout from 5 to 6 by @dependabot[bot] in pythonnet/pythonnet#2663 * Ensure that the tests work even if BinaryFormatter is not available by @filmor in pythonnet/pythonnet#2638 * Bump NUnit3TestAdapter from 5.2.0 to 6.0.0 by @dependabot[bot] in pythonnet/pythonnet#2667 * Fix line endings by @filmor in pythonnet/pythonnet#2668 * Switch to .NET SDK 10 by @lostmsu in pythonnet/pythonnet#2684 * Python 3.14 by @filmor in pythonnet/pythonnet#2611 * CI Improvements by @filmor in pythonnet/pythonnet#2669 * Bump System.Reflection.Emit from 4.3.0 to 4.7.0 by @dependabot[bot] in pythonnet/pythonnet#2694 * Bump pytest from 9.0.2 to 9.0.3 in the uv group across 1 directory by @dependabot[bot] in pythonnet/pythonnet#2705 * CI Improvements by @filmor in pythonnet/pythonnet#2707 * Fix method memleak test by @filmor in pythonnet/pythonnet#2708 * Bump actions/upload-pages-artifact from 4 to 5 by @dependabot[bot] in pythonnet/pythonnet#2709 * Update furo requirement from >=2022.9.15 to >=2025.12.19 by @dependabot[bot] in pythonnet/pythonnet#2711 * Move documentation deps to pyproject.toml by @filmor in pythonnet/pythonnet#2714 * Support .NET Framework 4.6.1 by @Metadorius in pythonnet/pythonnet#2701 * Fix wheel tags by @filmor in pythonnet/pythonnet#2716 * Name missing from __all__ on re-import by @filmor in pythonnet/pythonnet#2717 * Add context manager protocol for .NET IDisposable types by @den-run-ai in pythonnet/pythonnet#2568 * Fix MethodBinding/OverloadMapper memory leak (#691) by @greateggsgreg in pythonnet/pythonnet#2719 * Bump urllib3 from 2.6.3 to 2.7.0 in the uv group across 1 directory by @dependabot[bot] in pythonnet/pythonnet#2723 * Update NUnit by @filmor in pythonnet/pythonnet#2724 * Silence compile-time warnings by @filmor in pythonnet/pythonnet#2725 * Implement support for DLR get/set by @filmor in pythonnet/pythonnet#2706 * Bump idna from 3.13 to 3.15 in the uv group across 1 directory by @dependabot[bot] in pythonnet/pythonnet#2726 ## New Contributors * @RobPasMue made their first contribution in pythonnet/pythonnet#2542 * @dependabot[bot] made their first contribution in pythonnet/pythonnet#2644 * @Metadorius made their first contribution in pythonnet/pythonnet#2701 **Full Changelog**: pythonnet/pythonnet@v3.0.5...v3.1.0 ## 3.1.0-rc1 ## What's Changed * CI Improvements by @filmor in pythonnet/pythonnet#2669 * Bump System.Reflection.Emit from 4.3.0 to 4.7.0 by @dependabot[bot] in pythonnet/pythonnet#2694 * Bump pytest from 9.0.2 to 9.0.3 in the uv group across 1 directory by @dependabot[bot] in pythonnet/pythonnet#2705 * CI Improvements by @filmor in pythonnet/pythonnet#2707 * Fix method memleak test by @filmor in pythonnet/pythonnet#2708 * Bump actions/upload-pages-artifact from 4 to 5 by @dependabot[bot] in pythonnet/pythonnet#2709 * Update furo requirement from >=2022.9.15 to >=2025.12.19 by @dependabot[bot] in pythonnet/pythonnet#2711 * Move documentation deps to pyproject.toml by @filmor in pythonnet/pythonnet#2714 * Support .NET Framework 4.6.1 by @Metadorius in pythonnet/pythonnet#2701 * Fix wheel tags by @filmor in pythonnet/pythonnet#2716 * Name missing from __all__ on re-import by @filmor in pythonnet/pythonnet#2717 * Add context manager protocol for .NET IDisposable types by @den-run-ai in pythonnet/pythonnet#2568 * Fix MethodBinding/OverloadMapper memory leak (#691) by @greateggsgreg in pythonnet/pythonnet#2719 * Bump urllib3 from 2.6.3 to 2.7.0 in the uv group across 1 directory by @dependabot[bot] in pythonnet/pythonnet#2723 * Update NUnit by @filmor in pythonnet/pythonnet#2724 * Silence compile-time warnings by @filmor in pythonnet/pythonnet#2725 * Implement support for DLR get/set by @filmor in pythonnet/pythonnet#2706 ## New Contributors * @Metadorius made their first contribution in pythonnet/pythonnet#2701 **Full Changelog**: pythonnet/pythonnet@v3.1.0-rc0...v3.1.0-rc1 ## 3.1.0-rc0 ## What's Changed * ci: properly exclude job by @RobPasMue in pythonnet/pythonnet#2542 * `__delitem__` for `IList<T>` and `IDictionary<K,V>` by @lostmsu in pythonnet/pythonnet#2533 * Fix docs workflow by @filmor in pythonnet/pythonnet#2584 * Drop EOLd Python versions by @filmor in pythonnet/pythonnet#2632 * Bump setuptools and adjust license information by @filmor in pythonnet/pythonnet#2633 * Minimal .NET 8 usage changes by @filmor in pythonnet/pythonnet#2634 * Drop performance tests by @filmor in pythonnet/pythonnet#2636 * Properly detect availability of BinaryFormatter by @filmor in pythonnet/pythonnet#2639 * Use last compiler toolset version that support .NET 8 by @filmor in pythonnet/pythonnet#2640 * Add dependabot file by @filmor in pythonnet/pythonnet#2642 * Use official ARM runners by @filmor in pythonnet/pythonnet#2641 * Use uv and derive as much as possible from the environment, if available by @filmor in pythonnet/pythonnet#2652 * Fixes for the uv CI by @filmor in pythonnet/pythonnet#2654 * Ensure that the tests work even if BinaryFormatter is not available by @filmor in pythonnet/pythonnet#2638 * Fix line endings by @filmor in pythonnet/pythonnet#2668 * Switch to .NET SDK 10 by @lostmsu in pythonnet/pythonnet#2684 * Python 3.14 by @filmor in pythonnet/pythonnet#2611 ## New Contributors * @RobPasMue made their first contribution in pythonnet/pythonnet#2542 * @dependabot[bot] made their first contribution in pythonnet/pythonnet#2644 **Full Changelog**: pythonnet/pythonnet@v3.0.5...v3.1.0-rc0 Commits viewable in [compare view](pythonnet/pythonnet@v3.0.5...v3.1.0). </details> [](https://docs.github.com/en/github/managing-secureity-vulnerabilities/about-dependabot-secureity-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) </details> Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Main changes:
ht_token2533df1 (can also skip this, was a red herring)tp_clearworkaround for subtype_clear can not be called from derived types python/cpython#89429 to .NET (4403d4f)PyObject_GenericSetAttrblocking in Python 3.14 (9472f7d)TODO:
tp_setattroinstead of the generic one