+++++++++++
Python News
+++++++++++

What's New in Python 3.6.1 release candidate 1?
===============================================

*Release date: XXXX-XX-XX*

Core and Builtins
-----------------

- Issue #29034: Fix memory leak and use-after-free in os module (path_converter).

- Issue #29159: Fix regression in bytes(x) when x.__index__() raises Exception.

- Issue #28932: Do not include <sys/random.h> if it does not exist.

- Issue #25677: Correct the positioning of the syntax error caret for
  indented blocks.  Based on patch by Michael Layzell.

- Issue #29000: Fixed bytes formatting of octals with zero padding in alternate
  form.

- Issue #26919: On Android, operating system data is now always encoded/decoded
  to/from UTF-8, instead of the locale encoding to avoid inconsistencies with
  os.fsencode() and os.fsdecode() which are already using UTF-8.

- Issue #28991:  functools.lru_cache() was susceptible to an obscure reentrancy
  bug triggerable by a monkey-patched len() function.

- Issue #28739: f-string expressions are no longer accepted as docstrings and
  by ast.literal_eval() even if they do not include expressions.

- Issue #28512: Fixed setting the offset attribute of SyntaxError by
  PyErr_SyntaxLocationEx() and PyErr_SyntaxLocationObject().

- Issue #28918: Fix the cross compilation of xxlimited when Python has been
  built with Py_DEBUG defined.

- Issue #28731: Optimize _PyDict_NewPresized() to create correct size dict.
  Improve speed of dict literal with constant keys up to 30%.

Library
-------

- Issue #29142: In urllib.request, suffixes in no_proxy environment variable with
  leading dots could match related hostnames again (e.g. .b.c matches a.b.c).
  Patch by Milan Oberkirch.

- Issue #28961: Fix unittest.mock._Call helper: don't ignore the name parameter
  anymore. Patch written by Jiajun Huang.

- Issue #29203:  functools.lru_cache() now respects PEP 468 and preserves
  the order of keyword arguments.  f(a=1, b=2) is now cached separately
  from f(b=2, a=1) since both calls could potentially give different results.

- Issue #15812: inspect.getframeinfo() now correctly shows the first line of
  a context.  Patch by Sam Breese.

- Issue #29094: Offsets in a ZIP file created with extern file object and modes
  "w" and "x" now are relative to the start of the file.

- Issue #29085: Allow random.Random.seed() to use high quality OS randomness
  rather than the pid and time.

- Issue #29061: Fixed bug in secrets.randbelow() which would hang when given
  a negative input.  Patch by Brendan Donegan.

- Issue #29079: Prevent infinite loop in pathlib.resolve() on Windows

- Issue #13051: Fixed recursion errors in large or resized
  curses.textpad.Textbox.  Based on patch by Tycho Andersen.

- Issue #29119: Fix weakrefs in the pure python version of
  collections.OrderedDict move_to_end() method.
  Contributed by Andra Bogildea.

- Issue #9770: curses.ascii predicates now work correctly with negative
  integers.

- Issue #28427: old keys should not remove new values from
  WeakValueDictionary when collecting from another thread.

- Issue 28923: Remove editor artifacts from Tix.py.

- Issue #29055:  Neaten-up empty population error on random.choice()
  by suppressing the upstream exception.

- Issue #28871: Fixed a crash when deallocate deep ElementTree.

- Issue #19542: Fix bugs in WeakValueDictionary.setdefault() and
  WeakValueDictionary.pop() when a GC collection happens in another
  thread.

- Issue #20191: Fixed a crash in resource.prlimit() when pass a sequence that
  doesn't own its elements as limits.

- Issue #28779: multiprocessing.set_forkserver_preload() would crash the
  forkserver process if a preloaded module instantiated some
  multiprocessing objects such as locks.

- Issue #28847: dbm.dumb now supports reading read-only files and no longer
  writes the index file when it is not changed.

- Issue #26937: The chown() method of the tarfile.TarFile class does not fail
  now when the grp module cannot be imported, as for example on Android
  platforms.

Windows
-------

- Issue #25778: winreg does not truncate string correctly (Patch by Eryk Sun)

- Issue #28896: Deprecate WindowsRegistryFinder and disable it by default.

C API
-----

- Issue #29058: All stable API extensions added after Python 3.2 are now
  available only when Py_LIMITED_API is set to the PY_VERSION_HEX value of
  the minimum Python version supporting this API.

Tests
-----

- Issue #28950: Disallow -j0 to be combined with -T/-l in regrtest
  command line arguments.

- Issue #28683: Fix the tests that bind() a unix socket and raise
  PermissionError on Android for a non-root user.

- Issue #26939: Add the support.setswitchinterval() function to fix
  test_functools hanging on the Android armv7 qemu emulator.

Build
-----

- Issue #26851: Set Android compilation and link flags.

- Issue #28768: Fix implicit declaration of function _setmode. Patch by
  Masayuki Yamamoto

- Issue #29080: Removes hard dependency on hg.exe from PCBuild/build.bat

- Issue #23903: Added missed names to PC/python3.def.

- Issue #28762: lockf() is available on Android API level 24, but the F_LOCK
  macro is not defined in android-ndk-r13.

- Issue #28538: Fix the compilation error that occurs because if_nameindex() is
  available on Android API level 24, but the if_nameindex structure is not
  defined.

- Issue #20211: Do not add the directory for installing C header files and the
  directory for installing object code libraries to the cross compilation
  search paths. Original patch by Thomas Petazzoni.

- Issue #28849: Do not define sys.implementation._multiarch on Android.


What's New in Python 3.6.0?
===========================

*Release date: 2016-12-23*

- No changes since release candidate 2


What's New in Python 3.6.0 release candidate 2?
===============================================

*Release date: 2016-12-16*

Core and Builtins
-----------------

- Issue #28147: Fix a memory leak in split-table dictionaries: setattr()
  must not convert combined table into split table. Patch written by INADA
  Naoki.

- Issue #28990: Fix asyncio SSL hanging if connection is closed before
  handshake is completed. (Patch by HoHo-Ho)

Tools/Demos
-----------

- Issue #28770: Fix python-gdb.py for fastcalls.

Windows
-------

- Issue #28896: Deprecate WindowsRegistryFinder.

Build
-----

- Issue #28898: Prevent gdb build errors due to HAVE_LONG_LONG redefinition.


What's New in Python 3.6.0 release candidate 1?
===============================================

*Release date: 2016-12-06*

Core and Builtins
-----------------

- Issue #23722: Rather than silently producing a class that doesn't support
  zero-argument ``super()`` in methods, failing to pass the new
  ``__classcell__`` namespace entry up to ``type.__new__`` now results in a
  ``DeprecationWarning`` and a class that supports zero-argument ``super()``.

- Issue #28797: Modifying the class __dict__ inside the __set_name__ method of
  a descriptor that is used inside that class no longer prevents calling the
  __set_name__ method of other descriptors.

- Issue #28782: Fix a bug in the implementation ``yield from`` when checking
  if the next instruction is YIELD_FROM. Regression introduced by WORDCODE
  (issue #26647).

Library
-------

- Issue #27030: Unknown escapes in re.sub() replacement template are allowed
  again.  But they still are deprecated and will be disabled in 3.7.

- Issue #28835: Fix a regression introduced in warnings.catch_warnings():
  call warnings.showwarning() if it was overriden inside the context manager.

- Issue #27172: To assist with upgrades from 2.7, the previously documented
  deprecation of ``inspect.getfullargspec()`` has been reversed. This decision
  may be revisited again after the Python 2.7 branch is no longer officially
  supported.

- Issue #24142: Reading a corrupt config file left configparser in an
  invalid state.  Original patch by Florian Höch.

- Issue #28843: Fix asyncio C Task to handle exceptions __traceback__.

C API
-----

- Issue #28808: PyUnicode_CompareWithASCIIString() now never raises exceptions.

Documentation
-------------

- Issue #23722: The data model reference and the porting section in the What's
  New guide now cover the additional ``__classcell__`` handling needed for
  custom metaclasses to fully support PEP 487 and zero-argument ``super()``.

Tools/Demos
-----------

- Issue #28023: Fix python-gdb.py didn't support new dict implementation.


What's New in Python 3.6.0 beta 4?
==================================

*Release date: 2016-11-21*

Core and Builtins
-----------------

- Issue #28532: Show sys.version when -V option is supplied twice.

- Issue #27100: The with-statement now checks for __enter__ before it
  checks for __exit__.  This gives less confusing error messages when
  both methods are missing. Patch by Jonathan Ellington.

- Issue #28746: Fix the set_inheritable() file descriptor method on platforms
  that do not have the ioctl FIOCLEX and FIONCLEX commands.

- Issue #26920: Fix not getting the locale's charset upon initializing the
  interpreter, on platforms that do not have langinfo.

- Issue #28648: Fixed crash in Py_DecodeLocale() in debug build on Mac OS X
  when decode astral characters.  Patch by Xiang Zhang.

- Issue #19398: Extra slash no longer added to sys.path components in case of
  empty compile-time PYTHONPATH components.

- Issue #28665:  Improve speed of the STORE_DEREF opcode by 40%.

- Issue #28583: PyDict_SetDefault didn't combine split table when needed.
  Patch by Xiang Zhang.

- Issue #27243: Change PendingDeprecationWarning -> DeprecationWarning.
  As it was agreed in the issue, __aiter__ returning an awaitable
  should result in PendingDeprecationWarning in 3.5 and in
  DeprecationWarning in 3.6.

- Issue #26182: Fix a refleak in code that raises DeprecationWarning.

- Issue #28721: Fix asynchronous generators aclose() and athrow() to
  handle StopAsyncIteration propagation properly.

Library
-------

- Issue #26273: Add new :data:`socket.TCP_CONGESTION` (Linux 2.6.13) and
  :data:`socket.TCP_USER_TIMEOUT` (Linux 2.6.37) constants. Patch written by
  Omar Sandoval.

- Issue #28752: Restored the __reduce__() methods of datetime objects.

- Issue #28727: Regular expression patterns, _sre.SRE_Pattern objects created
  by re.compile(), become comparable (only x==y and x!=y operators). This
  change should fix the issue #18383: don't duplicate warning filters when the
  warnings module is reloaded (thing usually only done in unit tests).

- Issue #20572: The subprocess.Popen.wait method's undocumented
  endtime parameter now raises a DeprecationWarning.

- Issue #25659: In ctypes, prevent a crash calling the from_buffer() and
  from_buffer_copy() methods on abstract classes like Array.

- Issue #19717: Makes Path.resolve() succeed on paths that do not exist.
  Patch by Vajrasky Kok

- Issue #28563: Fixed possible DoS and arbitrary code execution when handle
  plural form selections in the gettext module.  The expression parser now
  supports exact syntax supported by GNU gettext.

- Issue #28387: Fixed possible crash in _io.TextIOWrapper deallocator when
  the garbage collector is invoked in other thread.  Based on patch by
  Sebastian Cufre.

- Issue #28600: Optimize loop.call_soon.

- Issue #28613: Fix get_event_loop() return the current loop if
  called from coroutines/callbacks.

- Issue #28634: Fix asyncio.isfuture() to support unittest.Mock.

- Issue #26081: Fix refleak in _asyncio.Future.__iter__().throw.

- Issue #28639: Fix inspect.isawaitable to always return bool
  Patch by Justin Mayfield.

- Issue #28652: Make loop methods reject socket kinds they do not support.

- Issue #28653: Fix a refleak in functools.lru_cache.

- Issue #28703: Fix asyncio.iscoroutinefunction to handle Mock objects.

- Issue #28704: Fix create_unix_server to support Path-like objects
  (PEP 519).

- Issue #28720: Add collections.abc.AsyncGenerator.

Documentation
-------------

- Issue #28513: Documented command-line interface of zipfile.

Tests
-----

- Issue #28666: Now test.support.rmtree is able to remove unwritable or
  unreadable directories.

- Issue #23839: Various caches now are cleared before running every test file.

Build
-----

- Issue #10656: Fix out-of-tree building on AIX.  Patch by Tristan Carel and
  Michael Haubenwallner.

- Issue #26359: Rename --with-optimiations to --enable-optimizations.

- Issue #28676: Prevent missing 'getentropy' declaration warning on macOS.
  Patch by Gareth Rees.


What's New in Python 3.6.0 beta 3?
==================================

*Release date: 2016-10-31*

Core and Builtins
-----------------

- Issue #28128: Deprecation warning for invalid str and byte escape
  sequences now prints better information about where the error
  occurs. Patch by Serhiy Storchaka and Eric Smith.

- Issue #28509: dict.update() no longer allocate unnecessary large memory.

- Issue #28426: Fixed potential crash in PyUnicode_AsDecodedObject() in debug
  build.

- Issue #28517: Fixed of-by-one error in the peephole optimizer that caused
  keeping unreachable code.

- Issue #28214: Improved exception reporting for problematic __set_name__
  attributes.

- Issue #23782: Fixed possible memory leak in _PyTraceback_Add() and exception
  loss in PyTraceBack_Here().

- Issue #28471: Fix "Python memory allocator called without holding the GIL"
  crash in socket.setblocking.

Library
-------

- Issue #27517: LZMA compressor and decompressor no longer raise exceptions if
  given empty data twice.  Patch by Benjamin Fogle.

- Issue #28549: Fixed segfault in curses's addch() with ncurses6.

- Issue #28449: tarfile.open() with mode "r" or "r:" now tries to open a tar
  file with compression before trying to open it without compression.  Otherwise
  it had 50% chance failed with ignore_zeros=True.

- Issue #23262: The webbrowser module now supports Firefox 36+ and derived
  browsers.  Based on patch by Oleg Broytman.

- Issue #27939: Fixed bugs in tkinter.ttk.LabeledScale and tkinter.Scale caused
  by representing the scale as float value internally in Tk.  tkinter.IntVar
  now works if float value is set to underlying Tk variable.

- Issue #18844: The various ways of specifying weights for random.choices()
  now produce the same result sequences.

- Issue #28255: calendar.TextCalendar().prmonth() no longer prints a space
  at the start of new line after printing a month's calendar.  Patch by
  Xiang Zhang.

- Issue #20491: The textwrap.TextWrapper class now honors non-breaking spaces.
  Based on patch by Kaarle Ritvanen.

- Issue #28353: os.fwalk() no longer fails on broken links.

- Issue #28430: Fix iterator of C implemented asyncio.Future doesn't accept
  non-None value is passed to it.send(val).

- Issue #27025: Generated names for Tkinter widgets now start by the "!" prefix
  for readability (was "`").

- Issue #25464: Fixed HList.header_exists() in tkinter.tix module by addin
  a workaround to Tix library bug.

- Issue #28488: shutil.make_archive() no longer adds entry "./" to ZIP archive.

- Issue #25953: re.sub() now raises an error for invalid numerical group
  reference in replacement template even if the pattern is not found in
  the string.  Error message for invalid group reference now includes the
  group index and the position of the reference.
  Based on patch by SilentGhost.

- Issue #18219: Optimize csv.DictWriter for large number of columns.
  Patch by Mariatta Wijaya.

- Issue #28448: Fix C implemented asyncio.Future didn't work on Windows.

- Issue #28480: Fix error building socket module when multithreading is
  disabled.

- Issue #24452: Make webbrowser support Chrome on Mac OS X.

- Issue #20766: Fix references leaked by pdb in the handling of SIGINT
  handlers.

- Issue #28492: Fix how StopIteration exception is raised in _asyncio.Future.

- Issue #28500: Fix asyncio to handle async gens GC from another thread.

- Issue #26923: Fix asyncio.Gather to refuse being cancelled once all
  children are done.
  Patch by Johannes Ebke.

- Issue #26796: Don't configure the number of workers for default
  threadpool executor.
  Initial patch by Hans Lawrenz.

- Issue #28544: Implement asyncio.Task in C.

Windows
-------

- Issue #28522: Fixes mishandled buffer reallocation in getpathp.c

Build
-----

- Issue #28444: Fix missing extensions modules when cross compiling.

- Issue #28208: Update Windows build and OS X installers to use SQLite 3.14.2.

- Issue #28248: Update Windows build and OS X installers to use OpenSSL 1.0.2j.

Tests
-----

- Issue #26944: Fix test_posix for Android where 'id -G' is entirely wrong or
  missing the effective gid.

- Issue #28409: regrtest: fix the parser of command line arguments.


What's New in Python 3.6.0 beta 2?
==================================

*Release date: 2016-10-10*

Core and Builtins
-----------------

- Issue #28183: Optimize and cleanup dict iteration.

- Issue #26081: Added C implementation of asyncio.Future.
  Original patch by Yury Selivanov.

- Issue #28379: Added sanity checks and tests for PyUnicode_CopyCharacters().
  Patch by Xiang Zhang.

- Issue #28376: The type of long range iterator is now registered as Iterator.
  Patch by Oren Milman.

- Issue #28376: Creating instances of range_iterator by calling range_iterator
  type now is deprecated.  Patch by Oren Milman.

- Issue #28376: The constructor of range_iterator now checks that step is not 0.
  Patch by Oren Milman.

- Issue #26906: Resolving special methods of uninitialized type now causes
  implicit initialization of the type instead of a fail.

- Issue #18287: PyType_Ready() now checks that tp_name is not NULL.
  Original patch by Niklas Koep.

- Issue #24098: Fixed possible crash when AST is changed in process of
  compiling it.

- Issue #28201: Dict reduces possibility of 2nd conflict in hash table when
  hashes have same lower bits.

- Issue #28350: String constants with null character no longer interned.

- Issue #26617: Fix crash when GC runs during weakref callbacks.

- Issue #27942: String constants now interned recursively in tuples and frozensets.

- Issue #21578: Fixed misleading error message when ImportError called with
  invalid keyword args.

- Issue #28203: Fix incorrect type in complex(1.0, {2:3}) error message.
  Patch by Soumya Sharma.

- Issue #28086: Single var-positional argument of tuple subtype was passed
  unscathed to the C-defined function.  Now it is converted to exact tuple.

- Issue #28214: Now __set_name__ is looked up on the class instead of the
  instance.

- Issue #27955: Fallback on reading /dev/urandom device when the getrandom()
  syscall fails with EPERM, for example when blocked by SECCOMP.

- Issue #28192: Don't import readline in isolated mode.

- Upgrade internal unicode databases to Unicode version 9.0.0.

- Issue #28131: Fix a regression in zipimport's compile_source().  zipimport
  should use the same optimization level as the interpreter.

- Issue #28126: Replace Py_MEMCPY with memcpy(). Visual Studio can properly
  optimize memcpy().

- Issue #28120: Fix dict.pop() for splitted dictionary when trying to remove a
  "pending key" (Not yet inserted in split-table). Patch by Xiang Zhang.

- Issue #26182: Raise DeprecationWarning when async and await keywords are
  used as variable/attribute/class/function name.

Library
-------

- Issue #27998: Fixed bytes path support in os.scandir() on Windows.
  Patch by Eryk Sun.

- Issue #28317: The disassembler now decodes FORMAT_VALUE argument.

- Issue #26293: Fixed writing ZIP files that starts not from the start of the
  file.  Offsets in ZIP file now are relative to the start of the archive in
  conforming to the specification.

- Issue #28380: unittest.mock Mock autospec functions now properly support
  assert_called, assert_not_called, and assert_called_once.

- Issue #27181 remove statistics.geometric_mean and defer until 3.7.

- Issue #28229: lzma module now supports pathlib.

- Issue #28321: Fixed writing non-BMP characters with binary format in plistlib.

- Issue #28225: bz2 module now supports pathlib.  Initial patch by Ethan Furman.

- Issue #28227: gzip now supports pathlib.  Patch by Ethan Furman.

- Issue #27358: Optimized merging var-keyword arguments and improved error
  message when pass a non-mapping as a var-keyword argument.

- Issue #28257: Improved error message when pass a non-iterable as
  a var-positional argument.  Added opcode BUILD_TUPLE_UNPACK_WITH_CALL.

- Issue #28322: Fixed possible crashes when unpickle itertools objects from
  incorrect pickle data.  Based on patch by John Leitch.

- Issue #28228: imghdr now supports pathlib.

- Issue #28226: compileall now supports pathlib.

- Issue #28314: Fix function declaration (C flags) for the getiterator() method
  of xml.etree.ElementTree.Element.

- Issue #28148: Stop using localtime() and gmtime() in the time
  module.

  Introduced platform independent _PyTime_localtime API that is
  similar to POSIX localtime_r, but available on all platforms.  Patch
  by Ed Schouten.

- Issue #28253: Fixed calendar functions for extreme months: 0001-01
  and 9999-12.

  Methods itermonthdays() and itermonthdays2() are reimplemented so
  that they don't call itermonthdates() which can cause datetime.date
  under/overflow.

- Issue #28275: Fixed possible use after free in the decompress()
  methods of the LZMADecompressor and BZ2Decompressor classes.
  Original patch by John Leitch.

- Issue #27897: Fixed possible crash in sqlite3.Connection.create_collation()
  if pass invalid string-like object as a name.  Patch by Xiang Zhang.

- Issue #18844: random.choices() now has k as a keyword-only argument
  to improve the readability of common cases and come into line
  with the signature used in other languages.

- Issue #18893: Fix invalid exception handling in Lib/ctypes/macholib/dyld.py.
  Patch by Madison May.

- Issue #27611: Fixed support of default root window in the tkinter.tix module.
  Added the master parameter in the DisplayStyle constructor.

- Issue #27348: In the traceback module, restore the formatting of exception
  messages like "Exception: None".  This fixes a regression introduced in
  3.5a2.

- Issue #25651: Allow falsy values to be used for msg parameter of subTest().

- Issue #27778: Fix a memory leak in os.getrandom() when the getrandom() is
  interrupted by a signal and a signal handler raises a Python exception.

- Issue #28200: Fix memory leak on Windows in the os module (fix
  path_converter() function).

- Issue #25400: RobotFileParser now correctly returns default values for
  crawl_delay and request_rate.  Initial patch by Peter Wirtz.

- Issue #27932: Prevent memory leak in win32_ver().

- Fix UnboundLocalError in socket._sendfile_use_sendfile.

- Issue #28075: Check for ERROR_ACCESS_DENIED in Windows implementation of
  os.stat().  Patch by Eryk Sun.

- Issue #22493: Warning message emitted by using inline flags in the middle of
  regular expression now contains a (truncated) regex pattern.
  Patch by Tim Graham.

- Issue #25270: Prevent codecs.escape_encode() from raising SystemError when
  an empty bytestring is passed.

- Issue #28181: Get antigravity over HTTPS. Patch by Kaartic Sivaraam.

- Issue #25895: Enable WebSocket URL schemes in urllib.parse.urljoin.
  Patch by Gergely Imreh and Markus Holtermann.

- Issue #28114: Fix a crash in parse_envlist() when env contains byte strings.
  Patch by Eryk Sun.

- Issue #27599: Fixed buffer overrun in binascii.b2a_qp() and binascii.a2b_qp().

- Issue #27906: Fix socket accept exhaustion during high TCP traffic.
  Patch by Kevin Conway.

- Issue #28174: Handle when SO_REUSEPORT isn't properly supported.
  Patch by Seth Michael Larson.

- Issue #26654: Inspect functools.partial in asyncio.Handle.__repr__.
  Patch by iceboy.

- Issue #26909: Fix slow pipes IO in asyncio.
  Patch by INADA Naoki.

- Issue #28176: Fix callbacks race in asyncio.SelectorLoop.sock_connect.

- Issue #27759: Fix selectors incorrectly retain invalid file descriptors.
  Patch by Mark Williams.

- Issue #28368: Refuse monitoring processes if the child watcher has no
  loop attached.
  Patch by Vincent Michel.

- Issue #28369: Raise RuntimeError when transport's FD is used with
  add_reader, add_writer, etc.

- Issue #28370: Speedup asyncio.StreamReader.readexactly.
  Patch by Коренберг Марк.

- Issue #28371: Deprecate passing asyncio.Handles to run_in_executor.

- Issue #28372: Fix asyncio to support formatting of non-python coroutines.

- Issue #28399: Remove UNIX socket from FS before binding.
  Patch by Коренберг Марк.

- Issue #27972: Prohibit Tasks to await on themselves.

Windows
-------

- Issue #28402: Adds signed catalog files for stdlib on Windows.

- Issue #28333: Enables Unicode for ps1/ps2 and input() prompts. (Patch by
  Eryk Sun)

- Issue #28251: Improvements to help manuals on Windows.

- Issue #28110: launcher.msi has different product codes between 32-bit and
  64-bit

- Issue #28161: Opening CON for write access fails

- Issue #28162: WindowsConsoleIO readall() fails if first line starts with
  Ctrl+Z

- Issue #28163: WindowsConsoleIO fileno() passes wrong flags to
  _open_osfhandle

- Issue #28164: _PyIO_get_console_type fails for various paths

- Issue #28137: Renames Windows path file to ._pth

- Issue #28138: Windows ._pth file should allow import site

C API
-----

- Issue #28426: Deprecated undocumented functions PyUnicode_AsEncodedObject(),
  PyUnicode_AsDecodedObject(), PyUnicode_AsDecodedUnicode() and
  PyUnicode_AsEncodedUnicode().

Build
-----

- Issue #28258: Fixed build with Estonian locale (python-config and distclean
  targets in Makefile).  Patch by Arfrever Frehtes Taifersar Arahesis.

- Issue #26661: setup.py now detects system libffi with multiarch wrapper.

- Issue #15819: Remove redundant include search directory option for building
  outside the source tree.

Tests
-----

- Issue #28217: Adds _testconsole module to test console input.


What's New in Python 3.6.0 beta 1?
==================================

*Release date: 2016-09-12*

Core and Builtins
-----------------

- Issue #23722: The __class__ cell used by zero-argument super() is now
  initialized from type.__new__ rather than __build_class__, so class methods
  relying on that will now work correctly when called from metaclass methods
  during class creation. Patch by Martin Teichmann.

- Issue #25221: Fix corrupted result from PyLong_FromLong(0) when Python
  is compiled with NSMALLPOSINTS = 0.

- Issue #27080: Implement formatting support for PEP 515.  Initial patch
  by Chris Angelico.

- Issue #27199: In tarfile, expose copyfileobj bufsize to improve throughput.
  Patch by Jason Fried.

- Issue #27948: In f-strings, only allow backslashes inside the braces
  (where the expressions are).  This is a breaking change from the 3.6
  alpha releases, where backslashes are allowed anywhere in an
  f-string.  Also, require that expressions inside f-strings be
  enclosed within literal braces, and not escapes like
  f'\x7b"hi"\x7d'.

- Issue #28046: Remove platform-specific directories from sys.path.

- Issue #28071: Add early-out for differencing from an empty set.

- Issue #25758: Prevents zipimport from unnecessarily encoding a filename
  (patch by Eryk Sun)

- Issue #25856: The __module__ attribute of extension classes and functions
  now is interned. This leads to more compact pickle data with protocol 4.

- Issue #27213: Rework CALL_FUNCTION* opcodes to produce shorter and more
  efficient bytecode. Patch by Demur Rumed, design by Serhiy Storchaka,
  reviewed by Serhiy Storchaka and Victor Stinner.

- Issue #26331: Implement tokenizing support for PEP 515. Patch by Georg Brandl.

- Issue #27999: Make "global after use" a SyntaxError, and ditto for nonlocal.
  Patch by Ivan Levkivskyi.

- Issue #28003: Implement PEP 525 -- Asynchronous Generators.

- Issue #27985: Implement PEP 526 -- Syntax for Variable Annotations.
  Patch by Ivan Levkivskyi.

- Issue #26058: Add a new private version to the builtin dict type, incremented
  at each dictionary creation and at each dictionary change. Implementation of
  the PEP 509.

- Issue #27364: A backslash-character pair that is not a valid escape sequence
  now generates a DeprecationWarning.  Patch by Emanuel Barry.

- Issue #27350: `dict` implementation is changed like PyPy. It is more compact
  and preserves insertion order.
  (Concept developed by Raymond Hettinger and patch by Inada Naoki.)

- Issue #27911: Remove unnecessary error checks in
  ``exec_builtin_or_dynamic()``.

- Issue #27078: Added BUILD_STRING opcode.  Optimized f-strings evaluation.

- Issue #17884: Python now requires systems with inttypes.h and stdint.h

- Issue #27961: Require platforms to support ``long long``. Python hasn't
  compiled without ``long long`` for years, so this is basically a formality.

- Issue #27355: Removed support for Windows CE.  It was never finished,
  and Windows CE is no longer a relevant platform for Python.

- Implement PEP 523.

- Issue #27870: A left shift of zero by a large integer no longer attempts
  to allocate large amounts of memory.

- Issue #25402: In int-to-decimal-string conversion, improve the estimate
  of the intermediate memory required, and remove an unnecessarily strict
  overflow check. Patch by Serhiy Storchaka.

- Issue #27214: In long_invert, be more careful about modifying object
  returned by long_add, and remove an unnecessary check for small longs.
  Thanks Oren Milman for analysis and patch.

- Issue #27506: Support passing the bytes/bytearray.translate() "delete"
  argument by keyword.

- Issue #27812: Properly clear out a generator's frame's backreference to the
  generator to prevent crashes in frame.clear().

- Issue #27811: Fix a crash when a coroutine that has not been awaited is
  finalized with warnings-as-errors enabled.

- Issue #27587: Fix another issue found by PVS-Studio: Null pointer check
  after use of 'def' in _PyState_AddModule().
  Initial patch by Christian Heimes.

- Issue #27792: The modulo operation applied to ``bool`` and other
  ``int`` subclasses now always returns an ``int``. Previously
  the return type depended on the input values. Patch by Xiang Zhang.

- Issue #26984: int() now always returns an instance of exact int.

- Issue #25604: Fix a minor bug in integer true division; this bug could
  potentially have caused off-by-one-ulp results on platforms with
  unreliable ldexp implementations.

- Issue #24254: Make class definition namespace ordered by default.

- Issue #27662: Fix an overflow check in ``List_New``: the original code was
  checking against ``Py_SIZE_MAX`` instead of the correct upper bound of
  ``Py_SSIZE_T_MAX``. Patch by Xiang Zhang.

- Issue #27782: Multi-phase extension module import now correctly allows the
  ``m_methods`` field to be used to add module level functions to instances
  of non-module types returned from ``Py_create_mod``. Patch by Xiang Zhang.

- Issue #27936: The round() function accepted a second None argument
  for some types but not for others.  Fixed the inconsistency by
  accepting None for all numeric types.

- Issue #27487: Warn if a submodule argument to "python -m" or
  runpy.run_module() is found in sys.modules after parent packages are
  imported, but before the submodule is executed.

- Issue #27157: Make only type() itself accept the one-argument form.
  Patch by Eryk Sun and Emanuel Barry.

- Issue #27558: Fix a SystemError in the implementation of "raise" statement.
  In a brand new thread, raise a RuntimeError since there is no active
  exception to reraise. Patch written by Xiang Zhang.

- Issue #28008: Implement PEP 530 -- asynchronous comprehensions.

- Issue #27942: Fix memory leak in codeobject.c

Library
-------

- Issue #28732: Fix crash in os.spawnv() with no elements in args

- Issue #28485: Always raise ValueError for negative
  compileall.compile_dir(workers=...) parameter, even when multithreading is
  unavailable.

- Issue #28037: Use sqlite3_get_autocommit() instead of setting
  Connection->inTransaction manually.

- Issue #25283: Attributes tm_gmtoff and tm_zone are now available on
  all platforms in the return values of time.localtime() and
  time.gmtime().

- Issue #24454: Regular expression match object groups are now
  accessible using __getitem__.  "mo[x]" is equivalent to
  "mo.group(x)".

- Issue #10740: sqlite3 no longer implicitly commit an open transaction
  before DDL statements.

- Issue #17941: Add a *module* parameter to collections.namedtuple().

- Issue #22493: Inline flags now should be used only at the start of the
  regular expression.  Deprecation warning is emitted if uses them in the
  middle of the regular expression.

- Issue #26885: xmlrpc now supports unmarshalling additional data types used
  by Apache XML-RPC implementation for numerics and None.

