- Tools/Demos
- gh-128152: Fix a bug where Argument Clinic’s C
pre-processor parser tried to parse pre-processor
directives inside C comments. Patch by Erlend Aasland.
- Tests
- gh-127906: Test the limited C API in test_cppext. Patch by
Victor Stinner.
- gh-127637: Add tests for the dis command-line
interface. Patch by Bénédikt Tran.
- gh-126925: iOS test results are now streamed during test
execution, and the deprecated xcresulttool is no longer
used.
- Security
- gh-105704: When using urllib.parse.urlsplit() and
urllib.parse.urlparse() host parsing would not reject
domain names containing square brackets ([ and ]). Square
brackets are only valid for IPv6 and IPvFuture hosts
according to RFC 3986 Section 3.2.2. (CVE-2025-0938,
bsc#1236705)
- gh-127655: Fixed the
asyncio.selector_events._SelectorSocketTransport
transport not pausing writes for the protocol when
the buffer reaches the high water mark when using
asyncio.WriteTransport.writelines() (CVE-2024-12254,
bsc#1234290).
- gh-126108: Fix a possible NULL pointer dereference in
PySys_AddWarnOptionUnicode().
- gh-80222: Fix bug in the folding of quoted strings
when flattening an email message using a modern email
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python:Factory/python313?expand=0&rev=76
- Tools/Demos
- gh-126807: Fix extraction warnings in pygettext.py caused
by mistaking function definitions for function calls.
- gh-126167: The iOS testbed was modified so that it can be
used by third-party projects for testing purposes.
- Tests
- gh-126909: Fix test_os extended attribute tests to work on
filesystems with 1 KiB xattr size limit.
- gh-125041: Re-enable skipped tests for zlib on the
s390x architecture: only skip checks of the compressed
bytes, which can be different between zlib’s software
implementation and the hardware-accelerated implementation.
- gh-124295: Add translation tests to the argparse module.
- Security
- gh-126623: Upgrade libexpat to 2.6.4
- gh-125140: Remove the current directory from sys.path when
using PyREPL.
- gh-122792: Changed IPv4-mapped ipaddress.IPv6Address to
consistently use the mapped IPv4 address value for deciding
properties. Properties which have their behavior fixed are
is_multicast, is_reserved, is_link_local, is_global, and
is_unspecified.
- Library
- gh-127321: pdb.set_trace() will not stop at an opcode that
does not have an associated line number anymore.
- gh-127303: Publicly expose EXACT_TOKEN_TYPES in
token.__all__.
- gh-123967: Fix faulthandler for trampoline frames. If the
top-most frame is a trampoline frame, skip it. Patch by
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python:Factory/python313?expand=0&rev=70
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
- 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
- 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
- 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
- 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