mirror of
https://github.com/python/cpython.git
synced 2025-12-31 04:23:37 +00:00
[3.11] Fix v3.11.0 release merge problems (GH-98622)
When merging the v3.11.0 tag into 3.11, some files were incorrectly updated and some others were not properly deleted. Automerge-Triggered-By: GH:pablogsal
This commit is contained in:
parent
3a1eb81abf
commit
b3cafb60af
26 changed files with 2 additions and 155 deletions
|
|
@ -129,19 +129,6 @@ You can deactivate a virtual environment by typing ``deactivate`` in your shell.
|
|||
The exact mechanism is platform-specific and is an internal implementation
|
||||
detail (typically, a script or shell function will be used).
|
||||
|
||||
.. warning:: Because scripts installed in environments should not expect the
|
||||
environment to be activated, their shebang lines contain the absolute paths
|
||||
to their environment's interpreters. Because of this, environments are
|
||||
inherently non-portable, in the general case. You should always have a
|
||||
simple means of recreating an environment (for example, if you have a
|
||||
requirements file ``requirements.txt``, you can invoke ``pip install -r
|
||||
requirements.txt`` using the environment's ``pip`` to install all of the
|
||||
packages needed by the environment). If for any reason you need to move the
|
||||
environment to a new location, you should recreate it at the desired
|
||||
location and delete the one at the old location. If you move an environment
|
||||
because you moved a parent directory of it, you should recreate the
|
||||
environment in its new location. Otherwise, software installed into the
|
||||
environment may not work as expected.
|
||||
|
||||
.. _venv-api:
|
||||
|
||||
|
|
|
|||
|
|
@ -4,6 +4,7 @@
|
|||
|
||||
:Release: |release|
|
||||
:Date: |today|
|
||||
:Editor: Pablo Galindo Salgado
|
||||
|
||||
.. Rules for maintenance:
|
||||
|
||||
|
|
@ -1590,10 +1591,6 @@ Changed/removed opcodes
|
|||
:opcode:`!POP_BLOCK`, :opcode:`!SETUP_FINALLY` and :opcode:`!YIELD_FROM`.
|
||||
|
||||
|
||||
.. _whatsnew311-deprecated:
|
||||
.. _whatsnew311-python-api-deprecated:
|
||||
|
||||
|
||||
.. _whatsnew311-deprecated:
|
||||
.. _whatsnew311-python-api-deprecated:
|
||||
|
||||
|
|
@ -1769,9 +1766,6 @@ Standard Library
|
|||
(Contributed by Erlend E. Aasland in :issue:`5846`.)
|
||||
|
||||
|
||||
.. _whatsnew311-pending-removal:
|
||||
.. _whatsnew311-python-api-pending-removal:
|
||||
|
||||
.. _whatsnew311-pending-removal:
|
||||
.. _whatsnew311-python-api-pending-removal:
|
||||
|
||||
|
|
|
|||
|
|
@ -23,7 +23,7 @@
|
|||
#define PY_RELEASE_SERIAL 0
|
||||
|
||||
/* Version as a string */
|
||||
#define PY_VERSION "3.11.0rc2+"
|
||||
#define PY_VERSION "3.11.0+"
|
||||
/*--end constants--*/
|
||||
|
||||
/* Version as a single 4-byte hex number, e.g. 0x010502B2 == 1.5.2b2.
|
||||
|
|
|
|||
|
|
@ -326,69 +326,5 @@ def f():
|
|||
gc.enable()
|
||||
|
||||
|
||||
@support.cpython_only
|
||||
def test_sneaky_frame_object(self):
|
||||
|
||||
def trace(frame, event, arg):
|
||||
"""
|
||||
Don't actually do anything, just force a frame object to be created.
|
||||
"""
|
||||
|
||||
def callback(phase, info):
|
||||
"""
|
||||
Yo dawg, I heard you like frames, so I'm allocating a frame while
|
||||
you're allocating a frame, so you can have a frame while you have a
|
||||
frame!
|
||||
"""
|
||||
nonlocal sneaky_frame_object
|
||||
sneaky_frame_object = sys._getframe().f_back
|
||||
# We're done here:
|
||||
gc.callbacks.remove(callback)
|
||||
|
||||
def f():
|
||||
while True:
|
||||
yield
|
||||
|
||||
old_threshold = gc.get_threshold()
|
||||
old_callbacks = gc.callbacks[:]
|
||||
old_enabled = gc.isenabled()
|
||||
old_trace = sys.gettrace()
|
||||
try:
|
||||
# Stop the GC for a second while we set things up:
|
||||
gc.disable()
|
||||
# Create a paused generator:
|
||||
g = f()
|
||||
next(g)
|
||||
# Move all objects to the oldest generation, and tell the GC to run
|
||||
# on the *very next* allocation:
|
||||
gc.collect()
|
||||
gc.set_threshold(1, 0, 0)
|
||||
# Okay, so here's the nightmare scenario:
|
||||
# - We're tracing the resumption of a generator, which creates a new
|
||||
# frame object.
|
||||
# - The allocation of this frame object triggers a collection
|
||||
# *before* the frame object is actually created.
|
||||
# - During the collection, we request the exact same frame object.
|
||||
# This test does it with a GC callback, but in real code it would
|
||||
# likely be a trace function, weakref callback, or finalizer.
|
||||
# - The collection finishes, and the original frame object is
|
||||
# created. We now have two frame objects fighting over ownership
|
||||
# of the same interpreter frame!
|
||||
sys.settrace(trace)
|
||||
gc.callbacks.append(callback)
|
||||
sneaky_frame_object = None
|
||||
gc.enable()
|
||||
next(g)
|
||||
# g.gi_frame should be the the frame object from the callback (the
|
||||
# one that was *requested* second, but *created* first):
|
||||
self.assertIs(g.gi_frame, sneaky_frame_object)
|
||||
finally:
|
||||
gc.set_threshold(*old_threshold)
|
||||
gc.callbacks[:] = old_callbacks
|
||||
sys.settrace(old_trace)
|
||||
if old_enabled:
|
||||
gc.enable()
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
||||
|
|
|
|||
|
|
@ -1,2 +0,0 @@
|
|||
Ensure that Windows releases built with ``Tools\msi\buildrelease.bat`` are
|
||||
upgradable to and from official Python releases.
|
||||
|
|
@ -1 +0,0 @@
|
|||
Document some places where an assignment expression needs parentheses.
|
||||
|
|
@ -1,2 +0,0 @@
|
|||
Correctly raise ``SyntaxError`` on exception groups (:pep:`654`) on python
|
||||
versions prior to 3.11
|
||||
|
|
@ -1,3 +0,0 @@
|
|||
When :exc:`ValueError` is raised if an integer is larger than the limit,
|
||||
mention the :func:`sys.set_int_max_str_digits` function in the error message.
|
||||
Patch by Victor Stinner.
|
||||
|
|
@ -1 +0,0 @@
|
|||
Fix undefined behaviour in ``_testcapimodule.c``.
|
||||
|
|
@ -1,3 +0,0 @@
|
|||
Fix command line parsing: reject :option:`-X int_max_str_digits <-X>` option
|
||||
with no value (invalid) when the :envvar:`PYTHONINTMAXSTRDIGITS` environment
|
||||
variable is set to a valid limit. Patch by Victor Stinner.
|
||||
|
|
@ -1,2 +0,0 @@
|
|||
Fix a crash occurring when :c:func:`PyEval_GetFrame` is called while the
|
||||
topmost Python frame is in a partially-initialized state.
|
||||
|
|
@ -1,2 +0,0 @@
|
|||
Fix possible data corruption or crashes when accessing the ``f_back`` member
|
||||
of newly-created generator or coroutine frames.
|
||||
|
|
@ -1,3 +0,0 @@
|
|||
Fix an issue where several frame objects could be backed by the same
|
||||
interpreter frame, possibly leading to corrupted memory and hard crashes of
|
||||
the interpreter.
|
||||
|
|
@ -1 +0,0 @@
|
|||
Update tutorial introduction output to use 3.10+ SyntaxError invalid range.
|
||||
|
|
@ -1,2 +0,0 @@
|
|||
Fix ``!`` in c domain ref target syntax via a ``conf.py`` patch, so it works
|
||||
as intended to disable ref target resolution.
|
||||
|
|
@ -1 +0,0 @@
|
|||
Fix broken :class:`asyncio.Semaphore` when acquire is cancelled.
|
||||
|
|
@ -1,9 +0,0 @@
|
|||
fix Flag to use boundary CONFORM
|
||||
|
||||
This restores previous Flag behavior of allowing flags with non-sequential values to be combined; e.g.
|
||||
|
||||
class Skip(Flag):
|
||||
TWO = 2
|
||||
EIGHT = 8
|
||||
|
||||
Skip.TWO | Skip.EIGHT -> <Skip.TWO|EIGHT: 10>
|
||||
|
|
@ -1 +0,0 @@
|
|||
Make Semaphore run faster.
|
||||
|
|
@ -1 +0,0 @@
|
|||
Update the bundled copies of pip and setuptools to versions 22.3 and 65.5.0 respectively.
|
||||
|
|
@ -1,15 +0,0 @@
|
|||
On Linux the :mod:`multiprocessing` module returns to using filesystem backed
|
||||
unix domain sockets for communication with the *forkserver* process instead of
|
||||
the Linux abstract socket namespace. Only code that chooses to use the
|
||||
:ref:`"forkserver" start method <multiprocessing-start-methods>` is affected.
|
||||
|
||||
Abstract sockets have no permissions and could allow any user on the system in
|
||||
the same `network namespace
|
||||
<https://man7.org/linux/man-pages/man7/network_namespaces.7.html>`_ (often the
|
||||
whole system) to inject code into the multiprocessing *forkserver* process.
|
||||
This was a potential privilege escalation. Filesystem based socket permissions
|
||||
restrict this to the *forkserver* process user as was the default in Python 3.8
|
||||
and earlier.
|
||||
|
||||
This prevents Linux `CVE-2022-42919
|
||||
<https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-42919>`_.
|
||||
|
|
@ -1,3 +0,0 @@
|
|||
Fix multiplying a list by an integer (``list *= int``): detect the integer
|
||||
overflow when the new allocated length is close to the maximum size. Issue
|
||||
reported by Jordan Limor. Patch by Victor Stinner.
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
On Windows, when the Python test suite is run with the ``-jN`` option, the
|
||||
ANSI code page is now used as the encoding for the stdout temporary file,
|
||||
rather than using UTF-8 which can lead to decoding errors. Patch by Victor
|
||||
Stinner.
|
||||
|
|
@ -1 +0,0 @@
|
|||
Clarify some text in the Windows installer.
|
||||
|
|
@ -1,3 +0,0 @@
|
|||
Fix :file:`py.exe` launcher handling of ``-V:<company>/`` option when
|
||||
default preferences have been set in environment variables or configuration
|
||||
files.
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
Fixes :mod:`multiprocessing` spawning child processes on Windows from a
|
||||
virtual environment to ensure that child processes that also use
|
||||
:mod:`multiprocessing` to spawn more children will recognize that they are
|
||||
in a virtual environment.
|
||||
|
|
@ -1,6 +0,0 @@
|
|||
The macOS 13 SDK includes support for the ``mkfifoat`` and ``mknodat`` system calls.
|
||||
Using the ``dir_fd`` option with either :func:`os.mkfifo` or :func:`os.mknod` could result in a
|
||||
segfault if cpython is built with the macOS 13 SDK but run on an earlier
|
||||
version of macOS. Prevent this by adding runtime support for detection of
|
||||
these system calls ("weaklinking") as is done for other newer syscalls on
|
||||
macOS.
|
||||
Loading…
Add table
Add a link
Reference in a new issue