- Issue #28070: Fixed parsing inline verbose flag in regular expressions.

- Issue #19500: Add client-side SSL session resumption to the ssl module.

- Issue #28022: Deprecate ssl-related arguments in favor of SSLContext. The
  deprecation include manual creation of SSLSocket and certfile/keyfile
  (or similar) in ftplib, httplib, imaplib, smtplib, poplib and urllib.

- Issue #28043: SSLContext has improved default settings: OP_NO_SSLv2,
  OP_NO_SSLv3, OP_NO_COMPRESSION, OP_CIPHER_SERVER_PREFERENCE,
  OP_SINGLE_DH_USE, OP_SINGLE_ECDH_USE and HIGH ciphers without MD5.

- Issue #24693: Changed some RuntimeError's in the zipfile module to more
  appropriate types. Improved some error messages and debugging output.

- Issue #17909: ``json.load`` and ``json.loads`` now support binary input
  encoded as UTF-8, UTF-16 or UTF-32. Patch by Serhiy Storchaka.

- Issue #27137: the pure Python fallback implementation of ``functools.partial``
  now matches the behaviour of its accelerated C counterpart for subclassing,
  pickling and text representation purposes. Patch by Emanuel Barry and
  Serhiy Storchaka.

- Fix possible integer overflows and crashes in the mmap module with unusual
  usage patterns.

- Issue #1703178: Fix the ability to pass the --link-objects option to the
  distutils build_ext command.

- Issue #28019: itertools.count() no longer rounds non-integer step in range
  between 1.0 and 2.0 to 1.

- Issue #18401: Pdb now supports the 'readrc' keyword argument to control
  whether .pdbrc files should be read.  Patch by Martin Matusiak and
  Sam Kimbrel.

- Issue #25969: Update the lib2to3 grammar to handle the unpacking
  generalizations added in 3.5.

- Issue #14977: mailcap now respects the order of the lines in the mailcap
  files ("first match"), as required by RFC 1542.  Patch by Michael Lazar.

- Issue #28082: Convert re flag constants to IntFlag.

- Issue #28025: Convert all ssl module constants to IntEnum and IntFlags.
  SSLContext properties now return flags and enums.

- Issue #23591: Add Flag, IntFlag, and auto() to enum module.

- Issue #433028: Added support of modifier spans in regular expressions.

- Issue #24594: Validates persist parameter when opening MSI database

- Issue #17582: xml.etree.ElementTree nows preserves whitespaces in attributes
  (Patch by Duane Griffin.  Reviewed and approved by Stefan Behnel.)

- Issue #28047: Fixed calculation of line length used for the base64 CTE
  in the new email policies.

- Issue #27576: Fix call order in OrderedDict.__init__().

- email.generator.DecodedGenerator now supports the policy keyword.

- Issue #28027: Remove undocumented modules from ``Lib/plat-*``: IN, CDROM,
  DLFCN, TYPES, CDIO, and STROPTS.

- Issue #27445: Don't pass str(_charset) to MIMEText.set_payload().
  Patch by Claude Paroz.

- Issue #24277: The new email API is no longer provisional, and the docs
  have been reorganized and rewritten to emphasize the new API.

- Issue #22450: urllib now includes an "Accept: */*" header among the
  default headers.  This makes the results of REST API requests more
  consistent and predictable especially when proxy servers are involved.

- lib2to3.pgen3.driver.load_grammar() now creates a stable cache file
  between runs given the same Grammar.txt input regardless of the hash
  randomization setting.

- Issue #28005: Allow ImportErrors in encoding implementation to propagate.

- Issue #26667: Support path-like objects in importlib.util.

- Issue #27570: Avoid zero-length memcpy() etc calls with null source
  pointers in the "ctypes" and "array" modules.

- Issue #22233: Break email header lines *only* on the RFC specified CR and LF
  characters, not on arbitrary unicode line breaks.  This also fixes a bug in
  HTTP header parsing.

- Issue 27331: The email.mime classes now all accept an optional policy keyword.

- Issue 27988: Fix email iter_attachments incorrect mutation of payload list.

- Issue #16113: Add SHA-3 and SHAKE support to hashlib module.

- Eliminate a tautological-pointer-compare warning in _scproxy.c.

- Issue #27776: The :func:`os.urandom` function does now block on Linux 3.17
  and newer until the system urandom entropy pool is initialized to increase
  the security. This change is part of the :pep:`524`.

- Issue #27778: Expose the Linux ``getrandom()`` syscall as a new
  :func:`os.getrandom` function. This change is part of the :pep:`524`.

- Issue #27691: Fix ssl module's parsing of GEN_RID subject alternative name
  fields in X.509 certs.

- Issue #18844: Add random.choices().

- Issue #25761: Improved error reporting about truncated pickle data in
  C implementation of unpickler.  UnpicklingError is now raised instead of
  AttributeError and ValueError in some cases.

- Issue #26798: Add BLAKE2 (blake2b and blake2s) to hashlib.

- Issue #26032: Optimized globbing in pathlib by using os.scandir(); it is now
  about 1.5--4 times faster.

- Issue #25596: Optimized glob() and iglob() functions in the
  glob module; they are now about 3--6 times faster.

- Issue #27928: Add scrypt (password-based key derivation function) to
  hashlib module (requires OpenSSL 1.1.0).

- Issue #27850: Remove 3DES from ssl module's default cipher list to counter
  measure sweet32 attack (CVE-2016-2183).

- Issue #27766: Add ChaCha20 Poly1305 to ssl module's default ciper list.
  (Required OpenSSL 1.1.0 or LibreSSL).

- Issue #25387: Check return value of winsound.MessageBeep.

- Issue #27866: Add SSLContext.get_ciphers() method to get a list of all
  enabled ciphers.

- Issue #27744: Add AF_ALG (Linux Kernel crypto) to socket module.

- Issue #26470: Port ssl and hashlib module to OpenSSL 1.1.0.

- Issue #11620: Fix support for SND_MEMORY in winsound.PlaySound.  Based on a
  patch by Tim Lesher.

- Issue #11734: Add support for IEEE 754 half-precision floats to the
  struct module. Based on a patch by Eli Stevens.

- Issue #27919: Deprecated ``extra_path`` distribution option in distutils
  packaging.

- Issue #23229: Add new ``cmath`` constants: ``cmath.inf`` and ``cmath.nan`` to
  match ``math.inf`` and ``math.nan``, and also ``cmath.infj`` and
  ``cmath.nanj`` to match the format used by complex repr.

- Issue #27842: The csv.DictReader now returns rows of type OrderedDict.
  (Contributed by Steve Holden.)

- Remove support for passing a file descriptor to os.access. It never worked but
  previously didn't raise.

- Issue #12885: Fix error when distutils encounters symlink.

- Issue #27881: Fixed possible bugs when setting sqlite3.Connection.isolation_level.
  Based on patch by Xiang Zhang.

- Issue #27861: Fixed a crash in sqlite3.Connection.cursor() when a factory
  creates not a cursor.  Patch by Xiang Zhang.

- Issue #19884: Avoid spurious output on OS X with Gnu Readline.

- Issue #27706: Restore deterministic behavior of random.Random().seed()
  for string seeds using seeding version 1.  Allows sequences of calls
  to random() to exactly match those obtained in Python 2.
  Patch by Nofar Schnider.

- Issue #10513: Fix a regression in Connection.commit().  Statements should
  not be reset after a commit.

- Issue #12319: Chunked transfer encoding support added to
  http.client.HTTPConnection requests.  The
  urllib.request.AbstractHTTPHandler class does not enforce a Content-Length
  header any more.  If a HTTP request has a file or iterable body, but no
  Content-Length header, the library now falls back to use chunked transfer-
  encoding.

- A new version of typing.py from https://github.com/python/typing:
  - Collection (only for 3.6) (Issue #27598)
  - Add FrozenSet to __all__ (upstream #261)
  - fix crash in _get_type_vars() (upstream #259)
  - Remove the dict constraint in ForwardRef._eval_type (upstream #252)

- Issue #27832: Make ``_normalize`` parameter to ``Fraction`` constuctor
  keyword-only, so that ``Fraction(2, 3, 4)`` now raises ``TypeError``.

- Issue #27539: Fix unnormalised ``Fraction.__pow__`` result in the case
  of negative exponent and negative base.

- Issue #21718: cursor.description is now available for queries using CTEs.

- Issue #27819: In distutils sdists, simply produce the "gztar" (gzipped tar
  format) distributions on all platforms unless "formats" is supplied.

- Issue #2466: posixpath.ismount now correctly recognizes mount points which
  the user does not have permission to access.

- Issue #9998: On Linux, ctypes.util.find_library now looks in LD_LIBRARY_PATH
  for shared libraries.

- Issue #27573: exit message for code.interact is now configurable.

- Issue #27930: Improved behaviour of logging.handlers.QueueListener.
  Thanks to Paulo Andrade and Petr Viktorin for the analysis and patch.

- Issue #6766: Distributed reference counting added to multiprocessing
  to support nesting of shared values / proxy objects.

- Issue #21201: Improves readability of multiprocessing error message.  Thanks
  to Wojciech Walczak for patch.

- asyncio: Add set_protocol / get_protocol to Transports.

- Issue #27456: asyncio: Set TCP_NODELAY by default.

IDLE
----

- Issue #15308: Add 'interrupt execution' (^C) to Shell menu.
  Patch by Roger Serwy, updated by Bayard Randel.

- Issue #27922: Stop IDLE tests from 'flashing' gui widgets on the screen.

- Issue #27891: Consistently group and sort imports within idlelib modules.

- Issue #17642: add larger font sizes for classroom projection.

- Add version to title of IDLE help window.

- Issue #25564: In section on IDLE -- console differences, mention that
  using exec means that __builtins__ is defined for each statement.

- Issue #27821: Fix 3.6.0a3 regression that prevented custom key sets
  from being selected when no custom theme was defined.

C API
-----

- Issue #26900: Excluded underscored names and other private API from limited API.

- Issue #26027: Add support for path-like objects in PyUnicode_FSConverter() &
  PyUnicode_FSDecoder().

Tests
-----

- Issue #27427: Additional tests for the math module. Patch by Francisco Couzo.

- Issue #27953: Skip math and cmath tests that fail on OS X 10.4 due to a
  poor libm implementation of tan.

- Issue #26040: Improve test_math and test_cmath coverage and rigour. Patch by
  Jeff Allen.

- Issue #27787: Call gc.collect() before checking each test for "dangling
  threads", since the dangling threads are weak references.

Build
-----

- Issue #27566: Fix clean target in freeze makefile (patch by Lisa Roach)

- Issue #27705: Update message in validate_ucrtbase.py

- Issue #27976: Deprecate building _ctypes with the bundled copy of libffi on
  non-OSX UNIX platforms.

- Issue #27983: Cause lack of llvm-profdata tool when using clang as
  required for PGO linking to be a configure time error rather than
  make time when --with-optimizations is enabled.  Also improve our
  ability to find the llvm-profdata tool on MacOS and some Linuxes.

- Issue #21590: Support for DTrace and SystemTap probes.

- Issue #26307: The profile-opt build now applies PGO to the built-in modules.

- Issue #26539: Add the --with-optimizations flag to turn on LTO and PGO build
  support when available.

- Issue #27917: Set platform triplets for Android builds.

- Issue #25825: Update references to the $(LIBPL) installation path on AIX.
  This path was changed in 3.2a4.

- Update OS X installer to use SQLite 3.14.1 and XZ 5.2.2.

- Issue #21122: Fix LTO builds on OS X.

- Issue #17128: Build OS X installer with a private copy of OpenSSL.
  Also provide a sample Install Certificates command script to install a
  set of root certificates from the third-party certifi module.

Tools/Demos
-----------

- Issue #27952: Get Tools/scripts/fixcid.py working with Python 3 and the
  current "re" module, avoid invalid Python backslash escapes, and fix a bug
  parsing escaped C quote signs.

Windows
-------

- Issue #28065: Update xz dependency to 5.2.2 and build it from source.

- Issue #25144: Ensures TargetDir is set before continuing with custom
  install.

- Issue #1602: Windows console doesn't input or print Unicode (PEP 528)

- Issue #27781: Change file system encoding on Windows to UTF-8 (PEP 529)

- Issue #27731: Opt-out of MAX_PATH on Windows 10

- Issue #6135: Adds encoding and errors parameters to subprocess.

- Issue #27959: Adds oem encoding, alias ansi to mbcs, move aliasmbcs to
  codec lookup.

- Issue #27982: The functions of the winsound module now accept keyword
  arguments.

- Issue #20366: Build full text search support into SQLite on Windows.

- Issue #27756: Adds new icons for Python files and processes on Windows.
  Designs by Cherry Wang.

- Issue #27883: Update sqlite to 3.14.1.0 on Windows.


What's New in Python 3.6.0 alpha 4?
===================================

*Release date: 2016-08-15*

Core and Builtins
-----------------

- Issue #27704: Optimized creating bytes and bytearray from byte-like objects
  and iterables.  Speed up to 3 times for short objects.  Original patch by
  Naoki Inada.

- Issue #26823: Large sections of repeated lines in tracebacks are now
  abbreviated as "[Previous line repeated {count} more times]" by the builtin
  traceback rendering. Patch by Emanuel Barry.

- Issue #27574: Decreased an overhead of parsing keyword arguments in functions
  implemented with using Argument Clinic.

- Issue #22557: Now importing already imported modules is up to 2.5 times
  faster.

- Issue #17596: Include <wincrypt.h> to help with Min GW building.

- Issue #17599: On Windows, rename the privately defined REPARSE_DATA_BUFFER
  structure to avoid conflicting with the definition from Min GW.

- Issue #27507: Add integer overflow check in bytearray.extend().  Patch by
  Xiang Zhang.

- Issue #27581: Don't rely on wrapping for overflow check in
  PySequence_Tuple().  Patch by Xiang Zhang.

- Issue #1621: Avoid signed integer overflow in list and tuple operations.
  Patch by Xiang Zhang.

- Issue #27419: Standard __import__() no longer look up "__import__" in globals
  or builtins for importing submodules or "from import".  Fixed a crash if
  raise a warning about unabling to resolve package from __spec__ or
  __package__.

- Issue #27083: Respect the PYTHONCASEOK environment variable under Windows.

- Issue #27514: Make having too many statically nested blocks a SyntaxError
  instead of SystemError.

- Issue #27366: Implemented PEP 487 (Simpler customization of class creation).
  Upon subclassing, the __init_subclass__ classmethod is called on the base
  class. Descriptors are initialized with __set_name__ after class creation.

Library
-------

- Issue #26027, #27524: Add PEP 519/__fspath__() support to the os and os.path
  modules. Includes code from Jelle Zijlstra.

- Issue #27598: Add Collections to collections.abc.
  Patch by Ivan Levkivskyi, docs by Neil Girdhar.

- Issue #25958: Support "anti-registration" of special methods from
  various ABCs, like __hash__, __iter__ or __len__.  All these (and
  several more) can be set to None in an implementation class and the
  behavior will be as if the method is not defined at all.
  (Previously, this mechanism existed only for __hash__, to make
  mutable classes unhashable.)  Code contributed by Andrew Barnert and
  Ivan Levkivskyi.

- Issue #16764: Support keyword arguments to zlib.decompress().  Patch by
  Xiang Zhang.

- Issue #27736: Prevent segfault after interpreter re-initialization due
  to ref count problem introduced in code for Issue #27038 in 3.6.0a3.
  Patch by Xiang Zhang.

- Issue #25628:  The *verbose* and *rename* parameters for
  collections.namedtuple are now keyword-only.

- Issue #12345: Add mathematical constant tau to math and cmath. See also
  PEP 628.

- Issue #26823: traceback.StackSummary.format now abbreviates large sections of
  repeated lines as "[Previous line repeated {count} more times]" (this change
  then further affects other traceback display operations in the module). Patch
  by Emanuel Barry.

- Issue #27664: Add to concurrent.futures.thread.ThreadPoolExecutor()
  the ability to specify a thread name prefix.

- Issue #27181: Add geometric_mean and harmonic_mean to statistics module.

- Issue #27573: code.interact now prints an message when exiting.

- Issue #6422: Add autorange method to timeit.Timer objects.

- Issue #27773: Correct some memory management errors server_hostname in
  _ssl.wrap_socket().

- Issue #26750: unittest.mock.create_autospec() now works properly for
  subclasses of property() and other data descriptors.  Removes the never
  publicly used, never documented unittest.mock.DescriptorTypes tuple.

- Issue #26754: Undocumented support of general bytes-like objects
  as path in compile() and similar functions is now deprecated.

- Issue #26800: Undocumented support of general bytes-like objects
  as paths in os functions is now deprecated.

- Issue #26981: Add _order_ compatibility shim to enum.Enum for
  Python 2/3 code bases.

- Issue #27661: Added tzinfo keyword argument to datetime.combine.

- In the curses module, raise an error if window.getstr() or window.instr() is
  passed a negative value.

- Issue #27783: Fix possible usage of uninitialized memory in
  operator.methodcaller.

- Issue #27774: Fix possible Py_DECREF on unowned object in _sre.

- Issue #27760: Fix possible integer overflow in binascii.b2a_qp.

- Issue #27758: Fix possible integer overflow in the _csv module for large
  record lengths.

- Issue #27568: Prevent HTTPoxy attack (CVE-2016-1000110). Ignore the
  HTTP_PROXY variable when REQUEST_METHOD environment is set, which indicates
  that the script is in CGI mode.

- Issue #7063: Remove dead code from the "array" module's slice handling.
  Patch by Chuck.

- Issue #27656: Do not assume sched.h defines any SCHED_* constants.

- Issue #27130: In the "zlib" module, fix handling of large buffers
  (typically 4 GiB) when compressing and decompressing.  Previously, inputs
  were limited to 4 GiB, and compression and decompression operations did not
  properly handle results of 4 GiB.

- Issue #24773: Implemented PEP 495 (Local Time Disambiguation).

- Expose the EPOLLEXCLUSIVE constant (when it is defined) in the select module.

- Issue #27567: Expose the EPOLLRDHUP and POLLRDHUP constants in the select
  module.

- Issue #1621: Avoid signed int negation overflow in the "audioop" module.

- Issue #27533: Release GIL in nt._isdir

- Issue #17711: Fixed unpickling by the persistent ID with protocol 0.
  Original patch by Alexandre Vassalotti.

- Issue #27522: Avoid an unintentional reference cycle in email.feedparser.

- Issue #27512: Fix a segfault when os.fspath() called an __fspath__() method
  that raised an exception. Patch by Xiang Zhang.

IDLE
----

- Issue #27714: text_textview and test_autocomplete now pass when re-run
  in the same process.  This occurs when test_idle fails when run with the
  -w option but without -jn.  Fix warning from test_config.

- Issue #27621: Put query response validation error messages in the query
  box itself instead of in a separate massagebox.  Redo tests to match.
  Add Mac OSX refinements.  Original patch by Mark Roseman.

- Issue #27620: Escape key now closes Query box as cancelled.

- Issue #27609: IDLE: tab after initial whitespace should tab, not
  autocomplete. This fixes problem with writing docstrings at least
  twice indented.

- Issue #27609: Explicitly return None when there are also non-None
  returns. In a few cases, reverse a condition and eliminate a return.

- Issue #25507: IDLE no longer runs buggy code because of its tkinter imports.
  Users must include the same imports required to run directly in Python.

- Issue #27173: Add 'IDLE Modern Unix' to the built-in key sets.
  Make the default key set depend on the platform.
  Add tests for the changes to the config module.

- Issue #27452: add line counter and crc to IDLE configHandler test dump.

Tests
-----

- Issue #25805: Skip a test in test_pkgutil as needed that doesn't work when
  ``__name__ == __main__``. Patch by SilentGhost.

- Issue #27472: Add test.support.unix_shell as the path to the default shell.

- Issue #27369: In test_pyexpat, avoid testing an error message detail that
  changed in Expat 2.2.0.

- Issue #27594: Prevent assertion error when running test_ast with coverage
  enabled: ensure code object has a valid first line number.
  Patch suggested by Ivan Levkivskyi.

Windows
-------

- Issue #27647: Update bundled Tcl/Tk to 8.6.6.

- Issue #27610: Adds PEP 514 metadata to Windows installer

- Issue #27469: Adds a shell extension to the launcher so that drag and drop
  works correctly.

- Issue #27309: Enables proper Windows styles in python[w].exe manifest.

Build
-----

- Issue #27713: Suppress spurious build warnings when updating importlib's
  bootstrap files.  Patch by Xiang Zhang

- Issue #25825: Correct the references to Modules/python.exp, which is
  required on AIX.  The references were accidentally changed in 3.5.0a1.

- Issue #27453: CPP invocation in configure must use CPPFLAGS. Patch by
  Chi Hsuan Yen.

- Issue #27641: The configure script now inserts comments into the makefile
  to prevent the pgen and _freeze_importlib executables from being cross-
  compiled.

- Issue #26662: Set PYTHON_FOR_GEN in configure as the Python program to be
  used for file generation during the build.

- Issue #10910: Avoid C++ compilation errors on FreeBSD and OS X.
  Also update FreedBSD version checks for the original ctype UTF-8 workaround.


What's New in Python 3.6.0 alpha 3?
===================================

*Release date: 2016-07-11*

Core and Builtins
-----------------

- Issue #27473: Fixed possible integer overflow in bytes and bytearray
  concatenations.  Patch by Xiang Zhang.

- Issue #23034: The output of a special Python build with defined COUNT_ALLOCS,
  SHOW_ALLOC_COUNT or SHOW_TRACK_COUNT macros is now off by  default.  It can
  be re-enabled using the "-X showalloccount" option.  It now outputs to stderr
  instead of stdout.

- Issue #27443: __length_hint__() of bytearray iterators no longer return a
  negative integer for a resized bytearray.

- Issue #27007: The fromhex() class methods of bytes and bytearray subclasses
  now return an instance of corresponding subclass.

Library
-------

- Issue #26844: Fix error message for imp.find_module() to refer to 'path'
  instead of 'name'. Patch by Lev Maximov.

- Issue #23804: Fix SSL zero-length recv() calls to not block and not raise
  an error about unclean EOF.

- Issue #27466: Change time format returned by http.cookie.time2netscape,
  confirming the netscape cookie format and making it consistent with
  documentation.

- Issue #21708: Deprecated dbm.dumb behavior that differs from common dbm
  behavior: creating a database in 'r' and 'w' modes and modifying a database
  in 'r' mode.

- Issue #26721: Change the socketserver.StreamRequestHandler.wfile attribute
  to implement BufferedIOBase. In particular, the write() method no longer
  does partial writes.

- Issue #22115: Added methods trace_add, trace_remove and trace_info in the
  tkinter.Variable class.  They replace old methods trace_variable, trace,
  trace_vdelete and trace_vinfo that use obsolete Tcl commands and might
  not work in future versions of Tcl.  Fixed old tracing methods:
  trace_vdelete() with wrong mode no longer break tracing, trace_vinfo() now
  always returns a list of pairs of strings, tracing in the "u" mode now works.

- Issue #26243: Only the level argument to zlib.compress() is keyword argument
  now.  The first argument is positional-only.

- Issue #27038: Expose the DirEntry type as os.DirEntry. Code patch by
  Jelle Zijlstra.

- Issue #27186: Update os.fspath()/PyOS_FSPath() to check the return value of
  __fspath__() to be either str or bytes.

- Issue #18726: All optional parameters of the dump(), dumps(),
  load() and loads() functions and JSONEncoder and JSONDecoder class
  constructors in the json module are now keyword-only.

- Issue #27319: Methods selection_set(), selection_add(), selection_remove()
  and selection_toggle() of ttk.TreeView now allow passing multiple items as
  multiple arguments instead of passing them as a tuple.  Deprecated
  undocumented ability of calling the selection() method with arguments.

- Issue #27079: Fixed curses.ascii functions isblank(), iscntrl() and ispunct().

- Issue #27294: Numerical state in the repr for Tkinter event objects is now
  represented as a combination of known flags.

- Issue #27177: Match objects in the re module now support index-like objects
  as group indices.  Based on patches by Jeroen Demeyer and Xiang Zhang.

- Issue #26754: Some functions (compile() etc) accepted a filename argument
  encoded as an iterable of integers. Now only strings and byte-like objects
  are accepted.

- Issue #26536: socket.ioctl now supports SIO_LOOPBACK_FAST_PATH. Patch by
  Daniel Stokes.

- Issue #27048: Prevents distutils failing on Windows when environment
  variables contain non-ASCII characters

- Issue #27330: Fixed possible leaks in the ctypes module.

- Issue #27238: Got rid of bare excepts in the turtle module.  Original patch
  by Jelle Zijlstra.

- Issue #27122: When an exception is raised within the context being managed
  by a contextlib.ExitStack() and one of the exit stack generators
  catches and raises it in a chain, do not re-raise the original exception
  when exiting, let the new chained one through.  This avoids the PEP 479
  bug described in issue25782.

- [Security] Issue #27278: Fix os.urandom() implementation using getrandom() on
  Linux.  Truncate size to INT_MAX and loop until we collected enough random
  bytes, instead of casting a directly Py_ssize_t to int.

- Issue #16864: sqlite3.Cursor.lastrowid now supports REPLACE statement.
  Initial patch by Alex LordThorsen.

- Issue #26386: Fixed ttk.TreeView selection operations with item id's
  containing spaces.

- Issue #8637: Honor a pager set by the env var MANPAGER (in preference to
  one set by the env var PAGER).

- [Security] Issue #22636: Avoid shell injection problems with
  ctypes.util.find_library().

- Issue #16182: Fix various functions in the "readline" module to use the
  locale encoding, and fix get_begidx() and get_endidx() to return code point
  indexes.

- Issue #27392: Add loop.connect_accepted_socket().
  Patch by Jim Fulton.

IDLE
----

- Issue #27477: IDLE search dialogs now use ttk widgets.

- Issue #27173: Add 'IDLE Modern Unix' to the built-in key sets.
  Make the default key set depend on the platform.
  Add tests for the changes to the config module.

- Issue #27452: make command line "idle-test> python test_help.py" work.
  __file__ is relative when python is started in the file's directory.

- Issue #27452: add line counter and crc to IDLE configHandler test dump.

- Issue #27380: IDLE: add query.py with base Query dialog and ttk widgets.
  Module had subclasses SectionName, ModuleName, and HelpSource, which are
  used to get information from users by configdialog and file =>Load Module.
  Each subclass has itw own validity checks.  Using ModuleName allows users
  to edit bad module names instead of starting over.
  Add tests and delete the two files combined into the new one.

- Issue #27372: Test_idle no longer changes the locale.

- Issue #27365: Allow non-ascii chars in IDLE NEWS.txt, for contributor names.

- Issue #27245: IDLE: Cleanly delete custom themes and key bindings.
  Previously, when IDLE was started from a console or by import, a cascade
  of warnings was emitted.  Patch by Serhiy Storchaka.

- Issue #24137: Run IDLE, test_idle, and htest with tkinter default root
  disabled.  Fix code and tests that fail with this restriction.  Fix htests to
  not create a second and redundant root and mainloop.

- Issue #27310: Fix IDLE.app failure to launch on OS X due to vestigial import.

C API
-----

- Issue #26754: PyUnicode_FSDecoder() accepted a filename argument encoded as
  an iterable of integers. Now only strings and byte-like objects are accepted.

Build
-----

- Issue #28066: Fix the logic that searches build directories for generated
  include files when building outside the source tree.

- Issue #27442: Expose the Android API level that python was built against, in
  sysconfig.get_config_vars() as 'ANDROID_API_LEVEL'.

- Issue #27434: The interpreter that runs the cross-build, found in PATH, must
  now be of the same feature version (e.g. 3.6) as the source being built.

- Issue #26930: Update Windows builds to use OpenSSL 1.0.2h.

- Issue #23968: Rename the platform directory from plat-$(MACHDEP) to
  plat-$(PLATFORM_TRIPLET).
  Rename the config directory (LIBPL) from config-$(LDVERSION) to
  config-$(LDVERSION)-$(PLATFORM_TRIPLET).
  Install the platform specifc _sysconfigdata module into the platform
  directory and rename it to include the ABIFLAGS.

- Don't use largefile support for GNU/Hurd.

Tools/Demos
-----------

- Issue #27332: Fixed the type of the first argument of module-level functions
  generated by Argument Clinic.  Patch by Petr Viktorin.

- Issue #27418: Fixed Tools/importbench/importbench.py.

Documentation
-------------

- Issue #19489: Moved the search box from the sidebar to the header and footer
  of each page.  Patch by Ammar Askar.

- Issue #27285: Update documentation to reflect the deprecation of ``pyvenv``
  and normalize on the term "virtual environment". Patch by Steve Piercy.

Tests
-----

- Issue #27027: Added test.support.is_android that is True when this is an
  Android build.


What's New in Python 3.6.0 alpha 2?
===================================

*Release date: 2016-06-13*

Core and Builtins
-----------------

- Issue #27095: Simplified MAKE_FUNCTION and removed MAKE_CLOSURE opcodes.
  Patch by Demur Rumed.

- Issue #27190: Raise NotSupportedError if sqlite3 is older than 3.3.1.
  Patch by Dave Sawyer.

- Issue #27286: Fixed compiling BUILD_MAP_UNPACK_WITH_CALL opcode.  Calling
  function with generalized unpacking (PEP 448) and conflicting keyword names
  could cause undefined behavior.

- Issue #27140: Added BUILD_CONST_KEY_MAP opcode.

- Issue #27186: Add support for os.PathLike objects to open() (part of PEP 519).

- Issue #27066: Fixed SystemError if a custom opener (for open()) returns a
  negative number without setting an exception.

- Issue #26983: float() now always return an instance of exact float.
  The deprecation warning is emitted if __float__ returns an instance of
  a strict subclass of float.  In a future versions of Python this can
  be an error.

- Issue #27097: Python interpreter is now about 7% faster due to optimized
  instruction decoding.  Based on patch by Demur Rumed.

- Issue #26647: Python interpreter now uses 16-bit wordcode instead of bytecode.
  Patch by Demur Rumed.

- Issue #23275: Allow assigning to an empty target list in round brackets:
  () = iterable.

- Issue #27243: Update the __aiter__ protocol: instead of returning
  an awaitable that resolves to an asynchronous iterator, the asynchronous
  iterator should be returned directly.  Doing the former will trigger a
  PendingDeprecationWarning.


Library
-------

- Comment out socket (SO_REUSEPORT) and posix (O_SHLOCK, O_EXLOCK) constants
  exposed on the API which are not implemented on GNU/Hurd. They would not
  work at runtime anyway.

- Issue #27025: Generated names for Tkinter widgets are now more meanful
  and recognizirable.

- Issue #25455: Fixed crashes in repr of recursive ElementTree.Element and
  functools.partial objects.

- Issue #27294: Improved repr for Tkinter event objects.

- Issue #20508: Improve exception message of IPv{4,6}Network.__getitem__.
  Patch by Gareth Rees.

- [Security] Issue #26556: Update expat to 2.1.1, fixes CVE-2015-1283.

- [Security] Fix TLS stripping vulnerability in smtplib, CVE-2016-0772.
  Reported by Team Oststrom.

- Issue #21386: Implement missing IPv4Address.is_global property.  It was
  documented since 07a5610bae9d.  Initial patch by Roger Luethi.

- Issue #27029: Removed deprecated support of universal newlines mode from
  ZipFile.open().

- Issue #27030: Unknown escapes consisting of ``'\'`` and an ASCII letter in
  regular expressions now are errors.  The re.LOCALE flag now can be used
  only with bytes patterns.

- Issue #27186: Add os.PathLike support to DirEntry (part of PEP 519).
  Initial patch by Jelle Zijlstra.

- Issue #20900: distutils register command now decodes HTTP responses
  correctly.  Initial patch by ingrid.

- Issue #27186: Add os.PathLike support to pathlib, removing its provisional
  status (part of PEP 519). Initial patch by Dusty Phillips.

- Issue #27186: Add support for os.PathLike objects to os.fsencode() and
  os.fsdecode() (part of PEP 519).

- Issue #27186: Introduce os.PathLike and os.fspath() (part of PEP 519).

- A new version of typing.py provides several new classes and
  features: @overload outside stubs, Reversible, DefaultDict, Text,
  ContextManager, Type[], NewType(), TYPE_CHECKING, and numerous bug
  fixes (note that some of the new features are not yet implemented in
  mypy or other static analyzers).  Also classes for PEP 492
  (Awaitable, AsyncIterable, AsyncIterator) have been added (in fact
  they made it into 3.5.1 but were never mentioned).

- Issue #25738: Stop http.server.BaseHTTPRequestHandler.send_error() from
  sending a message body for 205 Reset Content.  Also, don't send Content
  header fields in responses that don't have a body.  Patch by Susumu
  Koshiba.

- Issue #21313: Fix the "platform" module to tolerate when sys.version
  contains truncated build information.

- [Security] Issue #26839: On Linux, :func:`os.urandom` now calls
  ``getrandom()`` with ``GRND_NONBLOCK`` to fall back on reading
  ``/dev/urandom`` if the urandom entropy pool is not initialized yet. Patch
  written by Colm Buckley.

- Issue #23883: Added missing APIs to __all__ to match the documented APIs
  for the following modules: cgi, mailbox, mimetypes, plistlib and smtpd.
  Patches by Jacek Kołodziej.

- Issue #27164: In the zlib module, allow decompressing raw Deflate streams
  with a predefined zdict.  Based on patch by Xiang Zhang.

- Issue #24291: Fix wsgiref.simple_server.WSGIRequestHandler to completely
  write data to the client.  Previously it could do partial writes and
  truncate data.  Also, wsgiref.handler.ServerHandler can now handle stdout
  doing partial writes, but this is deprecated.

- Issue #21272: Use _sysconfigdata.py to initialize distutils.sysconfig.

- Issue #19611: :mod:`inspect` now reports the implicit ``.0`` parameters
  generated by the compiler for comprehension and generator expression scopes
  as if they were positional-only parameters called ``implicit0``.
  Patch by Jelle Zijlstra.

- Issue #26809: Add ``__all__`` to :mod:`string`.  Patch by Emanuel Barry.

- Issue #26373: subprocess.Popen.communicate now correctly ignores
  BrokenPipeError when the child process dies before .communicate()
  is called in more/all circumstances.

- signal, socket, and ssl module IntEnum constant name lookups now return a
  consistent name for values having multiple names.  Ex: signal.Signals(6)
  now refers to itself as signal.SIGALRM rather than flipping between that
  and signal.SIGIOT based on the interpreter's hash randomization seed.

- Issue #27167: Clarify the subprocess.CalledProcessError error message text
  when the child process died due to a signal.

- Issue #25931: Don't define socketserver.Forking* names on platforms such
  as Windows that do not support os.fork().

- Issue #21776: distutils.upload now correctly handles HTTPError.
  Initial patch by Claudiu Popa.

- Issue #26526: Replace custom parse tree validation in the parser
  module with a simple DFA validator.

- Issue #27114: Fix SSLContext._load_windows_store_certs fails with
  PermissionError

- Issue #18383: Avoid creating duplicate filters when using filterwarnings
  and simplefilter.  Based on patch by Alex Shkop.

- Issue #23026: winreg.QueryValueEx() now return an integer for REG_QWORD type.

- Issue #26741: subprocess.Popen destructor now emits a ResourceWarning warning
  if the child process is still running.

- Issue #27056: Optimize pickle.load() and pickle.loads(), up to 10% faster
  to deserialize a lot of small objects.

- Issue #21271: New keyword only parameters in reset_mock call.

IDLE
----

- Issue #5124: Paste with text selected now replaces the selection on X11.
  This matches how paste works on Windows, Mac, most modern Linux apps,
  and ttk widgets.  Original patch by Serhiy Storchaka.

- Issue #24750: Switch all scrollbars in IDLE to ttk versions.
  Where needed, minimal tests are added to cover changes.

- Issue #24759: IDLE requires tk 8.5 and availability ttk widgets.
  Delete now unneeded tk version tests and code for older versions.
  Add test for IDLE syntax colorizoer.

- Issue #27239: idlelib.macosx.isXyzTk functions initialize as needed.

- Issue #27262: move Aqua unbinding code, which enable context menus, to maxosx.

- Issue #24759: Make clear in idlelib.idle_test.__init__ that the directory
  is a private implementation of test.test_idle and tool for maintainers.

- Issue #27196: Stop 'ThemeChanged' warnings when running IDLE tests.
  These persisted after other warnings were suppressed in #20567.
  Apply Serhiy Storchaka's update_idletasks solution to four test files.
  Record this additional advice in idle_test/README.txt

- Issue #20567: Revise idle_test/README.txt with advice about avoiding
  tk warning messages from tests.  Apply advice to several IDLE tests.

- Issue #24225: Update idlelib/README.txt with new file names
  and event handlers.

- Issue #27156: Remove obsolete code not used by IDLE.  Replacements:
  1. help.txt, replaced by help.html, is out-of-date and should not be used.
  Its dedicated viewer has be replaced by the html viewer in help.py.
  2. ``import idlever; I = idlever.IDLE_VERSION`` is the same as
  ``import sys; I = version[:version.index(' ')]``
  3. After ``ob = stackviewer.VariablesTreeItem(*args)``,
  ``ob.keys() == list(ob.object.keys)``.
  4. In macosc, runningAsOSXAPP == isAquaTk; idCarbonAquaTk == isCarbonTk

- Issue #27117: Make colorizer htest and turtledemo work with dark themes.
  Move code for configuring text widget colors to a new function.

- Issue #24225: Rename many `idlelib/*.py` and `idle_test/test_*.py` files.
  Edit files to replace old names with new names when the old name
  referred to the module rather than the class it contained.
  See the issue and IDLE section in What's New in 3.6 for more.

- Issue #26673: When tk reports font size as 0, change to size 10.
  Such fonts on Linux prevented the configuration dialog from opening.

- Issue #21939: Add test for IDLE's percolator.
  Original patch by Saimadhav Heblikar.

- Issue #21676: Add test for IDLE's replace dialog.
  Original patch by Saimadhav Heblikar.

- Issue #18410: Add test for IDLE's search dialog.
  Original patch by Westley Martínez.

- Issue #21703: Add test for undo delegator.  Patch mostly by
  Saimadhav Heblikar .

- Issue #27044: Add ConfigDialog.remove_var_callbacks to stop memory leaks.

- Issue #23977: Add more asserts to test_delegator.

Documentation
-------------

- Issue #16484: Change the default PYTHONDOCS URL to "https:", and fix the
  resulting links to use lowercase.  Patch by Sean Rodman, test by Kaushik
  Nadikuditi.

- Issue #24136: Document the new PEP 448 unpacking syntax of 3.5.

- Issue #22558: Add remaining doc links to source code for Python-coded modules.
  Patch by Yoni Lavi.

Tests
-----

- Issue #25285: regrtest now uses subprocesses when the -j1 command line option
  is used: each test file runs in a fresh child process. Before, the -j1 option
  was ignored.

- Issue #25285: Tools/buildbot/test.bat script now uses -j1 by default to run
  each test file in fresh child process.

Windows
-------

- Issue #27064: The py.exe launcher now defaults to Python 3.
  The Windows launcher ``py.exe`` no longer prefers an installed
  Python 2 version over Python 3 by default when used interactively.

Build
-----

- Issue #27229: Fix the cross-compiling pgen rule for in-tree builds.  Patch
  by Xavier de Gaye.

- Issue #26930: Update OS X 10.5+ 32-bit-only installer to build
  and link with OpenSSL 1.0.2h.

Misc
----

- Issue #17500, and https://github.com/python/pythondotorg/issues/945: Remove
  unused and outdated icons.

C API
-----

- Issue #27186: Add the PyOS_FSPath() function (part of PEP 519).

- Issue #26282: PyArg_ParseTupleAndKeywords() now supports positional-only
  parameters.

Tools/Demos
-----------

- Issue #26282: Argument Clinic now supports positional-only and keyword
  parameters in the same function.


What's New in Python 3.6.0 alpha 1?
===================================

Release date: 2016-05-16

Core and Builtins
-----------------

- Issue #20041: Fixed TypeError when frame.f_trace is set to None.
  Patch by Xavier de Gaye.

- Issue #26168: Fixed possible refleaks in failing Py_BuildValue() with the "N"
  format unit.

- Issue #26991: Fix possible refleak when creating a function with annotations.

- Issue #27039: Fixed bytearray.remove() for values greater than 127.  Based on
  patch by Joe Jevnik.

- Issue #23640: int.from_bytes() no longer bypasses constructors for subclasses.

- Issue #27005: Optimized the float.fromhex() class method for exact float.
  It is now 2 times faster.

- Issue #18531: Single var-keyword argument of dict subtype was passed
  unscathed to the C-defined function.  Now it is converted to exact dict.

- Issue #26811: gc.get_objects() no longer contains a broken tuple with NULL
  pointer.

- Issue #20120: Use RawConfigParser for .pypirc parsing,
  removing support for interpolation unintentionally added
  with move to Python 3. Behavior no longer does any
  interpolation in .pypirc files, matching behavior in Python
  2.7 and Setuptools 19.0.

- Issue #26249: Memory functions of the :c:func:`PyMem_Malloc` domain
  (:c:data:`PYMEM_DOMAIN_MEM`) now use the :ref:`pymalloc allocator <pymalloc>`
  rather than system :c:func:`malloc`. Applications calling
  :c:func:`PyMem_Malloc` without holding the GIL can now crash: use
  ``PYTHONMALLOC=debug`` environment variable to validate the usage of memory
  allocators in your application.

- Issue #26802: Optimize function calls only using unpacking like
  ``func(*tuple)`` (no other positional argument, no keyword): avoid copying
  the tuple. Patch written by Joe Jevnik.

- Issue #26659: Make the builtin slice type support cycle collection.

- Issue #26718: super.__init__ no longer leaks memory if called multiple times.
  NOTE: A direct call of super.__init__ is not endorsed!

- Issue #27138: Fix the doc comment for FileFinder.find_spec().

- Issue #27147: Mention PEP 420 in the importlib docs.

- Issue #25339: PYTHONIOENCODING now has priority over locale in setting the
  error handler for stdin and stdout.

- Issue #26494: Fixed crash on iterating exhausting iterators.
  Affected classes are generic sequence iterators, iterators of str, bytes,
  bytearray, list, tuple, set, frozenset, dict, OrderedDict, corresponding
  views and os.scandir() iterator.

- Issue #26574: Optimize ``bytes.replace(b'', b'.')`` and
  ``bytearray.replace(b'', b'.')``. Patch written by Josh Snider.

- Issue #26581: If coding cookie is specified multiple times on a line in
  Python source code file, only the first one is taken to account.

- Issue #19711: Add tests for reloading namespace packages.

- Issue #21099: Switch applicable importlib tests to use PEP 451 API.

- Issue #26563: Debug hooks on Python memory allocators now raise a fatal
  error if functions of the :c:func:`PyMem_Malloc` family are called without
  holding the GIL.

- Issue #26564: On error, the debug hooks on Python memory allocators now use
  the :mod:`tracemalloc` module to get the traceback where a memory block was
  allocated.

- Issue #26558: The debug hooks on Python memory allocator
  :c:func:`PyObject_Malloc` now detect when functions are called without
  holding the GIL.

- Issue #26516: Add :envvar:`PYTHONMALLOC` environment variable to set the
  Python memory allocators and/or install debug hooks.

- Issue #26516: The :c:func:`PyMem_SetupDebugHooks` function can now also be
  used on Python compiled in release mode.

- Issue #26516: The :envvar:`PYTHONMALLOCSTATS` environment variable can now
  also be used on Python compiled in release mode. It now has no effect if
  set to an empty string.

- Issue #26516: In debug mode, debug hooks are now also installed on Python
  memory allocators when Python is configured without pymalloc.

- Issue #26464: Fix str.translate() when string is ASCII and first replacements
  removes character, but next replacement uses a non-ASCII character or a
  string longer than 1 character. Regression introduced in Python 3.5.0.

- Issue #22836: Ensure exception reports from PyErr_Display() and
  PyErr_WriteUnraisable() are sensible even when formatting them produces
  secondary errors.  This affects the reports produced by
  sys.__excepthook__() and when __del__() raises an exception.

- Issue #26302: Correct behavior to reject comma as a legal character for
  cookie names.

- Issue #26136: Upgrade the warning when a generator raises StopIteration
  from PendingDeprecationWarning to DeprecationWarning.  Patch by Anish
  Shah.

- Issue #26204: The compiler now ignores all constant statements: bytes, str,
  int, float, complex, name constants (None, False, True), Ellipsis
  and ast.Constant; not only str and int. For example, ``1.0`` is now ignored
  in ``def f(): 1.0``.

- Issue #4806: Avoid masking the original TypeError exception when using star
  (*) unpacking in function calls.  Based on patch by Hagen Fürstenau and
  Daniel Urban.

- Issue #26146: Add a new kind of AST node: ``ast.Constant``. It can be used
  by external AST optimizers, but the compiler does not emit directly such
  node.

- Issue #23601:  Sped-up allocation of dict key objects by using Python's
  small object allocator.  (Contributed by Julian Taylor.)

- Issue #18018: Import raises ImportError instead of SystemError if a relative
  import is attempted without a known parent package.

- Issue #25843: When compiling code, don't merge constants if they are equal
  but have a different types. For example, ``f1, f2 = lambda: 1, lambda: 1.0``
  is now correctly compiled to two different functions: ``f1()`` returns ``1``
  (``int``) and ``f2()`` returns ``1.0`` (``float``), even if ``1`` and ``1.0``
  are equal.

- Issue #26107: The format of the ``co_lnotab`` attribute of code objects
  changes to support negative line number delta.

- Issue #26154: Add a new private _PyThreadState_UncheckedGet() function to get
  the current Python thread state, but don't issue a fatal error if it is NULL.
  This new function must be used instead of accessing directly the
  _PyThreadState_Current variable.  The variable is no more exposed since
  Python 3.5.1 to hide the exact implementation of atomic C types, to avoid
  compiler issues.

- Issue #25791: If __package__ != __spec__.parent or if neither __package__ or
  __spec__ are defined then ImportWarning is raised.

- Issue #22995: [UPDATE] Comment out the one of the pickleability tests in
  _PyObject_GetState() due to regressions observed in Cython-based projects.

- Issue #25961: Disallowed null characters in the type name.

- Issue #25973: Fix segfault when an invalid nonlocal statement binds a name
  starting with two underscores.

- Issue #22995: Instances of extension types with a state that aren't
  subclasses of list or dict and haven't implemented any pickle-related
  methods (__reduce__, __reduce_ex__, __getnewargs__, __getnewargs_ex__,
  or __getstate__), can no longer be pickled.  Including memoryview.

- Issue #20440: Massive replacing unsafe attribute setting code with special
  macro Py_SETREF.

- Issue #25766: Special method __bytes__() now works in str subclasses.

- Issue #25421: __sizeof__ methods of builtin types now use dynamic basic size.
  This allows sys.getsize() to work correctly with their subclasses with
  __slots__ defined.

- Issue #25709: Fixed problem with in-place string concatenation and utf-8
  cache.

- Issue #5319: New Py_FinalizeEx() API allowing Python to set an exit status
  of 120 on failure to flush buffered streams.

- Issue #25485: telnetlib.Telnet is now a context manager.

- Issue #24097: Fixed crash in object.__reduce__() if slot name is freed inside
  __getattr__.

- Issue #24731: Fixed crash on converting objects with special methods
  __bytes__, __trunc__, and __float__ returning instances of subclasses of
  bytes, int, and float to subclasses of bytes, int, and float correspondingly.

- Issue #25630: Fix a possible segfault during argument parsing in functions
  that accept filesystem paths.

- Issue #23564: Fixed a partially broken sanity check in the _posixsubprocess
  internals regarding how fds_to_pass were passed to the child.  The bug had
  no actual impact as subprocess.py already avoided it.

- Issue #25388: Fixed tokenizer crash when processing undecodable source code
  with a null byte.

- Issue #25462: The hash of the key now is calculated only once in most
  operations in C implementation of OrderedDict.

- Issue #22995: Default implementation of __reduce__ and __reduce_ex__ now
  rejects builtin types with not defined __new__.

- Issue #24802: Avoid buffer overreads when int(), float(), compile(), exec()
  and eval() are passed bytes-like objects.  These objects are not
  necessarily terminated by a null byte, but the functions assumed they were.

- Issue #25555: Fix parser and AST: fill lineno and col_offset of "arg" node
  when compiling AST from Python objects.

- Issue #24726: Fixed a crash and leaking NULL in repr() of OrderedDict that
  was mutated by direct calls of dict methods.

- Issue #25449: Iterating OrderedDict with keys with unstable hash now raises
  KeyError in C implementations as well as in Python implementation.

- Issue #25395: Fixed crash when highly nested OrderedDict structures were
  garbage collected.

- Issue #25401: Optimize bytes.fromhex() and bytearray.fromhex(): they are now
  between 2x and 3.5x faster.

- Issue #25399: Optimize bytearray % args using the new private _PyBytesWriter
  API. Formatting is now between 2.5 and 5 times faster.

- Issue #25274: sys.setrecursionlimit() now raises a RecursionError if the new
  recursion limit is too low depending at the current recursion depth. Modify
  also the "lower-water mark" formula to make it monotonic. This mark is used
  to decide when the overflowed flag of the thread state is reset.

- Issue #24402: Fix input() to prompt to the redirected stdout when
  sys.stdout.fileno() fails.

- Issue #25349: Optimize bytes % args using the new private _PyBytesWriter API.
  Formatting is now up to 2 times faster.

- Issue #24806: Prevent builtin types that are not allowed to be subclassed from
  being subclassed through multiple inheritance.

- Issue #25301: The UTF-8 decoder is now up to 15 times as fast for error
  handlers: ``ignore``, ``replace`` and ``surrogateescape``.

- Issue #24848: Fixed a number of bugs in UTF-7 decoding of misformed data.

- Issue #25267: The UTF-8 encoder is now up to 75 times as fast for error
  handlers: ``ignore``, ``replace``, ``surrogateescape``, ``surrogatepass``.
  Patch co-written with Serhiy Storchaka.

- Issue #25280: Import trace messages emitted in verbose (-v) mode are no
  longer formatted twice.

- Issue #25227: Optimize ASCII and latin1 encoders with the ``surrogateescape``
  error handler: the encoders are now up to 3 times as fast. Initial patch
  written by Serhiy Storchaka.

- Issue #25003: On Solaris 11.3 or newer, os.urandom() now uses the
  getrandom() function instead of the getentropy() function. The getentropy()
  function is blocking to generate very good quality entropy, os.urandom()
  doesn't need such high-quality entropy.

- Issue #9232: Modify Python's grammar to allow trailing commas in the
  argument list of a function declaration.  For example, "def f(\*, a =
  3,): pass" is now legal. Patch from Mark Dickinson.

- Issue #24965: Implement PEP 498 "Literal String Interpolation". This
  allows you to embed expressions inside f-strings, which are
  converted to normal strings at run time. Given x=3, then
  f'value={x}' == 'value=3'. Patch by Eric V. Smith.

- Issue #26478: Fix semantic bugs when using binary operators with dictionary
  views and tuples.

- Issue #26171: Fix possible integer overflow and heap corruption in
  zipimporter.get_data().

- Issue #25660: Fix TAB key behaviour in REPL with readline.

- Issue #26288: Optimize PyLong_AsDouble.

- Issues #26289 and #26315: Optimize floor and modulo division for
  single-digit longs.  Microbenchmarks show 2-2.5x improvement.  Built-in
  'divmod' function is now also ~10% faster.

- Issue #25887: Raise a RuntimeError when a coroutine object is awaited
  more than once.

Library
-------

- Issue #27057: Fix os.set_inheritable() on Android, ioctl() is blocked by
  SELinux and fails with EACCESS. The function now falls back to fcntl().
  Patch written by Michał Bednarski.

- Issue #27014: Fix infinite recursion using typing.py.  Thanks to Kalle Tuure!

- Issue #27031: Removed dummy methods in Tkinter widget classes: tk_menuBar()
  and tk_bindForTraversal().

- Issue #14132: Fix urllib.request redirect handling when the target only has
  a query string.  Original fix by Ján Janech.

- Issue #17214: The "urllib.request" module now percent-encodes non-ASCII
  bytes found in redirect target URLs.  Some servers send Location header
  fields with non-ASCII bytes, but "http.client" requires the request target
  to be ASCII-encodable, otherwise a UnicodeEncodeError is raised.  Based on
  patch by Christian Heimes.

- Issue #27033: The default value of the decode_data parameter for
  smtpd.SMTPChannel and smtpd.SMTPServer constructors is changed to False.

- Issue #27034: Removed deprecated class asynchat.fifo.

- Issue #26870: Added readline.set_auto_history(), which can stop entries
  being automatically added to the history list.  Based on patch by Tyler
  Crompton.

- Issue #26039: zipfile.ZipFile.open() can now be used to write data into a ZIP
  file, as well as for extracting data.  Patch by Thomas Kluyver.

- Issue #26892: Honor debuglevel flag in urllib.request.HTTPHandler. Patch
  contributed by Chi Hsuan Yen.

- Issue #22274: In the subprocess module, allow stderr to be redirected to
  stdout even when stdout is not redirected.  Patch by Akira Li.

- Issue #26807: mock_open 'files' no longer error on readline at end of file.
  Patch from Yolanda Robla.

- Issue #25745: Fixed leaking a userptr in curses panel destructor.

- Issue #26977: Removed unnecessary, and ignored, call to sum of squares helper
  in statistics.pvariance.

- Issue #26002: Use bisect in statistics.median instead of a linear search.
  Patch by Upendra Kuma.

- Issue #25974: Make use of new Decimal.as_integer_ratio() method in statistics
  module. Patch by Stefan Krah.

- Issue #26996: Add secrets module as described in PEP 506.

- Issue #26881: The modulefinder module now supports extended opcode arguments.

- Issue #23815: Fixed crashes related to directly created instances of types in
  _tkinter and curses.panel modules.

- Issue #17765: weakref.ref() no longer silently ignores keyword arguments.
  Patch by Georg Brandl.

- Issue #26873: xmlrpc now raises ResponseError on unsupported type tags
  instead of silently return incorrect result.

- Issue #26915:  The __contains__ methods in the collections ABCs now check
  for identity before checking equality.  This better matches the behavior
  of the concrete classes, allows sensible handling of NaNs, and makes it
  easier to reason about container invariants.

- Issue #26711: Fixed the comparison of plistlib.Data with other types.

- Issue #24114: Fix an uninitialized variable in `ctypes.util`.

  The bug only occurs on SunOS when the ctypes implementation searches
  for the `crle` program.  Patch by Xiang Zhang.  Tested on SunOS by
  Kees Bos.

- Issue #26864: In urllib.request, change the proxy bypass host checking
  against no_proxy to be case-insensitive, and to not match unrelated host
  names that happen to have a bypassed hostname as a suffix.  Patch by Xiang
  Zhang.

- Issue #24902: Print server URL on http.server startup.  Initial patch by
  Felix Kaiser.

- Issue #25788: fileinput.hook_encoded() now supports an "errors" argument
  for passing to open.  Original patch by Joseph Hackman.

- Issue #26634: recursive_repr() now sets __qualname__ of wrapper.  Patch by
  Xiang Zhang.

- Issue #26804: urllib.request will prefer lower_case proxy environment
  variables over UPPER_CASE or Mixed_Case ones. Patch contributed by Hans-Peter
  Jansen.

- Issue #26837: assertSequenceEqual() now correctly outputs non-stringified
  differing items (like bytes in the -b mode).  This affects assertListEqual()
  and assertTupleEqual().

- Issue #26041: Remove "will be removed in Python 3.7" from deprecation
  messages of platform.dist() and platform.linux_distribution().
  Patch by Kumaripaba Miyurusara Athukorala.

- Issue #26822: itemgetter, attrgetter and methodcaller objects no longer
  silently ignore keyword arguments.

- Issue #26733: Disassembling a class now disassembles class and static methods.
  Patch by Xiang Zhang.

- Issue #26801: Fix error handling in :func:`shutil.get_terminal_size`, catch
  :exc:`AttributeError` instead of :exc:`NameError`. Patch written by Emanuel
  Barry.

- Issue #24838: tarfile's ustar and gnu formats now correctly calculate name
  and link field limits for multibyte character encodings like utf-8.

- [Security] Issue #26657: Fix directory traversal vulnerability with
  http.server on Windows.  This fixes a regression that was introduced in
  3.3.4rc1 and 3.4.0rc1.  Based on patch by Philipp Hagemeister.

- Issue #26717: Stop encoding Latin-1-ized WSGI paths with UTF-8.  Patch by
  Anthony Sottile.

- Issue #26782: Add STARTUPINFO to subprocess.__all__ on Windows.

- Issue #26404: Add context manager to socketserver.  Patch by Aviv Palivoda.

- Issue #26735: Fix :func:`os.urandom` on Solaris 11.3 and newer when reading
  more than 1,024 bytes: call ``getrandom()`` multiple times with a limit of
  1024 bytes per call.

- Issue #26585: Eliminate http.server._quote_html() and use
  html.escape(quote=False).  Patch by Xiang Zhang.

- Issue #26685: Raise OSError if closing a socket fails.

- Issue #16329: Add .webm to mimetypes.types_map.  Patch by Giampaolo Rodola'.

- Issue #13952: Add .csv to mimetypes.types_map.  Patch by Geoff Wilson.

- Issue #26587: the site module now allows .pth files to specify files to be
  added to sys.path (e.g. zip files).

- Issue #25609: Introduce contextlib.AbstractContextManager and
  typing.ContextManager.

- Issue #26709: Fixed Y2038 problem in loading binary PLists.

- Issue #23735: Handle terminal resizing with Readline 6.3+ by installing our
  own SIGWINCH handler.  Patch by Eric Price.

- Issue #25951: Change SSLSocket.sendall() to return None, as explicitly
  documented for plain socket objects.  Patch by Aviv Palivoda.

- Issue #26586: In http.server, respond with "413 Request header fields too
  large" if there are too many header fields to parse, rather than killing
  the connection and raising an unhandled exception.  Patch by Xiang Zhang.

- Issue #26676: Added missing XMLPullParser to ElementTree.__all__.

- Issue #22854: Change BufferedReader.writable() and
  BufferedWriter.readable() to always return False.

- Issue #26492: Exhausted iterator of array.array now conforms with the behavior
  of iterators of other mutable sequences: it lefts exhausted even if iterated
  array is extended.

- Issue #26641: doctest.DocFileTest and doctest.testfile() now support
  packages (module splitted into multiple directories) for the package
  parameter.

- Issue #25195: Fix a regression in mock.MagicMock. _Call is a subclass of
  tuple (changeset 3603bae63c13 only works for classes) so we need to
  implement __ne__ ourselves.  Patch by Andrew Plummer.

- Issue #26644: Raise ValueError rather than SystemError when a negative
  length is passed to SSLSocket.recv() or read().

- Issue #23804: Fix SSL recv(0) and read(0) methods to return zero bytes
  instead of up to 1024.

- Issue #26616: Fixed a bug in datetime.astimezone() method.

- Issue #26637: The :mod:`importlib` module now emits an :exc:`ImportError`
  rather than a :exc:`TypeError` if :func:`__import__` is tried during the
  Python shutdown process but :data:`sys.path` is already cleared (set to
  ``None``).

- Issue #21925: :func:`warnings.formatwarning` now catches exceptions when
  calling :func:`linecache.getline` and
  :func:`tracemalloc.get_object_traceback` to be able to log
  :exc:`ResourceWarning` emitted late during the Python shutdown process.

- Issue #23848: On Windows, faulthandler.enable() now also installs an
  exception handler to dump the traceback of all Python threads on any Windows
  exception, not only on UNIX signals (SIGSEGV, SIGFPE, SIGABRT).

- Issue #26530: Add C functions :c:func:`_PyTraceMalloc_Track` and
  :c:func:`_PyTraceMalloc_Untrack` to track memory blocks using the
  :mod:`tracemalloc` module. Add :c:func:`_PyTraceMalloc_GetTraceback` to get
  the traceback of an object.

- Issue #26588: The _tracemalloc now supports tracing memory allocations of
  multiple address spaces (domains).

- Issue #24266: Ctrl+C during Readline history search now cancels the search
  mode when compiled with Readline 7.

- Issue #26590: Implement a safe finalizer for the _socket.socket type. It now
  releases the GIL to close the socket.

- Issue #18787: spwd.getspnam() now raises a PermissionError if the user
  doesn't have privileges.

- Issue #26560: Avoid potential ValueError in BaseHandler.start_response.
  Initial patch by Peter Inglesby.

- Issue #26567: Add a new function :c:func:`PyErr_ResourceWarning` function to
  pass the destroyed object. Add a *source* attribute to
  :class:`warnings.WarningMessage`. Add warnings._showwarnmsg() which uses
  tracemalloc to get the traceback where source object was allocated.

- [Security] Issue #26313: ssl.py _load_windows_store_certs fails if windows
  cert store is empty. Patch by Baji.

- Issue #26569: Fix :func:`pyclbr.readmodule` and :func:`pyclbr.readmodule_ex`
  to support importing packages.

- Issue #26499: Account for remaining Content-Length in
  HTTPResponse.readline() and read1().  Based on patch by Silent Ghost.
  Also document that HTTPResponse now supports these methods.

- Issue #25320: Handle sockets in directories unittest discovery is scanning.
  Patch from Victor van den Elzen.

- Issue #16181: cookiejar.http2time() now returns None if year is higher than
  datetime.MAXYEAR.

- Issue #26513: Fixes platform module detection of Windows Server

- Issue #23718: Fixed parsing time in week 0 before Jan 1.  Original patch by
  Tamás Bence Gedai.

- Issue #26323: Add Mock.assert_called() and Mock.assert_called_once()
  methods to unittest.mock. Patch written by Amit Saha.

- Issue #20589: Invoking Path.owner() and Path.group() on Windows now raise
  NotImplementedError instead of ImportError.

- Issue #26177: Fixed the keys() method for Canvas and Scrollbar widgets.

- Issue #15068: Got rid of excessive buffering in fileinput.
  The bufsize parameter is now deprecated and ignored.

- Issue #19475: Added an optional argument timespec to the datetime
  isoformat() method to choose the precision of the time component.

- Issue #2202: Fix UnboundLocalError in
  AbstractDigestAuthHandler.get_algorithm_impls.  Initial patch by Mathieu
  Dupuy.

- Issue #26167: Minimized overhead in copy.copy() and copy.deepcopy().
  Optimized copying and deepcopying bytearrays, NotImplemented, slices,
  short lists, tuples, dicts, sets.

- Issue #25718: Fixed pickling and copying the accumulate() iterator with
  total is None.

- Issue #26475: Fixed debugging output for regular expressions with the (?x)
  flag.

- Issue #26482: Allowed pickling recursive dequeues.

- Issue #26335: Make mmap.write() return the number of bytes written like
  other write methods.  Patch by Jakub Stasiak.

- Issue #26457: Fixed the subnets() methods in IP network classes for the case
  when resulting prefix length is equal to maximal prefix length.
  Based on patch by Xiang Zhang.

- Issue #26385: Remove the file if the internal open() call in
  NamedTemporaryFile() fails.  Patch by Silent Ghost.

- Issue #26402: Fix XML-RPC client to retry when the server shuts down a
  persistent connection.  This was a regression related to the new
  http.client.RemoteDisconnected exception in 3.5.0a4.

- Issue #25913: Leading ``<~`` is optional now in base64.a85decode() with
  adobe=True.  Patch by Swati Jaiswal.

- Issue #26186: Remove an invalid type check in importlib.util.LazyLoader.

- Issue #26367: importlib.__import__() raises ImportError like
  builtins.__import__() when ``level`` is specified but without an accompanying
  package specified.

- Issue #26309: In the "socketserver" module, shut down the request (closing
  the connected socket) when verify_request() returns false.  Patch by Aviv
  Palivoda.

