Commit 9d6171de authored by Ned Deily's avatar Ned Deily Committed by GitHub

bpo-23404: Update/sync What's New files for 3.6/3.5/2.7 (GH-7620)

parent 9d6d06e8
......@@ -2367,6 +2367,18 @@ Port-Specific Changes: Mac OS X
installation and a user-installed copy of the same version.
(Changed by Ronald Oussoren; :issue:`4865`.)
.. versionchanged:: 2.7.13
As of 2.7.13, this change was removed.
``/Library/Python/2.7/site-packages``, the site-packages directory
used by the Apple-supplied system Python 2.7 is no longer appended to
``sys.path`` for user-installed Pythons such as from the python.org
installers. As of macOS 10.12, Apple changed how the system
site-packages directory is configured, which could cause installation
of pip components, like setuptools, to fail. Packages installed for
the system Python will no longer be shared with user-installed
Pythons. (:issue:`28440`)
Port-Specific Changes: FreeBSD
-----------------------------------
......@@ -2558,6 +2570,21 @@ exemption allowing new ``-3`` warnings to be added in any Python 2.7
maintenance release.
Two new environment variables for debug mode
--------------------------------------------
In debug mode, the ``[xxx refs]`` statistic is not written by default, the
:envvar:`PYTHONSHOWREFCOUNT` environment variable now must also be set.
(Contributed by Victor Stinner; :issue:`31733`.)
When Python is compiled with ``COUNT_ALLOC`` defined, allocation counts are no
longer dumped by default anymore: the :envvar:`PYTHONSHOWALLOCCOUNT` environment
variable must now also be set. Moreover, allocation counts are now dumped into
stderr, rather than stdout. (Contributed by Victor Stinner; :issue:`31692`.)
.. versionadded:: 2.7.15
PEP 434: IDLE Enhancement Exception for All Branches
----------------------------------------------------
......@@ -2602,10 +2629,162 @@ with the first of those changes appearing in the Python 2.7.7 release.
certificate store, the :class:`~ssl.SSLContext` class, and other
features. (Contributed by Alex Gaynor and David Reid; :issue:`21308`.)
Refer to the "Version added: 2.7.9" notes in the module documentation for
specific details.
* :func:`os.urandom` was changed to cache a file descriptor to ``/dev/urandom``
instead of reopening ``/dev/urandom`` on every call. (Contributed by Alex
Gaynor; :issue:`21305`.)
* :data:`hashlib.algorithms_guaranteed` and
:data:`hashlib.algorithms_available` were backported from Python 3 to make
it easier for Python 2 applications to select the strongest available hash
algorithm. (Contributed by Alex Gaynor in :issue:`21307`)
PEP 477: Backport ensurepip (PEP 453) to Python 2.7
---------------------------------------------------
:pep:`477` approves the inclusion of the :pep:`453` ensurepip module and the
improved documentation that was enabled by it in the Python 2.7 maintenance
releases, appearing first in the Python 2.7.9 release.
Bootstrapping pip By Default
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
The new :mod:`ensurepip` module (defined in :pep:`453`) provides a standard
cross-platform mechanism to bootstrap the pip installer into Python
installations. The version of ``pip`` included with Python 2.7.9 is ``pip``
1.5.6, and future 2.7.x maintenance releases will update the bundled version to
the latest version of ``pip`` that is available at the time of creating the
release candidate.
By default, the commands ``pip``, ``pipX`` and ``pipX.Y`` will be installed on
all platforms (where X.Y stands for the version of the Python installation),
along with the ``pip`` Python package and its dependencies.
For CPython :ref:`source builds on POSIX systems <building-python-on-unix>`,
the ``make install`` and ``make altinstall`` commands do not bootstrap ``pip``
by default. This behaviour can be controlled through configure options, and
overridden through Makefile options.
On Windows and Mac OS X, the CPython installers now default to installing
``pip`` along with CPython itself (users may opt out of installing it
during the installation process). Window users will need to opt in to the
automatic ``PATH`` modifications to have ``pip`` available from the command
line by default, otherwise it can still be accessed through the Python
launcher for Windows as ``py -m pip``.
As `discussed in the PEP`__, platform packagers may choose not to install
these commands by default, as long as, when invoked, they provide clear and
simple directions on how to install them on that platform (usually using
the system package manager).
__ https://www.python.org/dev/peps/pep-0477/#disabling-ensurepip-by-downstream-distributors
Documentation Changes
~~~~~~~~~~~~~~~~~~~~~
As part of this change, the :ref:`installing-index` and
:ref:`distributing-index` sections of the documentation have been
completely redesigned as short getting started and FAQ documents. Most
packaging documentation has now been moved out to the Python Packaging
Authority maintained `Python Packaging User Guide
<http://packaging.python.org>`__ and the documentation of the individual
projects.
However, as this migration is currently still incomplete, the legacy
versions of those guides remaining available as :ref:`install-index`
and :ref:`distutils-index`.
.. seealso::
:pep:`453` -- Explicit bootstrapping of pip in Python installations
PEP written by Donald Stufft and Nick Coghlan, implemented by
Donald Stufft, Nick Coghlan, Martin von Löwis and Ned Deily.
PEP 476: Enabling certificate verification by default for stdlib http clients
-----------------------------------------------------------------------------
:pep:`476` updated :mod:`httplib` and modules which use it, such as
:mod:`urllib2` and :mod:`xmlrpclib`, to now verify that the server
presents a certificate which is signed by a Certificate Authority in the
platform trust store and whose hostname matches the hostname being requested
by default, significantly improving security for many applications. This
change was made in the Python 2.7.9 release.
For applications which require the old previous behavior, they can pass an
alternate context::
import urllib2
import ssl
# This disables all verification
context = ssl._create_unverified_context()
# This allows using a specific certificate for the host, which doesn't need
# to be in the trust store
context = ssl.create_default_context(cafile="/path/to/file.crt")
urllib2.urlopen("https://invalid-cert", context=context)
PEP 493: HTTPS verification migration tools for Python 2.7
----------------------------------------------------------
:pep:`493` provides additional migration tools to support a more incremental
infrastructure upgrade process for environments containing applications and
services relying on the historically permissive processing of server
certificates when establishing client HTTPS connections. These additions were
made in the Python 2.7.12 release.
These tools are intended for use in cases where affected applications and
services can't be modified to explicitly pass a more permissive SSL context
when establishing the connection.
For applications and services which can't be modified at all, the new
``PYTHONHTTPSVERIFY`` environment variable may be set to ``0`` to revert an
entire Python process back to the default permissive behaviour of Python 2.7.8
and earlier.
For cases where the connection establishment code can't be modified, but the
overall application can be, the new :func:`ssl._https_verify_certificates`
function can be used to adjust the default behaviour at runtime.
New ``make regen-all`` build target
-----------------------------------
To simplify cross-compilation, and to ensure that CPython can reliably be
compiled without requiring an existing version of Python to already be
available, the autotools-based build system no longer attempts to implicitly
recompile generated files based on file modification times.
Instead, a new ``make regen-all`` command has been added to force regeneration
of these files when desired (e.g. after an initial version of Python has
already been built based on the pregenerated versions).
More selective regeneration targets are also defined - see
:source:`Makefile.pre.in` for details.
(Contributed by Victor Stinner in :issue:`23404`.)
.. versionadded:: 2.7.14
Removal of ``make touch`` build target
--------------------------------------
The ``make touch`` build target previously used to request implicit regeneration
of generated files by updating their modification times has been removed.
It has been replaced by the new ``make regen-all`` target.
(Contributed by Victor Stinner in :issue:`23404`.)
.. versionchanged:: 2.7.14
.. ======================================================================
......
......@@ -2536,3 +2536,39 @@ Changes in the C API
:c:member:`tp_as_async` slot. Refer to :ref:`coro-objects` for
new types, structures and functions.
Notable changes in Python 3.5.4
===============================
New ``make regen-all`` build target
-----------------------------------
To simplify cross-compilation, and to ensure that CPython can reliably be
compiled without requiring an existing version of Python to already be
available, the autotools-based build system no longer attempts to implicitly
recompile generated files based on file modification times.
Instead, a new ``make regen-all`` command has been added to force regeneration
of these files when desired (e.g. after an initial version of Python has
already been built based on the pregenerated versions).
More selective regeneration targets are also defined - see
:source:`Makefile.pre.in` for details.
(Contributed by Victor Stinner in :issue:`23404`.)
.. versionadded:: 3.5.4
Removal of ``make touch`` build target
--------------------------------------
The ``make touch`` build target previously used to request implicit regeneration
of generated files by updating their modification times has been removed.
It has been replaced by the new ``make regen-all`` target.
(Contributed by Victor Stinner in :issue:`23404`.)
.. versionchanged:: 3.5.4
......@@ -2346,3 +2346,56 @@ There have been several major changes to the :term:`bytecode` in Python 3.6.
* The new :opcode:`SETUP_ANNOTATIONS` and :opcode:`STORE_ANNOTATION` opcodes
have been added to support the new :term:`variable annotation` syntax.
(Contributed by Ivan Levkivskyi in :issue:`27985`.)
Notable changes in Python 3.6.2
===============================
New ``make regen-all`` build target
-----------------------------------
To simplify cross-compilation, and to ensure that CPython can reliably be
compiled without requiring an existing version of Python to already be
available, the autotools-based build system no longer attempts to implicitly
recompile generated files based on file modification times.
Instead, a new ``make regen-all`` command has been added to force regeneration
of these files when desired (e.g. after an initial version of Python has
already been built based on the pregenerated versions).
More selective regeneration targets are also defined - see
:source:`Makefile.pre.in` for details.
(Contributed by Victor Stinner in :issue:`23404`.)
.. versionadded:: 3.6.2
Removal of ``make touch`` build target
--------------------------------------
The ``make touch`` build target previously used to request implicit regeneration
of generated files by updating their modification times has been removed.
It has been replaced by the new ``make regen-all`` target.
(Contributed by Victor Stinner in :issue:`23404`.)
.. versionchanged:: 3.6.2
Notable changes in Python 3.6.4
===============================
The ``PyExc_RecursionErrorInst`` singleton that was part of the public API
has been removed as its members being never cleared may cause a segfault
during finalization of the interpreter.
(Contributed by Xavier de Gaye in :issue:`22898` and :issue:`30697`.)
Notable changes in Python 3.6.5
===============================
The :func:`locale.localeconv` function now sets temporarily the ``LC_CTYPE``
locale to the ``LC_NUMERIC`` locale in some cases.
(Contributed by Victor Stinner in :issue:`31900`.)
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment