- The most important change is rolling back the incremental
cyclic garbage collector (GC), which was added in one of
the alpha releases. The incremental GC had more significant
performance regressions in specific workloads than we
expected.
- Tests
- gh-124378: Updated test_ttk to pass with Tcl/Tk 8.6.15.
- Library
- gh-124538: Fixed crash when using gc.get_referents() on a
capsule object.
- gh-124498: Fix typing.TypeAliasType not to be generic, when
type_params is an empty tuple.
- gh-123017: Due to unreliable results on some devices,
time.strftime() no longer accepts negative years on
Android.
- gh-123014: os.pidfd_open() and signal.pidfd_send_signal()
are now unavailable when building against Android API
levels older than 31, since the underlying system calls may
cause a crash.
- gh-124248: Fixed potential crash when using struct to
process zero-width ‘Pascal string’ fields (0p).
- gh-87041: Fix a bug in argparse where lengthy subparser
argument help is incorrectly indented.
- gh-124212: Fix invalid variable in venv handling of failed
symlink on Windows
- gh-124171: Add workaround for broken fmod() implementations
on Windows, that loose zero sign (e.g. fmod(-10, 1) returns
0.0). Patch by Sergey B Kirpichev.
- gh-123934: Fix unittest.mock.MagicMock reseting magic
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python:Factory/python313?expand=0&rev=51
- Security
- gh-113659: Skip .pth files with names starting with a dot or
hidden file attribute.
- gh-112302: Created a Software Bill-of-Materials document and
tooling for tracking dependencies.
- Core and Builtins
- gh-107901: Compiler duplicates basic blocks that have an eval
breaker check, no line number, and multiple predecessors.
- gh-107901: A jump leaving an exception handler back to normal
code no longer checks the eval breaker.
- gh-113655: Set the C recursion limit to 4000 on Windows, and
10000 on Linux/OSX. This seems to be near the sweet spot to
maintain safety, but not compromise backwards compatibility.
- gh-113710: Add typed stack effects to the interpreter DSL, along
with various instruction annotations.
- gh-77046: On Windows, file descriptors wrapping Windows handles
are now created non inheritable by default (PEP 446). Patch by
Zackery Spytz and Victor Stinner.
- gh-113853: Guarantee that all executors make progress. This then
guarantees that tier 2 execution always makes progress.
- gh-113753: Fix an issue where the finalizer of PyAsyncGenASend
objects might not be called if they were allocated from a free
list.
- gh-107901: Compiler changed so that synthetic jumps which are
not at loop end no longer check the eval breaker.
- gh-113703: Fix a regression in the codeop module that was
causing it to incorrectly identify incomplete f-strings. Patch
by Pablo Galindo
- gh-89811: Check for a valid tp_version_tag before performing
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python:Factory/python313?expand=0&rev=3
Python 3.13.0 alpha 2¶
- Core and Builtins:
- Don’t include comments in f-string debug expressions. Patch
by Pablo Galindo
- Slightly optimize the Tier 2 (uop) interpreter by only
loading oparg and operand when needed. Also double the
trace size limit again, to 512 this time.
- Change docstrings of __dict__ and __weakref__.
- Lower the max parser stack depth to 1000 under WASI debug
builds.
- When Python is built in debug mode, set the C recursion
limit to 500 instead of 1500. A debug build is likely built
with low optimization level which implies higher stack
memory usage than a release build. Patch by Victor Stinner.
- Enable translating unspecialized FOR_ITER to Tier 2.
- Make hashlib related modules thread-safe without the GIL
- Deprecate assignment to a function’s __code__ field when
the new code object is of a mismatched type (e.g., from a
generator to a plain function).
- Raise exception if frame.clear() is called on a suspended
frame.
- Implement native thread ids for GNU KFreeBSD.
- Use exponential backoff to reduce the number of failed tier
2 optimization attempts by over 99%.
- Joining a thread now ensures the underlying OS thread has
exited. This is required for safer fork() in multi-threaded
processes.
- Make sure that tier 2 traces are de-optimized if the code
is instrumented
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python:Factory/python313?expand=0&rev=2