- Issue #23430: Change the socketserver module to only catch exceptions
  raised from a request handler that are derived from Exception (instead of
  BaseException).  Therefore SystemExit and KeyboardInterrupt no longer
  trigger the handle_error() method, and will now to stop a single-threaded
  server.

- [Security] Issue #25939: On Windows open the cert store readonly in
  ssl.enum_certificates.

- Issue #25995: os.walk() no longer uses FDs proportional to the tree depth.

- Issue #25994: Added the close() method and the support of the context manager
  protocol for the os.scandir() iterator.

- Issue #23992: multiprocessing: make MapResult not fail-fast upon exception.

- Issue #26243: Support keyword arguments to zlib.compress().  Patch by Aviv
  Palivoda.

- Issue #26117: The os.scandir() iterator now closes file descriptor not only
  when the iteration is finished, but when it was failed with error.

- Issue #25949: __dict__ for an OrderedDict instance is now created only when
  needed.

- Issue #25911: Restored support of bytes paths in os.walk() on Windows.

- Issue #26045: Add UTF-8 suggestion to error message when posting a
  non-Latin-1 string with http.client.

- Issue #26039: Added zipfile.ZipInfo.from_file() and zipinfo.ZipInfo.is_dir().
  Patch by Thomas Kluyver.

- Issue #12923: Reset FancyURLopener's redirect counter even if there is an
  exception.  Based on patches by Brian Brazil and Daniel Rocco.

- Issue #25945: Fixed a crash when unpickle the functools.partial object with
  wrong state.  Fixed a leak in failed functools.partial constructor.
  "args" and "keywords" attributes of functools.partial have now always types
  tuple and dict correspondingly.

- Issue #26202: copy.deepcopy() now correctly copies range() objects with
  non-atomic attributes.

- Issue #23076: Path.glob() now raises a ValueError if it's called with an
  invalid pattern.  Patch by Thomas Nyberg.

- Issue #19883: Fixed possible integer overflows in zipimport.

- Issue #26227: On Windows, getnameinfo(), gethostbyaddr() and
  gethostbyname_ex() functions of the socket module now decode the hostname
  from the ANSI code page rather than UTF-8.

- Issue #26099: The site module now writes an error into stderr if
  sitecustomize module can be imported but executing the module raise an
  ImportError. Same change for usercustomize.

- Issue #26147: xmlrpc now works with strings not encodable with used
  non-UTF-8 encoding.

- Issue #25935: Garbage collector now breaks reference loops with OrderedDict.

- Issue #16620: Fixed AttributeError in msilib.Directory.glob().

- Issue #26013: Added compatibility with broken protocol 2 pickles created
  in old Python 3 versions (3.4.3 and lower).

- Issue #26129: Deprecated accepting non-integers in grp.getgrgid().

- Issue #25850: Use cross-compilation by default for 64-bit Windows.

- Issue #25822: Add docstrings to the fields of urllib.parse results.
  Patch contributed by Swati Jaiswal.

- Issue #22642: Convert trace module option parsing mechanism to argparse.
  Patch contributed by SilentGhost.

- Issue #24705: Fix sysconfig._parse_makefile not expanding ${} vars
  appearing before $() vars.

- Issue #26069: Remove the deprecated apis in the trace module.

- Issue #22138: Fix mock.patch behavior when patching descriptors. Restore
  original values after patching. Patch contributed by Sean McCully.

- Issue #25672: In the ssl module, enable the SSL_MODE_RELEASE_BUFFERS mode
  option if it is safe to do so.

- Issue #26012: Don't traverse into symlinks for ** pattern in
  pathlib.Path.[r]glob().

- Issue #24120: Ignore PermissionError when traversing a tree with
  pathlib.Path.[r]glob().  Patch by Ulrich Petri.

- Issue #21815: Accept ] characters in the data portion of imap responses,
  in order to handle the flags with square brackets accepted and produced
  by servers such as gmail.

- Issue #25447: fileinput now uses sys.stdin as-is if it does not have a
  buffer attribute (restores backward compatibility).

- Issue #25971: Optimized creating Fractions from floats by 2 times and from
  Decimals by 3 times.

- Issue #25802: Document as deprecated the remaining implementations of
  importlib.abc.Loader.load_module().

- Issue #25928: Add Decimal.as_integer_ratio().

- Issue #25447: Copying the lru_cache() wrapper object now always works,
  independently from the type of the wrapped object (by returning the original
  object unchanged).

- Issue #25768: Have the functions in compileall return booleans instead of
  ints and add proper documentation and tests for the return values.

- Issue #24103: Fixed possible use after free in ElementTree.XMLPullParser.

- Issue #25860: os.fwalk() no longer skips remaining directories when error
  occurs.  Original patch by Samson Lee.

- Issue #25914: Fixed and simplified OrderedDict.__sizeof__.

- Issue #25869: Optimized deepcopying ElementTree; it is now 20 times faster.

- Issue #25873: Optimized iterating ElementTree.  Iterating elements
  Element.iter() is now 40% faster, iterating text Element.itertext()
  is now up to 2.5 times faster.

- Issue #25902: Fixed various refcount issues in ElementTree iteration.

- Issue #22227: The TarFile iterator is reimplemented using generator.
  This implementation is simpler that using class.

- Issue #25638: Optimized ElementTree.iterparse(); it is now 2x faster.
  Optimized ElementTree parsing; it is now 10% faster.

- Issue #25761: Improved detecting errors in broken pickle data.

- Issue #25717: Restore the previous behaviour of tolerating most fstat()
  errors when opening files.  This was a regression in 3.5a1, and stopped
  anonymous temporary files from working in special cases.

- Issue #24903: Fix regression in number of arguments compileall accepts when
  '-d' is specified.  The check on the number of arguments has been dropped
  completely as it never worked correctly anyway.

- Issue #25764: In the subprocess module, preserve any exception caused by
  fork() failure when preexec_fn is used.

- Issue #25771: Tweak the exception message for importlib.util.resolve_name()
  when 'package' isn't specified but necessary.

- Issue #6478: _strptime's regexp cache now is reset after changing timezone
  with time.tzset().

- Issue #14285: When executing a package with the "python -m package" option,
  and package initialization fails, a proper traceback is now reported.  The
  "runpy" module now lets exceptions from package initialization pass back to
  the caller, rather than raising ImportError.

- Issue #19771: Also in runpy and the "-m" option, omit the irrelevant
  message ". . . is a package and cannot be directly executed" if the package
  could not even be initialized (e.g. due to a bad ``*.pyc`` file).

- Issue #25177: Fixed problem with the mean of very small and very large
  numbers. As a side effect, statistics.mean and statistics.variance should
  be significantly faster.

- Issue #25718: Fixed copying object with state with boolean value is false.

- Issue #10131: Fixed deep copying of minidom documents.  Based on patch
  by Marian Ganisin.

- Issue #7990: dir() on ElementTree.Element now lists properties: "tag",
  "text", "tail" and "attrib".  Original patch by Santoso Wijaya.

- Issue #25725: Fixed a reference leak in pickle.loads() when unpickling
  invalid data including tuple instructions.

- Issue #25663: In the Readline completer, avoid listing duplicate global
  names, and search the global namespace before searching builtins.

- Issue #25688: Fixed file leak in ElementTree.iterparse() raising an error.

- Issue #23914: Fixed SystemError raised by unpickler on broken pickle data.

- Issue #25691: Fixed crash on deleting ElementTree.Element attributes.

- Issue #25624: ZipFile now always writes a ZIP_STORED header for directory
  entries.  Patch by Dingyuan Wang.

- Issue #25626: Change three zlib functions to accept sizes that fit in
  Py_ssize_t, but internally cap those sizes to UINT_MAX.  This resolves a
  regression in 3.5 where GzipFile.read() failed to read chunks larger than 2
  or 4 GiB.  The change affects the zlib.Decompress.decompress() max_length
  parameter, the zlib.decompress() bufsize parameter, and the
  zlib.Decompress.flush() length parameter.

- Issue #25583: Avoid incorrect errors raised by os.makedirs(exist_ok=True)
  when the OS gives priority to errors such as EACCES over EEXIST.

- Issue #25593: Change semantics of EventLoop.stop() in asyncio.

- Issue #6973: When we know a subprocess.Popen process has died, do
  not allow the send_signal(), terminate(), or kill() methods to do
  anything as they could potentially signal a different process.

- Issue #23883: Added missing APIs to __all__ to match the documented APIs
  for the following modules: calendar, csv, enum, fileinput, ftplib, logging,
  optparse, tarfile, threading and wave.  Also added a
  test.support.check__all__() helper.  Patches by Jacek Kołodziej, Mauro
  S. M. Rodrigues and Joel Taddei.

- Issue #25590: In the Readline completer, only call getattr() once per
  attribute.  Also complete names of attributes such as properties and slots
  which are listed by dir() but not yet created on an instance.

- Issue #25498: Fix a crash when garbage-collecting ctypes objects created
  by wrapping a memoryview.  This was a regression made in 3.5a1.  Based
  on patch by Eryksun.

- Issue #25584: Added "escape" to the __all__ list in the glob module.

- Issue #25584: Fixed recursive glob() with patterns starting with '\*\*'.

- Issue #25446: Fix regression in smtplib's AUTH LOGIN support.

- Issue #18010: Fix the pydoc web server's module search function to handle
  exceptions from importing packages.

- Issue #25554: Got rid of circular references in regular expression parsing.

- Issue #18973: Command-line interface of the calendar module now uses argparse
  instead of optparse.

- Issue #25510: fileinput.FileInput.readline() now returns b'' instead of ''
  at the end if the FileInput was opened with binary mode.
  Patch by Ryosuke Ito.

- Issue #25503: Fixed inspect.getdoc() for inherited docstrings of properties.
  Original patch by John Mark Vandenberg.

- Issue #25515: Always use os.urandom as a source of randomness in uuid.uuid4.

- Issue #21827: Fixed textwrap.dedent() for the case when largest common
  whitespace is a substring of smallest leading whitespace.
  Based on patch by Robert Li.

- Issue #25447: The lru_cache() wrapper objects now can be copied and pickled
  (by returning the original object unchanged).

- Issue #25390: typing: Don't crash on Union[str, Pattern].

- Issue #25441: asyncio: Raise error from drain() when socket is closed.

- Issue #25410: Cleaned up and fixed minor bugs in C implementation of
  OrderedDict.

- Issue #25411: Improved Unicode support in SMTPHandler through better use of
  the email package. Thanks to user simon04 for the patch.

- Move the imp module from a PendingDeprecationWarning to DeprecationWarning.

- Issue #25407: Remove mentions of the formatter module being removed in
  Python 3.6.

- Issue #25406: Fixed a bug in C implementation of OrderedDict.move_to_end()
  that caused segmentation fault or hang in iterating after moving several
  items to the start of ordered dict.

- Issue #25382: pickletools.dis() now outputs implicit memo index for the
  MEMOIZE opcode.

- Issue #25357: Add an optional newline paramer to binascii.b2a_base64().
  base64.b64encode() uses it to avoid a memory copy.

- Issue #24164: Objects that need calling ``__new__`` with keyword arguments,
  can now be pickled using pickle protocols older than protocol version 4.

- Issue #25364: zipfile now works in threads disabled builds.

- Issue #25328: smtpd's SMTPChannel now correctly raises a ValueError if both
  decode_data and enable_SMTPUTF8 are set to true.

- Issue #16099: RobotFileParser now supports Crawl-delay and Request-rate
  extensions.  Patch by Nikolay Bogoychev.

- Issue #25316: distutils raises OSError instead of DistutilsPlatformError
  when MSVC is not installed.

- Issue #25380: Fixed protocol for the STACK_GLOBAL opcode in
  pickletools.opcodes.

- Issue #23972: Updates asyncio datagram create method allowing reuseport
  and reuseaddr socket options to be set prior to binding the socket.
  Mirroring the existing asyncio create_server method the reuseaddr option
  for datagram sockets defaults to True if the O/S is 'posix' (except if the
  platform is Cygwin). Patch by Chris Laws.

- Issue #25304: Add asyncio.run_coroutine_threadsafe().  This lets you
  submit a coroutine to a loop from another thread, returning a
  concurrent.futures.Future.  By Vincent Michel.

- Issue #25232: Fix CGIRequestHandler to split the query from the URL at the
  first question mark (?) rather than the last. Patch from Xiang Zhang.

- Issue #24657: Prevent CGIRequestHandler from collapsing slashes in the
  query part of the URL as if it were a path. Patch from Xiang Zhang.

- Issue #25287: Don't add crypt.METHOD_CRYPT to crypt.methods if it's not
  supported. Check if it is supported, it may not be supported on OpenBSD for
  example.

- Issue #23600: Default implementation of tzinfo.fromutc() was returning
  wrong results in some cases.

- Issue #25203: Failed readline.set_completer_delims() no longer left the
  module in inconsistent state.

- Issue #25011: rlcompleter now omits private and special attribute names unless
  the prefix starts with underscores.

- Issue #25209: rlcompleter now can add a space or a colon after completed
  keyword.

- Issue #22241: timezone.utc name is now plain 'UTC', not 'UTC-00:00'.

- Issue #23517: fromtimestamp() and utcfromtimestamp() methods of
  datetime.datetime now round microseconds to nearest with ties going to
  nearest even integer (ROUND_HALF_EVEN), as round(float), instead of rounding
  towards -Infinity (ROUND_FLOOR).

- Issue #23552: Timeit now warns when there is substantial (4x) variance
  between best and worst times. Patch from Serhiy Storchaka.

- Issue #24633: site-packages/README -> README.txt.

- Issue #24879: help() and pydoc can now list named tuple fields in the
  order they were defined rather than alphabetically.  The ordering is
  determined by the _fields attribute if present.

- Issue #24874: Improve speed of itertools.cycle() and make its
  pickle more compact.

- Fix crash in itertools.cycle.__setstate__() when the first argument wasn't
  a list.

- Issue #20059: urllib.parse raises ValueError on all invalid ports.
  Patch by Martin Panter.

- Issue #24360: Improve __repr__ of argparse.Namespace() for invalid
  identifiers.  Patch by Matthias Bussonnier.

- Issue #23426: run_setup was broken in distutils.
  Patch from Alexander Belopolsky.

- Issue #13938: 2to3 converts StringTypes to a tuple. Patch from Mark Hammond.

- Issue #2091: open() accepted a 'U' mode string containing '+', but 'U' can
  only be used with 'r'. Patch from Jeff Balogh and John O'Connor.

- Issue #8585: improved tests for zipimporter2. Patch from Mark Lawrence.

- Issue #18622: unittest.mock.mock_open().reset_mock would recurse infinitely.
  Patch from Nicola Palumbo and Laurent De Buyst.

- Issue #24426: Fast searching optimization in regular expressions now works
  for patterns that starts with capturing groups.  Fast searching optimization
  now can't be disabled at compile time.

- Issue #23661: unittest.mock side_effects can now be exceptions again. This
  was a regression vs Python 3.4. Patch from Ignacio Rossi

- Issue #13248: Remove deprecated inspect.getmoduleinfo function.

- Issue #25578: Fix (another) memory leak in SSLSocket.getpeercer().

- Issue #25530: Disable the vulnerable SSLv3 protocol by default when creating
  ssl.SSLContext.

- Issue #25569: Fix memory leak in SSLSocket.getpeercert().

- Issue #25471: Sockets returned from accept() shouldn't appear to be
  nonblocking.

- Issue #25319: When threading.Event is reinitialized, the underlying condition
  should use a regular lock rather than a recursive lock.

- Skip getaddrinfo if host is already resolved.
  Patch by A. Jesse Jiryu Davis.

- Issue #26050: Add asyncio.StreamReader.readuntil() method.
  Patch by Марк Коренберг.

- Issue #25924: Avoid unnecessary serialization of getaddrinfo(3) calls on
  OS X versions 10.5 or higher.  Original patch by A. Jesse Jiryu Davis.

- Issue #26406: Avoid unnecessary serialization of getaddrinfo(3) calls on
  current versions of OpenBSD and NetBSD.  Patch by A. Jesse Jiryu Davis.

- Issue #26848: Fix asyncio/subprocess.communicate() to handle empty input.
  Patch by Jack O'Connor.

- Issue #27040: Add loop.get_exception_handler method

- Issue #27041: asyncio: Add loop.create_future method

IDLE
----

- Issue #20640: Add tests for idlelib.configHelpSourceEdit.
  Patch by Saimadhav Heblikar.

- In the 'IDLE-console differences' section of the IDLE doc, clarify
  how running with IDLE affects sys.modules and the standard streams.

- Issue #25507: fix incorrect change in IOBinding that prevented printing.
  Augment IOBinding htest to include all major IOBinding functions.

- Issue #25905: Revert unwanted conversion of ' to ’ RIGHT SINGLE QUOTATION
  MARK in README.txt and open this and NEWS.txt with 'ascii'.
  Re-encode CREDITS.txt to utf-8 and open it with 'utf-8'.

- Issue #15348: Stop the debugger engine (normally in a user process)
  before closing the debugger window (running in the IDLE process).
  This prevents the RuntimeErrors that were being caught and ignored.

- Issue #24455: Prevent IDLE from hanging when a) closing the shell while the
  debugger is active (15347); b) closing the debugger with the [X] button
  (15348); and c) activating the debugger when already active (24455).
  The patch by Mark Roseman does this by making two changes.
  1. Suspend and resume the gui.interaction method with the tcl vwait
  mechanism intended for this purpose (instead of root.mainloop & .quit).
  2. In gui.run, allow any existing interaction to terminate first.

- Change 'The program' to 'Your program' in an IDLE 'kill program?' message
  to make it clearer that the program referred to is the currently running
  user program, not IDLE itself.

- Issue #24750: Improve the appearance of the IDLE editor window status bar.
  Patch by Mark Roseman.

- Issue #25313: Change the handling of new built-in text color themes to better
  address the compatibility problem introduced by the addition of IDLE Dark.
  Consistently use the revised idleConf.CurrentTheme everywhere in idlelib.

- Issue #24782: Extension configuration is now a tab in the IDLE Preferences
  dialog rather than a separate dialog.  The former tabs are now a sorted
  list.  Patch by Mark Roseman.

- Issue #22726: Re-activate the config dialog help button with some content
  about the other buttons and the new IDLE Dark theme.

- Issue #24820: IDLE now has an 'IDLE Dark' built-in text color theme.
  It is more or less IDLE Classic inverted, with a cobalt blue background.
  Strings, comments, keywords, ... are still green, red, orange, ... .
  To use it with IDLEs released before November 2015, hit the
  'Save as New Custom Theme' button and enter a new name,
  such as 'Custom Dark'.  The custom theme will work with any IDLE
  release, and can be modified.

- Issue #25224: README.txt is now an idlelib index for IDLE developers and
  curious users.  The previous user content is now in the IDLE doc chapter.
  'IDLE' now means 'Integrated Development and Learning Environment'.

- Issue #24820: Users can now set breakpoint colors in
  Settings -> Custom Highlighting.  Original patch by Mark Roseman.

- Issue #24972: Inactive selection background now matches active selection
  background, as configured by users, on all systems.  Found items are now
  always highlighted on Windows.  Initial patch by Mark Roseman.

- Issue #24570: Idle: make calltip and completion boxes appear on Macs
  affected by a tk regression.  Initial patch by Mark Roseman.

- Issue #24988: Idle ScrolledList context menus (used in debugger)
  now work on Mac Aqua.  Patch by Mark Roseman.

- Issue #24801: Make right-click for context menu work on Mac Aqua.
  Patch by Mark Roseman.

- Issue #25173: Associate tkinter messageboxes with a specific widget.
  For Mac OSX, make them a 'sheet'.  Patch by Mark Roseman.

- Issue #25198: Enhance the initial html viewer now used for Idle Help.
  * Properly indent fixed-pitch text (patch by Mark Roseman).
  * Give code snippet a very Sphinx-like light blueish-gray background.
  * Re-use initial width and height set by users for shell and editor.
  * When the Table of Contents (TOC) menu is used, put the section header
  at the top of the screen.

- Issue #25225: Condense and rewrite Idle doc section on text colors.

- Issue #21995: Explain some differences between IDLE and console Python.

- Issue #22820: Explain need for *print* when running file from Idle editor.

- Issue #25224: Doc: augment Idle feature list and no-subprocess section.

- Issue #25219: Update doc for Idle command line options.
  Some were missing and notes were not correct.

- Issue #24861: Most of idlelib is private and subject to change.
  Use idleib.idle.* to start Idle. See idlelib.__init__.__doc__.

- Issue #25199: Idle: add synchronization comments for future maintainers.

- Issue #16893: Replace help.txt with help.html for Idle doc display.
  The new idlelib/help.html is rstripped Doc/build/html/library/idle.html.
  It looks better than help.txt and will better document Idle as released.
  The tkinter html viewer that works for this file was written by Rose Roseman.
  The now unused EditorWindow.HelpDialog class and helt.txt file are deprecated.

- Issue #24199: Deprecate unused idlelib.idlever with possible removal in 3.6.

- Issue #24790: Remove extraneous code (which also create 2 & 3 conflicts).

Documentation
-------------

- Issue #26736: Used HTTPS for external links in the documentation if possible.

- Issue #6953: Rework the Readline module documentation to group related
  functions together, and add more details such as what underlying Readline
  functions and variables are accessed.

- Issue #23606: Adds note to ctypes documentation regarding cdll.msvcrt.

- Issue #24952: Clarify the default size argument of stack_size() in
  the "threading" and "_thread" modules. Patch from Mattip.

- Issue #26014: Update 3.x packaging documentation:
  * "See also" links to the new docs are now provided in the legacy pages
  * links to setuptools documentation have been updated

Tests
-----

- Issue #21916: Added tests for the turtle module.  Patch by ingrid,
  Gregory Loyse and Jelle Zijlstra.

- Issue #26295: When using "python3 -m test --testdir=TESTDIR", regrtest
  doesn't add "test." prefix to test module names.

- Issue #26523: The multiprocessing thread pool (multiprocessing.dummy.Pool)
  was untested.

- Issue #26015: Added new tests for pickling iterators of mutable sequences.

- Issue #26325: Added test.support.check_no_resource_warning() to check that
  no ResourceWarning is emitted.

- Issue #25940: Changed test_ssl to use its internal local server more.  This
  avoids relying on svn.python.org, which recently changed root certificate.

- Issue #25616: Tests for OrderedDict are extracted from test_collections
  into separate file test_ordered_dict.

- Issue #25449: Added tests for OrderedDict subclasses.

- Issue #25188: Add -P/--pgo to test.regrtest to suppress error output when
  running the test suite for the purposes of a PGO build. Initial patch by
  Alecsandru Patrascu.

- Issue #22806: Add ``python -m test --list-tests`` command to list tests.

- Issue #18174: ``python -m test --huntrleaks ...`` now also checks for leak of
  file descriptors. Patch written by Richard Oudkerk.

- Issue #25260: Fix ``python -m test --coverage`` on Windows. Remove the
  list of ignored directories.

- ``PCbuild\rt.bat`` now accepts an unlimited number of arguments to pass along
  to regrtest.py.  Previously there was a limit of 9.

- Issue #26583: Skip test_timestamp_overflow in test_import if bytecode
  files cannot be written.

Build
-----

- Issue #21277: Don't try to link _ctypes with a ffi_convenience library.

- Issue #26884: Fix linking extension modules for cross builds.
  Patch by Xavier de Gaye.

- Issue #26932: Fixed support of RTLD_* constants defined as enum values,
  not via macros (in particular on Android).  Patch by Chi Hsuan Yen.

- Issue #22359: Disable the rules for running _freeze_importlib and pgen when
  cross-compiling.  The output of these programs is normally saved with the
  source code anyway, and is still regenerated when doing a native build.
  Patch by Xavier de Gaye.

- Issue #21668: Link audioop, _datetime, _ctypes_test modules to libm,
  except on Mac OS X. Patch written by Chi Hsuan Yen.

- Issue #25702: A --with-lto configure option has been added that will
  enable link time optimizations at build time during a make profile-opt.
  Some compilers and toolchains are known to not produce stable code when
  using LTO, be sure to test things thoroughly before relying on it.
  It can provide a few % speed up over profile-opt alone.

- Issue #26624: Adds validation of ucrtbase[d].dll version with warning
  for old versions.

- Issue #17603: Avoid error about nonexistant fileblocks.o file by using a
  lower-level check for st_blocks in struct stat.

- Issue #26079: Fixing the build output folder for tix-8.4.3.6. Patch by
  Bjoern Thiel.

- Issue #26465: Update Windows builds to use OpenSSL 1.0.2g.

- Issue #25348: Added ``--pgo`` and ``--pgo-job`` arguments to
  ``PCbuild\build.bat`` for building with Profile-Guided Optimization.  The
  old ``PCbuild\build_pgo.bat`` script is removed.

- Issue #25827: Add support for building with ICC to ``configure``, including
  a new ``--with-icc`` flag.

- Issue #25696: Fix installation of Python on UNIX with make -j9.

- Issue #24986: It is now possible to build Python on Windows without errors
  when external libraries are not available.

- Issue #24421: Compile Modules/_math.c once, before building extensions.
  Previously it could fail to compile properly if the math and cmath builds
  were concurrent.

- Issue #26465: Update OS X 10.5+ 32-bit-only installer to build
  and link with OpenSSL 1.0.2g.

- Issue #26268: Update Windows builds to use OpenSSL 1.0.2f.

- Issue #25136: Support Apple Xcode 7's new textual SDK stub libraries.

- Issue #24324: Do not enable unreachable code warnings when using
  gcc as the option does not work correctly in older versions of gcc
  and has been silently removed as of gcc-4.5.

Windows
-------

- Issue #27053: Updates make_zip.py to correctly generate library ZIP file.

- Issue #26268: Update the prepare_ssl.py script to handle OpenSSL releases
  that don't include the contents of the include directory (that is, 1.0.2e
  and later).

- Issue #26071: bdist_wininst created binaries fail to start and find
  32bit Python

- Issue #26073: Update the list of magic numbers in launcher

- Issue #26065: Excludes venv from library when generating embeddable
  distro.

- Issue #25022: Removed very outdated PC/example_nt/ directory.

Tools/Demos
-----------

- Issue #26799: Fix python-gdb.py: don't get C types once when the Python code
  is loaded, but get C types on demand. The C types can change if
  python-gdb.py is loaded before the Python executable. Patch written by Thomas
  Ilsche.

- Issue #26271: Fix the Freeze tool to properly use flags passed through
  configure. Patch by Daniel Shaulov.

- Issue #26489: Add dictionary unpacking support to Tools/parser/unparse.py.
  Patch by Guo Ci Teo.

- Issue #26316: Fix variable name typo in Argument Clinic.

- Issue #25440: Fix output of python-config --extension-suffix.

- Issue #25154: The pyvenv script has been deprecated in favour of
  `python3 -m venv`.

C API
-----

- Issue #26312: SystemError is now raised in all programming bugs with using
  PyArg_ParseTupleAndKeywords().  RuntimeError did raised before in some
  programming bugs.

- Issue #26198: ValueError is now raised instead of TypeError on buffer
  overflow in parsing "es#" and "et#" format units.  SystemError is now raised
  instead of TypeError on programmical error in parsing format string.


What's New in Python 3.5.1 final?
=================================

Release date: 2015-12-06

Core and Builtins
-----------------

- Issue #25709: Fixed problem with in-place string concatenation and
  utf-8 cache.

Windows
-------

- Issue #25715: Python 3.5.1 installer shows wrong upgrade path and incorrect
  logic for launcher detection.


What's New in Python 3.5.1 release candidate 1?
===============================================

Release date: 2015-11-22

Core and Builtins
-----------------

- Issue #25630: Fix a possible segfault during argument parsing in functions
  that accept filesystem paths.

- Issue #23564: Fixed a partially broken sanity check in the _posixsubprocess
  internals regarding how fds_to_pass were passed to the child.  The bug had
  no actual impact as subprocess.py already avoided it.

- Issue #25388: Fixed tokenizer crash when processing undecodable source code
  with a null byte.

- Issue #25462: The hash of the key now is calculated only once in most
  operations in C implementation of OrderedDict.

- Issue #22995: Default implementation of __reduce__ and __reduce_ex__ now
  rejects builtin types with not defined __new__.

- Issue #25555: Fix parser and AST: fill lineno and col_offset of "arg" node
  when compiling AST from Python objects.

- Issue #24802: Avoid buffer overreads when int(), float(), compile(), exec()
  and eval() are passed bytes-like objects.  These objects are not
  necessarily terminated by a null byte, but the functions assumed they were.

- Issue #24726: Fixed a crash and leaking NULL in repr() of OrderedDict that
  was mutated by direct calls of dict methods.

- Issue #25449: Iterating OrderedDict with keys with unstable hash now raises
  KeyError in C implementations as well as in Python implementation.

- Issue #25395: Fixed crash when highly nested OrderedDict structures were
  garbage collected.

- Issue #25274: sys.setrecursionlimit() now raises a RecursionError if the new
  recursion limit is too low depending at the current recursion depth. Modify
  also the "lower-water mark" formula to make it monotonic. This mark is used
  to decide when the overflowed flag of the thread state is reset.

- Issue #24402: Fix input() to prompt to the redirected stdout when
  sys.stdout.fileno() fails.

- Issue #24806: Prevent builtin types that are not allowed to be subclassed from
  being subclassed through multiple inheritance.

- Issue #24848: Fixed a number of bugs in UTF-7 decoding of misformed data.

- Issue #25280: Import trace messages emitted in verbose (-v) mode are no
  longer formatted twice.

- Issue #25003: On Solaris 11.3 or newer, os.urandom() now uses the
  getrandom() function instead of the getentropy() function. The getentropy()
  function is blocking to generate very good quality entropy, os.urandom()
  doesn't need such high-quality entropy.

- Issue #25182: The stdprinter (used as sys.stderr before the io module is
  imported at startup) now uses the backslashreplace error handler.

- Issue #25131: Make the line number and column offset of set/dict literals and
  comprehensions correspond to the opening brace.

- Issue #25150: Hide the private _Py_atomic_xxx symbols from the public
  Python.h header to fix a compilation error with OpenMP. PyThreadState_GET()
  becomes an alias to PyThreadState_Get() to avoid ABI incompatibilies.

Library
-------

- Issue #25626: Change three zlib functions to accept sizes that fit in
  Py_ssize_t, but internally cap those sizes to UINT_MAX.  This resolves a
  regression in 3.5 where GzipFile.read() failed to read chunks larger than 2
  or 4 GiB.  The change affects the zlib.Decompress.decompress() max_length
  parameter, the zlib.decompress() bufsize parameter, and the
  zlib.Decompress.flush() length parameter.

- Issue #25583: Avoid incorrect errors raised by os.makedirs(exist_ok=True)
  when the OS gives priority to errors such as EACCES over EEXIST.

- Issue #25593: Change semantics of EventLoop.stop() in asyncio.

- Issue #6973: When we know a subprocess.Popen process has died, do
  not allow the send_signal(), terminate(), or kill() methods to do
  anything as they could potentially signal a different process.

- Issue #25590: In the Readline completer, only call getattr() once per
  attribute.

- Issue #25498: Fix a crash when garbage-collecting ctypes objects created
  by wrapping a memoryview.  This was a regression made in 3.5a1.  Based
  on patch by Eryksun.

- Issue #25584: Added "escape" to the __all__ list in the glob module.

- Issue #25584: Fixed recursive glob() with patterns starting with '\*\*'.

- Issue #25446: Fix regression in smtplib's AUTH LOGIN support.

- Issue #18010: Fix the pydoc web server's module search function to handle
  exceptions from importing packages.

- Issue #25554: Got rid of circular references in regular expression parsing.

- Issue #25510: fileinput.FileInput.readline() now returns b'' instead of ''
  at the end if the FileInput was opened with binary mode.
  Patch by Ryosuke Ito.

