Python 3.13.0a1

This commit is contained in:
Thomas Wouters 2023-10-13 10:50:46 +02:00
parent b7f9661bc1
commit ad056f03ae
638 changed files with 8704 additions and 2857 deletions

View File

@ -20,10 +20,10 @@
#define PY_MINOR_VERSION 13
#define PY_MICRO_VERSION 0
#define PY_RELEASE_LEVEL PY_RELEASE_LEVEL_ALPHA
#define PY_RELEASE_SERIAL 0
#define PY_RELEASE_SERIAL 1
/* Version as a string */
#define PY_VERSION "3.13.0a0"
#define PY_VERSION "3.13.0a1"
/*--end constants--*/
/* Version as a single 4-byte hex number, e.g. 0x010502B2 == 1.5.2b2.

File diff suppressed because it is too large Load Diff

6748
Misc/NEWS.d/3.13.0a1.rst Normal file

File diff suppressed because it is too large Load Diff

View File

@ -1 +0,0 @@
Add experimental wasi-threads support. Patch by Takashi Yamamoto.

View File

@ -1,6 +0,0 @@
Include ``commoninstall`` as a prerequisite for ``bininstall``
This ensures that ``commoninstall`` is completed before ``bininstall``
is started when parallel builds are used (``make -j install``), and so
the ``python3`` symlink is only installed after all standard library
modules are installed.

View File

@ -1,2 +0,0 @@
Autoconf 2.71 and aclocal 1.16.4 is now required to regenerate
:file:`!configure`.

View File

@ -1,2 +0,0 @@
Document how to perform a WASI build on Linux. Also add
Tools/wasm/build_wasi.sh as a reference implementation of the docs.

View File

@ -1 +0,0 @@
Fix a regression in :file:`configure` where we could end up unintentionally linking with ``libbsd``.

View File

@ -1,2 +0,0 @@
SQLite 3.15.2 or newer is required to build the :mod:`sqlite3` extension
module. Patch by Erlend Aasland.

View File

@ -1,2 +0,0 @@
Fix compilation for platforms without :data:`!O_CLOEXEC`. The issue was
introduced with Python 3.12b1 in :gh:`103295`. Patch by Erlend Aasland.

View File

@ -1 +0,0 @@
Detect MPI compilers in :file:`configure`.

View File

@ -1,2 +0,0 @@
Refactor platform triplet detection code and add detection for MIPS soft
float and musl libc.

View File

@ -1 +0,0 @@
Check for ``linux/limits.h`` before including it in ``Modules/posixmodule.c``.

View File

@ -1 +0,0 @@
Remove the make target ``regen-opcode-targets``, merge its work into ``regen-opcode`` which repeats most of the calculation. This simplifies the code for the build and reduces code duplication.

View File

@ -1 +0,0 @@
When calling ``find_python.bat`` with ``-q`` it did not properly silence the output of nuget. That is now fixed.

View File

@ -1 +0,0 @@
Fix x86_64 GNU/Hurd build

View File

@ -1,2 +0,0 @@
The ``_stat`` C extension is now built with the :ref:`limited C API
<limited-c-api>`. Patch by Victor Stinner.

View File

@ -1,3 +0,0 @@
Python built with :file:`configure` :option:`--with-trace-refs` (tracing
references) is now ABI compatible with Python release build and :ref:`debug
build <debug-build>`. Patch by Victor Stinner.

View File

@ -1,4 +0,0 @@
Fix a race condition in ``make regen-all``. The ``deepfreeze.c`` source and
files generated by Argument Clinic are now generated or updated before
generating "global objects". Previously, some identifiers may miss depending
on the order in which these files were generated. Patch by Victor Stinner.

View File

@ -1,3 +0,0 @@
Fix Solaris build: no longer redefine the ``gethostname()`` function. Solaris
defines the function since 2005. Patch by Victor Stinner, original patch by
Jakub Kulík.

View File

@ -1,6 +0,0 @@
Fix building the ``_testcapi`` extension on Linux AArch64 which requires
linking to libatomic when ``<cpython/pyatomic.h>`` is used: the
``_Py_atomic_or_uint64()`` function requires libatomic
``__atomic_fetch_or_8()`` on this platform. The configure script now checks
if linking to libatomic is needed and generates a new LIBATOMIC variable
used to build the _testcapi extension. Patch by Victor Stinner.

View File

@ -1,2 +0,0 @@
The experimental ``--disable-gil`` configure flag now includes "t" (for "threaded") in
extension ABI tags.

View File

@ -1,2 +0,0 @@
Remove ``make testall`` target: use ``make buildbottest`` instead. Patch by
Victor Stinner.

View File

@ -1,2 +0,0 @@
No longer ignore :envvar:`PROFILE_TASK` failure silently: command used by
Profile Guided Optimization (PGO). Patch by Victor Stinner.

View File

@ -1 +0,0 @@
Fix compile error when building with recent versions of libedit.

View File

@ -1,3 +0,0 @@
"make check-clean-src" now also checks if the "python" program is found in
the source directory: fail with an error if it does exist. Patch by Victor
Stinner.

View File

@ -1 +0,0 @@
Properly handle trailing spaces before closing parenthesis in :c:func:`Py_BuildValue` format strings.

View File

@ -1 +0,0 @@
Add :c:func:`PyModule_Add` function: similar to :c:func:`PyModule_AddObjectRef` and :c:func:`PyModule_AddObject`, but always steals a reference to the value.

View File

@ -1,5 +0,0 @@
Don't call :c:var:`PyOS_InputHook` or :c:var:`PyOS_ReadlineFunctionPointer`
in subinterpreters, since it's generally difficult to avoid using global
state in their registered callbacks. This also avoids situations where
extensions may find themselves running in a subinterpreter they don't
support (or haven't yet been loaded in).

View File

@ -1,2 +0,0 @@
Add an unstable C API for hooking in an optimizer. This is mainly internal,
but marked "unstable" to allow third-party experimentation.

View File

@ -1,3 +0,0 @@
``PY_SSIZE_T_CLEAN`` is no longer required to use ``'#'`` formats in APIs
like :c:func:`PyArg_ParseTuple` and :c:func:`Py_BuildValue`. They uses
``Py_ssize_t`` for ``'#'`` regardless ``PY_SSIZE_T_CLEAN``.

View File

@ -1 +0,0 @@
Add ``PyUnstable_Exc_PrepReraiseStar`` to the unstable C api to expose the implementation of :keyword:`except* <except_star>`.

View File

@ -1,3 +0,0 @@
``PyTypeObject.tp_bases`` (and ``tp_mro``) for builtin static types are now
shared by all interpreters, whereas in 3.12-beta1 they were stored on
``PyInterpreterState``. Also note that now the tuples are immortal objects.

View File

@ -1,10 +0,0 @@
Remove functions deprecated in Python 3.9.
* ``PyEval_CallObject()``, ``PyEval_CallObjectWithKeywords()``: use
:c:func:`PyObject_CallNoArgs` and :c:func:`PyObject_Call` (positional
arguments must not be *NULL*) instead.
* ``PyEval_CallFunction()``: use :c:func:`PyObject_CallFunction` instead.
* ``PyEval_CallMethod()``: use :c:func:`PyObject_CallMethod` instead.
* ``PyCFunction_Call()``: use :c:func:`PyObject_Call` instead.
Patch by Victor Stinner.

View File

@ -1,17 +0,0 @@
Remove the following old functions to configure the Python initialization,
deprecated in Python 3.11:
* ``PySys_AddWarnOptionUnicode()``
* ``PySys_AddWarnOption()``
* ``PySys_AddXOption()``
* ``PySys_HasWarnOptions()``
* ``PySys_SetArgvEx()``
* ``PySys_SetArgv()``
* ``PySys_SetPath()``
* ``Py_SetPath()``
* ``Py_SetProgramName()``
* ``Py_SetPythonHome()``
* ``Py_SetStandardStreamEncoding()``
* ``_Py_SetProgramFullPath()``
Patch by Victor Stinner.

View File

@ -1,4 +0,0 @@
Deprecate the old ``Py_UNICODE`` and ``PY_UNICODE_TYPE`` types: use directly
the :c:type:`wchar_t` type instead. Since Python 3.3, ``Py_UNICODE`` and
``PY_UNICODE_TYPE`` are just aliases to :c:type:`wchar_t`. Patch by Victor
Stinner.

View File

@ -1,4 +0,0 @@
``PyObject_AsCharBuffer()``, ``PyObject_AsReadBuffer()``,
``PyObject_CheckReadBuffer()``, and ``PyObject_AsWriteBuffer()`` are
removed. Please migrate to new buffer protocol; :c:func:`PyObject_GetBuffer`
and :c:func:`PyBuffer_Release`.

View File

@ -1,11 +0,0 @@
Deprecate old Python initialization functions:
* :c:func:`PySys_ResetWarnOptions`
* :c:func:`Py_GetExecPrefix`
* :c:func:`Py_GetPath`
* :c:func:`Py_GetPrefix`
* :c:func:`Py_GetProgramFullPath`
* :c:func:`Py_GetProgramName`
* :c:func:`Py_GetPythonHome`
Patch by Victor Stinner.

View File

@ -1,2 +0,0 @@
Remove ``PyEval_InitThreads()`` and ``PyEval_ThreadsInitialized()``
functions, deprecated in Python 3.9. Patch by Victor Stinner.

View File

@ -1,2 +0,0 @@
Remove ``PyEval_AcquireLock()`` and ``PyEval_ReleaseLock()`` functions,
deprecated in Python 3.2. Patch by Victor Stinner.

View File

@ -1,3 +0,0 @@
Remove the old private, undocumented and untested ``_PyGC_FINALIZED()`` macro
which was kept for backward compatibility with Python 3.8 and older. Patch by
Victor Stinner.

View File

@ -1,2 +0,0 @@
:c:func:`PyType_FromMetaclass` now allows metaclasses with ``tp_new``
set to ``NULL``.

View File

@ -1,3 +0,0 @@
Deprecate the :c:func:`PyImport_ImportModuleNoBlock` function which is just
an alias to :c:func:`PyImport_ImportModule` since Python 3.3. Patch by
Victor Stinner.

View File

@ -1,3 +0,0 @@
In the limited C API version 3.12, :c:func:`Py_INCREF` and
:c:func:`Py_DECREF` functions are now implemented as opaque function calls
to hide implementation details. Patch by Victor Stinner.

View File

@ -1,5 +0,0 @@
We've renamed the new (in 3.12) ``PyInterpreterConfig.own_gil`` to
``PyInterpreterConfig.gil`` and changed the meaning of the value from "bool"
to an integer with supported values of ``PyInterpreterConfig_DEFAULT_GIL``,
``PyInterpreterConfig_SHARED_GIL``, and ``PyInterpreterConfig_OWN_GIL``. The
default is "shared".

View File

@ -1,2 +0,0 @@
Fix a bug in :c:func:`PyErr_WarnExplicit` where an exception could end up
being overwritten if the API failed internally.

View File

@ -1,5 +0,0 @@
The new :c:func:`PyType_GetDict` provides the dictionary for the given type
object that is normally exposed by ``cls.__dict__``. Normally it's
sufficient to use :c:member:`~PyTypeObject.tp_dict`, but for the static
builtin types :c:member:`!tp_dict` is now always ``NULL``. :c:func:`!PyType_GetDict()`
provides the correct dict object instead.

View File

@ -1,3 +0,0 @@
Add :c:func:`PyImport_AddModuleRef`: similar to :c:func:`PyImport_AddModule`,
but return a :term:`strong reference` instead of a :term:`borrowed reference`.
Patch by Victor Stinner.

View File

@ -1,3 +0,0 @@
Add :c:func:`PyWeakref_GetRef` function: similar to
:c:func:`PyWeakref_GetObject` but returns a :term:`strong reference`, or
``NULL`` if the referent is no longer live. Patch by Victor Stinner.

View File

@ -1,3 +0,0 @@
Deprecate the :c:func:`PyWeakref_GetObject` and
:c:func:`PyWeakref_GET_OBJECT` functions: use the new
:c:func:`PyWeakref_GetRef` function instead. Patch by Victor Stinner.

View File

@ -1,4 +0,0 @@
Adds :c:func:`PyDict_GetItemRef` and :c:func:`PyDict_GetItemStringRef`
functions: similar to :c:func:`PyDict_GetItemWithError` but returning a
:term:`strong reference` instead of a :term:`borrowed reference`. Patch by
Victor Stinner.

View File

@ -1,13 +0,0 @@
Remove the old aliases to functions calling functions which were kept for
backward compatibility with Python 3.8 provisional API:
* ``_PyObject_CallMethodNoArgs()``: use ``PyObject_CallMethodNoArgs()``
* ``_PyObject_CallMethodOneArg()``: use ``PyObject_CallMethodOneArg()``
* ``_PyObject_CallOneArg()``: use ``PyObject_CallOneArg()``
* ``_PyObject_FastCallDict()``: use ``PyObject_VectorcallDict()``
* ``_PyObject_Vectorcall()``: use ``PyObject_Vectorcall()``
* ``_PyObject_VectorcallMethod()``: use ``PyObject_VectorcallMethod()``
* ``_PyVectorcall_Function()``: use ``PyVectorcall_Function()``
Just remove the underscore prefix to update your code. Patch by Victor
Stinner.

View File

@ -1,5 +0,0 @@
If Python is built in :ref:`debug mode <debug-build>` or :option:`with
assertions <--with-assertions>`, :c:func:`PyTuple_SET_ITEM` and
:c:func:`PyList_SET_ITEM` now check the index argument with an assertion. If
the assertion fails, make sure that the size is set before. Patch by Victor
Stinner.

View File

@ -1,2 +0,0 @@
Remove private ``_PyObject_FastCall()`` function: use ``PyObject_Vectorcall()``
which is available since Python 3.8 (:pep:`590`). Patch by Victor Stinner.

View File

@ -1,2 +0,0 @@
Remove ``cpython/pytime.h`` header file: it only contained private
functions. Patch by Victor Stinner.

View File

@ -1,3 +0,0 @@
Remove ``_PyInterpreterState_Get()`` alias to
:c:func:`PyInterpreterState_Get()` which was kept for backward compatibility
with Python 3.8. Patch by Victor Stinner.

View File

@ -1 +0,0 @@
Add :c:func:`PyObject_GetOptionalAttr` and :c:func:`PyObject_GetOptionalAttrString` functions.

View File

@ -1 +0,0 @@
Add :c:func:`PyMapping_GetOptionalItem` function.

View File

@ -1,2 +0,0 @@
Convert :c:func:`PyObject_DelAttr` and :c:func:`PyObject_DelAttrString`
macros to functions. Patch by Victor Stinner.

View File

@ -1,5 +0,0 @@
Remove private ``_PyUnicode_AsString()`` alias to
:c:func:`PyUnicode_AsUTF8`. It was kept for backward compatibility with
Python 3.0 - 3.2. The :c:func:`PyUnicode_AsUTF8` is available since Python
3.3. The :c:func:`PyUnicode_AsUTF8String` function can be used to keep
compatibility with Python 3.2 and older. Patch by Victor Stinner.

View File

@ -1,2 +0,0 @@
:c:func:`PyModule_AddObjectRef` is now only available in the limited API
version 3.10 or later.

View File

@ -1,2 +0,0 @@
Implement the :c:macro:`Py_UNUSED` macro for Windows MSVC compiler. Patch by
Victor Stinner.

View File

@ -1 +0,0 @@
Improve :exc:`DeprecationWarning` for uses of :c:type:`PyType_Spec` with metaclasses that have custom ``tp_new``.

View File

@ -1,4 +0,0 @@
Such C API functions as ``PyErr_SetString()``, ``PyErr_Format()``,
``PyErr_SetFromErrnoWithFilename()`` and many others no longer crash or
ignore errors if it failed to format the error message or decode the
filename. Instead, they keep a corresponding error.

View File

@ -1,4 +0,0 @@
C API functions :c:func:`PyErr_SetFromErrnoWithFilename`,
:c:func:`PyErr_SetExcFromWindowsErrWithFilename` and
:c:func:`PyErr_SetFromWindowsErrWithFilename` save now the error code before
calling :c:func:`PyUnicode_DecodeFSDefault`.

View File

@ -1,2 +0,0 @@
Add :c:func:`Py_IsFinalizing` function: check if the main Python interpreter is
:term:`shutting down <interpreter shutdown>`. Patch by Victor Stinner.

View File

@ -1 +0,0 @@
Add atomic operations on additional data types in pyatomic.h.

View File

@ -1,4 +0,0 @@
Add :c:func:`PyDict_ContainsString` function: same as
:c:func:`PyDict_Contains`, but *key* is specified as a :c:expr:`const char*`
UTF-8 encoded bytes string, rather than a :c:expr:`PyObject*`.
Patch by Victor Stinner.

View File

@ -1,4 +0,0 @@
Add :c:func:`PyLong_AsInt` function: similar to :c:func:`PyLong_AsLong`, but
store the result in a C :c:expr:`int` instead of a C :c:expr:`long`.
Previously, it was known as the private function :c:func:`!_PyLong_AsInt`
(with an underscore prefix). Patch by Victor Stinner.

View File

@ -1,3 +0,0 @@
Python built with :file:`configure` :option:`--with-trace-refs` (tracing
references) now supports the :ref:`Limited API <limited-c-api>`. Patch by
Victor Stinner.

View File

@ -1,3 +0,0 @@
Add :c:func:`PyObject_VisitManagedDict` and :c:func:`PyObject_ClearManagedDict`
functions which must be called by the traverse and clear functions of a type
using :c:macro:`Py_TPFLAGS_MANAGED_DICT` flag. Patch by Victor Stinner.

View File

@ -1,4 +0,0 @@
Add functions :c:func:`PyObject_HasAttrWithError`,
:c:func:`PyObject_HasAttrStringWithError`,
:c:func:`PyMapping_HasKeyWithError` and
:c:func:`PyMapping_HasKeyStringWithError`.

View File

@ -1,6 +0,0 @@
``Python.h`` no longer includes these standard header files: ``<time.h>``,
``<sys/select.h>`` and ``<sys/time.h>``. If needed, they should now be included
explicitly. For example, ``<time.h>`` provides the ``clock()`` and ``gmtime()``
functions, ``<sys/select.h>`` provides the ``select()`` function, and
``<sys/time.h>`` provides the ``futimes()``, ``gettimeofday()`` and
``setitimer()`` functions. Patch by Victor Stinner.

View File

@ -1,4 +0,0 @@
``Python.h`` no longer includes the ``<ieeefp.h>`` standard header. It was
included for the ``finite()`` function which is now provided by the
``<math.h>`` header. It should now be included explicitly if needed. Remove
also the ``HAVE_IEEEFP_H`` macro. Patch by Victor Stinner.

View File

@ -1,4 +0,0 @@
``Python.h`` no longer includes the ``<unistd.h>`` standard header file. If
needed, it should now be included explicitly. For example, it provides the
functions: ``close()``, ``getpagesize()``, ``getpid()`` and ``sysconf()``.
Patch by Victor Stinner.

View File

@ -1,5 +0,0 @@
``Python.h`` no longer includes the ``<ctype.h>`` standard header file. If
needed, it should now be included explicitly. For example, it provides
``isalpha()`` and ``tolower()`` functions which are locale dependent. Python
provides locale independent functions, like :c:func:`!Py_ISALPHA` and
:c:func:`!Py_TOLOWER`. Patch by Victor Stinner.

View File

@ -1,5 +0,0 @@
Add :c:func:`PyThreadState_GetUnchecked()` function: similar to
:c:func:`PyThreadState_Get()`, but don't kill the process with a fatal error if
it is NULL. The caller is responsible to check if the result is NULL.
Previously, the function was private and known as
``_PyThreadState_UncheckedGet()``. Patch by Victor Stinner.

View File

@ -1,3 +0,0 @@
Add :c:func:`PySys_AuditTuple` function: similar to :c:func:`PySys_Audit`,
but pass event arguments as a Python :class:`tuple` object. Patch by Victor
Stinner.

View File

@ -1 +0,0 @@
Add :c:type:`PyMutex` internal-only lightweight locking API.

View File

@ -1,5 +0,0 @@
:c:func:`PyImport_GetImporter` now sets RuntimeError if it fails to get
:data:`sys.path_hooks` or :data:`sys.path_importer_cache` or they are not
list and dict correspondingly. Previously it could return NULL without
setting error in obscure cases, crash or raise SystemError if these
attributes have wrong type.

View File

@ -1,2 +0,0 @@
Remove undocumented ``PY_TIMEOUT_MAX`` constant from the limited C API.
Patch by Victor Stinner.

View File

@ -1,2 +0,0 @@
Raise :exc:`TypeError` for duplicate/unknown fields in ``PyStructSequence`` constructor.
Patched by Xuehai Pan.

View File

@ -1 +0,0 @@
Add :c:func:`PyUnicode_EqualToUTF8AndSize` and :c:func:`PyUnicode_EqualToUTF8` functions.

View File

@ -1,3 +0,0 @@
If the :c:macro:`Py_LIMITED_API` macro is defined, :c:macro:`!Py_BUILD_CORE`,
:c:macro:`!Py_BUILD_CORE_BUILTIN` and :c:macro:`!Py_BUILD_CORE_MODULE` macros
are now undefined by ``<Python.h>``. Patch by Victor Stinner.

View File

@ -1,11 +0,0 @@
Specializes calls to most Python classes. Specifically, any class that
inherits from ``object``, or another Python class, and does not override
``__new__``.
The specialized instruction does the following:
1. Creates the object (by calling ``object.__new__``)
2. Pushes a shim frame to the frame stack (to cleanup after ``__init__``)
3. Pushes the frame for ``__init__`` to the frame stack
Speeds up the instantiation of most Python classes.

View File

@ -1 +0,0 @@
Improve error handling when read :mod:`marshal` data.

View File

@ -1 +0,0 @@
Update the Python pickle module implementation to match the C implementation of the pickle module. For objects setting reduction methods like :meth:`~object.__reduce_ex__` or :meth:`~object.__reduce__` to ``None``, pickling will result in a :exc:`TypeError`.

View File

@ -1 +0,0 @@
Add a better, more introspect-able error message when setting attributes on classes without a ``__dict__`` and no slot member for the attribute.

View File

@ -1 +0,0 @@
Raise :exc:`RuntimeWarning` for unawaited async generator methods like :meth:`~agen.asend`, :meth:`~agen.athrow` and :meth:`~agen.aclose`. Patch by Kumar Aditya.

View File

@ -1,2 +0,0 @@
If a generator returns a value upon being closed, the value is now returned
by :meth:`generator.close`.

View File

@ -1,2 +0,0 @@
Tokens emitted by the :mod:`tokenize` module do not include an implicit
``\n`` character in the ``line`` attribute anymore. Patch by Pablo Galindo

View File

@ -1,2 +0,0 @@
Fix crash when accessing the ``__module__`` attribute of type aliases
defined outside a module. Patch by Jelle Zijlstra.

View File

@ -1,6 +0,0 @@
Starting new threads and process creation through :func:`os.fork` during interpreter
shutdown (such as from :mod:`atexit` handlers) is no longer supported. It can lead
to race condition between the main Python runtime thread freeing thread states while
internal :mod:`threading` routines are trying to allocate and use the state of just
created threads. Or forked children trying to use the mid-shutdown runtime and thread
state in the child process.

View File

@ -1,2 +0,0 @@
Fix signature for the new :meth:`~object.__release_buffer__` slot. Patch by Jelle
Zijlstra.

View File

@ -1,2 +0,0 @@
Ensure that the ``line`` attribute in :class:`tokenize.TokenInfo` objects in
the :mod:`tokenize` module are always correct. Patch by Pablo Galindo

View File

@ -1,3 +0,0 @@
Ensure that trailing ``DEDENT`` :class:`tokenize.TokenInfo` objects emitted
by the :mod:`tokenize` module are reported as in Python 3.11. Patch by Pablo
Galindo

View File

@ -1 +0,0 @@
Do not include an additional final ``NL`` token when parsing files having CRLF lines. Patch by Marta Gómez.

View File

@ -1,2 +0,0 @@
Fix handling of multiline parenthesized lambdas in
:func:`inspect.getsource`. Patch by Pablo Galindo

View File

@ -1 +0,0 @@
Show CRLF lines in the tokenize string attribute in both NL and NEWLINE tokens. Patch by Marta Gómez.

View File

@ -1,2 +0,0 @@
Fix :func:`super` calls on types with custom :c:member:`~PyTypeObject.tp_getattro`
implementation (e.g. meta-types.)

Some files were not shown because too many files have changed in this diff Show More