- Update to 3.13.0:
Major new features of the 3.13 series, compared to 3.12
Some of the new major new features and changes in Python 3.13 are:
- New features
- A new and improved interactive interpreter, based on
PyPy's, featuring multi-line editing and color support, as
well as colorized exception tracebacks.
- An experimental free-threaded build mode, which disables
the Global Interpreter Lock, allowing threads to run
more concurrently. The build mode is available as an
experimental feature in the Windows and macOS installers as
well.
- A preliminary, experimental JIT, providing the ground work
for significant performance improvements.
- The locals() builtin function (and its C equivalent)
now has well-defined semantics when mutating the
returned mapping, which allows debuggers to operate more
consistently.
- A modified version of mimalloc is now included, optional
but enabled by default if supported by the platform, and
required for the free-threaded build mode.
- Docstrings now have their leading indentation stripped,
reducing memory use and the size of .pyc files. (Most tools
handling docstrings already strip leading indentation.)
- The dbm module has a new dbm.sqlite3 backend that is used
by default when creating new files.
- WASI is now a Tier 2 supported platform. Emscripten is
no longer an officially supported platform (but Pyodide
continues to support Emscripten).
- Typing
- Support for type defaults in type parameters.
- A new type narrowing annotation, typing.TypeIs.
- A new annotation for read-only items in TypeDicts.
- A new annotation for marking deprecations in the type
system.
- Removals and new deprecations
- PEP 594 (Removing dead batteries from the standard library)
scheduled removals of many deprecated modules: aifc,
audioop, chunk, cgi, cgitb, crypt, imghdr, mailcap, msilib,
nis, nntplib, ossaudiodev, pipes, sndhdr, spwd, sunau,
telnetlib, uu, xdrlib, lib2to3.
- Many other removals of deprecated classes, functions and
methods in various standard library modules.
- C API removals and deprecations. (Some removals present
in alpha 1 were reverted in alpha 2, as the removals were
deemed too disruptive at this time.)
- New deprecations, most of which are scheduled for removal
from Python 3.15 or 3.16.
- For more details on the changes to Python 3.13, see What's
new in Python 3.13 in the documentation.
OBS-URL: https://build.opensuse.org/request/show/1206252
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python313?expand=0&rev=11
Major new features of the 3.13 series, compared to 3.12
Some of the new major new features and changes in Python 3.13 are:
- New features
- A new and improved interactive interpreter, based on
PyPy's, featuring multi-line editing and color support, as
well as colorized exception tracebacks.
- An experimental free-threaded build mode, which disables
the Global Interpreter Lock, allowing threads to run
more concurrently. The build mode is available as an
experimental feature in the Windows and macOS installers as
well.
- A preliminary, experimental JIT, providing the ground work
for significant performance improvements.
- The locals() builtin function (and its C equivalent)
now has well-defined semantics when mutating the
returned mapping, which allows debuggers to operate more
consistently.
- A modified version of mimalloc is now included, optional
but enabled by default if supported by the platform, and
required for the free-threaded build mode.
- Docstrings now have their leading indentation stripped,
reducing memory use and the size of .pyc files. (Most tools
handling docstrings already strip leading indentation.)
- The dbm module has a new dbm.sqlite3 backend that is used
by default when creating new files.
- WASI is now a Tier 2 supported platform. Emscripten is
no longer an officially supported platform (but Pyodide
continues to support Emscripten).
- Typing
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python:Factory/python313?expand=0&rev=56
- Update to 3.13.0~rc3:
- 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
methods return values after .reset_mock(return_value=True)
was called.
- gh-123968: Fix the command-line interface for the random
module to select floats between 0 and N, not 1 and N.
- gh-123892: Add "_wmi" to sys.stdlib_module_names. Patch by
Victor Stinner.
- gh-123339: Fix inspect.getsource() for classes
in collections.abc and decimal (for pure Python
implementation) modules. inspect.getcomments() now raises
OSError instead of IndexError if the __firstlineno__ value
for a class is out of bound.
- gh-121735: When working with zip archives,
importlib.resources now properly honors module-adjacent
references (e.g. files(pkg.mod) and not just files(pkg)).
- gh-122145: Fix an issue when reporting tracebacks
corresponding to Python code emitting an empty AST
body. Patch by Nikita Sobolev and Bénédikt Tran.
- gh-119004: Fix a crash in OrderedDict.__eq__ when operands
are mutated during the check. Patch by Bénédikt Tran.
- bpo-44864: Do not translate user-provided strings in
argparse.ArgumentParser.
- IDLE
- gh-112938: Fix uninteruptable hang when Shell gets rapid
continuous output.
- gh-120104: Fix padding in config and search dialog windows
in IDLE.
- Documentation
- gh-124720: Update “Using Python on a Mac” section of the
“Python Setup and Usage” document and include information
on installing free-threading support.
- gh-116622: Add an Android platform guide, and flag modules
not available on Android.
- Core and Builtins
- gh-124567: Revert the incremental GC (in 3.13), since it’s
not clear the benefits outweigh the costs at this point.
- gh-124642: Fixed scalability issue in free-threaded builds
for lock-free reads from dictionaries in multi-threaded
scenarios
- gh-116510: Fix a bug that can cause a crash when
sub-interpreters use “basic” single-phase extension
modules. Shared objects could refer to PyGC_Head nodes that
had been freed as part of interpreter cleanup.
- gh-124547: When deallocating an object with inline values
whose __dict__ is still live: if memory allocation for the
inline values fails, clear the dictionary. Prevents an
interpreter crash.
- gh-124513: Fix a crash in FrameLocalsProxy constructor:
check the number of arguments. Patch by Victor Stinner.
- gh-124442: Fix nondeterminism in compilation by sorting the
value of __static_attributes__. Patch by kp2pml30.
- gh-123856: Fix PyREPL failure when a keyboard interrupt is
triggered after using a history search
- gh-65961: Document the deprecation of setting and using
__package__ and __cached__.
- gh-124027: Support <page up>, <page down>, and <delete>
keys in the Python REPL when $TERM is set to vt100.
- gh-77894: Fix possible crash in the garbage collector when
it tries to break a reference loop containing a memoryview
object. Now a memoryview object can only be cleared if
there are no buffers that refer it.
- gh-123339: Setting the __module__ attribute for a class now
removes the __firstlineno__ item from the type’s dict, so
they will no longer be inconsistent.
- C API
- gh-124160: Fix crash when importing modules containing
state and single-phase initialization in a subinterpreter.
- gh-123880: Fixed a bug that prevented circular imports of
extension modules that use single-phase initialization.
- Build
- gh-124487: Windows builds now use Windows 8.1 as their API
baseline (installation already required Windows 8.1).
- gh-124043: Building using --with-trace-refs is
(temporarily) disallowed when the GIL is disabled.
- Remove upstreamed patch:
- gh-124040-fix-test-math-i586.patch
OBS-URL: https://build.opensuse.org/request/show/1205032
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python313?expand=0&rev=9
- 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
- Update to 3.13.0~rc2:
- Tools/Demos
- gh-123418: Update GitHub CI workflows to use OpenSSL 3.0.15
and multissltests to use 3.0.15, 3.1.7, and 3.2.3.
- Tests
- gh-119727: Add --single-process command line option to
Python test runner (regrtest). Patch by Victor Stinner.
- gh-101525: Skip test_gdb if the binary is relocated by
BOLT. Patch by Donghee Na.
- Security
- gh-123678: Upgrade libexpat to 2.6.3
- gh-121285: Remove backtracking from tarfile header parsing
for hdrcharset, PAX, and GNU sparse headers (bsc#1230227,
CVE-2024-6232).
- Library
- gh-123448: Fixed memory leak of typing.NoDefault by moving
it to the static types array.
- gh-123409: Fix ipaddress.IPv6Address.reverse_pointer output
according to RFC 3596, §2.5. Patch by Bénédikt Tran.
- gh-123270: Applied a more surgical fix for malformed
payloads in zipfile.Path causing infinite loops (gh-122905)
without breaking contents using legitimate characters
(bsc#1229704, CVE-2024-8088).
- gh-123228: Fix return type for
_pyrepl.readline._ReadlineWrapper.get_line_buffer() to be
str(). Patch by Sergey B Kirpichev.
- gh-123240: Raise audit events for the input() in the new
REPL.
- gh-123243: Fix memory leak in _decimal.
- gh-122546: Consistently use same file name for different
OBS-URL: https://build.opensuse.org/request/show/1199398
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python313?expand=0&rev=7
- Tools/Demos
- gh-123418: Update GitHub CI workflows to use OpenSSL 3.0.15
and multissltests to use 3.0.15, 3.1.7, and 3.2.3.
- Tests
- gh-119727: Add --single-process command line option to
Python test runner (regrtest). Patch by Victor Stinner.
- gh-101525: Skip test_gdb if the binary is relocated by
BOLT. Patch by Donghee Na.
- Security
- gh-123678: Upgrade libexpat to 2.6.3
- gh-121285: Remove backtracking from tarfile header parsing
for hdrcharset, PAX, and GNU sparse headers (bsc#1230227,
CVE-2024-6232).
- Library
- gh-123448: Fixed memory leak of typing.NoDefault by moving
it to the static types array.
- gh-123409: Fix ipaddress.IPv6Address.reverse_pointer output
according to RFC 3596, §2.5. Patch by Bénédikt Tran.
- gh-123270: Applied a more surgical fix for malformed
payloads in zipfile.Path causing infinite loops (gh-122905)
without breaking contents using legitimate characters
(bsc#1229704, CVE-2024-8088).
- gh-123228: Fix return type for
_pyrepl.readline._ReadlineWrapper.get_line_buffer() to be
str(). Patch by Sergey B Kirpichev.
- gh-123240: Raise audit events for the input() in the new
REPL.
- gh-123243: Fix memory leak in _decimal.
- gh-122546: Consistently use same file name for different
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python:Factory/python313?expand=0&rev=46
- Add gh122136-test_asyncio-kernel-buffer-data.patch fixing
gh#python/cpython#122136 (changes in kernel provide different
amount of data in the socket buffers).
- Remove skip_test_abort_clients.patch, which is not needed any
more.
- Add CVE-2024-8088-inf-loop-zipfile_Path.patch to prevent
malformed payload to cause infinite loops in zipfile.Path
(bsc#1229704, CVE-2024-8088).
OBS-URL: https://build.opensuse.org/request/show/1197482
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python313?expand=0&rev=6
- Add CVE-2024-6923-email-hdr-inject.patch to prevent email
header injection due to unquoted newlines (bsc#1228780,
CVE-2024-6923).
- Adding bso1227999-reproducible-builds.patch fixing bsc#1227999
adding reproducibility patches from gh#python/cpython!121872
and gh#python/cpython!121883.
- Add skip_test_abort_clients.patch (gh#python/cpython#122136)
skip not yet fixed failing test
- %{profileopt} variable is set according to the variable
%{do_profiling} (bsc#1227999)
- Update bluez-devel-vendor.tar.xz
- Update to 3.13.0~rc1:
- Tests
- gh-59022: Add tests for pkgutil.extend_path(). Patch by
Andreas Stocker.
- gh-99242: os.getloadavg() may throw OSError when
running regression tests under certain conditions (e.g.
chroot). This error is now caught and ignored, since
reporting load average is optional.
- Security
- gh-122133: Authenticate the socket connection for the
socket.socketpair() fallback on platforms where AF_UNIX is
not available like Windows.
- Patch by Gregory P. Smith <greg@krypto.org> and Seth Larson
<seth@python.org>. Reported by Ellie <el@horse64.org>
- gh-121957: Fixed missing audit events around interactive
use of Python, now also properly firing for python -i, as
well as for python -m asyncio. The events in question are
cpython.run_stdin and cpython.run_startup.
OBS-URL: https://build.opensuse.org/request/show/1192376
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python313?expand=0&rev=4
- Tests
- gh-59022: Add tests for pkgutil.extend_path(). Patch by
Andreas Stocker.
- gh-99242: os.getloadavg() may throw OSError when
running regression tests under certain conditions (e.g.
chroot). This error is now caught and ignored, since
reporting load average is optional.
- Security
- gh-122133: Authenticate the socket connection for the
socket.socketpair() fallback on platforms where AF_UNIX is
not available like Windows.
- Patch by Gregory P. Smith <greg@krypto.org> and Seth Larson
<seth@python.org>. Reported by Ellie <el@horse64.org>
- gh-121957: Fixed missing audit events around interactive
use of Python, now also properly firing for python -i, as
well as for python -m asyncio. The events in question are
cpython.run_stdin and cpython.run_startup.
- Library
- gh-122400: Handle ValueErrors raised by os.stat() in
filecmp.dircmp and filecmp.cmpfiles(). Patch by Bénédikt
Tran.
- gh-122311: Fix some error messages in pickle.
- gh-122332: Fixed segfault with asyncio.Task.get_coro() when
using an eager task factory.
- gh-105733: ctypes.ARRAY() is now soft deprecated: it no
longer emits deprecation warnings and is not scheduled for
removal.
- gh-122087: Restore inspect.ismethoddescriptor() and
inspect.isroutine() returning False for functools.partial
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python:Factory/python313?expand=0&rev=31
- Update F00251-change-user-install-location.patch to install packages
in /usr/local by default when using pip outside of a RPMBUILD
environment.
- Update to 3.13.0~b4:
- Tests
- gh-121084: Fix test_typing random leaks. Clear typing ABC
caches when running tests for refleaks (-R option): call
_abc_caches_clear() on typing abstract classes and their
subclasses.
- gh-121160: Add a test for
readline.set_history_length(). Note that this test may fail
on readline libraries.
- gh-121200: Fix test_expanduser_pwd2() of
test_posixpath. Call getpwnam() to get pw_dir, since it
can be different than getpwall() pw_dir.
- gh-121188: When creating the JUnit XML file, regrtest
now escapes characters which are invalid in XML, such
as the chr(27) control character used in ANSI escape
sequences.
- Library
- gh-57141: The shallow argument to filecmp.dircmp (new in
Python 3.13) is now keyword-only.
- gh-121245: Simplify handling of the history file in
site.register_readline() helper. The CAN_USE_PYREPL
variable now will be initialized, when imported.
- gh-121332: Fix constructor of ast nodes with custom
_attributes. Previously, passing custom attributes would
raise a DeprecationWarning. Passing arguments to the
constructor that are not in _fields or _attributes remains
deprecated.
- gh-121279: Avoid NameError for the warnings module when
accessing the depracated atributes of the importlib.abc
module.
- gh-121245: Fix a bug in the handling of the command history
of the new REPL that caused the history file to be wiped at
REPL exit.
- gh-87744: Fix waitpid race while calling send_signal() in
asyncio.
- gh-121018: Fixed other issues where argparse.ArgumentParser
did not honor exit_on_error=False.
- gh-120678: Fix regression in the new REPL that meant that
globals from files passed using the -i argument would not
be included in the REPL’s global namespace.
- gh-120782: Fix wrong references of the datetime types after
reloading the module.
- gh-120713: datetime.datetime.strftime() now 0-pads years
with less than four digits for the format specifiers %Y and
%G on Linux.
- gh-117983: Defer the threading import in importlib.util
until lazy loading is used.
- gh-119189: When using the ** operator or pow() with
Fraction as the base and an exponent that is not rational,
a float, or a complex, the fraction is no longer converted
to a float.
- gh-118714: Allow restart in post-mortem debugging of
pdb. Removed restart message when the user quits pdb from
post-mortem mode.
- gh-105623: Fix performance degradation in
logging.handlers.RotatingFileHandler.
- IDLE
- gh-78889: Stop Shell freezes by blocking user access to
non-method sys.stdout.shell attributes, which are all
private.
- Documentation
- gh-121749: Fix documentation for PyModule_AddObjectRef().
- gh-120012: Clarify the behaviours of
multiprocessing.Queue.empty() and
multiprocessing.SimpleQueue.empty() on closed queues.
- Core and Builtins
- gh-121860: Fix crash when rematerializing a managed
dictionary after it was deleted.
- gh-121814: Fixed the SegFault when PyEval_SetTrace() is
used with no Python frame on stack.
- gh-121295: Fix PyREPL console getting into a blocked state
after interrupting a long paste
- gh-121794: Fix bug in free-threaded Python where a
resurrected object could lead to a negative ref count
assertion failure.
- gh-121657: Improve the SyntaxError message if the user
tries to use yield from outside a function.
- gh-121609: Fix pasting of characters containing unicode
character joiners in the new REPL. Patch by Marta Gomez
Macias
- gh-117482: Unexpected slot wrappers are no longer created
for builtin static types in subinterpreters.
- gh-121499: Fix a bug affecting how multi-line history was
being rendered in the new REPL after interacting with the
new screen cache. Patch by Pablo Galindo
- gh-121497: Fix a bug that was preventing the REPL to
correctly respect the history when an input hook was
set. Patch by Pablo Galindo
- gh-121012: Tier 2 execution now ensures that list iterators
remain exhausted, once they become exhausted.
- gh-121439: Allow tuples of length 20 in the freelist to be
reused.
- gh-121368: Fix race condition in _PyType_Lookup in the
free-threaded build due to a missing memory fence. This
could lead to _PyType_Lookup returning incorrect results on
arm64.
- gh-121130: Fix f-strings with debug expressions in format
specifiers. Patch by Pablo Galindo
- gh-121115: PyLong_AsNativeBytes() no longer
uses __index__() methods by default. The
Py_ASNATIVEBYTES_ALLOW_INDEX flag has been added to allow
it.
- C API
- gh-89364: Export the PySignal_SetWakeupFd()
function. Previously, the function was documented but
it couldn’t be used in 3rd party code. Patch by Victor
Stinner.
- gh-113993: PyUnicode_InternInPlace() no longer
Seprevents its argument from being garbage collected
Several functions that take char * are now documented
Seas possibly preventing string objects from being
Segarbage collected; refer to their documentation
Sefor details: PyUnicode_InternFromString(),
SePyDict_SetItemString(), PyObject_SetAttrString(),
SePyObject_DelAttrString(), PyUnicode_InternFromString(),
Seand PyModule_Add* convenience functions
- gh-113601: Removed debug build assertions related to
interning strings, which were falsely triggered by stable
ABI extensions.
- gh-112136: Restore the private _PyArg_Parser structure and
the private _PyArg_ParseTupleAndKeywordsFast() function,
previously removed in Python 3.13 alpha 1. Patch by Victor
Stinner.
- Build
- gh-120371: Support WASI SDK 22 by explicitly skipping
functions that are just stubs in wasi-libc.
- gh-121731: Fix mimalloc compile error on GNU/Hurd
- gh-121487: Fix deprecation warning for ATOMIC_VAR_INIT in
mimalloc.
- gh-121467: Fix a Makefile bug that prevented mimalloc
header files from being installed.
- gh-121103: On POSIX systems, excluding macOS framework
installs, the lib directory for the free-threaded build now
includes a “t” suffix to avoid conflicts with a co-located
default build installation.
- gh-120831: The default minimum iOS version was increased to
13.0.
- gh-113565: Improve curses and curses.panel dependency
checks in configure.
- Remove %suse_update_desktop_file macro as it is not useful any
more.
OBS-URL: https://build.opensuse.org/request/show/1189339
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python313?expand=0&rev=3
- Tests
- gh-121084: Fix test_typing random leaks. Clear typing ABC
caches when running tests for refleaks (-R option): call
_abc_caches_clear() on typing abstract classes and their
subclasses.
- gh-121160: Add a test for
readline.set_history_length(). Note that this test may fail
on readline libraries.
- gh-121200: Fix test_expanduser_pwd2() of
test_posixpath. Call getpwnam() to get pw_dir, since it
can be different than getpwall() pw_dir.
- gh-121188: When creating the JUnit XML file, regrtest
now escapes characters which are invalid in XML, such
as the chr(27) control character used in ANSI escape
sequences.
- Library
- gh-57141: The shallow argument to filecmp.dircmp (new in
Python 3.13) is now keyword-only.
- gh-121245: Simplify handling of the history file in
site.register_readline() helper. The CAN_USE_PYREPL
variable now will be initialized, when imported.
- gh-121332: Fix constructor of ast nodes with custom
_attributes. Previously, passing custom attributes would
raise a DeprecationWarning. Passing arguments to the
constructor that are not in _fields or _attributes remains
deprecated.
- gh-121279: Avoid NameError for the warnings module when
accessing the depracated atributes of the importlib.abc
module.
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python:Factory/python313?expand=0&rev=26
- move pathlib to -base
- move _pyrepl to -base (used by pydoc which is in base)
- fix import-mapping
- restrict PEP668 to ALP/Tumbleweed
* Support Expat >= 2.4.5
- allow build with Sphinx >= 3.x
* remove importlib_resources and importlib-metadata
- bpo-41304: Fixes python3x._pth being ignored on Windows, caused
- bpo-29778: Ensure python3.dll is loaded from correct locations
- bpo-39603: Prevent http header injection by rejecting control
“__setattr__” in a multi-inheritance setup and
- bpo-41247: Always cache the running loop holder when running
- bpo-41252: Fix incorrect refcounting in
- bpo-41215: Use non-NULL default values in the PEG parser
- bpo-41218: Python 3.8.3 had a regression where compiling with
ast.PyCF_ALLOW_TOP_LEVEL_AWAIT would
- bpo-41175: Guard against a NULL pointer dereference within
- bpo-39960: The “hackcheck” that prevents sneaking around a type’s
__setattr__() by calling the superclass method was
- bpo-41288: Unpickling invalid NEWOBJ_EX opcode with the
- bpo-39017: Avoid infinite loop when reading specially crafted
- bpo-41207: In distutils.spawn, restore expectation that
- bpo-41194: Fix a crash in the _ast module: it can no longer be
- bpo-39384: Fixed email.contentmanager to allow set_content() to set a
- bpo-41300: Save files with non-ascii chars.
- bpo-37765: Add keywords to module name completion list.
- bpo-40170: Revert PyType_HasFeature() change: it reads
again directly the PyTypeObject.tp_flags
member when the limited C API is not used, rather than always calling
OBS-URL: https://build.opensuse.org/request/show/1184193
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python:Factory/python313?expand=0&rev=20
* Core and Builtins
- gh-119462: Make sure that invariants of type versioning are
maintained:
* Superclasses always have their version number assigned
before subclasses
* The version tag is always zero if the tag is not valid.
* The version tag is always non-zero if the tag is valid.
- gh-120437: Fix _CHECK_STACK_SPACE optimization problems
introduced in gh-118322.
- gh-120722: Correctly set the bytecode position on return
instructions within lambdas. Patch by Jelle Zijlstra.
- gh-120367: Fix bug where compiler creates a redundant
jump during pseudo-op replacement. Can only happen with
a synthetic AST that has a try on the same line as the
instruction following the exception handler.
- gh-113993: Strings interned with sys.intern() are again
garbage-collected when no longer used, as per the
documentation. Strings interned with the C function
PyUnicode_InternInPlace() are still immortal. Internals of
the string interning mechanism have been changed. This may
affect performance and identities of str objects.
- gh-120384: Fix an array out of bounds crash in
list_ass_subscript, which could be invoked via some
specificly tailored input: including concurrent
modification of a list object, where one thread assigns a
slice and another clears it.
- gh-120367: Fix crash in compiler on code with redundant
NOPs and JUMPs which show up after exception handlers are
moved to the end of the code.
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python:Factory/python313?expand=0&rev=19
- Fix doc package build
gh#python/cpython#120150
- Update to 3.13.0b2:
- Security
- gh-118773: Fixes creation of ACLs in os.mkdir() on Windows to
work correctly on non-English machines.
- gh-118486: os.mkdir() on Windows now accepts mode of 0o700 to
restrict the new directory to the current user. This fixes
CVE-2024-4030 affecting tempfile.mkdtemp() in scenarios where
the base temporary directory is more permissive than the
default.
- Core and Builtins
- gh-119724: Reverted improvements to error messages for elif/else
statements not matching any valid statements, which made in hard
to locate the syntax errors inside those elif/else blocks.
- gh-119842: Honor PyOS_InputHook() in the new REPL. Patch by
Pablo Galindo
- gh-119821: Fix execution of annotation scopes within classes
when globals is set to a non-dict. Patch by Jelle Zijlstra.
- gh-119548: Add a clear command to the REPL. Patch by Pablo
Galindo
- gh-111999: Fix the signature of str.format_map().
- gh-119560: An invalid assert in beta 1 has been removed. The
assert would fail if PyState_FindModule() was used in an
extension module’s init function before the module def had been
initialized.
- gh-119369: Fix deadlock during thread deletion in free-threaded
build, which could occur when the GIL was enabled at runtime.
- gh-119525: Fix deadlock involving _PyType_Lookup() cache in the
free-threaded build when the GIL is dynamically enabled at
runtime.
- gh-119311: Fix bug where names are unexpectedly mangled in the
bases of generic classes.
- gh-119395: Fix bug where names appearing after a generic class
are mangled as if they are in the generic class.
- gh-119213: Non-builtin modules built with argument clinic were
crashing if used in a subinterpreter before the main
interpreter. The objects that were causing the problem by
leaking between interpreters carelessly have been fixed.
- gh-119011: Fixes type.__type_params__ to return an empty tuple
instead of a descriptor.
- gh-118692: Avoid creating unnecessary StopIteration instances
for monitoring.
- gh-119049: Fix displaying the source line for warnings created
by the C API if the warnings module had not yet been imported.
- gh-118844: Fix build failures when configuring with both
--disable-gil and --enable-experimental-jit.
- gh-118921: Add copy() method for FrameLocalsProxy which returns
a snapshot dict for local variables.
- gh-117657: Fix data races on the field that stores a pointer to
the interpreter’s main thread that occur in free-threaded
builds.
- gh-118507: Speedup os.path.isjunction() and os.path.lexists() on
Windows with a native implementation.
- gh-118561: Fix race condition in free-threaded build where
list.extend() could expose uninitialised memory to concurrent
readers.
- gh-118263: Speed up os.path.splitroot() & os.path.normpath()
with a direct C call.
- gh-117195: Avoid assertion failure for debug builds when calling
object.__sizeof__(1)
- Library
- gh-119819: Fix regression to allow logging configuration with
multiprocessing queue types.
- gh-117142: The ctypes module may now be imported in all
subinterpreters, including those that have their own GIL.
- gh-118835: Fix _pyrepl crash when using custom prompt with ANSI
escape codes.
- gh-117398: The _datetime module (C implementation for datetime)
now supports being imported in multiple interpreters.
- gh-89727: Fix issue with shutil.rmtree() where a RecursionError
is raised on deep directory trees.
- gh-89727: Partially fix issue with shutil.rmtree() where a
RecursionError is raised on deep directory trees. A recursion
error is no longer raised when rmtree.avoids_symlink_attacks is
false.
- gh-119118: Fix performance regression in the tokenize module by
caching the line token attribute and calculating the column
offset more efficiently.
- gh-89727: Fix issue with os.fwalk() where a RecursionError was
raised on deep directory trees by adjusting the implementation
to be iterative instead of recursive.
- gh-119588: zipfile.Path.is_symlink now assesses if the given
path is a symlink.
- gh-119555: Catch SyntaxError from compile() in the runsource()
method of the InteractiveColoredConsole. Patch by Sergey B
Kirpichev.
- gh-113892: Now, the method sock_connect of
asyncio.ProactorEventLoop raises a ValueError if given socket is
not in non-blocking mode, as well as in other loop
implementations.
- gh-119443: The interactive REPL no longer runs with from
__future__ import annotations enabled. Patch by Jelle Zijlstra.
- gh-117398: Objects in the datetime C-API are now all statically
allocated, which means better memory safety, especially when the
module is reloaded. This should be transparent to users.
- gh-118894: asyncio REPL now has the same capabilities as PyREPL.
- gh-118911: In PyREPL, updated maybe-accept’s logic so that if
the user hits Enter twice, they are able to terminate the block
even if there’s trailing whitespace. Also, now when the user
hits arrow up, the cursor is on the last functional line. This
matches IPython’s behavior. Patch by Aya Elsayed.
- gh-111201: Remove dependency to readline from the new Python
REPL.
- gh-119174: Fix high DPI causes turtledemo(turtle-graphics
examples) windows blurry Patch by Wulian233 and Terry Jan Reedy
- gh-119121: Fix a NameError happening in
asyncio.staggered.staggered_race. This function is now tested.
- gh-119113: Fix issue where pathlib.PurePath.with_suffix() didn’t
raise TypeError when given None as a suffix.
- gh-118643: Fix an AttributeError in the email module when
re-fold a long address list. Also fix more cases of incorrect
encoding of the address separator in the address list.
- gh-58933: Make pdb return to caller frame correctly when f_trace
of the caller frame is not set
- gh-118895: Setting attributes on typing.NoDefault now raises
AttributeError instead of TypeError.
- gh-118868: Fixed issue where kwargs were no longer passed to the
logging handler QueueHandler
- gh-118851: ctx arguments to the constructors of ast node classes
now default to ast.Load(). Patch by Jelle Zijlstra.
- gh-118760: Restore the default value of tkiter.wantobjects to 1.
- gh-118760: Fix errors in calling Tkinter bindings on Windows.
- gh-118772: Allow typing.TypeVar instances without a default to
follow instances without a default in some cases. Patch by Jelle
Zijlstra.
- gh-110863: os.path.realpath() now suppresses any OSError from
os.readlink() when strict mode is disabled (the default).
- gh-118033: Fix dataclasses.dataclass() not creating a
__weakref__ slot when subclassing typing.Generic.
- gh-106531: In importlib.resources, sync with importlib_resources
6.3.2, including: MultiplexedPath now expects Traversable paths,
deprecating string arguments to MultiplexedPath; Enabled support
for resources in namespace packages in zip files; Fixed
NotADirectoryError when calling files on a subdirectory of a
namespace package.
- gh-113978: Ignore warnings on text completion inside REPL.
- gh-103956: Fix lack of newline characters in trace module output
when line tracing is enabled but source code line for current
frame is not available.
- gh-92081: Fix missing spaces in email headers when the spaces
are mixed with encoded 8-bit characters.
- gh-103194: Prepare Tkinter for C API changes in Tcl 8.7/9.0 to
avoid _tkinter.Tcl_Obj being unexpectedly returned instead of
bool, str, bytearray, or int.
- gh-87106: Fixed handling in inspect.Signature.bind() of keyword
arguments having the same name as positional-only arguments when
a variadic keyword argument (e.g. **kwargs) is present.
- bpo-45767: Fix integer conversion in os.major(), os.minor(), and
os.makedev(). Support device numbers larger than 2**63-1.
Support non-existent device number (NODEV).
- gh-67693: Fix urllib.parse.urlunparse() and
urllib.parse.urlunsplit() for URIs with path starting with
multiple slashes and no authority. Based on patch by Ashwin
Ramaswami.
- Tests
- gh-119050: regrtest test runner: Add XML support to the refleak
checker (-R option). Patch by Victor Stinner. Buil- d
- gh-119729: On POSIX systems, the pkg-config (.pc) filenames now
include the ABI flags, which may include debug (“d”) and
free-threaded (“t”). For example: * python-3.14.pc (default,
non-debug build) * python-3.14d.pc (default, debug build) *
python-3.14t.pc (free-threaded build)
- gh-115119: Fall back to the bundled libmpdec if a system version
cannot be found.
- gh-119132: Update sys.version to identify whether the build is
default build or free-threading build. Patch By Donghee Na.
- gh-118836: Fix an AssertionError when building with
--enable-experimental-jit and the compiler emits a SHT_NOTE
section.
- gh-118943: Fix a possible race condition affecting parallel
builds configured with --enable-experimental-jit, in which
compilation errors could be caused by an incompletely-generated
header file.
- Windows
- gh-119679: Ensures correct import libraries are included in
Windows installs.
- gh-119690: Adds Unicode support and fixes audit events for
_winapi.CreateNamedPipe.
- gh-111201: Add support for new pyrepl on Windows
- gh-119070: Fixes py.exe handling of shebangs like /usr/bin/env
python3.12, which were previously interpreted as python3.exe
instead of python3.12.exe.
- gh-117505: Fixes an issue with the Windows installer not running
ensurepip in a fully isolated environment. This could cause
unexpected interactions with the user site-packages.
- gh-118209: Avoid crashing in mmap on Windows when the mapped
memory is inaccessible due to file system errors or access
violations.
- gh-116145: Updated bundled Tcl/Tk to 8.6.14.
- C API
- gh-119585: Fix crash when a thread state that was created by
PyGILState_Ensure() calls a destructor that during
PyThreadState_Clear() that calls back into PyGILState_Ensure()
and PyGILState_Release(). This might occur when in the
free-threaded build or when using thread-local variables whose
destructors call PyGILState_Ensure().
- gh-119336: Restore the removed _PyLong_NumBits() function. It is
used by the pywin32 project. Patch by Ethan Smith
- gh-119247: Added Py_BEGIN_CRITICAL_SECTION_SEQUENCE_FAST and
Py_END_CRITICAL_SECTION_SEQUENCE_FAST macros to make it possible
to use PySequence_Fast APIs safely when free-threaded, and
update str.join to work without the GIL using them.
- gh-111389: Add PyHASH_MULTIPLIER constant: prime multiplier used
in string and various other hashes. Patch by Victor Stinner.
- gh-116984: Make mimalloc includes relative to the current file
to avoid embedders or extensions needing to include
Internal/mimalloc if they are already including internal CPython
headers.
- gh-118789: Restore _PyWeakref_ClearRef that was previously
removed in Python 3.13 alpha 1.
OBS-URL: https://build.opensuse.org/request/show/1178998
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python:Factory/python313?expand=0&rev=18
- Update to 3.13.0a5
* Security
- gh-115398: Allow controlling Expat >=2.6.0 reparse deferral
(CVE-2023-52425) by adding five new methods:
- xml.etree.ElementTree.XMLParser.flush()
- xml.etree.ElementTree.XMLPullParser.flush()
- xml.parsers.expat.xmlparser.GetReparseDeferralEnabled()
- xml.parsers.expat.xmlparser.SetReparseDeferralEnabled()
- xml.sax.expatreader.ExpatParser.flush()
- gh-114572: ssl.SSLContext.cert_store_stats() and
ssl.SSLContext.get_ca_certs() now correctly lock access to the
certificate store, when the ssl.SSLContext is shared across
multiple threads. Core- and Builtins
- gh-116604: Respect the status of the garbage collector when
indirect calls are made via PyErr_CheckSignals() and the
evaluation breaker. Patch by Pablo Galindo
- gh-112087: list is now compatible with the implementation of PEP
703.
- gh-116381: Add specialization for CONTAINS_OP.
- gh-116296: Fix possible refleak in object.__reduce__() internal
error handling.
- gh-115823: Properly calculate error ranges in the parser when
raising SyntaxError exceptions caused by invalid byte sequences.
Patch by Pablo Galindo
- gh-115778: Add tierN annotation for instruction definition in
interpreter DSL.
- gh-115733: Fix crash when calling next() on exhausted list
iterators.
- gh-115700: The regen-cases build stage now works on Windows.
- gh-115347: Fix bug where docstring was replaced by a redundant
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python:Factory/python313?expand=0&rev=13