- Issue #25503: Fixed inspect.getdoc() for inherited docstrings of properties.
  Original patch by John Mark Vandenberg.

- Issue #25515: Always use os.urandom as a source of randomness in uuid.uuid4.

- Issue #21827: Fixed textwrap.dedent() for the case when largest common
  whitespace is a substring of smallest leading whitespace.
  Based on patch by Robert Li.

- Issue #25447: The lru_cache() wrapper objects now can be copied and pickled
  (by returning the original object unchanged).

- Issue #25390: typing: Don't crash on Union[str, Pattern].

- Issue #25441: asyncio: Raise error from drain() when socket is closed.

- Issue #25410: Cleaned up and fixed minor bugs in C implementation of
  OrderedDict.

- Issue #25411: Improved Unicode support in SMTPHandler through better use of
  the email package. Thanks to user simon04 for the patch.

- Issue #25407: Remove mentions of the formatter module being removed in
  Python 3.6.

- Issue #25406: Fixed a bug in C implementation of OrderedDict.move_to_end()
  that caused segmentation fault or hang in iterating after moving several
  items to the start of ordered dict.

- Issue #25364: zipfile now works in threads disabled builds.

- Issue #25328: smtpd's SMTPChannel now correctly raises a ValueError if both
  decode_data and enable_SMTPUTF8 are set to true.

- Issue #25316: distutils raises OSError instead of DistutilsPlatformError
  when MSVC is not installed.

- Issue #25380: Fixed protocol for the STACK_GLOBAL opcode in
  pickletools.opcodes.

- Issue #23972: Updates asyncio datagram create method allowing reuseport
  and reuseaddr socket options to be set prior to binding the socket.
  Mirroring the existing asyncio create_server method the reuseaddr option
  for datagram sockets defaults to True if the O/S is 'posix' (except if the
  platform is Cygwin). Patch by Chris Laws.

- Issue #25304: Add asyncio.run_coroutine_threadsafe().  This lets you
  submit a coroutine to a loop from another thread, returning a
  concurrent.futures.Future.  By Vincent Michel.

- Issue #25232: Fix CGIRequestHandler to split the query from the URL at the
  first question mark (?) rather than the last. Patch from Xiang Zhang.

- Issue #24657: Prevent CGIRequestHandler from collapsing slashes in the
  query part of the URL as if it were a path. Patch from Xiang Zhang.

- Issue #24483: C implementation of functools.lru_cache() now calculates key's
  hash only once.

- Issue #22958: Constructor and update method of weakref.WeakValueDictionary
  now accept the self and the dict keyword arguments.

- Issue #22609: Constructor of collections.UserDict now accepts the self keyword
  argument.

- Issue #25111: Fixed comparison of traceback.FrameSummary.

- Issue #25262: Added support for BINBYTES8 opcode in Python implementation of
  unpickler.  Highest 32 bits of 64-bit size for BINUNICODE8 and BINBYTES8
  opcodes no longer silently ignored on 32-bit platforms in C implementation.

- Issue #25034: Fix string.Formatter problem with auto-numbering and
  nested format_specs. Patch by Anthon van der Neut.

- Issue #25233: Rewrite the guts of asyncio.Queue and
  asyncio.Semaphore to be more understandable and correct.

- Issue #25203: Failed readline.set_completer_delims() no longer left the
  module in inconsistent state.

- Issue #23600: Default implementation of tzinfo.fromutc() was returning
  wrong results in some cases.

- Issue #23329: Allow the ssl module to be built with older versions of
  LibreSSL.

- Prevent overflow in _Unpickler_Read.

- Issue #25047: The XML encoding declaration written by Element Tree now
  respects the letter case given by the user. This restores the ability to
  write encoding names in uppercase like "UTF-8", which worked in Python 2.

- Issue #25135: Make deque_clear() safer by emptying the deque before clearing.
  This helps avoid possible reentrancy issues.

- Issue #19143: platform module now reads Windows version from kernel32.dll to
  avoid compatibility shims.

- Issue #25092: Fix datetime.strftime() failure when errno was already set to
  EINVAL.

- Issue #23517: Fix rounding in fromtimestamp() and utcfromtimestamp() methods
  of datetime.datetime: microseconds are now rounded to nearest with ties
  going to nearest even integer (ROUND_HALF_EVEN), instead of being rounding
  towards minus infinity (ROUND_FLOOR). It's important that these methods use
  the same rounding mode than datetime.timedelta to keep the property:
  (datetime(1970,1,1) + timedelta(seconds=t)) == datetime.utcfromtimestamp(t).
  It also the rounding mode used by round(float) for example.

- Issue #25155: Fix datetime.datetime.now() and datetime.datetime.utcnow() on
  Windows to support date after year 2038. It was a regression introduced in
  Python 3.5.0.

- Issue #25108: Omitted internal frames in traceback functions print_stack(),
  format_stack(), and extract_stack() called without arguments.

- Issue #25118: Fix a regression of Python 3.5.0 in os.waitpid() on Windows.

- Issue #24684: socket.socket.getaddrinfo() now calls
  PyUnicode_AsEncodedString() instead of calling the encode() method of the
  host, to handle correctly custom string with an encode() method which doesn't
  return a byte string. The encoder of the IDNA codec is now called directly
  instead of calling the encode() method of the string.

- Issue #25060: Correctly compute stack usage of the BUILD_MAP opcode.

- Issue #24857: Comparing call_args to a long sequence now correctly returns a
  boolean result instead of raising an exception.  Patch by A Kaptur.

- Issue #23144: Make sure that HTMLParser.feed() returns all the data, even
  when convert_charrefs is True.

- Issue #24982: shutil.make_archive() with the "zip" format now adds entries
  for directories (including empty directories) in ZIP file.

- Issue #25019: Fixed a crash caused by setting non-string key of expat parser.
  Based on patch by John Leitch.

- Issue #16180: Exit pdb if file has syntax error, instead of trapping user
  in an infinite loop.  Patch by Xavier de Gaye.

- Issue #24891: Fix a race condition at Python startup if the file descriptor
  of stdin (0), stdout (1) or stderr (2) is closed while Python is creating
  sys.stdin, sys.stdout and sys.stderr objects. These attributes are now set
  to None if the creation of the object failed, instead of raising an OSError
  exception. Initial patch written by Marco Paolini.

- Issue #24992: Fix error handling and a race condition (related to garbage
  collection) in collections.OrderedDict constructor.

- Issue #24881: Fixed setting binary mode in Python implementation of FileIO
  on Windows and Cygwin.  Patch from Akira Li.

- Issue #25578: Fix (another) memory leak in SSLSocket.getpeercer().

- Issue #25530: Disable the vulnerable SSLv3 protocol by default when creating
  ssl.SSLContext.

- Issue #25569: Fix memory leak in SSLSocket.getpeercert().

- Issue #25471: Sockets returned from accept() shouldn't appear to be
  nonblocking.

- Issue #25319: When threading.Event is reinitialized, the underlying condition
  should use a regular lock rather than a recursive lock.

- Issue #21112: Fix regression in unittest.expectedFailure on subclasses.
  Patch from Berker Peksag.

- Issue #24764: cgi.FieldStorage.read_multi() now ignores the Content-Length
  header in part headers. Patch written by Peter Landry and reviewed by Pierre
  Quentel.

- Issue #24913: Fix overrun error in deque.index().
  Found by John Leitch and Bryce Darling.

- Issue #24774: Fix docstring in http.server.test. Patch from Chiu-Hsiang Hsu.

- Issue #21159: Improve message in configparser.InterpolationMissingOptionError.
  Patch from Łukasz Langa.

- Issue #20362: Honour TestCase.longMessage correctly in assertRegex.
  Patch from Ilia Kurenkov.

- Issue #23572: Fixed functools.singledispatch on classes with falsy
  metaclasses.  Patch by Ethan Furman.

- asyncio: ensure_future() now accepts awaitable objects.

IDLE
----

- Issue #15348: Stop the debugger engine (normally in a user process)
  before closing the debugger window (running in the IDLE process).
  This prevents the RuntimeErrors that were being caught and ignored.

- Issue #24455: Prevent IDLE from hanging when a) closing the shell while the
  debugger is active (15347); b) closing the debugger with the [X] button
  (15348); and c) activating the debugger when already active (24455).
  The patch by Mark Roseman does this by making two changes.
  1. Suspend and resume the gui.interaction method with the tcl vwait
  mechanism intended for this purpose (instead of root.mainloop & .quit).
  2. In gui.run, allow any existing interaction to terminate first.

- Change 'The program' to 'Your program' in an IDLE 'kill program?' message
  to make it clearer that the program referred to is the currently running
  user program, not IDLE itself.

- Issue #24750: Improve the appearance of the IDLE editor window status bar.
  Patch by Mark Roseman.

- Issue #25313: Change the handling of new built-in text color themes to better
  address the compatibility problem introduced by the addition of IDLE Dark.
  Consistently use the revised idleConf.CurrentTheme everywhere in idlelib.

- Issue #24782: Extension configuration is now a tab in the IDLE Preferences
  dialog rather than a separate dialog.  The former tabs are now a sorted
  list.  Patch by Mark Roseman.

- Issue #22726: Re-activate the config dialog help button with some content
  about the other buttons and the new IDLE Dark theme.

- Issue #24820: IDLE now has an 'IDLE Dark' built-in text color theme.
  It is more or less IDLE Classic inverted, with a cobalt blue background.
  Strings, comments, keywords, ... are still green, red, orange, ... .
  To use it with IDLEs released before November 2015, hit the
  'Save as New Custom Theme' button and enter a new name,
  such as 'Custom Dark'.  The custom theme will work with any IDLE
  release, and can be modified.

- Issue #25224: README.txt is now an idlelib index for IDLE developers and
  curious users.  The previous user content is now in the IDLE doc chapter.
  'IDLE' now means 'Integrated Development and Learning Environment'.

- Issue #24820: Users can now set breakpoint colors in
  Settings -> Custom Highlighting.  Original patch by Mark Roseman.

- Issue #24972: Inactive selection background now matches active selection
  background, as configured by users, on all systems.  Found items are now
  always highlighted on Windows.  Initial patch by Mark Roseman.

- Issue #24570: Idle: make calltip and completion boxes appear on Macs
  affected by a tk regression.  Initial patch by Mark Roseman.

- Issue #24988: Idle ScrolledList context menus (used in debugger)
  now work on Mac Aqua.  Patch by Mark Roseman.

- Issue #24801: Make right-click for context menu work on Mac Aqua.
  Patch by Mark Roseman.

- Issue #25173: Associate tkinter messageboxes with a specific widget.
  For Mac OSX, make them a 'sheet'.  Patch by Mark Roseman.

- Issue #25198: Enhance the initial html viewer now used for Idle Help.
  * Properly indent fixed-pitch text (patch by Mark Roseman).
  * Give code snippet a very Sphinx-like light blueish-gray background.
  * Re-use initial width and height set by users for shell and editor.
  * When the Table of Contents (TOC) menu is used, put the section header
  at the top of the screen.

- Issue #25225: Condense and rewrite Idle doc section on text colors.

- Issue #21995: Explain some differences between IDLE and console Python.

- Issue #22820: Explain need for *print* when running file from Idle editor.

- Issue #25224: Doc: augment Idle feature list and no-subprocess section.

- Issue #25219: Update doc for Idle command line options.
  Some were missing and notes were not correct.

- Issue #24861: Most of idlelib is private and subject to change.
  Use idleib.idle.* to start Idle. See idlelib.__init__.__doc__.

- Issue #25199: Idle: add synchronization comments for future maintainers.

- Issue #16893: Replace help.txt with help.html for Idle doc display.
  The new idlelib/help.html is rstripped Doc/build/html/library/idle.html.
  It looks better than help.txt and will better document Idle as released.
  The tkinter html viewer that works for this file was written by Mark Roseman.
  The now unused EditorWindow.HelpDialog class and helt.txt file are deprecated.

- Issue #24199: Deprecate unused idlelib.idlever with possible removal in 3.6.

- Issue #24790: Remove extraneous code (which also create 2 & 3 conflicts).

Documentation
-------------

- Issue #12067: Rewrite Comparisons section in the Expressions chapter of the
  language reference. Some of the details of comparing mixed types were
  incorrect or ambiguous. NotImplemented is only relevant at a lower level
  than the Expressions chapter. Added details of comparing range() objects,
  and default behaviour and consistency suggestions for user-defined classes.
  Patch from Andy Maier.

- Issue #24952: Clarify the default size argument of stack_size() in
  the "threading" and "_thread" modules. Patch from Mattip.

- Issue #23725: Overhaul tempfile docs. Note deprecated status of mktemp.
  Patch from Zbigniew Jędrzejewski-Szmek.

- Issue #24808: Update the types of some PyTypeObject fields.  Patch by
  Joseph Weston.

- Issue #22812: Fix unittest discovery examples.
  Patch from Pam McA'Nulty.

Tests
-----

- Issue #25449: Added tests for OrderedDict subclasses.

- Issue #25099: Make test_compileall not fail when an entry on sys.path cannot
  be written to (commonly seen in administrative installs on Windows).

- Issue #23919: Prevents assert dialogs appearing in the test suite.

- ``PCbuild\rt.bat`` now accepts an unlimited number of arguments to pass along
  to regrtest.py.  Previously there was a limit of 9.

Build
-----

- Issue #24915: Add LLVM support for PGO builds and use the test suite to
  generate the profile data. Initial patch by Alecsandru Patrascu of Intel.

- Issue #24910: Windows MSIs now have unique display names.

- Issue #24986: It is now possible to build Python on Windows without errors
  when external libraries are not available.

Windows
-------

- Issue #25450: Updates shortcuts to start Python in installation directory.

- Issue #25164: Changes default all-users install directory to match per-user
  directory.

- Issue #25143: Improves installer error messages for unsupported platforms.

- Issue #25163: Display correct directory in installer when using non-default
  settings.

- Issue #25361: Disables use of SSE2 instructions in Windows 32-bit build

- Issue #25089: Adds logging to installer for case where launcher is not
  selected on upgrade.

- Issue #25165: Windows uninstallation should not remove launcher if other
  versions remain

- Issue #25112: py.exe launcher is missing icons

- Issue #25102: Windows installer does not precompile for -O or -OO.

- Issue #25081: Makes Back button in installer go back to upgrade page when
  upgrading.

- Issue #25091: Increases font size of the installer.

- Issue #25126: Clarifies that the non-web installer will download some
  components.

- Issue #25213: Restores requestedExecutionLevel to manifest to disable
  UAC virtualization.

- Issue #25022: Removed very outdated PC/example_nt/ directory.

Tools/Demos
-----------

- Issue #25440: Fix output of python-config --extension-suffix.


What's New in Python 3.5.0 final?
=================================

Release date: 2015-09-13

Build
-----

- Issue #25071: Windows installer should not require TargetDir
  parameter when installing quietly.


What's New in Python 3.5.0 release candidate 4?
===============================================

Release date: 2015-09-09

Library
-------

- Issue #25029: Fixes MemoryError in test_strptime.

Build
-----

- Issue #25027: Reverts partial-static build options and adds
  vcruntime140.dll to Windows installation.


What's New in Python 3.5.0 release candidate 3?
===============================================

Release date: 2015-09-07

Core and Builtins
-----------------

- Issue #24305: Prevent import subsystem stack frames from being counted
  by the warnings.warn(stacklevel=) parameter.

- Issue #24912: Prevent __class__ assignment to immutable built-in objects.

- Issue #24975: Fix AST compilation for PEP 448 syntax.

Library
-------

- Issue #24917: time_strftime() buffer over-read.

- Issue #24748: To resolve a compatibility problem found with py2exe and
  pywin32, imp.load_dynamic() once again ignores previously loaded modules
  to support Python modules replacing themselves with extension modules.
  Patch by Petr Viktorin.

- Issue #24635: Fixed a bug in typing.py where isinstance([], typing.Iterable)
  would return True once, then False on subsequent calls.

- Issue #24989: Fixed buffer overread in BytesIO.readline() if a position is
  set beyond size.  Based on patch by John Leitch.

- Issue #24913: Fix overrun error in deque.index().
  Found by John Leitch and Bryce Darling.


What's New in Python 3.5.0 release candidate 2?
===============================================

Release date: 2015-08-25

Core and Builtins
-----------------

- Issue #24769: Interpreter now starts properly when dynamic loading
  is disabled.  Patch by Petr Viktorin.

- Issue #21167: NAN operations are now handled correctly when python is
  compiled with ICC even if -fp-model strict is not specified.

- Issue #24492: A "package" lacking a __name__ attribute when trying to perform
  a ``from .. import ...`` statement will trigger an ImportError instead of an
  AttributeError.

Library
-------

- Issue #24847: Removes vcruntime140.dll dependency from Tcl/Tk.

- Issue #24839: platform._syscmd_ver raises DeprecationWarning

- Issue #24867: Fix Task.get_stack() for 'async def' coroutines


What's New in Python 3.5.0 release candidate 1?
===============================================

Release date: 2015-08-09

Core and Builtins
-----------------

- Issue #24667: Resize odict in all cases that the underlying dict resizes.

Library
-------

- Issue #24824: Signatures of codecs.encode() and codecs.decode() now are
  compatible with pydoc.

- Issue #24634: Importing uuid should not try to load libc on Windows

- Issue #24798: _msvccompiler.py doesn't properly support manifests

- Issue #4395: Better testing and documentation of binary operators.
  Patch by Martin Panter.

- Issue #23973: Update typing.py from GitHub repo.

- Issue #23004: mock_open() now reads binary data correctly when the type of
  read_data is bytes.  Initial patch by Aaron Hill.

- Issue #23888: Handle fractional time in cookie expiry. Patch by ssh.

- Issue #23652: Make it possible to compile the select module against the
  libc headers from the Linux Standard Base, which do not include some
  EPOLL macros.  Patch by Matt Frank.

- Issue #22932: Fix timezones in email.utils.formatdate.
  Patch from Dmitry Shachnev.

- Issue #23779: imaplib raises TypeError if authenticator tries to abort.
  Patch from Craig Holmquist.

- Issue #23319: Fix ctypes.BigEndianStructure, swap correctly bytes. Patch
  written by Matthieu Gautier.

- Issue #23254: Document how to close the TCPServer listening socket.
  Patch from Martin Panter.

- Issue #19450: Update Windows and OS X installer builds to use SQLite 3.8.11.

- Issue #17527: Add PATCH to wsgiref.validator. Patch from Luca Sbardella.

- Issue #24791: Fix grammar regression for call syntax: 'g(\*a or b)'.

IDLE
----

- Issue #23672: Allow Idle to edit and run files with astral chars in name.
  Patch by Mohd Sanad Zaki Rizvi.

- Issue #24745: Idle editor default font. Switch from Courier to
  platform-sensitive TkFixedFont.  This should not affect current customized
  font selections.  If there is a problem, edit $HOME/.idlerc/config-main.cfg
  and remove 'fontxxx' entries from [Editor Window].  Patch by Mark Roseman.

- Issue #21192: Idle editor. When a file is run, put its name in the restart bar.
  Do not print false prompts. Original patch by Adnan Umer.

- Issue #13884: Idle menus. Remove tearoff lines. Patch by Roger Serwy.

Documentation
-------------

- Issue #24129: Clarify the reference documentation for name resolution.
  This includes removing the assumption that readers will be familiar with the
  name resolution scheme Python used prior to the introduction of lexical
  scoping for function namespaces. Patch by Ivan Levkivskyi.

- Issue #20769: Improve reload() docs. Patch by Dorian Pula.

- Issue #23589: Remove duplicate sentence from the FAQ.  Patch by Yongzhi Pan.

- Issue #24729: Correct IO tutorial to match implementation regarding
  encoding parameter to open function.

Tests
-----

- Issue #24751: When running regrtest with the ``-w`` command line option,
  a test run is no longer marked as a failure if all tests succeed when
  re-run.


What's New in Python 3.5.0 beta 4?
==================================

Release date: 2015-07-26

Core and Builtins
-----------------

- Issue #23573: Restored optimization of bytes.rfind() and bytearray.rfind()
  for single-byte argument on Linux.

- Issue #24569: Make PEP 448 dictionary evaluation more consistent.

- Issue #24583: Fix crash when set is mutated while being updated.

- Issue #24407: Fix crash when dict is mutated while being updated.

- Issue #24619: New approach for tokenizing async/await. As a consequence,
  it is now possible to have one-line 'async def foo(): await ..' functions.

- Issue #24687: Plug refleak on SyntaxError in function parameters
  annotations.

- Issue #15944: memoryview: Allow arbitrary formats when casting to bytes.
  Patch by Martin Panter.

Library
-------

- Issue #23441: rcompleter now prints a tab character instead of displaying
  possible completions for an empty word.  Initial patch by Martin Sekera.

- Issue #24683: Fixed crashes in _json functions called with arguments of
  inappropriate type.

- Issue #21697: shutil.copytree() now correctly handles symbolic links that
  point to directories.  Patch by Eduardo Seabra and Thomas Kluyver.

- Issue #14373: Fixed segmentation fault when gc.collect() is called during
  constructing lru_cache (C implementation).

- Issue #24695: Fix a regression in traceback.print_exception().  If
  exc_traceback is None we shouldn't print a traceback header like described
  in the documentation.

- Issue #24620: Random.setstate() now validates the value of state last element.

- Issue #22485: Fixed an issue that caused `inspect.getsource` to return
  incorrect results on nested functions.

- Issue #22153: Improve unittest docs. Patch from Martin Panter and evilzero.

- Issue #24580: Symbolic group references to open group in re patterns now are
  explicitly forbidden as well as numeric group references.

- Issue #24206: Fixed __eq__ and __ne__ methods of inspect classes.

- Issue #24631: Fixed regression in the timeit module with multiline setup.

- Issue #24608: chunk.Chunk.read() now always returns bytes, not str.

- Issue #18684: Fixed reading out of the buffer in the re module.

- Issue #24259: tarfile now raises a ReadError if an archive is truncated
  inside a data segment.

- Issue #15014: SMTP.auth() and SMTP.login() now support RFC 4954's optional
  initial-response argument to the SMTP AUTH command.

- Issue #6549: Remove hyphen from ttk.Style().element options.  Only return result
  from ttk.Style().configure if a result was generated or a query submitted.

- Issue #24669: Fix inspect.getsource() for 'async def' functions.
  Patch by Kai Groner.

- Issue #24688: ast.get_docstring() for 'async def' functions.

Build
-----

- Issue #24603: Update Windows builds and OS X 10.5 installer to use OpenSSL
  1.0.2d.

What's New in Python 3.5.0 beta 3?
==================================

Release date: 2015-07-05

Core and Builtins
-----------------

- Issue #24467: Fixed possible buffer over-read in bytearray. The bytearray
  object now always allocates place for trailing null byte and it's buffer now
  is always null-terminated.

- Upgrade to Unicode 8.0.0.

- Issue #24345: Add Py_tp_finalize slot for the stable ABI.

- Issue #24400: Introduce a distinct type for PEP 492 coroutines; add
  types.CoroutineType, inspect.getcoroutinestate, inspect.getcoroutinelocals;
  coroutines no longer use CO_GENERATOR flag; sys.set_coroutine_wrapper
  works only for 'async def' coroutines; inspect.iscoroutine no longer
  uses collections.abc.Coroutine, it's intended to test for pure 'async def'
  coroutines only; add new opcode: GET_YIELD_FROM_ITER; fix generators wrapper
  used in types.coroutine to be instance of collections.abc.Generator;
  collections.abc.Awaitable and collections.abc.Coroutine can no longer
  be used to detect generator-based coroutines--use inspect.isawaitable
  instead.

- Issue #24450: Add gi_yieldfrom to generators and cr_await to coroutines.
  Contributed by Benno Leslie and Yury Selivanov.

- Issue #19235: Add new RecursionError exception. Patch by Georg Brandl.

Library
-------

- Issue #21750: mock_open.read_data can now be read from each instance, as it
  could in Python 3.3.

- Issue #24552: Fix use after free in an error case of the _pickle module.

- Issue #24514: tarfile now tolerates number fields consisting of only
  whitespace.

- Issue #19176: Fixed doctype() related bugs in C implementation of ElementTree.
  A deprecation warning no longer issued by XMLParser subclass with default
  doctype() method.  Direct call of doctype() now issues a warning.  Parser's
  doctype() now is not called if target's doctype() is called.  Based on patch
  by Martin Panter.

- Issue #20387: Restore semantic round-trip correctness in tokenize/untokenize
  for tab-indented blocks.

- Issue #24456: Fixed possible buffer over-read in adpcm2lin() and lin2adpcm()
  functions of the audioop module.

- Issue #24336: The contextmanager decorator now works with functions with
  keyword arguments called "func" and "self".  Patch by Martin Panter.

- Issue #24522: Fix possible integer overflow in json accelerator module.

- Issue #24489: ensure a previously set C errno doesn't disturb cmath.polar().

- Issue #24408: Fixed AttributeError in measure() and metrics() methods of
  tkinter.Font.

- Issue #14373: C implementation of functools.lru_cache() now can be used with
  methods.

- Issue #24347: Set KeyError if PyDict_GetItemWithError returns NULL.

- Issue #24348: Drop superfluous incref/decref.

- Issue #24359: Check for changed OrderedDict size during iteration.

- Issue #24368: Support keyword arguments in OrderedDict methods.

- Issue #24362: Simplify the C OrderedDict fast nodes resize logic.

- Issue #24377: Fix a ref leak in OrderedDict.__repr__.

- Issue #24369: Defend against key-changes during iteration.

Tests
-----

