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
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:
:Release: |release|
:Date: |today|
+:Editor: Pablo Galindo Salgado
.. Rules for maintenance:
:opcode:`!POP_BLOCK`, :opcode:`!SETUP_FINALLY` and :opcode:`!YIELD_FROM`.
-.. _whatsnew311-deprecated:
-.. _whatsnew311-python-api-deprecated:
-
-
.. _whatsnew311-deprecated:
.. _whatsnew311-python-api-deprecated:
(Contributed by Erlend E. Aasland in :issue:`5846`.)
-.. _whatsnew311-pending-removal:
-.. _whatsnew311-python-api-pending-removal:
-
.. _whatsnew311-pending-removal:
.. _whatsnew311-python-api-pending-removal:
#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.
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()
+++ /dev/null
-Ensure that Windows releases built with ``Tools\msi\buildrelease.bat`` are
-upgradable to and from official Python releases.
+++ /dev/null
-Document some places where an assignment expression needs parentheses.
+++ /dev/null
-Correctly raise ``SyntaxError`` on exception groups (:pep:`654`) on python
-versions prior to 3.11
+++ /dev/null
-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.
+++ /dev/null
-Fix undefined behaviour in ``_testcapimodule.c``.
+++ /dev/null
-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.
+++ /dev/null
-Fix a crash occurring when :c:func:`PyEval_GetFrame` is called while the
-topmost Python frame is in a partially-initialized state.
+++ /dev/null
-Fix possible data corruption or crashes when accessing the ``f_back`` member
-of newly-created generator or coroutine frames.
+++ /dev/null
-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.
+++ /dev/null
-Update tutorial introduction output to use 3.10+ SyntaxError invalid range.
+++ /dev/null
-Fix ``!`` in c domain ref target syntax via a ``conf.py`` patch, so it works
-as intended to disable ref target resolution.
+++ /dev/null
-Fix broken :class:`asyncio.Semaphore` when acquire is cancelled.
+++ /dev/null
-fix Flag to use boundary CONFORM\r
-\r
-This restores previous Flag behavior of allowing flags with non-sequential values to be combined; e.g.\r
-\r
- class Skip(Flag):\r
- TWO = 2\r
- EIGHT = 8\r
-\r
- Skip.TWO | Skip.EIGHT -> <Skip.TWO|EIGHT: 10>
+++ /dev/null
-Make Semaphore run faster.
+++ /dev/null
-Update the bundled copies of pip and setuptools to versions 22.3 and 65.5.0 respectively.
+++ /dev/null
-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>`_.
+++ /dev/null
-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.
+++ /dev/null
-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.
+++ /dev/null
-Clarify some text in the Windows installer.
+++ /dev/null
-Fix :file:`py.exe` launcher handling of ``-V:<company>/`` option when
-default preferences have been set in environment variables or configuration
-files.
+++ /dev/null
-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.
+++ /dev/null
-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.