Skip to content

Commit 2b79b7c

Browse files
authored
Merge branch 'python:main' into gh-151022-remote-debugging-linetable
2 parents 9b0f3ba + 871047d commit 2b79b7c

149 files changed

Lines changed: 2427 additions & 1029 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/SECURITY.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
# Security Policy
22

33
Python [provides a security policy and threat model](https://devguide.python.org/security/policy/)
4-
in the Python Development Guide documenting what bugs are vulnerabilities,
4+
in the Python Developer's Guide documenting what bugs are vulnerabilities,
55
how to structure reports, and what versions of Python accept reports.
66

77
Python Security Response Team (PSRT) members

.github/workflows/build.yml

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -278,14 +278,13 @@ jobs:
278278
# unsupported as it most resembles other 1.1.1-work-a-like ssl APIs
279279
# supported by important vendors such as AWS-LC.
280280
- { name: openssl, version: 1.1.1w }
281-
- { name: openssl, version: 3.0.20 }
282-
- { name: openssl, version: 3.3.7 }
283-
- { name: openssl, version: 3.4.5 }
284-
- { name: openssl, version: 3.5.6 }
285-
- { name: openssl, version: 3.6.2 }
286-
- { name: openssl, version: 4.0.0 }
281+
- { name: openssl, version: 3.0.21 }
282+
- { name: openssl, version: 3.4.6 }
283+
- { name: openssl, version: 3.5.7 }
284+
- { name: openssl, version: 3.6.3 }
285+
- { name: openssl, version: 4.0.1 }
287286
## AWS-LC
288-
- { name: aws-lc, version: 1.72.1 }
287+
- { name: aws-lc, version: 5.0.0 }
289288
env:
290289
SSLLIB_VER: ${{ matrix.ssllib.version }}
291290
MULTISSL_DIR: ${{ github.workspace }}/multissl
@@ -399,7 +398,7 @@ jobs:
399398
needs: build-context
400399
if: needs.build-context.outputs.run-ubuntu == 'true'
401400
env:
402-
OPENSSL_VER: 3.5.6
401+
OPENSSL_VER: 3.5.7
403402
PYTHONSTRICTEXTENSIONBUILD: 1
404403
steps:
405404
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
@@ -507,7 +506,7 @@ jobs:
507506
matrix:
508507
os: [ubuntu-24.04]
509508
env:
510-
OPENSSL_VER: 3.5.6
509+
OPENSSL_VER: 3.5.7
511510
PYTHONSTRICTEXTENSIONBUILD: 1
512511
ASAN_OPTIONS: detect_leaks=0:allocator_may_return_null=1:handle_segv=0
513512
steps:

.github/workflows/reusable-san.yml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -82,19 +82,19 @@ jobs:
8282
run: make -j4
8383
- name: Display build info
8484
run: make pythoninfo
85-
# test_{capi,faulthandler} are skipped under UBSan because
85+
# test_capi is skipped under UBSan because
8686
# they raise signals that UBSan with halt_on_error=1 intercepts.
8787
- name: Tests
8888
run: >-
8989
./python -m test
9090
${{ inputs.sanitizer == 'TSan' && '--tsan' || '' }}
91-
${{ inputs.sanitizer == 'UBSan' && '-x test_capi -x test_faulthandler' || '' }}
92-
-j4
91+
${{ inputs.sanitizer == 'UBSan' && '-x test_capi' || '' }}
92+
-j4 -W
9393
- name: Parallel tests
9494
if: >-
9595
inputs.sanitizer == 'TSan'
9696
&& fromJSON(inputs.free-threading)
97-
run: ./python -m test --tsan-parallel --parallel-threads=4 -j4
97+
run: ./python -m test --tsan-parallel --parallel-threads=4 -j4 -W
9898
- name: Display logs
9999
if: always()
100100
run: find "${GITHUB_WORKSPACE}" -name 'san_log.*' | xargs head -n 1000

.github/workflows/reusable-ubuntu.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ jobs:
3535
runs-on: ${{ inputs.os }}
3636
timeout-minutes: 60
3737
env:
38-
OPENSSL_VER: 3.5.6
38+
OPENSSL_VER: 3.5.7
3939
PYTHONSTRICTEXTENSIONBUILD: 1
4040
TERM: linux
4141
steps:

Doc/c-api/coro.rst

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,3 +33,9 @@ return.
3333
with ``__name__`` and ``__qualname__`` set to *name* and *qualname*.
3434
A reference to *frame* is stolen by this function. The *frame* argument
3535
must not be ``NULL``.
36+
37+
.. deprecated-removed:: 3.16 3.18
38+
39+
This function has not been used since 3.10.
40+
It is also impossible to construct a proper *frame*
41+
object to call this function.

Doc/c-api/gen.rst

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,13 +38,25 @@ than explicitly calling :c:func:`PyGen_New` or :c:func:`PyGen_NewWithQualName`.
3838
A reference to *frame* is stolen by this function. The argument must not be
3939
``NULL``.
4040
41+
.. deprecated-removed:: 3.16 3.18
42+
43+
This function has not been used since 3.10.
44+
It is also impossible to construct a proper *frame*
45+
object to call this function.
46+
4147
.. c:function:: PyObject* PyGen_NewWithQualName(PyFrameObject *frame, PyObject *name, PyObject *qualname)
4248
4349
Create and return a new generator object based on the *frame* object,
4450
with ``__name__`` and ``__qualname__`` set to *name* and *qualname*.
4551
A reference to *frame* is stolen by this function. The *frame* argument
4652
must not be ``NULL``.
4753
54+
.. deprecated-removed:: 3.16 3.18
55+
56+
This function has not been used since 3.10.
57+
It is also impossible to construct a proper *frame*
58+
object to call this function.
59+
4860
4961
.. c:function:: PyCodeObject* PyGen_GetCode(PyGenObject *gen)
5062
@@ -77,6 +89,12 @@ Asynchronous Generator Objects
7789
7890
.. versionadded:: 3.6
7991
92+
.. deprecated-removed:: 3.16 3.18
93+
94+
This function has not been used since 3.10.
95+
It is also impossible to construct a proper *frame*
96+
object to call this function.
97+
8098
.. c:function:: int PyAsyncGen_CheckExact(PyObject *op)
8199
82100
Return true if *op* is an asynchronous generator object, false otherwise.

Doc/c-api/memory.rst

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ memory footprint as a whole. Consequently, under certain circumstances, the
7777
Python memory manager may or may not trigger appropriate actions, like garbage
7878
collection, memory compaction or other preventive procedures. Note that by using
7979
the C library allocator as shown in the previous example, the allocated memory
80-
for the I/O buffer escapes completely the Python memory manager.
80+
for the I/O buffer completely escapes the Python memory manager.
8181

8282
.. seealso::
8383

@@ -157,7 +157,7 @@ zero bytes.
157157
158158
.. c:function:: void* PyMem_RawCalloc(size_t nelem, size_t elsize)
159159
160-
Allocates *nelem* elements each whose size in bytes is *elsize* and returns
160+
Allocates *nelem* elements each of size *elsize* bytes and returns
161161
a pointer of type :c:expr:`void*` to the allocated memory, or ``NULL`` if the
162162
request fails. The memory is initialized to zeros.
163163
@@ -235,7 +235,7 @@ In the GIL-enabled build (default build) the
235235
236236
.. c:function:: void* PyMem_Calloc(size_t nelem, size_t elsize)
237237
238-
Allocates *nelem* elements each whose size in bytes is *elsize* and returns
238+
Allocates *nelem* elements each of size *elsize* bytes and returns
239239
a pointer of type :c:expr:`void*` to the allocated memory, or ``NULL`` if the
240240
request fails. The memory is initialized to zeros.
241241
@@ -368,7 +368,7 @@ The :ref:`default object allocator <default-memory-allocators>` uses the
368368
369369
.. c:function:: void* PyObject_Calloc(size_t nelem, size_t elsize)
370370
371-
Allocates *nelem* elements each whose size in bytes is *elsize* and returns
371+
Allocates *nelem* elements each of size *elsize* bytes and returns
372372
a pointer of type :c:expr:`void*` to the allocated memory, or ``NULL`` if the
373373
request fails. The memory is initialized to zeros.
374374

Doc/c-api/module.rst

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -247,6 +247,15 @@ Feature slots
247247
If ``Py_mod_multiple_interpreters`` is not specified, the import
248248
machinery defaults to ``Py_MOD_MULTIPLE_INTERPRETERS_SUPPORTED``.
249249
250+
For historical reasons, the values are declared as pointers (``void *``).
251+
When using :c:type:`PySlot` arrays, use :c:macro:`PySlot_DATA` for
252+
:c:macro:`!Py_mod_multiple_interpreters`:
253+
254+
.. code-block:: c
255+
256+
PySlot_DATA(Py_mod_multiple_interpreters,
257+
Py_MOD_PER_INTERPRETER_GIL_SUPPORTED)
258+
250259
.. versionadded:: 3.12
251260
252261
.. c:macro:: Py_mod_gil
@@ -272,6 +281,14 @@ Feature slots
272281
If ``Py_mod_gil`` is not specified, the import machinery defaults to
273282
``Py_MOD_GIL_USED``.
274283
284+
For historical reasons, the values are declared as pointers (``void *``).
285+
When using :c:type:`PySlot` arrays, use :c:macro:`PySlot_DATA` for
286+
:c:macro:`!Py_mod_gil`:
287+
288+
.. code-block:: c
289+
290+
PySlot_DATA(Py_mod_gil, Py_MOD_GIL_NOT_USED)
291+
275292
.. versionadded:: 3.13
276293
277294

Doc/c-api/typeobj.rst

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2975,13 +2975,13 @@ Buffer Object Structures
29752975
steps:
29762976

29772977
(1) Check if the request can be met. If not, raise :exc:`BufferError`,
2978-
set :c:expr:`view->obj` to ``NULL`` and return ``-1``.
2978+
set ``view->obj`` to ``NULL`` and return ``-1``.
29792979

29802980
(2) Fill in the requested fields.
29812981

29822982
(3) Increment an internal counter for the number of exports.
29832983

2984-
(4) Set :c:expr:`view->obj` to *exporter* and increment :c:expr:`view->obj`.
2984+
(4) Set ``view->obj`` to *exporter* and increment ``view->obj``.
29852985

29862986
(5) Return ``0``.
29872987

@@ -3007,10 +3007,10 @@ Buffer Object Structures
30073007
schemes can be used:
30083008

30093009
* Re-export: Each member of the tree acts as the exporting object and
3010-
sets :c:expr:`view->obj` to a new reference to itself.
3010+
sets ``view->obj`` to a new reference to itself.
30113011

30123012
* Redirect: The buffer request is redirected to the root object of the
3013-
tree. Here, :c:expr:`view->obj` will be a new reference to the root
3013+
tree. Here, ``view->obj`` will be a new reference to the root
30143014
object.
30153015

30163016
The individual fields of *view* are described in section
@@ -3064,7 +3064,7 @@ Buffer Object Structures
30643064
*view* argument.
30653065

30663066

3067-
This function MUST NOT decrement :c:expr:`view->obj`, since that is
3067+
This function MUST NOT decrement ``view->obj``, since that is
30683068
done automatically in :c:func:`PyBuffer_Release` (this scheme is
30693069
useful for breaking reference cycles).
30703070

Doc/c-api/weakref.rst

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,11 @@ as much as it can.
4343
should accept a single parameter, which will be the weak reference object
4444
itself. *callback* may also be ``None`` or ``NULL``. If *ob* is not a
4545
weakly referenceable object, or if *callback* is not callable, ``None``, or
46-
``NULL``, this will return ``NULL`` and raise :exc:`TypeError`.
46+
``NULL``, this will raise :exc:`TypeError` and return ``NULL``.
47+
48+
.. versionchanged:: next
49+
Raise :exc:`!TypeError` if *callback* is not callable, ``None``, or
50+
``NULL``.
4751
4852
.. seealso::
4953
:c:func:`PyType_SUPPORTS_WEAKREFS` for checking if *ob* is weakly
@@ -59,7 +63,11 @@ as much as it can.
5963
collected; it should accept a single parameter, which will be the weak
6064
reference object itself. *callback* may also be ``None`` or ``NULL``. If *ob*
6165
is not a weakly referenceable object, or if *callback* is not callable,
62-
``None``, or ``NULL``, this will return ``NULL`` and raise :exc:`TypeError`.
66+
``NULL``, this will raise :exc:`TypeError` and return ``NULL``.
67+
68+
.. versionchanged:: next
69+
Raise :exc:`!TypeError` if *callback* is not callable, ``None``, or
70+
``NULL``.
6371
6472
.. seealso::
6573
:c:func:`PyType_SUPPORTS_WEAKREFS` for checking if *ob* is weakly

0 commit comments

Comments
 (0)