- Issue #24373: _testmultiphase and xxlimited now use tp_traverse and
  tp_finalize to avoid reference leaks encountered when combining tp_dealloc
  with PyType_FromSpec (see issue #16690 for details)

Documentation
-------------

- Issue #24458: Update documentation to cover multi-phase initialization for
  extension modules (PEP 489). Patch by Petr Viktorin.

- Issue #24351: Clarify what is meant by "identifier" in the context of
  string.Template instances.

Build
-----

- Issue #24432: Update Windows builds and OS X 10.5 installer to use OpenSSL
  1.0.2c.


What's New in Python 3.5.0 beta 2?
==================================

Release date: 2015-05-31

Core and Builtins
-----------------

- Issue #24284: The startswith and endswith methods of the str class no longer
  return True when finding the empty string and the indexes are completely out
  of range.

- Issue #24115: Update uses of PyObject_IsTrue(), PyObject_Not(),
  PyObject_IsInstance(), PyObject_RichCompareBool() and _PyDict_Contains()
  to check for and handle errors correctly.

- Issue #24328: Fix importing one character extension modules.

- Issue #11205: In dictionary displays, evaluate the key before the value.

- Issue #24285: Fixed regression that prevented importing extension modules
  from inside packages. Patch by Petr Viktorin.

Library
-------

- Issue #23247: Fix a crash in the StreamWriter.reset() of CJK codecs.

- Issue #24270: Add math.isclose() and cmath.isclose() functions as per PEP 485.
  Contributed by Chris Barker and Tal Einat.

- Issue #5633: Fixed timeit when the statement is a string and the setup is not.

- Issue #24326: Fixed audioop.ratecv() with non-default weightB argument.
  Original patch by David Moore.

- Issue #16991: Add a C implementation of OrderedDict.

- Issue #23934: Fix inspect.signature to fail correctly for builtin types
  lacking signature information.  Initial patch by James Powell.


What's New in Python 3.5.0 beta 1?
==================================

Release date: 2015-05-24

Core and Builtins
-----------------

- Issue #24276: Fixed optimization of property descriptor getter.

- Issue #24268: PEP 489: Multi-phase extension module initialization.
  Patch by Petr Viktorin.

- Issue #23359: Optimize set object internals by specializing the
  hash table search into a lookup function and an insert function.

- Issue #23955: Add pyvenv.cfg option to suppress registry/environment
  lookup for generating sys.path on Windows.

- Issue #24257: Fixed system error in the comparison of faked
  types.SimpleNamespace.

- Issue #22939: Fixed integer overflow in iterator object.  Patch by
  Clement Rouault.

- Issue #23985: Fix a possible buffer overrun when deleting a slice from
  the front of a bytearray and then appending some other bytes data.

- Issue #24102: Fixed exception type checking in standard error handlers.

- Issue #15027: The UTF-32 encoder is now 3x to 7x faster.

- Issue #23290: Optimize set_merge() for cases where the target is empty.
  (Contributed by Serhiy Storchaka.)

- Issue #2292: PEP 448: Additional Unpacking Generalizations.

- Issue #24096: Make warnings.warn_explicit more robust against mutation of the
  warnings.filters list.

- Issue #23996: Avoid a crash when a delegated generator raises an
  unnormalized StopIteration exception.  Patch by Stefan Behnel.

- Issue #23910: Optimize property() getter calls.  Patch by Joe Jevnik.

- Issue #23911: Move path-based importlib bootstrap code to a separate
  frozen module.

- Issue #24192: Fix namespace package imports.

- Issue #24022: Fix tokenizer crash when processing undecodable source code.

- Issue #9951: Added a hex() method to bytes, bytearray, and memoryview.

- Issue #22906: PEP 479: Change StopIteration handling inside generators.

- Issue #24017: PEP 492: Coroutines with async and await syntax.

Library
-------

- Issue #14373: Added C implementation of functools.lru_cache().  Based on
  patches by Matt Joiner and Alexey Kachayev.

- Issue #24230: The tempfile module now accepts bytes for prefix, suffix and dir
  parameters and returns bytes in such situations (matching the os module APIs).

- Issue #22189: collections.UserString now supports __getnewargs__(),
  __rmod__(), casefold(), format_map(), isprintable(), and maketrans().
  Patch by Joe Jevnik.

- Issue #24244: Prevents termination when an invalid format string is
  encountered on Windows in strftime.

- Issue #23973: PEP 484: Add the typing module.

- Issue #23086: The collections.abc.Sequence() abstract base class added
  *start* and *stop* parameters to the index() mixin.
  Patch by Devin Jeanpierre.

- Issue #20035: Replaced the ``tkinter._fix`` module used for setting up the
  Tcl/Tk environment on Windows with a private function in the ``_tkinter``
  module that makes no permanent changes to the environment.

- Issue #24257: Fixed segmentation fault in sqlite3.Row constructor with faked
  cursor type.

- Issue #15836: assertRaises(), assertRaisesRegex(), assertWarns() and
  assertWarnsRegex() assertments now check the type of the first argument
  to prevent possible user error.  Based on patch by Daniel Wagner-Hall.

- Issue #9858: Add missing method stubs to _io.RawIOBase.  Patch by Laura
  Rupprecht.

- Issue #22955: attrgetter, itemgetter and methodcaller objects in the operator
  module now support pickling.  Added readable and evaluable repr for these
  objects.  Based on patch by Josh Rosenberg.

- Issue #22107: tempfile.gettempdir() and tempfile.mkdtemp() now try again
  when a directory with the chosen name already exists on Windows as well as
  on Unix.  tempfile.mkstemp() now fails early if parent directory is not
  valid (not exists or is a file) on Windows.

- Issue #23780: Improved error message in os.path.join() with single argument.

- Issue #6598: Increased time precision and random number range in
  email.utils.make_msgid() to strengthen the uniqueness of the message ID.

- Issue #24091: Fixed various crashes in corner cases in C implementation of
  ElementTree.

- Issue #21931: msilib.FCICreate() now raises TypeError in the case of a bad
  argument instead of a ValueError with a bogus FCI error number.
  Patch by Jeffrey Armstrong.

- Issue #13866: *quote_via* argument added to urllib.parse.urlencode.

- Issue #20098: New mangle_from policy option for email, default True
  for compat32, but False for all other policies.

- Issue #24211: The email library now supports RFC 6532: it can generate
  headers using utf-8 instead of encoded words.

- Issue #16314: Added support for the LZMA compression in distutils.

- Issue #21804: poplib now supports RFC 6856 (UTF8).

- Issue #18682: Optimized pprint functions for builtin scalar types.

- Issue #22027: smtplib now supports RFC 6531 (SMTPUTF8).

- Issue #23488: Random generator objects now consume 2x less memory on 64-bit.

- Issue #1322: platform.dist() and platform.linux_distribution() functions are
  now deprecated.  Initial patch by Vajrasky Kok.

- Issue #22486: Added the math.gcd() function.  The fractions.gcd() function now is
  deprecated.  Based on patch by Mark Dickinson.

- Issue #24064: Property() docstrings are now writeable.
  (Patch by Berker Peksag.)

- Issue #22681: Added support for the koi8_t encoding.

- Issue #22682: Added support for the kz1048 encoding.

- Issue #23796: peek and read1 methods of BufferedReader now raise ValueError
  if they called on a closed object. Patch by John Hergenroeder.

- Issue #21795: smtpd now supports the 8BITMIME extension whenever
  the new *decode_data* constructor argument is set to False.

- Issue #24155: optimize heapq.heapify() for better cache performance
  when heapifying large lists.

- Issue #21800: imaplib now supports RFC 5161 (enable), RFC 6855
  (utf8/internationalized email) and automatically encodes non-ASCII
  usernames and passwords to UTF8.

- Issue #20274: When calling a _sqlite.Connection, it now complains if passed
  any keyword arguments.  Previously it silently ignored them.

- Issue #20274: Remove ignored and erroneous "kwargs" parameters from three
  METH_VARARGS methods on _sqlite.Connection.

- Issue #24134: assertRaises(), assertRaisesRegex(), assertWarns() and
  assertWarnsRegex() checks now emits a deprecation warning when callable is
  None or keyword arguments except msg is passed in the context manager mode.

- Issue #24018: Add a collections.abc.Generator abstract base class.
  Contributed by Stefan Behnel.

- Issue #23880: Tkinter's getint() and getdouble() now support Tcl_Obj.
  Tkinter's getdouble() now supports any numbers (in particular int).

- Issue #22619: Added negative limit support in the traceback module.
  Based on patch by Dmitry Kazakov.

- Issue #24094: Fix possible crash in json.encode with poorly behaved dict
  subclasses.

- Issue #9246: On POSIX, os.getcwd() now supports paths longer than 1025 bytes.
  Patch written by William Orr.

- Issue #17445: add difflib.diff_bytes() to support comparison of
  byte strings (fixes a regression from Python 2).

- Issue #23917: Fall back to sequential compilation when ProcessPoolExecutor
  doesn't exist.  Patch by Claudiu Popa.

- Issue #23008: Fixed resolving attributes with boolean value is False in pydoc.

- Fix asyncio issue 235: LifoQueue and PriorityQueue's put didn't
  increment unfinished tasks (this bug was introduced when
  JoinableQueue was merged with Queue).

- Issue #23908: os functions now reject paths with embedded null character
  on Windows instead of silently truncating them.

- Issue #23728: binascii.crc_hqx() could return an integer outside of the range
  0-0xffff for empty data.

- Issue #23887: urllib.error.HTTPError now has a proper repr() representation.
  Patch by Berker Peksag.

- asyncio: New event loop APIs: set_task_factory() and get_task_factory().

- asyncio: async() function is deprecated in favour of ensure_future().

- Issue #24178: asyncio.Lock, Condition, Semaphore, and BoundedSemaphore
  support new 'async with' syntax.  Contributed by Yury Selivanov.

- Issue #24179: Support 'async for' for asyncio.StreamReader.
  Contributed by Yury Selivanov.

- Issue #24184: Add AsyncIterator and AsyncIterable ABCs to
  collections.abc.  Contributed by Yury Selivanov.

- Issue #22547: Implement informative __repr__ for inspect.BoundArguments.
  Contributed by Yury Selivanov.

- Issue #24190: Implement inspect.BoundArgument.apply_defaults() method.
  Contributed by Yury Selivanov.

- Issue #20691: Add 'follow_wrapped' argument to
  inspect.Signature.from_callable() and inspect.signature().
  Contributed by Yury Selivanov.

- Issue #24248: Deprecate inspect.Signature.from_function() and
  inspect.Signature.from_builtin().

- Issue #23898: Fix inspect.classify_class_attrs() to support attributes
  with overloaded __eq__ and __bool__.  Patch by Mike Bayer.

- Issue #24298: Fix inspect.signature() to correctly unwrap wrappers
  around bound methods.

IDLE
----

- Issue #23184: remove unused names and imports in idlelib.
  Initial patch by Al Sweigart.

Tests
-----

- Issue #21520: test_zipfile no longer fails if the word 'bad' appears
  anywhere in the name of the current directory.

- Issue #9517: Move script_helper into the support package.
  Patch by Christie Wilson.

Documentation
-------------

- Issue #22155: Add File Handlers subsection with createfilehandler to tkinter
  doc.  Remove obsolete example from FAQ.  Patch by Martin Panter.

- Issue #24029: Document the name binding behavior for submodule imports.

- Issue #24077: Fix typo in man page for -I command option: -s, not -S

Tools/Demos
-----------

- Issue #24000: Improved Argument Clinic's mapping of converters to legacy
  "format units".  Updated the documentation to match.

- Issue #24001: Argument Clinic converters now use accept={type}
  instead of types={'type'} to specify the types the converter accepts.

- Issue #23330: h2py now supports arbitrary filenames in #include.

- Issue #24031: make patchcheck now supports git checkouts, too.


What's New in Python 3.5.0 alpha 4?
===================================

Release date: 2015-04-19

Core and Builtins
-----------------

- Issue #22980: Under Linux, GNU/KFreeBSD and the Hurd, C extensions now include
  the architecture triplet in the extension name, to make it easy to test builds
  for different ABIs in the same working tree.  Under OS X, the extension name
  now includes PEP 3149-style information.

- Issue #22631: Added Linux-specific socket constant CAN_RAW_FD_FRAMES.
  Patch courtesy of Joe Jevnik.

- Issue #23731: Implement PEP 488: removal of .pyo files.

- Issue #23726: Don't enable GC for user subclasses of non-GC types that
  don't add any new fields.  Patch by Eugene Toder.

- Issue #23309: Avoid a deadlock at shutdown if a daemon thread is aborted
  while it is holding a lock to a buffered I/O object, and the main thread
  tries to use the same I/O object (typically stdout or stderr).  A fatal
  error is emitted instead.

- Issue #22977: Fixed formatting Windows error messages on Wine.
  Patch by Martin Panter.

- Issue #23466: %c, %o, %x, and %X in bytes formatting now raise TypeError on
  non-integer input.

- Issue #24044: Fix possible null pointer dereference in list.sort in out of
  memory conditions.

- Issue #21354: PyCFunction_New function is exposed by python DLL again.

Library
-------

- Issue #23840: tokenize.open() now closes the temporary binary file on error
  to fix a resource warning.

- Issue #16914: new debuglevel 2 in smtplib adds timestamps to debug output.

- Issue #7159: urllib.request now supports sending auth credentials
  automatically after the first 401.  This enhancement is a superset of the
  enhancement from issue #19494 and supersedes that change.

- Issue #23703: Fix a regression in urljoin() introduced in 901e4e52b20a.
  Patch by Demian Brecht.

- Issue #4254: Adds _curses.update_lines_cols().  Patch by Arnon Yaari

- Issue #19933: Provide default argument for ndigits in round. Patch by
  Vajrasky Kok.

- Issue #23193: Add a numeric_owner parameter to
  tarfile.TarFile.extract and tarfile.TarFile.extractall. Patch by
  Michael Vogt and Eric Smith.

- Issue #23342: Add a subprocess.run() function than returns a CalledProcess
  instance for a more consistent API than the existing call* functions.

- Issue #21217: inspect.getsourcelines() now tries to compute the start and end
  lines from the code object, fixing an issue when a lambda function is used as
  decorator argument. Patch by Thomas Ballinger and Allison Kaptur.

- Issue #24521: Fix possible integer overflows in the pickle module.

- Issue #22931: Allow '[' and ']' in cookie values.

- The keywords attribute of functools.partial is now always a dictionary.

- Issue #23811: Add missing newline to the PyCompileError error message.
  Patch by Alex Shkop.

- Issue #21116: Avoid blowing memory when allocating a multiprocessing shared
  array that's larger than 50% of the available RAM.  Patch by Médéric Boquien.

- Issue #22982: Improve BOM handling when seeking to multiple positions of
  a writable text file.

- Issue #23464: Removed deprecated asyncio JoinableQueue.

- Issue #23529: Limit the size of decompressed data when reading from
  GzipFile, BZ2File or LZMAFile.  This defeats denial of service attacks
  using compressed bombs (i.e. compressed payloads which decompress to a huge
  size).  Patch by Martin Panter and Nikolaus Rath.

- Issue #21859: Added Python implementation of io.FileIO.

- Issue #23865: close() methods in multiple modules now are idempotent and more
  robust at shutdown. If they need to release multiple resources, all are
  released even if errors occur.

- Issue #23400: Raise same exception on both Python 2 and 3 if sem_open is not
  available.  Patch by Davin Potts.

- Issue #10838: The subprocess now module includes SubprocessError and
  TimeoutError in its list of exported names for the users wild enough
  to use ``from subprocess import *``.

- Issue #23411: Added DefragResult, ParseResult, SplitResult, DefragResultBytes,
  ParseResultBytes, and SplitResultBytes to urllib.parse.__all__.
  Patch by Martin Panter.

- Issue #23881: urllib.request.ftpwrapper constructor now closes the socket if
  the FTP connection failed to fix a ResourceWarning.

- Issue #23853: :meth:`socket.socket.sendall` does no more reset the socket
  timeout each time data is sent successfully. The socket timeout is now the
  maximum total duration to send all data.

- Issue #22721: An order of multiline pprint output of set or dict containing
  orderable and non-orderable elements no longer depends on iteration order of
  set or dict.

- Issue #15133: _tkinter.tkapp.getboolean() now supports Tcl_Obj and always
  returns bool.  tkinter.BooleanVar now validates input values (accepted bool,
  int, str, and Tcl_Obj).  tkinter.BooleanVar.get() now always returns bool.

- Issue #10590: xml.sax.parseString() now supports string argument.

- Issue #23338: Fixed formatting ctypes error messages on Cygwin.
  Patch by Makoto Kato.

- Issue #15582: inspect.getdoc() now follows inheritance chains.

- Issue #2175: SAX parsers now support a character stream of InputSource object.

- Issue #16840: Tkinter now supports 64-bit integers added in Tcl 8.4 and
  arbitrary precision integers added in Tcl 8.5.

- Issue #23834: Fix socket.sendto(), use the C Py_ssize_t type to store the
  result of sendto() instead of the C int type.

- Issue #23618: :meth:`socket.socket.connect` now waits until the connection
  completes instead of raising :exc:`InterruptedError` if the connection is
  interrupted by signals, signal handlers don't raise an exception and the
  socket is blocking or has a timeout. :meth:`socket.socket.connect` still
  raise :exc:`InterruptedError` for non-blocking sockets.

- Issue #21526: Tkinter now supports new boolean type in Tcl 8.5.

- Issue #23836: Fix the faulthandler module to handle reentrant calls to
  its signal handlers.

- Issue #23838: linecache now clears the cache and returns an empty result on
  MemoryError.

- Issue #10395: Added os.path.commonpath(). Implemented in posixpath and ntpath.
  Based on patch by Rafik Draoui.

- Issue #23611: Serializing more "lookupable" objects (such as unbound methods
  or nested classes) now are supported with pickle protocols < 4.

- Issue #13583: sqlite3.Row now supports slice indexing.

- Issue #18473: Fixed 2to3 and 3to2 compatible pickle mappings.  Fixed
  ambigious reverse mappings.  Added many new mappings.  Import mapping is no
  longer applied to modules already mapped with full name mapping.

- Issue #23485: select.select() is now retried automatically with the
  recomputed timeout when interrupted by a signal, except if the signal handler
  raises an exception. This change is part of the PEP 475.

- Issue #23752: When built from an existing file descriptor, io.FileIO() now
  only calls fstat() once. Before fstat() was called twice, which was not
  necessary.

- Issue #23704: collections.deque() objects now support __add__, __mul__, and
  __imul__().

- Issue #23171: csv.Writer.writerow() now supports arbitrary iterables.

- Issue #23745: The new email header parser now handles duplicate MIME
  parameter names without error, similar to how get_param behaves.

- Issue #22117: Fix os.utime(), it now rounds the timestamp towards minus
  infinity (-inf) instead of rounding towards zero.

- Issue #23310: Fix MagicMock's initializer to work with __methods__, just
  like configure_mock().  Patch by Kasia Jachim.

Build
-----

- Issue #23817: FreeBSD now uses "1.0" in the SOVERSION as other operating
  systems, instead of just "1".

- Issue #23501: Argument Clinic now generates code into separate files by default.

Tests
-----

- Issue #23799: Added test.support.start_threads() for running and
  cleaning up multiple threads.

- Issue #22390: test.regrtest now emits a warning if temporary files or
  directories are left after running a test.

Tools/Demos
-----------

- Issue #18128: pygettext now uses standard +NNNN format in the
  POT-Creation-Date header.

- Issue #23935: Argument Clinic's understanding of format units
  accepting bytes, bytearrays, and buffers is now consistent with
  both the documentation and the implementation.

- Issue #23944: Argument Clinic now wraps long impl prototypes at column 78.

- Issue #20586: Argument Clinic now ensures that functions without docstrings
  have signatures.

- Issue #23492: Argument Clinic now generates argument parsing code with
  PyArg_Parse instead of PyArg_ParseTuple if possible.

- Issue #23500: Argument Clinic is now smarter about generating the "#ifndef"
  (empty) definition of the methoddef macro: it's only generated once, even
  if Argument Clinic processes the same symbol multiple times, and it's emitted
  at the end of all processing rather than immediately after the first use.

C API
-----

- Issue #23998: PyImport_ReInitLock() now checks for lock allocation error


What's New in Python 3.5.0 alpha 3?
===================================

Release date: 2015-03-28

Core and Builtins
-----------------

- Issue #23573: Increased performance of string search operations (str.find,
  str.index, str.count, the in operator, str.split, str.partition) with
  arguments of different kinds (UCS1, UCS2, UCS4).

- Issue #23753: Python doesn't support anymore platforms without stat() or
  fstat(), these functions are always required.

- Issue #23681: The -b option now affects comparisons of bytes with int.

- Issue #23632: Memoryviews now allow tuple indexing (including for
  multi-dimensional memoryviews).

- Issue #23192: Fixed generator lambdas.  Patch by Bruno Cauet.

- Issue #23629: Fix the default __sizeof__ implementation for variable-sized
  objects.

Library
-------

- Issue #14260: The groupindex attribute of regular expression pattern object
  now is non-modifiable mapping.

- Issue #23792: Ignore KeyboardInterrupt when the pydoc pager is active.
  This mimics the behavior of the standard unix pagers, and prevents
  pipepager from shutting down while the pager itself is still running.

- Issue #23775: pprint() of OrderedDict now outputs the same representation
  as repr().

- Issue #23765: Removed IsBadStringPtr calls in ctypes

- Issue #22364: Improved some re error messages using regex for hints.

- Issue #23742: ntpath.expandvars() no longer loses unbalanced single quotes.

- Issue #21717: The zipfile.ZipFile.open function now supports 'x' (exclusive
  creation) mode.

- Issue #21802: The reader in BufferedRWPair now is closed even when closing
  writer failed in BufferedRWPair.close().

- Issue #23622: Unknown escapes in regular expressions that consist of ``'\'``
  and an ASCII letter now raise a deprecation warning and will be forbidden
  in Python 3.6.

- Issue #23671: string.Template now allows specifying the "self" parameter as
  a keyword argument.  string.Formatter now allows specifying the "self" and
  the "format_string" parameters as keyword arguments.

- Issue #23502: The pprint module now supports mapping proxies.

- Issue #17530: pprint now wraps long bytes objects and bytearrays.

- Issue #22687: Fixed some corner cases in breaking words in tetxtwrap.
  Got rid of quadratic complexity in breaking long words.

- Issue #4727: The copy module now uses pickle protocol 4 (PEP 3154) and
  supports copying of instances of classes whose __new__ method takes
  keyword-only arguments.

- Issue #23491: Added a zipapp module to support creating executable zip
  file archives of Python code. Registered ".pyz" and ".pyzw" extensions
  on Windows for these archives (PEP 441).

- Issue #23657: Avoid explicit checks for str in zipapp, adding support
  for pathlib.Path objects as arguments.

- Issue #23688: Added support of arbitrary bytes-like objects and avoided
  unnecessary copying of memoryview in gzip.GzipFile.write().
  Original patch by Wolfgang Maier.

- Issue #23252: Added support for writing ZIP files to unseekable streams.

- Issue #23647: Increase impalib's MAXLINE to accommodate modern mailbox sizes.

- Issue #23539: If body is None, http.client.HTTPConnection.request now sets
  Content-Length to 0 for PUT, POST, and PATCH headers to avoid 411 errors from
  some web servers.

- Issue #22351: The nntplib.NNTP constructor no longer leaves the connection
  and socket open until the garbage collector cleans them up.  Patch by
  Martin Panter.

- Issue #23704: collections.deque() objects now support methods for index(),
  insert(), and copy().  This allows deques to be registered as a
  MutableSequence and it improves their substitutability for lists.

- Issue #23715: :func:`signal.sigwaitinfo` and :func:`signal.sigtimedwait` are
  now retried when interrupted by a signal not in the *sigset* parameter, if
  the signal handler does not raise an exception. signal.sigtimedwait()
  recomputes the timeout with a monotonic clock when it is retried.

- Issue #23001: Few functions in modules mmap, ossaudiodev, socket, ssl, and
  codecs, that accepted only read-only bytes-like object now accept writable
  bytes-like object too.

- Issue #23646: If time.sleep() is interrupted by a signal, the sleep is now
  retried with the recomputed delay, except if the signal handler raises an
  exception (PEP 475).

- Issue #23136: _strptime now uniformly handles all days in week 0, including
  Dec 30 of previous year.  Based on patch by Jim Carroll.

- Issue #23700: Iterator of NamedTemporaryFile now keeps a reference to
  NamedTemporaryFile instance.  Patch by Bohuslav Kabrda.

- Issue #22903: The fake test case created by unittest.loader when it fails
  importing a test module is now picklable.

- Issue #22181: On Linux, os.urandom() now uses the new getrandom() syscall if
  available, syscall introduced in the Linux kernel 3.17. It is more reliable
  and more secure, because it avoids the need of a file descriptor and waits
  until the kernel has enough entropy.

- Issue #2211: Updated the implementation of the http.cookies.Morsel class.
  Setting attributes key, value and coded_value directly now is deprecated.
  update() and setdefault() now transform and check keys.  Comparing for
  equality now takes into account attributes key, value and coded_value.
  copy() now returns a Morsel, not a dict.  repr() now contains all attributes.
  Optimized checking keys and quoting values.  Added new tests.
  Original patch by Demian Brecht.

- Issue #18983: Allow selection of output units in timeit.
  Patch by Julian Gindi.

- Issue #23631: Fix traceback.format_list when a traceback has been mutated.

- Issue #23568: Add rdivmod support to MagicMock() objects.
  Patch by Håkan Lövdahl.

- Issue #2052: Add charset parameter to HtmlDiff.make_file().

- Issue #23668: Support os.truncate and os.ftruncate on Windows.

- Issue #23138: Fixed parsing cookies with absent keys or values in cookiejar.
  Patch by Demian Brecht.

- Issue #23051: multiprocessing.Pool methods imap() and imap_unordered() now
  handle exceptions raised by an iterator.  Patch by Alon Diamant and Davin
  Potts.

- Issue #23581: Add matmul support to MagicMock. Patch by Håkan Lövdahl.

- Issue #23566: enable(), register(), dump_traceback() and
  dump_traceback_later() functions of faulthandler now accept file
  descriptors. Patch by Wei Wu.

- Issue #22928: Disabled HTTP header injections in http.client.
  Original patch by Demian Brecht.

- Issue #23615: Modules bz2, tarfile and tokenize now can be reloaded with
  imp.reload().  Patch by Thomas Kluyver.

- Issue #23605: os.walk() now calls os.scandir() instead of os.listdir().
  The usage of os.scandir() reduces the number of calls to os.stat().
  Initial patch written by Ben Hoyt.

Build
-----

- Issue #23585: make patchcheck will ensure the interpreter is built.

Tests
-----

- Issue #23583: Added tests for standard IO streams in IDLE.

- Issue #22289: Prevent test_urllib2net failures due to ftp connection timeout.

Tools/Demos
-----------

- Issue #22826: The result of open() in Tools/freeze/bkfile.py is now better
  compatible with regular files (in particular it now supports the context
  management protocol).


What's New in Python 3.5 alpha 2?
=================================

Release date: 2015-03-09

Core and Builtins
-----------------

- Issue #23571: PyObject_Call() and PyCFunction_Call() now raise a SystemError
  if a function returns a result and raises an exception. The SystemError is
  chained to the previous exception.

Library
-------

- Issue #22524: New os.scandir() function, part of the PEP 471: "os.scandir()
  function -- a better and faster directory iterator". Patch written by Ben
  Hoyt.

- Issue #23103: Reduced the memory consumption of IPv4Address and IPv6Address.

- Issue #21793: BaseHTTPRequestHandler again logs response code as numeric,
  not as stringified enum.  Patch by Demian Brecht.

- Issue #23476: In the ssl module, enable OpenSSL's X509_V_FLAG_TRUSTED_FIRST
  flag on certificate stores when it is available.

- Issue #23576: Avoid stalling in SSL reads when EOF has been reached in the
  SSL layer but the underlying connection hasn't been closed.

- Issue #23504: Added an __all__ to the types module.

- Issue #23563: Optimized utility functions in urllib.parse.

- Issue #7830: Flatten nested functools.partial.

- Issue #20204: Added the __module__ attribute to _tkinter classes.

- Issue #19980: Improved help() for non-recognized strings.  help('') now
  shows the help on str.  help('help') now shows the help on help().
  Original patch by Mark Lawrence.

- Issue #23521: Corrected pure python implementation of timedelta division.

 * Eliminated OverflowError from timedelta * float for some floats;
 * Corrected rounding in timedlta true division.

- Issue #21619: Popen objects no longer leave a zombie after exit in the with
  statement if the pipe was broken.  Patch by Martin Panter.

- Issue #22936: Make it possible to show local variables in tracebacks for
  both the traceback module and unittest.

- Issue #15955: Add an option to limit the output size in bz2.decompress().
  Patch by Nikolaus Rath.

- Issue #6639: Module-level turtle functions no longer raise TclError after
  closing the window.

- Issues #814253, #9179: Group references and conditional group references now
  work in lookbehind assertions in regular expressions.

- Issue #23215: Multibyte codecs with custom error handlers that ignores errors
  consumed too much memory and raised SystemError or MemoryError.
  Original patch by Aleksi Torhamo.

- Issue #5700: io.FileIO() called flush() after closing the file.
  flush() was not called in close() if closefd=False.

- Issue #23374: Fixed pydoc failure with non-ASCII files when stdout encoding
  differs from file system encoding (e.g. on Mac OS).

- Issue #23481: Remove RC4 from the SSL module's default cipher list.

- Issue #21548: Fix pydoc.synopsis() and pydoc.apropos() on modules with empty
  docstrings.

- Issue #22885: Fixed arbitrary code execution vulnerability in the dbm.dumb
  module.  Original patch by Claudiu Popa.

- Issue #23239: ssl.match_hostname() now supports matching of IP addresses.

- Issue #23146: Fix mishandling of absolute Windows paths with forward
  slashes in pathlib.

- Issue #23096: Pickle representation of floats with protocol 0 now is the same
  for both Python and C implementations.

- Issue #19105: pprint now more efficiently uses free space at the right.

- Issue #14910: Add allow_abbrev parameter to argparse.ArgumentParser. Patch by
  Jonathan Paugh, Steven Bethard, paul j3 and Daniel Eriksson.

- Issue #21717: tarfile.open() now supports 'x' (exclusive creation) mode.

- Issue #23344: marshal.dumps() is now 20-25% faster on average.

- Issue #20416: marshal.dumps() with protocols 3 and 4 is now 40-50% faster on
  average.

- Issue #23421: Fixed compression in tarfile CLI.  Patch by wdv4758h.

- Issue #23367: Fix possible overflows in the unicodedata module.

- Issue #23361: Fix possible overflow in Windows subprocess creation code.

- logging.handlers.QueueListener now takes a respect_handler_level keyword
  argument which, if set to True, will pass messages to handlers taking handler
  levels into account.

- Issue #19705: turtledemo now has a visual sorting algorithm demo.  Original
  patch from Jason Yeo.

- Issue #23801: Fix issue where cgi.FieldStorage did not always ignore the
  entire preamble to a multipart body.

Build
-----

- Issue #23445: pydebug builds now use "gcc -Og" where possible, to make
  the resulting executable faster.

- Issue #23686: Update OS X 10.5 installer build to use OpenSSL 1.0.2a.

C API
-----

- Issue #20204: Deprecation warning is now raised for builtin types without the
  __module__ attribute.

Windows
-------

- Issue #23465: Implement PEP 486 - Make the Python Launcher aware of virtual
  environments. Patch by Paul Moore.

- Issue #23437: Make user scripts directory versioned on Windows. Patch by Paul
  Moore.


What's New in Python 3.5 alpha 1?
=================================

Release date: 2015-02-08

Core and Builtins
-----------------

- Issue #23285: PEP 475 - EINTR handling.

- Issue #22735: Fix many edge cases (including crashes) involving custom mro()
  implementations.

- Issue #22896: Avoid using PyObject_AsCharBuffer(), PyObject_AsReadBuffer()
  and PyObject_AsWriteBuffer().

- Issue #21295: Revert some changes (issue #16795) to AST line numbers and
  column offsets that constituted a regression.

- Issue #22986: Allow changing an object's __class__ between a dynamic type and
  static type in some cases.

- Issue #15859: PyUnicode_EncodeFSDefault(), PyUnicode_EncodeMBCS() and
  PyUnicode_EncodeCodePage() now raise an exception if the object is not a
  Unicode object. For PyUnicode_EncodeFSDefault(), it was already the case on
  platforms other than Windows. Patch written by Campbell Barton.

- Issue #21408: The default __ne__() now returns NotImplemented if __eq__()
  returned NotImplemented.  Original patch by Martin Panter.

- Issue #23321: Fixed a crash in str.decode() when error handler returned
  replacment string longer than mailformed input data.

- Issue #22286: The "backslashreplace" error handlers now works with
  decoding and translating.

- Issue #23253: Delay-load ShellExecute[AW] in os.startfile for reduced
  startup overhead on Windows.

- Issue #22038: pyatomic.h now uses stdatomic.h or GCC built-in functions for
  atomic memory access if available. Patch written by Vitor de Lima and Gustavo
  Temple.

- Issue #20284: %-interpolation (aka printf) formatting added for bytes and
  bytearray.

- Issue #23048: Fix jumping out of an infinite while loop in the pdb.

- Issue #20335: bytes constructor now raises TypeError when encoding or errors
  is specified with non-string argument.  Based on patch by Renaud Blanch.

- Issue #22834: If the current working directory ends up being set to a
  non-existent directory then import will no longer raise FileNotFoundError.

- Issue #22869: Move the interpreter startup & shutdown code to a new
  dedicated pylifecycle.c module

- Issue #22847: Improve method cache efficiency.

- Issue #22335: Fix crash when trying to enlarge a bytearray to 0x7fffffff
  bytes on a 32-bit platform.

- Issue #22653: Fix an assertion failure in debug mode when doing a reentrant
  dict insertion in debug mode.

- Issue #22643: Fix integer overflow in Unicode case operations (upper, lower,
  title, swapcase, casefold).

- Issue #17636: Circular imports involving relative imports are now
  supported.

- Issue #22604: Fix assertion error in debug mode when dividing a complex
  number by (nan+0j).

- Issue #21052: Do not raise ImportWarning when sys.path_hooks or sys.meta_path
  are set to None.

- Issue #16518: Use 'bytes-like object required' in error messages that
  previously used the far more cryptic "'x' does not support the buffer
  protocol.

- Issue #22470: Fixed integer overflow issues in "backslashreplace",
  "xmlcharrefreplace", and "surrogatepass" error handlers.

- Issue #22540: speed up `PyObject_IsInstance` and `PyObject_IsSubclass` in the
  common case that the second argument has metaclass `type`.

- Issue #18711: Add a new `PyErr_FormatV` function, similar to `PyErr_Format`
  but accepting a `va_list` argument.

- Issue #22520: Fix overflow checking when generating the repr of a unicode
  object.

- Issue #22519: Fix overflow checking in PyBytes_Repr.

- Issue #22518: Fix integer overflow issues in latin-1 encoding.

- Issue #16324: _charset parameter of MIMEText now also accepts
  email.charset.Charset instances. Initial patch by Claude Paroz.

- Issue #1764286: Fix inspect.getsource() to support decorated functions.
  Patch by Claudiu Popa.

- Issue #18554: os.__all__ includes posix functions.

- Issue #21391: Use os.path.abspath in the shutil module.

- Issue #11471: avoid generating a JUMP_FORWARD instruction at the end of
  an if-block if there is no else-clause.  Original patch by Eugene Toder.

- Issue #22215: Now ValueError is raised instead of TypeError when str or bytes
  argument contains not permitted null character or byte.

- Issue #22258: Fix the internal function set_inheritable() on Illumos.
  This platform exposes the function ``ioctl(FIOCLEX)``, but calling it fails
  with errno is ENOTTY: "Inappropriate ioctl for device". set_inheritable()
  now falls back to the slower ``fcntl()`` (``F_GETFD`` and then ``F_SETFD``).

- Issue #21389: Displaying the __qualname__ of the underlying function in the
  repr of a bound method.

- Issue #22206: Using pthread, PyThread_create_key() now sets errno to ENOMEM
  and returns -1 (error) on integer overflow.

- Issue #20184: Argument Clinic based signature introspection added for
  30 of the builtin functions.

- Issue #22116: C functions and methods (of the 'builtin_function_or_method'
  type) can now be weakref'ed.  Patch by Wei Wu.

- Issue #22077: Improve index error messages for bytearrays, bytes, lists,
  and tuples by adding 'or slices'. Added ', not <typename>' for bytearrays.
  Original patch by Claudiu Popa.

- Issue #20179: Apply Argument Clinic to bytes and bytearray.
  Patch by Tal Einat.

- Issue #22082: Clear interned strings in slotdefs.

- Upgrade Unicode database to Unicode 7.0.0.

- Issue #21897: Fix a crash with the f_locals attribute with closure
  variables when frame.clear() has been called.

- Issue #21205: Add a new ``__qualname__`` attribute to generator, the
  qualified name, and use it in the representation of a generator
  (``repr(gen)``). The default name of the generator (``__name__`` attribute)
  is now get from the function instead of the code. Use ``gen.gi_code.co_name``
  to get the name of the code.

- Issue #21669: With the aid of heuristics in SyntaxError.__init__, the
  parser now attempts to generate more meaningful (or at least more search
  engine friendly) error messages when "exec" and "print" are used as
  statements.

- Issue #21642: In the conditional if-else expression, allow an integer written
  with no space between itself and the ``else`` keyword (e.g. ``True if 42else
  False``) to be valid syntax.

- Issue #21523: Fix over-pessimistic computation of the stack effect of
  some opcodes in the compiler.  This also fixes a quadratic compilation
  time issue noticeable when compiling code with a large number of "and"
  and "or" operators.

- Issue #21418: Fix a crash in the builtin function super() when called without
  argument and without current frame (ex: embedded Python).

- Issue #21425: Fix flushing of standard streams in the interactive
  interpreter.

- Issue #21435: In rare cases, when running finalizers on objects in cyclic
  trash a bad pointer dereference could occur due to a subtle flaw in
  internal iteration logic.

- Issue #21377: PyBytes_Concat() now tries to concatenate in-place when the
  first argument has a reference count of 1.  Patch by Nikolaus Rath.

