.. bpo: 42967
.. date: 2021-02-14-15-59-16
.. nonce: YApqDS
.. release date: 2021-03-01
.. section: Security

Fix web cache poisoning vulnerability by defaulting the query args separator
to ``&``, and allowing the user to choose a custom separator.

..

.. bpo: 43321
.. date: 2021-02-26-13-17-52
.. nonce: TCS3ph
.. section: Core and Builtins

Fix ``SystemError`` raised when ``PyArg_Parse*()`` is used with ``#`` but
without ``PY_SSIZE_T_CLEAN`` defined.

..

.. bpo: 36346
.. date: 2021-02-22-19-00-00
.. nonce: uAoni0
.. section: Core and Builtins

``PyArg_Parse*()`` functions now emits ``DeprecationWarning`` when ``u`` or
``Z`` format is used. See :pep:`623` for detail.

..

.. bpo: 43277
.. date: 2021-02-20-16-50-22
.. nonce: FXkRXk
.. section: Core and Builtins

Add a new :c:func:`PySet_CheckExact` function to the C-API to check if an
object is an instance of :class:`set` but not an instance of a subtype.
Patch by Pablo Galindo.

..

.. bpo: 42990
.. date: 2021-02-18-15-12-30
.. nonce: toAqBH
.. section: Core and Builtins

The :data:`types.FunctionType` constructor now inherits the current builtins
if the *globals* dictionary has no ``"__builtins__"`` key, rather than using
``{"None": None}`` as builtins: same behavior as :func:`eval` and
:func:`exec` functions. Defining a function with ``def function(...): ...``
in Python is not affected, globals cannot be overridden with this syntax: it
also inherits the current builtins. Patch by Victor Stinner.

..

.. bpo: 42990
.. date: 2021-02-17-19-02-21
.. nonce: SKXHiI
.. section: Core and Builtins

Functions have a new ``__builtins__`` attribute which is used to look for
builtin symbols when a function is executed, instead of looking into
``__globals__['__builtins__']``. Patch by Mark Shannon and Victor Stinner.

..

.. bpo: 43149
.. date: 2021-02-07-03-27-14
.. nonce: 0umPKD
.. section: Core and Builtins

Improve the error message in the parser for exception groups without
parentheses. Patch by Pablo Galindo.

..

.. bpo: 43121
.. date: 2021-02-03-22-33-05
.. nonce: jqcViq
.. section: Core and Builtins

Fixed an incorrect :exc:`SyntaxError` message for missing comma in literals.
Patch by Pablo Galindo.

..

.. bpo: 42819
.. date: 2021-01-04-23-54-34
.. nonce: 4KO6wU
.. section: Library