- Issue #20355: -W command line options now have higher priority than the
  PYTHONWARNINGS environment variable.  Patch by Arfrever.

- Issue #21274: Define PATH_MAX for GNU/Hurd in Python/pythonrun.c.

- Issue #20904: Support setting FPU precision on m68k.

- Issue #21209: Fix sending tuples to custom generator objects with the yield
  from syntax.

- Issue #21193: pow(a, b, c) now raises ValueError rather than TypeError when b
  is negative.  Patch by Josh Rosenberg.

- PEP 465 and Issue #21176: Add the '@' operator for matrix multiplication.

- Issue #21134: Fix segfault when str is called on an uninitialized
  UnicodeEncodeError, UnicodeDecodeError, or UnicodeTranslateError object.

- Issue #19537: Fix PyUnicode_DATA() alignment under m68k.  Patch by
  Andreas Schwab.

- Issue #20929: Add a type cast to avoid shifting a negative number.

- Issue #20731: Properly position in source code files even if they
  are opened in text mode. Patch by Serhiy Storchaka.

- Issue #20637: Key-sharing now also works for instance dictionaries of
  subclasses.  Patch by Peter Ingebretson.

- Issue #8297: Attributes missing from modules now include the module name
  in the error text.  Original patch by ysj.ray.

- Issue #19995: %c, %o, %x, and %X now raise TypeError on non-integer input.

- Issue #19655: The ASDL parser - used by the build process to generate code for
  managing the Python AST in C - was rewritten. The new parser is self contained
  and does not require to carry long the spark.py parser-generator library;
  spark.py was removed from the source base.

- Issue #12546: Allow ``\x00`` to be used as a fill character when using str, int,
  float, and complex __format__ methods.

- Issue #20480: Add ipaddress.reverse_pointer. Patch by Leon Weber.

- Issue #13598: Modify string.Formatter to support auto-numbering of
  replacement fields. It now matches the behavior of str.format() in
  this regard. Patches by Phil Elson and Ramchandra Apte.

- Issue #8931: Make alternate formatting ('#') for type 'c' raise an
  exception. In versions prior to 3.5, '#' with 'c' had no effect. Now
  specifying it is an error.  Patch by Torsten Landschoff.

- Issue #23165: Perform overflow checks before allocating memory in the
  _Py_char2wchar function.

Library
-------

- Issue #23399: pyvenv creates relative symlinks where possible.

- Issue #20289: cgi.FieldStorage() now supports the context management
  protocol.

- Issue #13128: Print response headers for CONNECT requests when debuglevel
  > 0. Patch by Demian Brecht.

- Issue #15381: Optimized io.BytesIO to make less allocations and copyings.

- Issue #22818: Splitting on a pattern that could match an empty string now
  raises a warning.  Patterns that can only match empty strings are now
  rejected.

- Issue #23099: Closing io.BytesIO with exported buffer is rejected now to
  prevent corrupting exported buffer.

- Issue #23326: Removed __ne__ implementations.  Since fixing default __ne__
  implementation in issue #21408 they are redundant.

- Issue #23363: Fix possible overflow in itertools.permutations.

- Issue #23364: Fix possible overflow in itertools.product.

- Issue #23366: Fixed possible integer overflow in itertools.combinations.

- Issue #23369: Fixed possible integer overflow in
  _json.encode_basestring_ascii.

- Issue #23353: Fix the exception handling of generators in
  PyEval_EvalFrameEx(). At entry, save or swap the exception state even if
  PyEval_EvalFrameEx() is called with throwflag=0. At exit, the exception state
  is now always restored or swapped, not only if why is WHY_YIELD or
  WHY_RETURN. Patch co-written with Antoine Pitrou.

- Issue #14099: Restored support of writing ZIP files to tellable but
  non-seekable streams.

- Issue #14099: Writing to ZipFile and reading multiple ZipExtFiles is
  threadsafe now.

- Issue #19361: JSON decoder now raises JSONDecodeError instead of ValueError.

- Issue #18518: timeit now rejects statements which can't be compiled outside
  a function or a loop (e.g. "return" or "break").

- Issue #23094: Fixed readline with frames in Python implementation of pickle.

- Issue #23268: Fixed bugs in the comparison of ipaddress classes.

- Issue #21408: Removed incorrect implementations of __ne__() which didn't
  returned NotImplemented if __eq__() returned NotImplemented.  The default
  __ne__() now works correctly.

- Issue #19996: :class:`email.feedparser.FeedParser` now handles (malformed)
  headers with no key rather than assuming the body has started.

- Issue #20188: Support Application-Layer Protocol Negotiation (ALPN) in the ssl
  module.

- Issue #23133: Pickling of ipaddress objects now produces more compact and
  portable representation.

- Issue #23248: Update ssl error codes from latest OpenSSL git master.

- Issue #23266: Much faster implementation of ipaddress.collapse_addresses()
  when there are many non-consecutive addresses.

- Issue #23098: 64-bit dev_t is now supported in the os module.

- Issue #21817: When an exception is raised in a task submitted to a
  ProcessPoolExecutor, the remote traceback is now displayed in the
  parent process.  Patch by Claudiu Popa.

- Issue #15955: Add an option to limit output size when decompressing LZMA
  data.  Patch by Nikolaus Rath and Martin Panter.

- Issue #23250: In the http.cookies module, capitalize "HttpOnly" and "Secure"
  as they are written in the standard.

- Issue #23063: In the disutils' check command, fix parsing of reST with code or
  code-block directives.

- Issue #23209, #23225: selectors.BaseSelector.get_key() now raises a
  RuntimeError if the selector is closed. And selectors.BaseSelector.close()
  now clears its internal reference to the selector mapping to break a
  reference cycle. Initial patch written by Martin Richard.

- Issue #17911: Provide a way to seed the linecache for a PEP-302 module
  without actually loading the code.

- Issue #17911: Provide a new object API for traceback, including the ability
  to not lookup lines at all until the traceback is actually rendered, without
  any trace of the original objects being kept alive.

- Issue #19777: Provide a home() classmethod on Path objects.  Contributed
  by Victor Salgado and Mayank Tripathi.

- Issue #23206: Make ``json.dumps(..., ensure_ascii=False)`` as fast as the
  default case of ``ensure_ascii=True``.  Patch by Naoki Inada.

- Issue #23185: Add math.inf and math.nan constants.

- Issue #23186: Add ssl.SSLObject.shared_ciphers() and
  ssl.SSLSocket.shared_ciphers() to fetch the client's list ciphers sent at
  handshake.

- Issue #23143: Remove compatibility with OpenSSLs older than 0.9.8.

- Issue #23132: Improve performance and introspection support of comparison
  methods created by functool.total_ordering.

- Issue #19776: Add an expanduser() method on Path objects.

- Issue #23112: Fix SimpleHTTPServer to correctly carry the query string and
  fragment when it redirects to add a trailing slash.

- Issue #21793: Added http.HTTPStatus enums (i.e. HTTPStatus.OK,
  HTTPStatus.NOT_FOUND).  Patch by Demian Brecht.

- Issue #23093: In the io, module allow more operations to work on detached
  streams.

- Issue #23111: In the ftplib, make ssl.PROTOCOL_SSLv23 the default protocol
  version.

- Issue #22585: On OpenBSD 5.6 and newer, os.urandom() now calls getentropy(),
  instead of reading /dev/urandom, to get pseudo-random bytes.

- Issue #19104: pprint now produces evaluable output for wrapped strings.

- Issue #23071: Added missing names to codecs.__all__.  Patch by Martin Panter.

- Issue #22783: Pickling now uses the NEWOBJ opcode instead of the NEWOBJ_EX
  opcode if possible.

- Issue #15513: Added a __sizeof__ implementation for pickle classes.

- Issue #19858: pickletools.optimize() now aware of the MEMOIZE opcode, can
  produce more compact result and no longer produces invalid output if input
  data contains MEMOIZE opcodes together with PUT or BINPUT opcodes.

- Issue #22095: Fixed HTTPConnection.set_tunnel with default port.  The port
  value in the host header was set to "None".  Patch by Demian Brecht.

- Issue #23016: A warning no longer produces an AttributeError when the program
  is run with pythonw.exe.

- Issue #21775: shutil.copytree(): fix crash when copying to VFAT. An exception
  handler assumed that OSError objects always have a 'winerror' attribute.
  That is not the case, so the exception handler itself raised AttributeError
  when run on Linux (and, presumably, any other non-Windows OS).
  Patch by Greg Ward.

- Issue #1218234: Fix inspect.getsource() to load updated source of
  reloaded module. Initial patch by Berker Peksag.

- Issue #21740: Support wrapped callables in doctest. Patch by Claudiu Popa.

- Issue #23009: Make sure selectors.EpollSelecrtor.select() works when no
  FD is registered.

- Issue #22959: In the constructor of http.client.HTTPSConnection, prefer the
  context's check_hostname attribute over the *check_hostname* parameter.

- Issue #22696: Add function :func:`sys.is_finalizing` to know about
  interpreter shutdown.

- Issue #16043: Add a default limit for the amount of data xmlrpclib.gzip_decode
  will return. This resolves CVE-2013-1753.

- Issue #14099: ZipFile.open() no longer reopen the underlying file.  Objects
  returned by ZipFile.open() can now operate independently of the ZipFile even
  if the ZipFile was created by passing in a file-like object as the first
  argument to the constructor.

- Issue #22966: Fix __pycache__ pyc file name clobber when pyc_compile is
  asked to compile a source file containing multiple dots in the source file
  name.

- Issue #21971: Update turtledemo doc and add module to the index.

- Issue #21032: Fixed socket leak if HTTPConnection.getresponse() fails.
  Original patch by Martin Panter.

- Issue #22407: Deprecated the use of re.LOCALE flag with str patterns or
  re.ASCII. It was newer worked.

- Issue #22902: The "ip" command is now used on Linux to determine MAC address
  in uuid.getnode().  Pach by Bruno Cauet.

- Issue #22960: Add a context argument to xmlrpclib.ServerProxy constructor.

- Issue #22389: Add contextlib.redirect_stderr().

- Issue #21356: Make ssl.RAND_egd() optional to support LibreSSL. The
  availability of the function is checked during the compilation. Patch written
  by Bernard Spil.

- Issue #22915: SAX parser now supports files opened with file descriptor or
  bytes path.

- Issue #22609: Constructors and update methods of mapping classes in the
  collections module now accept the self keyword argument.

- Issue #22940: Add readline.append_history_file.

- Issue #19676: Added the "namereplace" error handler.

- Issue #22788: Add *context* parameter to logging.handlers.HTTPHandler.

- Issue #22921: Allow SSLContext to take the *hostname* parameter even if
  OpenSSL doesn't support SNI.

- Issue #22894: TestCase.subTest() would cause the test suite to be stopped
  when in failfast mode, even in the absence of failures.

- Issue #22796: HTTP cookie parsing is now stricter, in order to protect
  against potential injection attacks.

- Issue #22370: Windows detection in pathlib is now more robust.

- Issue #22841: Reject coroutines in asyncio add_signal_handler().
  Patch by Ludovic.Gasc.

- Issue #19494: Added urllib.request.HTTPBasicPriorAuthHandler. Patch by
  Matej Cepl.

- Issue #22578: Added attributes to the re.error class.

- Issue #22849: Fix possible double free in the io.TextIOWrapper constructor.

- Issue #12728: Different Unicode characters having the same uppercase but
  different lowercase are now matched in case-insensitive regular expressions.

- Issue #22821: Fixed fcntl() with integer argument on 64-bit big-endian
  platforms.

- Issue #21650: Add an `--sort-keys` option to json.tool CLI.

- Issue #22824: Updated reprlib output format for sets to use set literals.
  Patch contributed by Berker Peksag.

- Issue #22824: Updated reprlib output format for arrays to display empty
  arrays without an unnecessary empty list.  Suggested by Serhiy Storchaka.

- Issue #22406: Fixed the uu_codec codec incorrectly ported to 3.x.
  Based on patch by Martin Panter.

- Issue #17293: uuid.getnode() now determines MAC address on AIX using netstat.
  Based on patch by Aivars Kalvāns.

- Issue #22769: Fixed ttk.Treeview.tag_has() when called without arguments.

- Issue #22417: Verify certificates by default in httplib (PEP 476).

- Issue #22775: Fixed unpickling of http.cookies.SimpleCookie with protocol 2
  and above.  Patch by Tim Graham.

- Issue #22776: Brought excluded code into the scope of a try block in
  SysLogHandler.emit().

- Issue #22665: Add missing get_terminal_size and SameFileError to
  shutil.__all__.

- Issue #6623: Remove deprecated Netrc class in the ftplib module. Patch by
  Matt Chaput.

- Issue #17381: Fixed handling of case-insensitive ranges in regular
  expressions.

- Issue #22410: Module level functions in the re module now cache compiled
  locale-dependent regular expressions taking into account the locale.

- Issue #22759: Query methods on pathlib.Path() (exists(), is_dir(), etc.)
  now return False when the underlying stat call raises NotADirectoryError.

- Issue #8876: distutils now falls back to copying files when hard linking
  doesn't work.  This allows use with special filesystems such as VirtualBox
  shared folders.

- Issue #22217: Implemented reprs of classes in the zipfile module.

- Issue #22457: Honour load_tests in the start_dir of discovery.

- Issue #18216: gettext now raises an error when a .mo file has an
  unsupported major version number.  Patch by Aaron Hill.

- Issue #13918: Provide a locale.delocalize() function which can remove
  locale-specific number formatting from a string representing a number,
  without then converting it to a specific type.  Patch by Cédric Krier.

- Issue #22676: Make the pickling of global objects which don't have a
  __module__ attribute less slow.

- Issue #18853: Fixed ResourceWarning in shlex.__nain__.

- Issue #9351: Defaults set with set_defaults on an argparse subparser
  are no longer ignored when also set on the parent parser.

- Issue #7559: unittest test loading ImportErrors are reported as import errors
  with their import exception rather than as attribute errors after the import
  has already failed.

- Issue #19746: Make it possible to examine the errors from unittest
  discovery without executing the test suite. The new `errors` attribute
  on TestLoader exposes these non-fatal errors encountered during discovery.

- Issue #21991: Make email.headerregistry's header 'params' attributes
  be read-only (MappingProxyType).  Previously the dictionary was modifiable
  but a new one was created on each access of the attribute.

- Issue #22638: SSLv3 is now disabled throughout the standard library.
  It can still be enabled by instantiating a SSLContext manually.

- Issue #22641: In asyncio, the default SSL context for client connections
  is now created using ssl.create_default_context(), for stronger security.

- Issue #17401: Include closefd in io.FileIO repr.

- Issue #21338: Add silent mode for compileall. quiet parameters of
  compile_{dir, file, path} functions now have a multilevel value. Also,
  -q option of the CLI now have a multilevel value. Patch by Thomas Kluyver.

- Issue #20152: Convert the array and cmath modules to Argument Clinic.

- Issue #18643: Add socket.socketpair() on Windows.

- Issue #22435: Fix a file descriptor leak when socketserver bind fails.

- Issue #13096: Fixed segfault in CTypes POINTER handling of large
  values.

- Issue #11694: Raise ConversionError in xdrlib as documented.  Patch
  by Filip Gruszczyński and Claudiu Popa.

- Issue #19380: Optimized parsing of regular expressions.

- Issue #1519638: Now unmatched groups are replaced with empty strings in re.sub()
  and re.subn().

- Issue #18615: sndhdr.what/whathdr now return a namedtuple.

- Issue #22462: Fix pyexpat's creation of a dummy frame to make it
  appear in exception tracebacks.

- Issue #21965: Add support for in-memory SSL to the ssl module.  Patch
  by Geert Jansen.

- Issue #21173: Fix len() on a WeakKeyDictionary when .clear() was called
  with an iterator alive.

- Issue #11866: Eliminated race condition in the computation of names
  for new threads.

- Issue #21905: Avoid RuntimeError in pickle.whichmodule() when sys.modules
  is mutated while iterating.  Patch by Olivier Grisel.

- Issue #11271: concurrent.futures.Executor.map() now takes a *chunksize*
  argument to allow batching of tasks in child processes and improve
  performance of ProcessPoolExecutor.  Patch by Dan O'Reilly.

- Issue #21883: os.path.join() and os.path.relpath() now raise a TypeError with
  more helpful error message for unsupported or mismatched types of arguments.

- Issue #22219: The zipfile module CLI now adds entries for directories
  (including empty directories) in ZIP file.

- Issue #22449: In the ssl.SSLContext.load_default_certs, consult the
  environmental variables SSL_CERT_DIR and SSL_CERT_FILE on Windows.

- Issue #22508: The email.__version__ variable has been removed; the email
  code is no longer shipped separately from the stdlib, and __version__
  hasn't been updated in several releases.

- Issue #20076: Added non derived UTF-8 aliases to locale aliases table.

- Issue #20079: Added locales supported in glibc 2.18 to locale alias table.

- Issue #20218: Added convenience methods read_text/write_text and read_bytes/
  write_bytes to pathlib.Path objects.

- Issue #22396: On 32-bit AIX platform, don't expose os.posix_fadvise() nor
  os.posix_fallocate() because their prototypes in system headers are wrong.

- Issue #22517: When an io.BufferedRWPair object is deallocated, clear its
  weakrefs.

- Issue #22437: Number of capturing groups in regular expression is no longer
  limited by 100.

- Issue #17442: InteractiveInterpreter now displays the full chained traceback
  in its showtraceback method, to match the built in interactive interpreter.

- Issue #23392: Added tests for marshal C API that works with FILE*.


- Issue #10510: distutils register and upload methods now use HTML standards
  compliant CRLF line endings.

- Issue #9850: Fixed macpath.join() for empty first component.  Patch by
  Oleg Oshmyan.

- Issue #5309: distutils' build and build_ext commands now accept a ``-j``
  option to enable parallel building of extension modules.

- Issue #22448: Improve canceled timer handles cleanup to prevent
  unbound memory usage. Patch by Joshua Moore-Oliva.

- Issue #22427: TemporaryDirectory no longer attempts to clean up twice when
  used in the with statement in generator.

- Issue #22362: Forbidden ambiguous octal escapes out of range 0-0o377 in
  regular expressions.

- Issue #20912: Now directories added to ZIP file have correct Unix and MS-DOS
  directory attributes.

- Issue #21866: ZipFile.close() no longer writes ZIP64 central directory
  records if allowZip64 is false.

- Issue #22278: Fix urljoin problem with relative urls, a regression observed
  after changes to issue22118 were submitted.

- Issue #22415: Fixed debugging output of the GROUPREF_EXISTS opcode in the re
  module.  Removed trailing spaces in debugging output.

- Issue #22423: Unhandled exception in thread no longer causes unhandled
  AttributeError when sys.stderr is None.

- Issue #21332: Ensure that ``bufsize=1`` in subprocess.Popen() selects
  line buffering, rather than block buffering.  Patch by Akira Li.

- Issue #21091: Fix API bug: email.message.EmailMessage.is_attachment is now
  a method.

- Issue #21079: Fix email.message.EmailMessage.is_attachment to return the
  correct result when the header has parameters as well as a value.

- Issue #22247: Add NNTPError to nntplib.__all__.

- Issue #22366: urllib.request.urlopen will accept a context object
  (SSLContext) as an argument which will then be used for HTTPS connection.
  Patch by Alex Gaynor.

- Issue #4180: The warnings registries are now reset when the filters
  are modified.

- Issue #22419: Limit the length of incoming HTTP request in wsgiref server to
  65536 bytes and send a 414 error code for higher lengths. Patch contributed
  by Devin Cook.

- Lax cookie parsing in http.cookies could be a security issue when combined
  with non-standard cookie handling in some Web browsers.  Reported by
  Sergey Bobrov.

- Issue #20537: logging methods now accept an exception instance as well as a
  Boolean value or exception tuple. Thanks to Yury Selivanov for the patch.

- Issue #22384: An exception in Tkinter callback no longer crashes the program
  when it is run with pythonw.exe.

- Issue #22168: Prevent turtle AttributeError with non-default Canvas on OS X.

- Issue #21147: sqlite3 now raises an exception if the request contains a null
  character instead of truncating it.  Based on patch by Victor Stinner.

- Issue #13968: The glob module now supports recursive search in
  subdirectories using the "**" pattern.

- Issue #21951: Fixed a crash in Tkinter on AIX when called Tcl command with
  empty string or tuple argument.

- Issue #21951: Tkinter now most likely raises MemoryError instead of crash
  if the memory allocation fails.

- Issue #22338: Fix a crash in the json module on memory allocation failure.

- Issue #12410: imaplib.IMAP4 now supports the context management protocol.
  Original patch by Tarek Ziadé.

- Issue #21270: We now override tuple methods in mock.call objects so that
  they can be used as normal call attributes.

- Issue #16662: load_tests() is now unconditionally run when it is present in
  a package's __init__.py.  TestLoader.loadTestsFromModule() still accepts
  use_load_tests, but it is deprecated and ignored.  A new keyword-only
  attribute `pattern` is added and documented.  Patch given by Robert Collins,
  tweaked by Barry Warsaw.

- Issue #22226: First letter no longer is stripped from the "status" key in
  the result of Treeview.heading().

- Issue #19524: Fixed resource leak in the HTTP connection when an invalid
  response is received.  Patch by Martin Panter.

- Issue #20421: Add a .version() method to SSL sockets exposing the actual
  protocol version in use.

- Issue #19546: configparser exceptions no longer expose implementation details.
  Chained KeyErrors are removed, which leads to cleaner tracebacks.  Patch by
  Claudiu Popa.

- Issue #22051: turtledemo no longer reloads examples to re-run them.
  Initialization of variables and gui setup should be done in main(),
  which is called each time a demo is run, but not on import.

- Issue #21933: Turtledemo users can change the code font size with a menu
  selection or control(command) '-' or '+' or control-mousewheel.
  Original patch by Lita Cho.

- Issue #21597: The separator between the turtledemo text pane and the drawing
  canvas can now be grabbed and dragged with a mouse.  The code text pane can
  be widened to easily view or copy the full width of the text.  The canvas
  can be widened on small screens.  Original patches by Jan Kanis and Lita Cho.

- Issue #18132: Turtledemo buttons no longer disappear when the window is
  shrunk.  Original patches by Jan Kanis and Lita Cho.

- Issue #22043: time.monotonic() is now always available.
  ``threading.Lock.acquire()``, ``threading.RLock.acquire()`` and socket
  operations now use a monotonic clock, instead of the system clock, when a
  timeout is used.

- Issue #21527: Add a default number of workers to ThreadPoolExecutor equal
  to 5 times the number of CPUs.  Patch by Claudiu Popa.

- Issue #22216: smtplib now resets its state more completely after a quit.  The
  most obvious consequence of the previous behavior was a STARTTLS failure
  during a connect/starttls/quit/connect/starttls sequence.

- Issue #22098: ctypes' BigEndianStructure and LittleEndianStructure now
  define an empty __slots__ so that subclasses don't always get an instance
  dict.  Patch by Claudiu Popa.

- Issue #22185: Fix an occasional RuntimeError in threading.Condition.wait()
  caused by mutation of the waiters queue without holding the lock.  Patch
  by Doug Zongker.

- Issue #22287: On UNIX, _PyTime_gettimeofday() now uses
  clock_gettime(CLOCK_REALTIME) if available. As a side effect, Python now
  depends on the librt library on Solaris and on Linux (only with glibc older
  than 2.17).

- Issue #22182: Use e.args to unpack exceptions correctly in
  distutils.file_util.move_file. Patch by Claudiu Popa.

- The webbrowser module now uses subprocess's start_new_session=True rather
  than a potentially risky preexec_fn=os.setsid call.

- Issue #22042: signal.set_wakeup_fd(fd) now raises an exception if the file
  descriptor is in blocking mode.

- Issue #16808: inspect.stack() now returns a named tuple instead of a tuple.
  Patch by Daniel Shahaf.

- Issue #22236: Fixed Tkinter images copying operations in NoDefaultRoot mode.

- Issue #2527: Add a *globals* argument to timeit functions, in order to
  override the globals namespace in which the timed code is executed.
  Patch by Ben Roberts.

- Issue #22118: Switch urllib.parse to use RFC 3986 semantics for the
  resolution of relative URLs, rather than RFCs 1808 and 2396.
  Patch by Demian Brecht.

- Issue #21549: Added the "members" parameter to TarFile.list().

- Issue #19628: Allow compileall recursion depth to be specified with a -r
  option.

- Issue #15696: Add a __sizeof__ implementation for mmap objects on Windows.

- Issue #22068: Avoided reference loops with Variables and Fonts in Tkinter.

- Issue #22165: SimpleHTTPRequestHandler now supports undecodable file names.

- Issue #15381: Optimized line reading in io.BytesIO.

- Issue #8797: Raise HTTPError on failed Basic Authentication immediately.
  Initial patch by Sam Bull.

- Issue #20729: Restored the use of lazy iterkeys()/itervalues()/iteritems()
  in the mailbox module.

- Issue #21448: Changed FeedParser feed() to avoid O(N**2) behavior when
  parsing long line.  Original patch by Raymond Hettinger.

- Issue #22184: The functools LRU Cache decorator factory now gives an earlier
  and clearer error message when the user forgets the required parameters.

- Issue #17923: glob() patterns ending with a slash no longer match non-dirs on
  AIX.  Based on patch by Delhallt.

- Issue #21725: Added support for RFC 6531 (SMTPUTF8) in smtpd.

- Issue #22176: Update the ctypes module's libffi to v3.1.  This release
  adds support for the Linux AArch64 and POWERPC ELF ABIv2 little endian
  architectures.

- Issue #5411: Added support for the "xztar" format in the shutil module.

- Issue #21121: Don't force 3rd party C extensions to be built with
  -Werror=declaration-after-statement.

- Issue #21975: Fixed crash when using uninitialized sqlite3.Row (in particular
  when unpickling pickled sqlite3.Row).  sqlite3.Row is now initialized in the
  __new__() method.

- Issue #20170: Convert posixmodule to use Argument Clinic.

- Issue #21539: Add an *exists_ok* argument to `Pathlib.mkdir()` to mimic
  `mkdir -p` and `os.makedirs()` functionality.  When true, ignore
  FileExistsErrors.  Patch by Berker Peksag.

- Issue #22127: Bypass IDNA for pure-ASCII host names in the socket module
  (in particular for numeric IPs).

- Issue #21047: set the default value for the *convert_charrefs* argument
  of HTMLParser to True.  Patch by Berker Peksag.

- Add an __all__ to html.entities.

- Issue #15114: the strict mode and argument of HTMLParser, HTMLParser.error,
  and the HTMLParserError exception have been removed.

- Issue #22085: Dropped support of Tk 8.3 in Tkinter.

- Issue #21580: Now Tkinter correctly handles bytes arguments passed to Tk.
  In particular this allows initializing images from binary data.

- Issue #22003: When initialized from a bytes object, io.BytesIO() now
  defers making a copy until it is mutated, improving performance and
  memory use on some use cases.  Patch by David Wilson.

- Issue #22018: On Windows, signal.set_wakeup_fd() now also supports sockets.
  A side effect is that Python depends to the WinSock library.

- Issue #22054: Add os.get_blocking() and os.set_blocking() functions to get
  and set the blocking mode of a file descriptor (False if the O_NONBLOCK flag
  is set, True otherwise). These functions are not available on Windows.

- Issue #17172: Make turtledemo start as active on OS X even when run with
  subprocess.  Patch by Lita Cho.

- Issue #21704: Fix build error for _multiprocessing when semaphores
  are not available.  Patch by Arfrever Frehtes Taifersar Arahesis.

- Issue #20173: Convert sha1, sha256, sha512 and md5 to ArgumentClinic.
  Patch by Vajrasky Kok.

- Fix repr(_socket.socket) on Windows 64-bit: don't fail with OverflowError
  on closed socket. repr(socket.socket) already works fine.

- Issue #22033: Reprs of most Python implemened classes now contain actual
  class name instead of hardcoded one.

- Issue #21947: The dis module can now disassemble generator-iterator
  objects based on their gi_code attribute. Patch by Clement Rouault.

- Issue #16133: The asynchat.async_chat.handle_read() method now ignores
  BlockingIOError exceptions.

- Issue #22044: Fixed premature DECREF in call_tzinfo_method.
  Patch by Tom Flanagan.

- Issue #19884: readline: Disable the meta modifier key if stdout is not
  a terminal to not write the ANSI sequence ``"\033[1034h"`` into stdout. This
  sequence is used on some terminal (ex: TERM=xterm-256color") to enable
  support of 8 bit characters.

- Issue #4350: Removed a number of out-of-dated and non-working for a long time
  Tkinter methods.

- Issue #6167: Scrollbar.activate() now returns the name of active element if
  the argument is not specified.  Scrollbar.set() now always accepts only 2
  arguments.

- Issue #15275: Clean up and speed up the ntpath module.

- Issue #21888: plistlib's load() and loads() now work if the fmt parameter is
  specified.

- Issue #22032: __qualname__ instead of __name__ is now always used to format
  fully qualified class names of Python implemented classes.

- Issue #22031: Reprs now always use hexadecimal format with the "0x" prefix
  when contain an id in form " at 0x...".

- Issue #22018: signal.set_wakeup_fd() now raises an OSError instead of a
  ValueError on ``fstat()`` failure.

- Issue #21044: tarfile.open() now handles fileobj with an integer 'name'
  attribute.  Based on patch by Antoine Pietri.

- Issue #21966: Respect -q command-line option when code module is ran.

- Issue #19076: Don't pass the redundant 'file' argument to self.error().

- Issue #16382: Improve exception message of warnings.warn() for bad
  category. Initial patch by Phil Elson.

- Issue #21932: os.read() now uses a :c:func:`Py_ssize_t` type instead of
  :c:type:`int` for the size to support reading more than 2 GB at once. On
  Windows, the size is truncted to INT_MAX. As any call to os.read(), the OS
  may read less bytes than the number of requested bytes.

- Issue #21942: Fixed source file viewing in pydoc's server mode on Windows.

- Issue #11259: asynchat.async_chat().set_terminator() now raises a ValueError
  if the number of received bytes is negative.

- Issue #12523: asynchat.async_chat.push() now raises a TypeError if it doesn't
  get a bytes string

- Issue #21707: Add missing kwonlyargcount argument to
  ModuleFinder.replace_paths_in_code().

- Issue #20639: calling Path.with_suffix('') allows removing the suffix
  again.  Patch by July Tikhonov.

- Issue #21714: Disallow the construction of invalid paths using
  Path.with_name().  Original patch by Antony Lee.

- Issue #15014: Added 'auth' method to smtplib to make implementing auth
  mechanisms simpler, and used it internally in the login method.

- Issue #21151: Fixed a segfault in the winreg module when ``None`` is passed
  as a ``REG_BINARY`` value to SetValueEx.  Patch by John Ehresman.

- Issue #21090: io.FileIO.readall() does not ignore I/O errors anymore. Before,
  it ignored I/O errors if at least the first C call read() succeed.

- Issue #5800: headers parameter of wsgiref.headers.Headers is now optional.
  Initial patch by Pablo Torres Navarrete and SilentGhost.

- Issue #21781: ssl.RAND_add() now supports strings longer than 2 GB.

- Issue #21679: Prevent extraneous fstat() calls during open().  Patch by
  Bohuslav Kabrda.

- Issue #21863: cProfile now displays the module name of C extension functions,
  in addition to their own name.

- Issue #11453: asyncore: emit a ResourceWarning when an unclosed file_wrapper
  object is destroyed. The destructor now closes the file if needed. The
  close() method can now be called twice: the second call does nothing.

- Issue #21858: Better handling of Python exceptions in the sqlite3 module.

- Issue #21476: Make sure the email.parser.BytesParser TextIOWrapper is
  discarded after parsing, so the input file isn't unexpectedly closed.

- Issue #20295: imghdr now recognizes OpenEXR format images.

- Issue #21729: Used the "with" statement in the dbm.dumb module to ensure
  files closing.  Patch by Claudiu Popa.

- Issue #21491: socketserver: Fix a race condition in child processes reaping.

- Issue #21719: Added the ``st_file_attributes`` field to os.stat_result on
  Windows.

- Issue #21832: Require named tuple inputs to be exact strings.

- Issue #21722: The distutils "upload" command now exits with a non-zero
  return code when uploading fails.  Patch by Martin Dengler.

- Issue #21723: asyncio.Queue: support any type of number (ex: float) for the
  maximum size. Patch written by Vajrasky Kok.

- Issue #21711: support for "site-python" directories has now been removed
  from the site module (it was deprecated in 3.4).

- Issue #17552: new socket.sendfile() method allowing a file to be sent over a
  socket by using high-performance os.sendfile() on UNIX.
  Patch by Giampaolo Rodola'.

- Issue #18039: dbm.dump.open() now always creates a new database when the
  flag has the value 'n'.  Patch by Claudiu Popa.

- Issue #21326: Add a new is_closed() method to asyncio.BaseEventLoop.
  run_forever() and run_until_complete() methods of asyncio.BaseEventLoop now
  raise an exception if the event loop was closed.

- Issue #21766: Prevent a security hole in CGIHTTPServer by URL unquoting paths
  before checking for a CGI script at that path.

- Issue #21310: Fixed possible resource leak in failed open().

- Issue #21256: Printout of keyword args should be in deterministic order in
  a mock function call. This will help to write better doctests.

- Issue #21677: Fixed chaining nonnormalized exceptions in io close() methods.

- Issue #11709: Fix the pydoc.help function to not fail when sys.stdin is not a
  valid file.

- Issue #21515: tempfile.TemporaryFile now uses os.O_TMPFILE flag is available.

- Issue #13223: Fix pydoc.writedoc so that the HTML documentation for methods
  that use 'self' in the example code is generated correctly.

- Issue #21463: In urllib.request, fix pruning of the FTP cache.

- Issue #21618: The subprocess module could fail to close open fds that were
  inherited by the calling process and already higher than POSIX resource
  limits would otherwise allow.  On systems with a functioning /proc/self/fd
  or /dev/fd interface the max is now ignored and all fds are closed.

- Issue #20383: Introduce importlib.util.module_from_spec() as the preferred way
  to create a new module.

- Issue #21552: Fixed possible integer overflow of too long string lengths in
  the tkinter module on 64-bit platforms.

- Issue #14315: The zipfile module now ignores extra fields in the central
  directory that are too short to be parsed instead of letting a struct.unpack
  error bubble up as this "bad data" appears in many real world zip files in
  the wild and is ignored by other zip tools.

- Issue #13742: Added "key" and "reverse" parameters to heapq.merge().
  (First draft of patch contributed by Simon Sapin.)

- Issue #21402: tkinter.ttk now works when default root window is not set.

- Issue #3015: _tkinter.create() now creates tkapp object with wantobject=1 by
  default.

- Issue #10203: sqlite3.Row now truly supports sequence protocol.  In particular
  it supports reverse() and negative indices.  Original patch by Claudiu Popa.

- Issue #18807: If copying (no symlinks) specified for a venv, then the python
  interpreter aliases (python, python3) are now created by copying rather than
  symlinking.

- Issue #20197: Added support for the WebP image type in the imghdr module.
  Patch by Fabrice Aneche and Claudiu Popa.

- Issue #21513: Speedup some properties of IP addresses (IPv4Address,
  IPv6Address) such as .is_private or .is_multicast.

- Issue #21137: Improve the repr for threading.Lock() and its variants
  by showing the "locked" or "unlocked" status.  Patch by Berker Peksag.

- Issue #21538: The plistlib module now supports loading of binary plist files
  when reference or offset size is not a power of two.

- Issue #21455: Add a default backlog to socket.listen().

- Issue #21525: Most Tkinter methods which accepted tuples now accept lists too.

- Issue #22166: With the assistance of a new internal _codecs._forget_codec
  helping function, test_codecs now clears the encoding caches to avoid the
  appearance of a reference leak

- Issue #22236: Tkinter tests now don't reuse default root window.  New root
  window is created for every test class.

- Issue #10744: Fix PEP 3118 format strings on ctypes objects with a nontrivial
  shape.

- Issue #20826: Optimize ipaddress.collapse_addresses().

- Issue #21487: Optimize ipaddress.summarize_address_range() and
  ipaddress.{IPv4Network,IPv6Network}.subnets().

- Issue #21486: Optimize parsing of netmasks in ipaddress.IPv4Network and
  ipaddress.IPv6Network.

- Issue #13916: Disallowed the surrogatepass error handler for non UTF-\*
  encodings.

- Issue #20998: Fixed re.fullmatch() of repeated single character pattern
  with ignore case.  Original patch by Matthew Barnett.

- Issue #21075: fileinput.FileInput now reads bytes from standard stream if
  binary mode is specified.  Patch by Sam Kimbrel.

- Issue #19775: Add a samefile() method to pathlib Path objects.  Initial
  patch by Vajrasky Kok.

- Issue #21226: Set up modules properly in PyImport_ExecCodeModuleObject
  (and friends).

- Issue #21398: Fix a unicode error in the pydoc pager when the documentation
  contains characters not encodable to the stdout encoding.

- Issue #16531: ipaddress.IPv4Network and ipaddress.IPv6Network now accept
  an (address, netmask) tuple argument, so as to easily construct network
  objects from existing addresses.

- Issue #21156: importlib.abc.InspectLoader.source_to_code() is now a
  staticmethod.

- Issue #21424: Simplified and optimized heaqp.nlargest() and nmsmallest()
  to make fewer tuple comparisons.

- Issue #21396: Fix TextIOWrapper(..., write_through=True) to not force a
  flush() on the underlying binary stream.  Patch by akira.

- Issue #18314: Unlink now removes junctions on Windows. Patch by Kim Gräsman

- Issue #21088: Bugfix for curses.window.addch() regression in 3.4.0.
  In porting to Argument Clinic, the first two arguments were reversed.

- Issue #21407: _decimal: The module now supports function signatures.

- Issue #10650: Remove the non-standard 'watchexp' parameter from the
  Decimal.quantize() method in the Python version.  It had never been
  present in the C version.

- Issue #21469: Reduced the risk of false positives in robotparser by
  checking to make sure that robots.txt has been read or does not exist
  prior to returning True in can_fetch().

- Issue #19414: Have the OrderedDict mark deleted links as unusable.
  This gives an early failure if the link is deleted during iteration.

- Issue #21421: Add __slots__ to the MappingViews ABC.
  Patch by Josh Rosenberg.

- Issue #21101: Eliminate double hashing in the C speed-up code for
  collections.Counter().

- Issue #21321: itertools.islice() now releases the reference to the source
  iterator when the slice is exhausted.  Patch by Anton Afanasyev.

- Issue #21057: TextIOWrapper now allows the underlying binary stream's
  read() or read1() method to return an arbitrary bytes-like object
  (such as a memoryview).  Patch by Nikolaus Rath.

- Issue #20951: SSLSocket.send() now raises either SSLWantReadError or
  SSLWantWriteError on a non-blocking socket if the operation would block.
  Previously, it would return 0.  Patch by Nikolaus Rath.

- Issue #13248: removed previously deprecated asyncore.dispatcher __getattr__
  cheap inheritance hack.

- Issue #9815: assertRaises now tries to clear references to local variables
  in the exception's traceback.

- Issue #19940: ssl.cert_time_to_seconds() now interprets the given time
  string in the UTC timezone (as specified in RFC 5280), not the local
  timezone.

- Issue #13204: Calling sys.flags.__new__ would crash the interpreter,
  now it raises a TypeError.

- Issue #19385: Make operations on a closed dbm.dumb database always raise the
  same exception.

- Issue #21207: Detect when the os.urandom cached fd has been closed or
  replaced, and open it anew.

- Issue #21291: subprocess's Popen.wait() is now thread safe so that
  multiple threads may be calling wait() or poll() on a Popen instance
  at the same time without losing the Popen.returncode value.

- Issue #21127: Path objects can now be instantiated from str subclass
  instances (such as ``numpy.str_``).

- Issue #15002: urllib.response object to use _TemporaryFileWrapper (and
  _TemporaryFileCloser) facility. Provides a better way to handle file
  descriptor close. Patch contributed by Christian Theune.

- Issue #12220: mindom now raises a custom ValueError indicating it doesn't
  support spaces in URIs instead of letting a 'split' ValueError bubble up.

- Issue #21068: The ssl.PROTOCOL* constants are now enum members.

- Issue #21276: posixmodule: Don't define USE_XATTRS on KFreeBSD and the Hurd.

- Issue #21262: New method assert_not_called for Mock.
  It raises AssertionError if the mock has been called.

- Issue #21238: New keyword argument `unsafe` to Mock. It raises
  `AttributeError` incase of an attribute startswith assert or assret.

- Issue #20896: ssl.get_server_certificate() now uses PROTOCOL_SSLv23, not
  PROTOCOL_SSLv3, for maximum compatibility.

- Issue #21239: patch.stopall() didn't work deterministically when the same
  name was patched more than once.

- Issue #21203: Updated fileConfig and dictConfig to remove inconsistencies.
  Thanks to Jure Koren for the patch.

- Issue #21222: Passing name keyword argument to mock.create_autospec now
  works.

- Issue #21197: Add lib64 -> lib symlink in venvs on 64-bit non-OS X POSIX.

- Issue #17498: Some SMTP servers disconnect after certain errors, violating
  strict RFC conformance.  Instead of losing the error code when we issue the
  subsequent RSET, smtplib now returns the error code and defers raising the
  SMTPServerDisconnected error until the next command is issued.

- Issue #17826: setting an iterable side_effect on a mock function created by
  create_autospec now works. Patch by Kushal Das.

- Issue #7776: Fix ``Host:`` header and reconnection when using
  http.client.HTTPConnection.set_tunnel(). Patch by Nikolaus Rath.

- Issue #20968: unittest.mock.MagicMock now supports division.
  Patch by Johannes Baiter.

- Issue #21529 (CVE-2014-4616): Fix arbitrary memory access in
  JSONDecoder.raw_decode with a negative second parameter. Bug reported by Guido
  Vranken.

- Issue #21169: getpass now handles non-ascii characters that the
  input stream encoding cannot encode by re-encoding using the
  replace error handler.

- Issue #21171: Fixed undocumented filter API of the rot13 codec.
  Patch by Berker Peksag.

- Issue #20539: Improved math.factorial error message for large positive inputs
  and changed exception type (OverflowError -> ValueError) for large negative
  inputs.

- Issue #21172: isinstance check relaxed from dict to collections.Mapping.

- Issue #21155: asyncio.EventLoop.create_unix_server() now raises a ValueError
  if path and sock are specified at the same time.

- Issue #21136: Avoid unnecessary normalization of Fractions resulting from
  power and other operations.  Patch by Raymond Hettinger.

- Issue #17621: Introduce importlib.util.LazyLoader.

- Issue #21076: signal module constants were turned into enums.
  Patch by Giampaolo Rodola'.

- Issue #20636: Improved the repr of Tkinter widgets.

- Issue #19505: The items, keys, and values views of OrderedDict now support
  reverse iteration using reversed().

- Issue #21149: Improved thread-safety in logging cleanup during interpreter
  shutdown. Thanks to Devin Jeanpierre for the patch.

- Issue #21058: Fix a leak of file descriptor in
  :func:`tempfile.NamedTemporaryFile`, close the file descriptor if
  :func:`io.open` fails

- Issue #21200: Return None from pkgutil.get_loader() when __spec__ is missing.

- Issue #21013: Enhance ssl.create_default_context() when used for server side
  sockets to provide better security by default.

- Issue #20145: `assertRaisesRegex` and `assertWarnsRegex` now raise a
  TypeError if the second argument is not a string or compiled regex.

- Issue #20633: Replace relative import by absolute import.

- Issue #20980: Stop wrapping exception when using ThreadPool.

- Issue #21082: In os.makedirs, do not set the process-wide umask. Note this
  changes behavior of makedirs when exist_ok=True.

- Issue #20990: Fix issues found by pyflakes for multiprocessing.

- Issue #21015: SSL contexts will now automatically select an elliptic
  curve for ECDH key exchange on OpenSSL 1.0.2 and later, and otherwise
  default to "prime256v1".

- Issue #21000: Improve the command-line interface of json.tool.

- Issue #20995: Enhance default ciphers used by the ssl module to enable
  better security and prioritize perfect forward secrecy.

- Issue #20884: Don't assume that __file__ is defined on importlib.__init__.

- Issue #21499: Ignore __builtins__ in several test_importlib.test_api tests.

- Issue #20627: xmlrpc.client.ServerProxy is now a context manager.

- Issue #19165: The formatter module now raises DeprecationWarning instead of
  PendingDeprecationWarning.

- Issue #13936: Remove the ability of datetime.time instances to be considered
  false in boolean contexts.

- Issue #18931: selectors module now supports /dev/poll on Solaris.
  Patch by Giampaolo Rodola'.

- Issue #19977: When the ``LC_TYPE`` locale is the POSIX locale (``C`` locale),
  :py:data:`sys.stdin` and :py:data:`sys.stdout` are now using the
  ``surrogateescape`` error handler, instead of the ``strict`` error handler.

- Issue #20574: Implement incremental decoder for cp65001 code (Windows code
  page 65001, Microsoft UTF-8).

- Issue #20879: Delay the initialization of encoding and decoding tables for
  base32, ascii85 and base85 codecs in the base64 module, and delay the
  initialization of the unquote_to_bytes() table of the urllib.parse module, to
  not waste memory if these modules are not used.

- Issue #19157: Include the broadcast address in the usuable hosts for IPv6
  in ipaddress.

- Issue #11599: When an external command (e.g. compiler) fails, distutils now
  prints out the whole command line (instead of just the command name) if the
  environment variable DISTUTILS_DEBUG is set.

- Issue #4931: distutils should not produce unhelpful "error: None" messages
  anymore.  distutils.util.grok_environment_error is kept but doc-deprecated.

- Issue #20875: Prevent possible gzip "'read' is not defined" NameError.
  Patch by Claudiu Popa.

- Issue #11558: ``email.message.Message.attach`` now returns a more
  useful error message if ``attach`` is called on a message for which
  ``is_multipart`` is False.

- Issue #20283: RE pattern methods now accept the string keyword parameters
  as documented.  The pattern and source keyword parameters are left as
  deprecated aliases.

- Issue #20778: Fix modulefinder to work with bytecode-only modules.

- Issue #20791: copy.copy() now doesn't make a copy when the input is
  a bytes object.  Initial patch by Peter Otten.

- Issue #19748: On AIX, time.mktime() now raises an OverflowError for year
  outsize range [1902; 2037].

- Issue #19573: inspect.signature: Use enum for parameter kind constants.

- Issue #20726: inspect.signature: Make Signature and Parameter picklable.

- Issue #17373: Add inspect.Signature.from_callable method.

- Issue #20378: Improve repr of inspect.Signature and inspect.Parameter.

- Issue #20816: Fix inspect.getcallargs() to raise correct TypeError for
  missing keyword-only arguments. Patch by Jeremiah Lowin.

- Issue #20817: Fix inspect.getcallargs() to fail correctly if more
  than 3 arguments are missing. Patch by Jeremiah Lowin.

- Issue #6676: Ensure a meaningful exception is raised when attempting
  to parse more than one XML document per pyexpat xmlparser instance.
  (Original patches by Hirokazu Yamamoto and Amaury Forgeot d'Arc, with
  suggested wording by David Gutteridge)

- Issue #21117: Fix inspect.signature to better support functools.partial.
  Due to the specifics of functools.partial implementation,
  positional-or-keyword arguments passed as keyword arguments become
  keyword-only.

- Issue #20334: inspect.Signature and inspect.Parameter are now hashable.
  Thanks to Antony Lee for bug reports and suggestions.

- Issue #15916: doctest.DocTestSuite returns an empty unittest.TestSuite instead
  of raising ValueError if it finds no tests

- Issue #21209: Fix asyncio.tasks.CoroWrapper to workaround a bug
  in yield-from implementation in CPythons prior to 3.4.1.

- asyncio: Add gi_{frame,running,code} properties to CoroWrapper
  (upstream issue #163).

- Issue #21311: Avoid exception in _osx_support with non-standard compiler
  configurations.  Patch by John Szakmeister.

- Issue #11571: Ensure that the turtle window becomes the topmost window
  when launched on OS X.

- Issue #21801: Validate that __signature__ is None or an instance of Signature.

- Issue #21923: Prevent AttributeError in distutils.sysconfig.customize_compiler
  due to possible uninitialized _config_vars.

- Issue #21323: Fix http.server to again handle scripts in CGI subdirectories,
  broken by the fix for security issue #19435.  Patch by Zach Byrne.

- Issue #22733: Fix ffi_prep_args not zero-extending argument values correctly
  on 64-bit Windows.

- Issue #23302: Default to TCP_NODELAY=1 upon establishing an HTTPConnection.
  Removed use of hard-coded MSS as it's an optimization that's no longer needed
  with Nagle disabled.

IDLE
----

- Issue #20577: Configuration of the max line length for the FormatParagraph
  extension has been moved from the General tab of the Idle preferences dialog
  to the FormatParagraph tab of the Config Extensions dialog.
  Patch by Tal Einat.

- Issue #16893: Update Idle doc chapter to match current Idle and add new
  information.

- Issue #3068: Add Idle extension configuration dialog to Options menu.
  Changes are written to HOME/.idlerc/config-extensions.cfg.
  Original patch by Tal Einat.

- Issue #16233: A module browser (File : Class Browser, Alt+C) requires an
  editor window with a filename.  When Class Browser is requested otherwise,
  from a shell, output window, or 'Untitled' editor, Idle no longer displays
  an error box.  It now pops up an Open Module box (Alt+M). If a valid name
  is entered and a module is opened, a corresponding browser is also opened.

- Issue #4832: Save As to type Python files automatically adds .py to the
  name you enter (even if your system does not display it).  Some systems
  automatically add .txt when type is Text files.

- Issue #21986: Code objects are not normally pickled by the pickle module.
  To match this, they are no longer pickled when running under Idle.

- Issue #17390: Adjust Editor window title; remove 'Python',
  move version to end.

- Issue #14105: Idle debugger breakpoints no longer disappear
  when inserting or deleting lines.

- Issue #17172: Turtledemo can now be run from Idle.
  Currently, the entry is on the Help menu, but it may move to Run.
  Patch by Ramchandra Apt and Lita Cho.

- Issue #21765: Add support for non-ascii identifiers to HyperParser.

- Issue #21940: Add unittest for WidgetRedirector. Initial patch by Saimadhav
  Heblikar.

- Issue #18592: Add unittest for SearchDialogBase. Patch by Phil Webster.

- Issue #21694: Add unittest for ParenMatch. Patch by Saimadhav Heblikar.

- Issue #21686: add unittest for HyperParser. Original patch by Saimadhav
  Heblikar.

- Issue #12387: Add missing upper(lower)case versions of default Windows key
  bindings for Idle so Caps Lock does not disable them. Patch by Roger Serwy.

- Issue #21695: Closing a Find-in-files output window while the search is
  still in progress no longer closes Idle.

- Issue #18910: Add unittest for textView. Patch by Phil Webster.

- Issue #18292: Add unittest for AutoExpand. Patch by Saihadhav Heblikar.

- Issue #18409: Add unittest for AutoComplete. Patch by Phil Webster.

- Issue #21477: htest.py - Improve framework, complete set of tests.
  Patches by Saimadhav Heblikar

- Issue #18104: Add idlelib/idle_test/htest.py with a few sample tests to begin
  consolidating and improving human-validated tests of Idle. Change other files
  as needed to work with htest.  Running the module as __main__ runs all tests.

- Issue #21139: Change default paragraph width to 72, the PEP 8 recommendation.

- Issue #21284: Paragraph reformat test passes after user changes reformat width.

- Issue #17654: Ensure IDLE menus are customized properly on OS X for
  non-framework builds and for all variants of Tk.

- Issue #23180: Rename IDLE "Windows" menu item to "Window".
  Patch by Al Sweigart.

Build
-----

- Issue #15506: Use standard PKG_PROG_PKG_CONFIG autoconf macro in the configure
  script.

- Issue #22935: Allow the ssl module to be compiled if openssl doesn't support
  SSL 3.

- Issue #22592: Drop support of the Borland C compiler to build Python. The
  distutils module still supports it to build extensions.

- Issue #22591: Drop support of MS-DOS, especially of the DJGPP compiler
  (MS-DOS port of GCC).

- Issue #16537: Check whether self.extensions is empty in setup.py. Patch by
  Jonathan Hosmer.

- Issue #22359: Remove incorrect uses of recursive make.  Patch by Jonas
  Wagner.

- Issue #21958: Define HAVE_ROUND when building with Visual Studio 2013 and
  above.  Patch by Zachary Turner.

- Issue #18093: the programs that embed the CPython runtime are now in a
  separate "Programs" directory, rather than being kept in the Modules
  directory.

- Issue #15759: "make suspicious", "make linkcheck" and "make doctest" in Doc/
  now display special message when and only when there are failures.

- Issue #21141: The Windows build process no longer attempts to find Perl,
  instead relying on OpenSSL source being configured and ready to build.  The
  ``PCbuild\build_ssl.py`` script has been re-written and re-named to
  ``PCbuild\prepare_ssl.py``, and takes care of configuring OpenSSL source
  for both 32 and 64 bit platforms.  OpenSSL sources obtained from
  svn.python.org will always be pre-configured and ready to build.

- Issue #21037: Add a build option to enable AddressSanitizer support.

- Issue #19962: The Windows build process now creates "python.bat" in the
  root of the source tree, which passes all arguments through to the most
  recently built interpreter.

- Issue #21285: Refactor and fix curses configure check to always search
  in a ncursesw directory.

- Issue #15234: For BerkelyDB and Sqlite, only add the found library and
  include directories if they aren't already being searched. This avoids
  an explicit runtime library dependency.

- Issue #17861: Tools/scripts/generate_opcode_h.py automatically regenerates
  Include/opcode.h from Lib/opcode.py if the latter gets any change.

- Issue #20644: OS X installer build support for documentation build changes
  in 3.4.1: assume externally supplied sphinx-build is available in /usr/bin.

- Issue #20022: Eliminate use of deprecated bundlebuilder in OS X builds.

- Issue #15968: Incorporated Tcl, Tk, and Tix builds into the Windows build
  solution.

- Issue #17095: Fix Modules/Setup *shared* support.

- Issue #21811: Anticipated fixes to support OS X versions > 10.9.

- Issue #21166: Prevent possible segfaults and other random failures of
  python --generate-posix-vars in pybuilddir.txt build target.

- Issue #18096: Fix library order returned by python-config.

- Issue #17219: Add library build dir for Python extension cross-builds.

- Issue #22919: Windows build updated to support VC 14.0 (Visual Studio 2015),
  which will be used for the official release.

- Issue #21236: Build _msi.pyd with cabinet.lib instead of fci.lib

- Issue #17128: Use private version of OpenSSL for OS X 10.5+ installer.

C API
-----

- Issue #14203: Remove obsolete support for view==NULL in PyBuffer_FillInfo(),
  bytearray_getbuffer(), bytesiobuf_getbuffer() and array_buffer_getbuf().
  All functions now raise BufferError in that case.

- Issue #22445: PyBuffer_IsContiguous() now implements precise contiguity
  tests, compatible with NumPy's NPY_RELAXED_STRIDES_CHECKING compilation
  flag.  Previously the function reported false negatives for corner cases.

- Issue #22079: PyType_Ready() now checks that statically allocated type has
  no dynamically allocated bases.

- Issue #22453: Removed non-documented macro PyObject_REPR().

- Issue #18395: Rename ``_Py_char2wchar()`` to :c:func:`Py_DecodeLocale`,
  rename ``_Py_wchar2char()`` to :c:func:`Py_EncodeLocale`, and document
  these functions.

- Issue #21233: Add new C functions: PyMem_RawCalloc(), PyMem_Calloc(),
  PyObject_Calloc(), _PyObject_GC_Calloc(). bytes(int) is now using
  ``calloc()`` instead of ``malloc()`` for large objects which is faster and
  use less memory.

- Issue #20942: PyImport_ImportFrozenModuleObject() no longer sets __file__ to
  match what importlib does; this affects _frozen_importlib as well as any
  module loaded using imp.init_frozen().

Documentation
-------------

- Issue #19548: Update the codecs module documentation to better cover the
  distinction between text encodings and other codecs, together with other
  clarifications. Patch by Martin Panter.

- Issue #22394: Doc/Makefile now supports ``make venv PYTHON=../python`` to
  create a venv for generating the documentation, e.g.,
  ``make html PYTHON=venv/bin/python3``.

- Issue #21514: The documentation of the json module now refers to new JSON RFC
  7159 instead of obsoleted RFC 4627.

- Issue #21777: The binary sequence methods on bytes and bytearray are now
  documented explicitly, rather than assuming users will be able to derive
  the expected behaviour from the behaviour of the corresponding str methods.

- Issue #6916: undocument deprecated asynchat.fifo class.

- Issue #17386: Expanded functionality of the ``Doc/make.bat`` script to make
  it much more comparable to ``Doc/Makefile``.

- Issue #21312: Update the thread_foobar.h template file to include newer
  threading APIs.  Patch by Jack McCracken.

- Issue #21043: Remove the recommendation for specific CA organizations and to
  mention the ability to load the OS certificates.

- Issue #20765: Add missing documentation for PurePath.with_name() and
  PurePath.with_suffix().

- Issue #19407: New package installation and distribution guides based on
  the Python Packaging Authority tools. Existing guides have been retained
  as legacy links from the distutils docs, as they still contain some
  required reference material for tool developers that isn't recorded
  anywhere else.

- Issue #19697: Document cases where __main__.__spec__ is None.

Tests
-----

- Issue #18982: Add tests for CLI of the calendar module.

- Issue #19548: Added some additional checks to test_codecs to ensure that
  statements in the updated documentation remain accurate. Patch by Martin
  Panter.

- Issue #22838: All test_re tests now work with unittest test discovery.

- Issue #22173: Update lib2to3 tests to use unittest test discovery.

- Issue #16000: Convert test_curses to use unittest.

- Issue #21456: Skip two tests in test_urllib2net.py if _ssl module not
  present. Patch by Remi Pointel.

- Issue #20746: Fix test_pdb to run in refleak mode (-R).  Patch by Xavier
  de Gaye.

- Issue #22060: test_ctypes has been somewhat cleaned up and simplified; it
  now uses unittest test discovery to find its tests.

- Issue #22104: regrtest.py no longer holds a reference to the suite of tests
  loaded from test modules that don't define test_main().

- Issue #22111: Assorted cleanups in test_imaplib.  Patch by Milan Oberkirch.

- Issue #22002: Added ``load_package_tests`` function to test.support and used
  it to implement/augment test discovery in test_asyncio, test_email,
  test_importlib, test_json, and test_tools.

- Issue #21976: Fix test_ssl to accept LibreSSL version strings.  Thanks
  to William Orr.

- Issue #21918: Converted test_tools from a module to a package containing
  separate test files for each tested script.

- Issue #9554: Use modern unittest features in test_argparse. Initial patch by
  Denver Coneybeare and Radu Voicilas.

- Issue #20155: Changed HTTP method names in failing tests in test_httpservers
  so that packet filtering software (specifically Windows Base Filtering Engine)
  does not interfere with the transaction semantics expected by the tests.

- Issue #19493: Refactored the ctypes test package to skip tests explicitly
  rather than silently.

- Issue #18492: All resources are now allowed when tests are not run by
  regrtest.py.

- Issue #21634: Fix pystone micro-benchmark: use floor division instead of true
  division to benchmark integers instead of floating point numbers. Set pystone
  version to 1.2. Patch written by Lennart Regebro.

- Issue #21605: Added tests for Tkinter images.

- Issue #21493: Added test for ntpath.expanduser().  Original patch by
  Claudiu Popa.

- Issue #19925: Added tests for the spwd module. Original patch by Vajrasky Kok.

- Issue #21522: Added Tkinter tests for Listbox.itemconfigure(),
  PanedWindow.paneconfigure(), and Menu.entryconfigure().

- Issue #17756: Fix test_code test when run from the installed location.

- Issue #17752: Fix distutils tests when run from the installed location.

- Issue #18604: Consolidated checks for GUI availability.  All platforms now
  at least check whether Tk can be instantiated when the GUI resource is
  requested.

- Issue #21275: Fix a socket test on KFreeBSD.

- Issue #21223: Pass test_site/test_startup_imports when some of the extensions
  are built as builtins.

- Issue #20635: Added tests for Tk geometry managers.

- Add test case for freeze.

- Issue #20743: Fix a reference leak in test_tcl.

- Issue #21097: Move test_namespace_pkgs into test_importlib.

- Issue #21503: Use test_both() consistently in test_importlib.

- Issue #20939: Avoid various network test failures due to new
  redirect of http://www.python.org/ to https://www.python.org:
  use http://www.example.com instead.

- Issue #20668: asyncio tests no longer rely on tests.txt file.
  (Patch by Vajrasky Kok)

- Issue #21093: Prevent failures of ctypes test_macholib on OS X if a
  copy of libz exists in $HOME/lib or /usr/local/lib.

- Issue #22770: Prevent some Tk segfaults on OS X when running gui tests.

- Issue #23211: Workaround test_logging failure on some OS X 10.6 systems.

- Issue #23345: Prevent test_ssl failures with large OpenSSL patch level
  values (like 0.9.8zc).

Tools/Demos
-----------

- Issue #22314: pydoc now works when the LINES environment variable is set.

- Issue #22615: Argument Clinic now supports the "type" argument for the
  int converter.  This permits using the int converter with enums and
  typedefs.

- Issue #20076: The makelocalealias.py script no longer ignores UTF-8 mapping.

- Issue #20079: The makelocalealias.py script now can parse the SUPPORTED file
  from glibc sources and supports command line options for source paths.

- Issue #22201: Command-line interface of the zipfile module now correctly
  extracts ZIP files with directory entries.  Patch by Ryan Wilson.

- Issue #22120: For functions using an unsigned integer return converter,
  Argument Clinic now generates a cast to that type for the comparison
  to -1 in the generated code.  (This suppresses a compilation warning.)

- Issue #18974: Tools/scripts/diff.py now uses argparse instead of optparse.

- Issue #21906: Make Tools/scripts/md5sum.py work in Python 3.
  Patch by Zachary Ware.

- Issue #21629: Fix Argument Clinic's "--converters" feature.

- Add support for ``yield from`` to 2to3.

- Add support for the PEP 465 matrix multiplication operator to 2to3.

- Issue #16047: Fix module exception list and __file__ handling in freeze.
  Patch by Meador Inge.

- Issue #11824: Consider ABI tags in freeze. Patch by Meador Inge.

- Issue #20535: PYTHONWARNING no longer affects the run_tests.py script.
  Patch by Arfrever Frehtes Taifersar Arahesis.

Windows
-------

- Issue #23260: Update Windows installer

- The bundled version of Tcl/Tk has been updated to 8.6.3.  The most visible
  result of this change is the addition of new native file dialogs when
  running on Windows Vista or newer.  See Tcl/Tk's TIP 432 for more
  information.  Also, this version of Tcl/Tk includes support for Windows 10.

- Issue #17896: The Windows build scripts now expect external library sources
  to be in ``PCbuild\..\externals`` rather than ``PCbuild\..\..``.

- Issue #17717: The Windows build scripts now use a copy of NASM pulled from
  svn.python.org to build OpenSSL.

- Issue #21907: Improved the batch scripts provided for building Python.

- Issue #22644: The bundled version of OpenSSL has been updated to 1.0.1j.

- Issue #10747: Use versioned labels in the Windows start menu.
  Patch by Olive Kilburn.

- Issue #22980: .pyd files with a version and platform tag (for example,
  ".cp35-win32.pyd") will now be loaded in preference to those without tags.


**(For information about older versions, consult the HISTORY file.)**