:mod:`readline`: Explicitly disable bracketed paste in the interactive
interpreter, even if it's set in the inputrc, is enabled by default (eg GNU
Readline 8.1), or a user calls ``readline.read_init_file()``. The Python
REPL has not implemented bracketed paste support. Also, bracketed mode
writes the ``"\x1b[?2004h"`` escape sequence into stdout which causes test
failures in applications that don't support it. It can still be explicitly
enabled by calling ``readline.parse_and_bind("set enable-bracketed-paste
on")``. Patch by Dustin Rodrigues.

..

.. bpo: 42808
.. date: 2021-01-02-05-10-58
.. nonce: AOxgxl
.. section: Core and Builtins

Simple calls to ``type(object)`` are now faster due to the ``vectorcall``
calling convention. Patch by Dennis Sweeney.

..

.. bpo: 42217
.. date: 2020-10-31-16-54-00
.. nonce: GdcHe5
.. section: Core and Builtins

Make the compiler merges same co_code and co_linetable objects in a module
like already did for co_consts.

..

.. bpo: 41972
.. date: 2020-10-23-23-17-23
.. nonce: kbAwg4
.. section: Core and Builtins

Substring search functions such as ``str1 in str2`` and ``str2.find(str1)``
now sometimes use the "Two-Way" string comparison algorithm to avoid
quadratic behavior on long strings.

..

.. bpo: 42128
.. date: 2020-10-23-08-54-04
.. nonce: SWmVEm
.. section: Core and Builtins

Implement :pep:`634` (structural pattern matching). Patch by Brandt Bucher.

..

.. bpo: 40692
.. date: 2020-05-19-22-10-05
.. nonce: ajEhrR
.. section: Library

In the :class:`concurrent.futures.ProcessPoolExecutor`, validate that
:func:`multiprocess.synchronize` is available on a given platform and rely
on that check in the :mod:`concurrent.futures` test suite so we can run
tests that are unrelated to :class:`ProcessPoolExecutor` on those platforms.

..

.. bpo: 38302
.. date: 2019-09-28-12-23-23
.. nonce: hsCNgX
.. section: Core and Builtins

If :func:`object.__ipow__` returns :data:`NotImplemented`, the operator
will correctly fall back to :func:`object.__pow__` and
:func:`object.__rpow__` as expected.

..

.. bpo: 43316
.. date: 2021-02-25-09-44-36
.. nonce: k9Gyqn
.. section: Library

The ``python -m gzip`` command line application now properly fails when
detecting an unsupported extension. It exits with a non-zero exit code and
prints an error message to stderr.

..

.. bpo: 43317
.. date: 2021-02-25-09-08-55
.. nonce: qrOOpB
.. section: Library

Set the chunk size for the ``gzip`` module main function to
io.DEFAULT_BUFFER_SIZE. This is slightly faster than the 1024 bytes constant
that was used previously.

..

.. bpo: 43146
.. date: 2021-02-23-17-20-16
.. nonce: JAFplg
.. section: Library

Handle None in single-arg versions of :func:`~traceback.print_exception` and
:func:`~traceback.format_exception`.

..

.. bpo: 43260
.. date: 2021-02-20-12-15-29
.. nonce: 6znAas
.. section: Library

Fix TextIOWrapper can not flush internal buffer forever after very large
text is written.

..

.. bpo: 43258
.. date: 2021-02-18-23-30-52
.. nonce: LeU-q8
.. section: Library

Prevent needless allocation of :mod:`sqlite3` aggregate function context
when no rows match an aggregate query. Patch by Erlend E. Aasland.

..

.. bpo: 43251
.. date: 2021-02-18-14-24-42
.. nonce: n6WZDw
.. section: Library

Improve :mod:`sqlite3` error handling: ``sqlite3_column_name()`` failures
now result in :exc:`MemoryError`. Patch by Erlend E. Aasland.

..

.. bpo: 40956
.. date: 2021-02-10-23-29-50
.. nonce: LcAbwG
.. section: Library

Fix segfault in :meth:`sqlite3.Connection.backup` if no argument was
provided. The regression was introduced by PR 23838. Patch by Erlend E.
Aasland.

..

.. bpo: 43172
.. date: 2021-02-10-06-00-53
.. nonce: ZMCJni
.. section: Library

The readline module now passes its tests when built directly against
libedit. Existing irreconcilable API differences remain in
:func:`readline.get_begidx` and :func:`readline.get_endidx` behavior based
on libreadline vs libedit use.

..

.. bpo: 43163
.. date: 2021-02-08-21-13-51
.. nonce: E2MgzH
.. section: Library

Fix a bug in :mod:`codeop` that was causing it to not ask for more input
when multi-line snippets have unclosed parentheses. Patch by Pablo Galindo

..

.. bpo: 43162
.. date: 2021-02-08-16-27-00
.. nonce: t-W7h3
.. section: Library

deprecate unsupported ability to access enum members as attributes of other
enum members

..

.. bpo: 43146
.. date: 2021-02-06-21-21-35
.. nonce: MHtb2v
.. section: Library

Fix recent regression in None argument handling in :mod:`~traceback` module
functions.

..

.. bpo: 43102
.. date: 2021-02-03-22-55-27
.. nonce: TSlZ6J
.. section: Library

The namedtuple __new__ method had its __builtins__ set to None instead of an
actual dictionary.  This created problems for introspection tools.

..

.. bpo: 43106
.. date: 2021-02-03-17-06-38
.. nonce: SwcSuU
.. section: Library

Added :const:`~os.O_EVTONLY`, :const:`~os.O_FSYNC`, :const:`~os.O_SYMLINK` and
:const:`~os.O_NOFOLLOW_ANY` for macOS. Patch by Donghee Na.

..

.. bpo: 42960
.. date: 2021-01-18-21-07-20
.. nonce: a7Dote
.. section: Library

Adds :const:`resource.RLIMIT_KQUEUES` constant from FreeBSD to the
:mod:`resource` module.

..

.. bpo: 42151
.. date: 2020-10-26-18-01-09
.. nonce: et5f7s
.. section: Library

Make the pure Python implementation of :mod:`xml.etree.ElementTree` behave
the same as the C implementation (:mod:`!_elementree`) regarding default
attribute values (by not setting ``specified_attributes=1``).

..

.. bpo: 29753
.. date: 2020-05-02-01-01-30
.. nonce: n2M-AF
.. section: Library

In ctypes, now packed bitfields are calculated properly and the first item
of packed bitfields is now shrank correctly.

..

.. bpo: 27646
.. date: 2021-02-20-00-09-13
.. nonce: HRsmo-
.. section: Documentation

Clarify that 'yield from <expr>' works with any iterable, not just
iterators.

..

.. bpo: 36346
.. date: 2020-06-15-10-45-45
.. nonce: H0sS_i
.. section: Documentation

Update some deprecated unicode APIs which are documented as "will be removed
in 4.0" to "3.12". See :pep:`623` for detail.

..

.. bpo: 43288
.. date: 2021-02-21-11-11-53
.. nonce: LfTvL-
.. section: Tests

Fix test_importlib to correctly skip Unicode file tests if the filesystem
does not support them.

..

.. bpo: 43174
.. date: 2021-02-10-14-11-53
.. nonce: F9zwXQ
.. section: Build

Windows build now uses ``/utf-8`` compiler option.

..

.. bpo: 43103
.. date: 2021-02-02-16-26-44
.. nonce: VWeyP_
.. section: Build

Add a new configure ``--without-static-libpython`` option to not build the
``libpythonMAJOR.MINOR.a`` static library and not install the ``python.o``
object file.

..

.. bpo: 13501
.. date: 2021-01-10-22-25-23
.. nonce: g4L-6R
.. section: Build

The configure script can now use *libedit* instead of *readline* with the
command line option ``--with-readline=editline``.

..

.. bpo: 42603
.. date: 2020-12-08-19-25-20
.. nonce: mXs2dB
.. section: Build

Make configure script use pkg-config to detect the location of Tcl/Tk
headers and libraries, used to build tkinter.

On macOS, a Tcl/Tk configuration provided by pkg-config will be preferred
over Tcl/Tk frameworks installed in ``/{System/,}Library/Frameworks``. If
both exist and the latter is preferred, the appropriate ``--with-tcltk-*``
configuration options need to be explicitly set.

..

.. bpo: 39448
.. date: 2020-01-24-12-54-22
.. nonce: k4pv14
.. section: Build

Add the "regen-frozen" makefile target that regenerates the code for the
frozen ``__hello__`` module.

..

.. bpo: 43155
.. date: 2021-02-10-04-16-51
.. nonce: O1tURk
.. section: Windows

:c:func:`PyCMethod_New` is now present in ``python3.lib``.

..

.. bpo: 41837
.. date: 2021-02-28-22-49-46
.. nonce: 9fqyXC
.. section: macOS

Update macOS installer build to use OpenSSL 1.1.1j.

..

.. bpo: 43283
.. date: 2021-02-21-16-30-10
.. nonce: DLBwYn
.. section: IDLE

Document why printing to IDLE's Shell is often slower than printing to a
system terminal and that it can be made faster by pre-formatting a single
string before printing.

..

.. bpo: 43278
.. date: 2021-02-21-15-30-38
.. nonce: DMPaWH
.. section: C API

Always put compiler and system information on the first line of the REPL
welcome message.

..

.. bpo: 43270
.. date: 2021-02-19-14-28-26
.. nonce: UKx4XN
.. section: C API

Remove the private ``_PyErr_OCCURRED()`` macro: use the public
:c:func:`PyErr_Occurred` function instead.

..

.. bpo: 35134
.. date: 2021-02-18-18-46-42
.. nonce: dFpEDT
.. section: C API

Move odictobject.h, parser_interface.h, picklebufobject.h, pydebug.h, and
pyfpe.h into the cpython/ directory. They must not be included directly, as
they are already included by Python.h: :ref:`Include Files <api-includes>`.

..

.. bpo: 35134
.. date: 2021-02-17-18-51-26
.. nonce: YoQdk8
.. section: C API

Move pyarena.h, pyctype.h, and pytime.h into the cpython/ directory. They
must not be included directly, as they are already included by Python.h:
:ref:`Include Files <api-includes>`.

..

.. bpo: 40170
.. date: 2021-02-16-22-29-39
.. nonce: ahHmOo
.. section: C API

:c:func:`PyExceptionClass_Name` is now always declared as a function, in
order to hide implementation details. The macro accessed
:c:member:`PyTypeObject.tp_name` directly.  Patch by Erlend E. Aasland.

..

.. bpo: 43239
.. date: 2021-02-16-17-30-16
.. nonce: FQqOGz
.. section: C API

The :c:func:`PyCFunction_New` function is now exported in the ABI when
compiled with ``-fvisibility=hidden``.

..

.. bpo: 40170
.. date: 2021-02-15-15-06-43
.. nonce: ZYeSii
.. section: C API

:c:func:`PyIter_Check` is now always declared as a function, in order to
hide implementation details. The macro accessed
:c:member:`PyTypeObject.tp_iternext` directly. Patch by Erlend E. Aasland.

..

.. bpo: 40170
.. date: 2021-02-15-13-41-14
.. nonce: r2FAtl
.. section: C API

Convert :c:func:`PyDescr_IsData` macro to a function to hide implementation
details: The macro accessed :c:member:`PyTypeObject.tp_descr_set` directly.
Patch by Erlend E. Aasland.

..

.. bpo: 43181
.. date: 2021-02-11-11-37-14
.. nonce: ydv33S
.. section: C API

Convert :c:func:`PyObject_TypeCheck` macro to a static inline function.
Patch by Erlend E. Aasland.
