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

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

*Release date: XXXX-XX-XX*

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

- bpo-30814: Fixed a race condition when import a submodule from a package.

- bpo-30736: The internal unicodedata database has been upgraded to Unicode
  10.0.

- bpo-30604:  Move co_extra_freefuncs from per-thread to per-interpreter to
  avoid crashes.

- bpo-30597: ``print`` now shows expected input in custom error message when
  used as a Python 2 statement. Patch by Sanyam Khurana.

- bpo-30682: Removed a too-strict assertion that failed for certain f-strings,
  such as eval("f'\\\n'") and eval("f'\\\r'").

- bpo-30501: The compiler now produces more optimal code for complex condition
  expressions in the "if", "while" and "assert" statement, the "if" expression,
  and generator expressions and comprehensions.

- bpo-28180: Implement PEP 538 (legacy C locale coercion). This means that when
  a suitable coercion target locale is available, both the core interpreter and
  locale-aware C extensions will assume the use of UTF-8 as the default text
  encoding, rather than ASCII.

- bpo-30486: Allows setting cell values for __closure__. Patch by Lisa Roach.

- bpo-30537: itertools.islice now accepts integer-like objects (having
  an __index__ method) as start, stop, and slice arguments

- bpo-25324: Tokens needed for parsing in Python moved to C. ``COMMENT``,
  ``NL`` and ``ENCODING``. This way the tokens and tok_names in the token
  module don't get changed when you import the tokenize module.

- bpo-29104: Fixed parsing backslashes in f-strings.

- bpo-27945: Fixed various segfaults with dict when input collections are
  mutated during searching, inserting or comparing.  Based on patches by
  Duane Griffin and Tim Mitchell.

- bpo-25794: Fixed type.__setattr__() and type.__delattr__() for
  non-interned attribute names.  Based on patch by Eryk Sun.

- bpo-30039: If a KeyboardInterrupt happens when the interpreter is in
  the middle of resuming a chain of nested 'yield from' or 'await'
  calls, it's now correctly delivered to the innermost frame.

- bpo-28974: ``object.__format__(x, '')`` is now equivalent to ``str(x)``
  rather than ``format(str(self), '')``.

- bpo-30024: Circular imports involving absolute imports with binding
  a submodule to a name are now supported.

- bpo-12414: sys.getsizeof() on a code object now returns the sizes
  which includes the code struct and sizes of objects which it references.
  Patch by Dong-hee Na.

- bpo-29839: len() now raises ValueError rather than OverflowError if
  __len__() returned a large negative integer.

- bpo-11913: README.rst is now included in the list of distutils standard
  READMEs and therefore included in source distributions.

- bpo-29914: Fixed default implementations of __reduce__ and __reduce_ex__().
  object.__reduce__() no longer takes arguments, object.__reduce_ex__() now
  requires one argument.

- bpo-29949: Fix memory usage regression of set and frozenset object.

- bpo-29935: Fixed error messages in the index() method of tuple, list and deque
  when pass indices of wrong type.

- bpo-29816: Shift operation now has less opportunity to raise OverflowError.
  ValueError always is raised rather than OverflowError for negative counts.
  Shifting zero with non-negative count always returns zero.

- bpo-24821: Fixed the slowing down to 25 times in the searching of some
  unlucky Unicode characters.

- bpo-29102: Add a unique ID to PyInterpreterState.  This makes it easier
  to identify each subinterpreter.

- bpo-29894: The deprecation warning is emitted if __complex__ returns an
  instance of a strict subclass of complex.  In a future versions of Python
  this can be an error.

- bpo-29859: Show correct error messages when any of the pthread_* calls in
  thread_pthread.h fails.

- bpo-29849: Fix a memory leak when an ImportError is raised during from import.

- bpo-28856: Fix an oversight that %b format for bytes should support objects
  follow the buffer protocol.

- bpo-29723: The ``sys.path[0]`` initialization change for bpo-29139 caused a
  regression by revealing an inconsistency in how sys.path is initialized when
  executing ``__main__`` from a zipfile, directory, or other import location.
  The interpreter now consistently avoids ever adding the import location's
  parent directory to ``sys.path``, and ensures no other ``sys.path`` entries
  are inadvertently modified when inserting the import location named on the
  command line.

- bpo-29568: Escaped percent "%%" in the format string for classic string
  formatting no longer allows any characters between two percents.

- bpo-29714: Fix a regression that bytes format may fail when containing zero
  bytes inside.

- bpo-29695: bool(), float(), list() and tuple() no longer take keyword arguments.
  The first argument of int() can now be passes only as positional argument.

- bpo-28893: Set correct __cause__ for errors about invalid awaitables
  returned from __aiter__ and __anext__.

- bpo-28876: ``bool(range)`` works even if ``len(range)``
  raises :exc:`OverflowError`.

- bpo-29683: Fixes to memory allocation in _PyCode_SetExtra.  Patch by
  Brian Coleman.

- bpo-29684: Fix minor regression of PyEval_CallObjectWithKeywords.
  It should raise TypeError when kwargs is not a dict.  But it might
  cause segv when args=NULL and kwargs is not a dict.

- bpo-28598: Support __rmod__ for subclasses of str being called before
  str.__mod__.  Patch by Martijn Pieters.

- bpo-29607: Fix stack_effect computation for CALL_FUNCTION_EX.
  Patch by Matthieu Dartiailh.

- bpo-29602: Fix incorrect handling of signed zeros in complex constructor for
  complex subclasses and for inputs having a __complex__ method. Patch
  by Serhiy Storchaka.

- bpo-29347: Fixed possibly dereferencing undefined pointers
  when creating weakref objects.

- bpo-29463: Add ``docstring`` field to Module, ClassDef, FunctionDef,
  and AsyncFunctionDef ast nodes.  docstring is not first stmt in their body
  anymore.  It affects ``co_firstlineno`` and ``co_lnotab`` of code object
  for module and class.

- bpo-29438: Fixed use-after-free problem in key sharing dict.

- bpo-29546: Set the 'path' and 'name' attribute on ImportError for ``from ... import ...``.

- bpo-29546: Improve from-import error message with location

- bpo-29478: If max_line_length=None is specified while using the Compat32 policy,
  it is no longer ignored.  Patch by Mircea Cosbuc.

- Issue #29319: Prevent RunMainFromImporter overwriting sys.path[0].

- Issue #29337: Fixed possible BytesWarning when compare the code objects.
  Warnings could be emitted at compile time.

- Issue #29327: Fixed a crash when pass the iterable keyword argument to
  sorted().

- 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 #29049: Call _PyObject_GC_TRACK() lazily when calling Python function.
  Calling function is up to 5% faster.

- Issue #28927: bytes.fromhex() and bytearray.fromhex() now ignore all ASCII
  whitespace, not only spaces.  Patch by Robert Xiao.

- 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 #18896: Python function can now have more than 255 parameters.
  collections.namedtuple() now supports tuples with more than 255 elements.

- Issue #28596: The preferred encoding is UTF-8 on Android. Patch written by
  Chi Hsuan Yen.

- bpo-22257: Clean up interpreter startup (see PEP 432).

- 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 #28147: Fix a memory leak in split-table dictionaries: setattr()
  must not convert combined table into split table. Patch written by INADA
  Naoki.

- 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 #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 #28799: Remove the ``PyEval_GetCallStats()`` function and deprecate
  the untested and undocumented ``sys.callstats()`` function. Remove the
  ``CALL_PROFILE`` special build: use the :func:`sys.setprofile` function,
  :mod:`cProfile` or :mod:`profile` to profile function calls.

- Issue #12844: More than 255 arguments can now be passed to a function.

- 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).

- Issue #28774: Fix error position of the unicode error in ASCII and Latin1
  encoders when a string returned by the error handler contains multiple
  non-encodable characters (non-ASCII for the ASCII codec, characters out
  of the U+0000-U+00FF range for Latin1).

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

- 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 #28665: Improve speed of the STORE_DEREF opcode by 40%.

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

- Issue #28621: Sped up converting int to float by reusing faster bits counting
  implementation.  Patch by Adrian Wielgosik.

- Issue #28580: Optimize iterating split table values.
  Patch by Xiang Zhang.

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

- 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 #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 disallowed.  Calling iter() on range instance is the only way.
  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 #28289: ImportError.__init__ now resets not specified attributes.

- 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.

- Issue #27441: Remove some redundant assignments to ob_size in longobject.c.
  Thanks Oren Milman.

- Issue #27222: Clean up redundant code in long_rshift function. Thanks
  Oren Milman.

- 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.

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

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

- Issue #26110: Speed-up method calls: add LOAD_METHOD and CALL_METHOD
  opcodes.

Extension Modules
-----------------

- Issue #29169: Update zlib to 1.2.11.

Library
-------

- bpo-30119: ftplib.FTP.putline() now throws ValueError on commands that contains
  CR or LF. Patch by Dong-hee Na.

- bpo-30879: os.listdir() and os.scandir() now emit bytes names when called
  with bytes-like argument.

- bpo-30746: Prohibited the '=' character in environment variable names in
  ``os.putenv()`` and ``os.spawn*()``.

- bpo-30664: The description of a unittest subtest now preserves the order of
  keyword arguments of TestCase.subTest().

- [Security] bpo-30730: Prevent environment variables injection in subprocess on
  Windows.  Prevent passing other environment variables and command arguments.

- bpo-21071: struct.Struct.format type is now :class:`str` instead of
  :class:`bytes`.

- bpo-29212: Fix concurrent.futures.thread.ThreadPoolExecutor threads to have
  a non repr() based thread name by default when no thread_name_prefix is
  supplied.  They will now identify themselves as "ThreadPoolExecutor-y_n".

- [Security] bpo-30694: Upgrade expat copy from 2.2.0 to 2.2.1 to get fixes
  of multiple security vulnerabilities including: CVE-2017-9233 (External
  entity infinite loop DoS), CVE-2016-9063 (Integer overflow, re-fix),
  CVE-2016-0718 (Fix regression bugs from 2.2.0's fix to CVE-2016-0718)
  and CVE-2012-0876 (Counter hash flooding with SipHash).
  Note: the CVE-2016-5300 (Use os-specific entropy sources like getrandom)
  doesn't impact Python, since Python already gets entropy from the OS to set
  the expat secret using ``XML_SetHashSalt()``.

- bpo-29755: Fixed the lgettext() family of functions in the gettext module.
  They now always return bytes.

- [Security] bpo-30500: Fix urllib.parse.splithost() to correctly parse
  fragments. For example, ``splithost('//127.0.0.1#@evil.com/')`` now
  correctly returns the ``127.0.0.1`` host, instead of treating ``@evil.com``
  as the host in an authentification (``login@host``).

- bpo-30616: Functional API of enum allows to create empty enums.
  Patched by Dong-hee Na

- bpo-30038: Fix race condition between signal delivery and wakeup file
  descriptor.  Patch by Nathaniel Smith.

- bpo-23894: lib2to3 now recognizes ``rb'...'`` and ``f'...'`` strings.

- [Security] bpo-29591: Update expat copy from 2.1.1 to 2.2.0 to get fixes
  of CVE-2016-0718 and CVE-2016-4472. See
  https://sourceforge.net/p/expat/bugs/537/ for more information.

- bpo-24744: pkgutil.walk_packages function now raises ValueError if *path*
  is a string. Patch by Sanyam Khurana.

- bpo-24484: Avoid race condition in multiprocessing cleanup.

- bpo-30589: Fix multiprocessing.Process.exitcode to return the opposite
  of the signal number when the process is killed by a signal (instead
  of 255) when using the "forkserver" method.

- bpo-28994: The traceback no longer displayed for SystemExit raised in
  a callback registered by atexit.

- bpo-30508: Don't log exceptions if Task/Future "cancel()" method was
  called.

- bpo-30645: Fix path calculation in `imp.load_package()`, fixing it for
  cases when a package is only shipped with bytecodes. Patch by
  Alexandru Ardelean.

- bpo-11822: The dis.dis() function now is able to disassemble nested
  code objects.

- bpo-30624: selectors does not take KeyboardInterrupt and SystemExit into
  account, leaving a fd in a bad state in case of error. Patch by Giampaolo
  Rodola'.

- bpo-30595: multiprocessing.Queue.get() with a timeout now polls its reader in
  non-blocking mode if it succeeded to aquire the lock but the acquire took
  longer than the timeout.

- bpo-28556: Updates to typing module: Add generic AsyncContextManager, add
  support for ContextManager on all versions. Original PRs by Jelle Zijlstra
  and Ivan Levkivskyi

- bpo-30605: re.compile() no longer raises a BytesWarning when compiling a
  bytes instance with misplaced inline modifier.  Patch by Roy Williams.

- bpo-29870: Fix ssl sockets leaks when connection is aborted in asyncio/ssl
  implementation. Patch by Michaël Sghaïer.

- bpo-29743: Closing transport during handshake process leaks open socket.
  Patch by Nikolay Kim

- bpo-27585: Fix waiter cancellation in asyncio.Lock.
  Patch by Mathieu Sornay.

- bpo-30014: modify() method of poll(), epoll() and devpoll() based classes of
  selectors module is around 10% faster.  Patch by Giampaolo Rodola'.

- bpo-30418: On Windows, subprocess.Popen.communicate() now also ignore EINVAL
  on stdin.write() if the child process is still running but closed the pipe.

- bpo-30463: Addded empty __slots__ to abc.ABC.  This allows subclassers
  to deny __dict__ and __weakref__ creation.  Patch by Aaron Hall.

- bpo-30520: Loggers are now pickleable.

- bpo-30557: faulthandler now correctly filters and displays exception codes
  on Windows

- bpo-30526: Add TextIOWrapper.reconfigure() and a TextIOWrapper.write_through
  attribute.

- bpo-30245: Fix possible overflow when organize struct.pack_into
  error message.  Patch by Yuan Liu.

- bpo-30378: Fix the problem that logging.handlers.SysLogHandler cannot
  handle IPv6 addresses.

- bpo-16500: Allow registering at-fork handlers.

- bpo-30470: Deprecate invalid ctypes call protection on Windows.  Patch by
  Mariatta Wijaya.

- bpo-30414: multiprocessing.Queue._feed background running
  thread do not break from main loop on exception.

- bpo-30003: Fix handling escape characters in HZ codec.  Based on patch
  by Ma Lin.

- bpo-30149: inspect.signature() now supports callables with
  variable-argument parameters wrapped with partialmethod.
  Patch by Dong-hee Na.

- bpo-30436: importlib.find_spec() raises ModuleNotFoundError instead of
  AttributeError if the specified parent module is not a package
  (i.e. lacks a __path__ attribute).

- bpo-30301: Fix AttributeError when using SimpleQueue.empty() under
  *spawn* and *forkserver* start methods.

- bpo-30375: Warnings emitted when compile a regular expression now always
  point to the line in the user code.  Previously they could point into inners
  of the re module if emitted from inside of groups or conditionals.

- bpo-30329: imaplib and poplib now catch the Windows socket WSAEINVAL error
  (code 10022) on shutdown(SHUT_RDWR): An invalid operation was attempted.
  This error occurs sometimes on SSL connections.

- bpo-29196: Removed previously deprecated in Python 2.4 classes Plist, Dict
  and _InternalDict in the plistlib module.  Dict values in the result of
  functions readPlist() and readPlistFromBytes() are now normal dicts.  You
  no longer can use attribute access to access items of these dictionaries.

- bpo-9850: The :mod:`macpath` is now deprecated and will be removed
  in Python 3.8.

- bpo-30299: Compiling regular expression in debug mode on CPython now displays
  the compiled bytecode in human readable form.

- bpo-30048: Fixed ``Task.cancel()`` can be ignored when the task is
  running coroutine and the coroutine returned without any more ``await``.

- bpo-30266: contextlib.AbstractContextManager now supports anti-registration
  by setting __enter__ = None or __exit__ = None, following the pattern
  introduced in bpo-25958. Patch by Jelle Zijlstra.

- bpo-30340: Enhanced regular expressions optimization. This increased
  the performance of matching some patterns up to 25 times.

- bpo-30298: Weaken the condition of deprecation warnings for inline modifiers.
  Now allowed several subsequential inline modifiers at the start of the
  pattern (e.g. ``'(?i)(?s)...'``).  In verbose mode whitespaces and comments
  now are allowed before and between inline modifiers (e.g.
  ``'(?x) (?i) (?s)...'``).

- bpo-30285: Optimized case-insensitive matching and searching of regular
  expressions.

- bpo-29990: Fix range checking in GB18030 decoder.  Original patch by Ma Lin.

- bpo-29979: rewrite cgi.parse_multipart, reusing the FieldStorage class and
  making its results consistent with those of FieldStorage for
  multipart/form-data requests. Patch by Pierre Quentel.

- bpo-30243: Removed the __init__ methods of _json's scanner and encoder.
  Misusing them could cause memory leaks or crashes.  Now scanner and encoder
  objects are completely initialized in the __new__ methods.

- bpo-30215: Compiled regular expression objects with the re.LOCALE flag no
  longer depend on the locale at compile time.  Only the locale at matching
  time affects the result of matching.

- bpo-30185: Avoid KeyboardInterrupt tracebacks in forkserver helper process
  when Ctrl-C is received.

- bpo-30103: binascii.b2a_uu() and uu.encode() now support using ``'`'``
  as zero instead of space.

- bpo-28556: Various updates to typing module: add typing.NoReturn type, use
  WrapperDescriptorType, minor bug-fixes.  Original PRs by
  Jim Fasarakis-Hilliard and Ivan Levkivskyi.

- bpo-30205: Fix getsockname() for unbound AF_UNIX sockets on Linux.

- bpo-30228: The seek() and tell() methods of io.FileIO now set the internal
  seekable attribute to avoid one syscall on open() (in buffered or text mode).

- bpo-30190: unittest's assertAlmostEqual and assertNotAlmostEqual provide a
  better message in case of failure which includes the difference between
  left and right arguments.  (patch by Giampaolo Rodola')

- bpo-30101: Add support for curses.A_ITALIC.

- bpo-29822: inspect.isabstract() now works during __init_subclass__.  Patch
  by Nate Soares.

- bpo-29960: Preserve generator state when _random.Random.setstate()
  raises an exception.  Patch by Bryan Olson.

- bpo-30070: Fixed leaks and crashes in errors handling in the parser module.

- bpo-22352: Column widths in the output of dis.dis() are now adjusted for
  large line numbers and instruction offsets.

- bpo-30061: Fixed crashes in IOBase methods __next__() and readlines() when
  readline() or __next__() respectively return non-sizeable object.
  Fixed possible other errors caused by not checking results of PyObject_Size(),
  PySequence_Size(), or PyMapping_Size().

- bpo-30218: Fix PathLike support for shutil.unpack_archive. Patch by Jelle
  Zijlstra.

- bpo-10076: Compiled regular expression and match objects in the re module
  now support copy.copy() and copy.deepcopy() (they are considered atomic).

- bpo-30068: _io._IOBase.readlines will check if it's closed first when
  hint is present.

- bpo-29694: Fixed race condition in pathlib mkdir with flags
  parents=True.  Patch by Armin Rigo.

- bpo-29692: Fixed arbitrary unchaining of RuntimeError exceptions in
  contextlib.contextmanager.  Patch by Siddharth Velankar.

- bpo-26187: Test that sqlite3 trace callback is not called multiple
  times when schema is changing.  Indirectly fixed by switching to
  use sqlite3_prepare_v2() in bpo-9303.  Patch by Aviv Palivoda.

- bpo-30017: Allowed calling the close() method of the zip entry writer object
  multiple times.  Writing to a closed writer now always produces a ValueError.

- bpo-29998: Pickling and copying ImportError now preserves name and path
  attributes.

- bpo-29995: re.escape() now escapes only regex special characters.

- bpo-29962: Add math.remainder operation, implementing remainder
  as specified in IEEE 754.

- bpo-29649: Improve struct.pack_into() exception messages for problems
  with the buffer size and offset.  Patch by Andrew Nester.

- bpo-29654: Support If-Modified-Since HTTP header (browser cache).  Patch
  by Pierre Quentel.

- bpo-29931: Fixed comparison check for ipaddress.ip_interface objects.
  Patch by Sanjay Sundaresan.

- bpo-29953: Fixed memory leaks in the replace() method of datetime and time
  objects when pass out of bound fold argument.

- bpo-29942: Fix a crash in itertools.chain.from_iterable when encountering
  long runs of empty iterables.

- bpo-10030: Sped up reading encrypted ZIP files by 2 times.

- bpo-29204: Element.getiterator() and the html parameter of XMLParser() were
  deprecated only in the documentation (since Python 3.2 and 3.4 correspondintly).
  Now using them emits a deprecation warning.

- bpo-27863: Fixed multiple crashes in ElementTree caused by race conditions
  and wrong types.

- bpo-25996: Added support of file descriptors in os.scandir() on Unix.
  os.fwalk() is sped up by 2 times by using os.scandir().

- bpo-28699: Fixed a bug in pools in multiprocessing.pool that raising an
  exception at the very first of an iterable may swallow the exception or
  make the program hang. Patch by Davin Potts and Xiang Zhang.

- bpo-23890: unittest.TestCase.assertRaises() now manually breaks a reference
  cycle to not keep objects alive longer than expected.

- bpo-29901: The zipapp module now supports general path-like objects, not
  just pathlib.Path.

- bpo-25803: Avoid incorrect errors raised by Path.mkdir(exist_ok=True)
  when the OS gives priority to errors such as EACCES over EEXIST.

- bpo-29861: Release references to tasks, their arguments and their results
  as soon as they are finished in multiprocessing.Pool.

- bpo-19930: The mode argument of os.makedirs() no longer affects the file
  permission bits of newly-created intermediate-level directories.

- bpo-29884: faulthandler: Restore the old sigaltstack during teardown.
  Patch by Christophe Zeitouny.

- bpo-25455: Fixed crashes in repr of recursive buffered file-like objects.

- bpo-29800: Fix crashes in partial.__repr__ if the keys of partial.keywords
  are not strings.  Patch by Michael Seifert.

- bpo-8256: Fixed possible failing or crashing input() if attributes "encoding"
  or "errors" of sys.stdin or sys.stdout are not set or are not strings.

- bpo-28692: Using non-integer value for selecting a plural form in gettext is
  now deprecated.

- bpo-26121: Use C library implementation for math functions erf() and erfc().

- bpo-29619: os.stat() and os.DirEntry.inode() now convert inode (st_ino) using
  unsigned integers.

- bpo-28298: Fix a bug that prevented array 'Q', 'L' and 'I' from accepting big
  intables (objects that have __int__) as elements.

- bpo-29645: Speed up importing the webbrowser module.  webbrowser.register()
  is now thread-safe.

- bpo-28231: The zipfile module now accepts path-like objects for external
  paths.

- bpo-26915: index() and count() methods of collections.abc.Sequence now
  check identity before checking equality when do comparisons.

- bpo-28682: Added support for bytes paths in os.fwalk().

- bpo-29728: Add new :data:`socket.TCP_NOTSENT_LOWAT` (Linux 3.12) constant.
  Patch by Nathaniel J. Smith.

- bpo-29623: Allow use of path-like object as a single argument in
  ConfigParser.read().  Patch by David Ellis.

- bpo-9303: Migrate sqlite3 module to _v2 API.  Patch by Aviv Palivoda.

- bpo-28963: Fix out of bound iteration in asyncio.Future.remove_done_callback
  implemented in C.

- bpo-29704: asyncio.subprocess.SubprocessStreamProtocol no longer closes before
  all pipes are closed.

- bpo-29271: Fix Task.current_task and Task.all_tasks implemented in C
  to accept None argument as their pure Python implementation.

- bpo-29703: Fix asyncio to support instantiation of new event loops
  in child processes.

- bpo-29615: SimpleXMLRPCDispatcher no longer chains KeyError (or any other
  exception) to exception(s) raised in the dispatched methods.
  Patch by Petr Motejlek.

- bpo-7769: Method register_function() of xmlrpc.server.SimpleXMLRPCDispatcher
  and its subclasses can now be used as a decorator.

- bpo-29376: Fix assertion error in threading._DummyThread.is_alive().

- bpo-28624: Add a test that checks that cwd parameter of Popen() accepts
  PathLike objects.  Patch by Sayan Chowdhury.

- bpo-28518: Start a transaction implicitly before a DML statement.
  Patch by Aviv Palivoda.

- bpo-29742: get_extra_info() raises exception if get called on closed ssl transport.
  Patch by Nikolay Kim.

- Issue #16285: urrlib.parse.quote is now based on RFC 3986 and hence includes
  '~' in the set of characters that is not quoted by default. Patch by
  Christian Theune and Ratnadeep Debnath.

- bpo-29532: Altering a kwarg dictionary passed to functools.partial()
  no longer affects a partial object after creation.

- bpo-29110: Fix file object leak in aifc.open() when file is given as a
  filesystem path and is not in valid AIFF format. Patch by Anthony Zhang.

- bpo-22807: Add uuid.SafeUUID and uuid.UUID.is_safe to relay information from
  the platform about whether generated UUIDs are generated with a
  multiprocessing safe method.

- bpo-29576: Improve some deprecations in importlib. Some deprecated methods
  now emit DeprecationWarnings and have better descriptive messages.

- bpo-29534: Fixed different behaviour of Decimal.from_float()
  for _decimal and _pydecimal. Thanks Andrew Nester.

- bpo-10379: locale.format_string now supports the 'monetary' keyword argument,
  and locale.format is deprecated.

- bpo-29851: importlib.reload() now raises ModuleNotFoundError if the
  module lacks a spec.

- Issue #28556: Various updates to typing module: typing.Counter, typing.ChainMap,
  improved ABC caching, etc. Original PRs by Jelle Zijlstra, Ivan Levkivskyi,
  Manuel Krebber, and Łukasz Langa.

- Issue #29100: Fix datetime.fromtimestamp() regression introduced in Python
  3.6.0: check minimum and maximum years.

- Issue #29416: Prevent infinite loop in pathlib.Path.mkdir

- Issue #29444: Fixed out-of-bounds buffer access in the group() method of
  the match object.  Based on patch by WGH.

- Issue #29377: Add WrapperDescriptorType, MethodWrapperType, and
  MethodDescriptorType built-in types to types module.
  Original patch by Manuel Krebber.

- Issue #29218: Unused install_misc command is now removed.  It has been
  documented as unused since 2000.  Patch by Eric N. Vander Weele.

- Issue #29368: The extend() method is now called instead of the append()
  method when unpickle collections.deque and other list-like objects.
  This can speed up unpickling to 2 times.

- Issue #29338: The help of a builtin or extension class now includes the
  constructor signature if __text_signature__ is provided for the class.

- Issue #29335: Fix subprocess.Popen.wait() when the child process has
  exited to a stopped instead of terminated state (ex: when under ptrace).

- Issue #29290: Fix a regression in argparse that help messages would wrap at
  non-breaking spaces.

- Issue #28735: Fixed the comparison of mock.MagickMock with mock.ANY.

- Issue #29197: Removed deprecated function ntpath.splitunc().

- Issue #29210: Removed support of deprecated argument "exclude" in
  tarfile.TarFile.add().

- Issue #29219: Fixed infinite recursion in the repr of uninitialized
  ctypes.CDLL instances.

- Issue #29192: Removed deprecated features in the http.cookies module.

- Issue #29193: A format string argument for string.Formatter.format()
  is now positional-only.

- Issue #29195: Removed support of deprecated undocumented keyword arguments
  in methods of regular expression objects.

- Issue #28969: Fixed race condition in C implementation of functools.lru_cache.
  KeyError could be raised when cached function with full cache was
  simultaneously called from differen threads with the same uncached arguments.

- Issue #20804: The unittest.mock.sentinel attributes now preserve their
  identity when they are copied or pickled.

- 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 #15812: inspect.getframeinfo() now correctly shows the first line of
  a context.  Patch by Sam Breese.

- Issue #28985: Update authorizer constants in sqlite3 module.
  Patch by Dingyuan Wang.

- 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 #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 #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 passing a sequence that
  doesn't own its elements as limits.

- Issue #16255: subprocess.Popen uses /system/bin/sh on Android as the shell,
  instead of /bin/sh.

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

- 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.

- Issue #28847: dbm.dumb now supports reading read-only files and no longer
  writes the index file when it is not changed.  A deprecation warning is now
  emitted if the index file is missed and recreated in the 'r' and 'w' modes
  (will be an error in future Python releases).

- Issue #27030: Unknown escapes consisting of ``'\'`` and an ASCII letter in
  re.sub() replacement templates regular expressions now are errors.

- 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 #28740: Add sys.getandroidapilevel(): return the build time API version
  of Android as an integer. Function only available on Android.

- 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: Remove the subprocess.Popen.wait endtime parameter.  It was
  deprecated in 3.4 and undocumented prior to that.

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

- Issue #28548: In the "http.server" module, parse the protocol version if
  possible, to avoid using HTTP 0.9 in some error responses.

- 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 #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 #24241: The webbrowser in an X environment now prefers using the
  default browser directly. Also, the webbrowser register() function now has
  a documented 'preferred' argument, to specify browsers to be returned by
  get() with no arguments. Patch by David Steele

- 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 #28255: calendar.TextCalendar.prweek() no longer prints a space after
  a weeks's calendar.  calendar.TextCalendar.pryear() no longer prints redundant
  newline after a year's calendar.  Based on patch by Xiang Zhang.

- 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.

- 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 #28469: timeit now uses the sequence 1, 2, 5, 10, 20, 50,... instead
  of 1, 10, 100,... for autoranging.

- Issue #28115: Command-line interface of the zipfile module now uses argparse.
  Added support of long options.

- 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 #23214: In the "io" module, the argument to BufferedReader and
  BytesIO's read1() methods is now optional and can be -1, matching the
  BufferedIOBase specification.

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

- Issue #28240: timeit: remove ``-c/--clock`` and ``-t/--time`` command line
  options which were deprecated since Python 3.3.

- Issue #28240: timeit now repeats the benchmarks 5 times instead of only 3
  to make benchmarks more reliable.

- Issue #28240: timeit autorange now uses a single loop iteration if the
  benchmark takes less than 10 seconds, instead of 10 iterations.
  "python3 -m timeit -s 'import time' 'time.sleep(1)'" now takes 4 seconds
  instead of 40 seconds.

- Distutils.sdist now looks for README and setup.py files with case
  sensitivity. This behavior matches that found in Setuptools 6.0 and
  later. See `setuptools 100
  <https://github.com/pypa/setuptools/issues/100>`_ for rationale.

- Issue #24452: Make webbrowser support Chrome on Mac OS X. Patch by
  Ned Batchelder.

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

- 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 #28380: unittest.mock Mock autospec functions now properly support
  assert_called, assert_not_called, and assert_called_once.

- 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 #28332: Deprecated silent truncations in socket.htons and socket.ntohs.
  Original patch by Oren Milman.

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

- Issue #28257: Improved error message when passing 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 #28325: Remove vestigial MacOS 9 macurl2path module and its tests.

- 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.

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

- Issue #29581: ABCMeta.__new__ now accepts ``**kwargs``, allowing abstract base
  classes to use keyword parameters in __init_subclass__. Patch by Nate Soares.

- Issue #25532: inspect.unwrap() will now only try to unwrap an object
  sys.getrecursionlimit() times, to protect against objects which create a new
  object on every attribute access.

- bpo-30177: path.resolve(strict=False) no longer cuts the path after the first
  element not present in the filesystem.  Patch by Antoine Pietri.

IDLE
----

- bpo-15786: Fix several problems with IDLE's autocompletion box.
  The following should now work: clicking on selection box items;
  using the scrollbar; selecting an item by hitting Return.
  Hangs on MacOSX should no longer happen. Patch by Louie Lu.

- bpo-25514: Add doc subsubsection about IDLE failure to start.
  Popup no-connection message directs users to this section.

- bpo-30642: Fix reference leaks in IDLE tests.
  Patches by Louie Lu and Terry Jan Reedy.

- bpo-30495: Add docstrings for textview.py and use PEP8 names.
  Patches by Cheryl Sabella and Terry Jan Reedy.

- bpo-30290: Help-about: use pep8 names and add tests.
  Increase coverage to 100%.
  Patches by Louie Lu, Cheryl Sabella, and Terry Jan Reedy.

- bpo-30303: Add _utest option to textview; add new tests.
  Increase coverage to 100%.
  Patches by Louie Lu and Terry Jan Reedy.

- Issue #29071: IDLE colors f-string prefixes (but not invalid ur prefixes).

- Issue #28572: Add 10% to coverage of IDLE's test_configdialog.
  Update and augment description of the configuration system.

Windows
-------

- bpo-30450: The build process on Windows no longer depends on Subversion,
  instead pulling external code from GitHub via a Python script.  If Python 3.6
  is not found on the system (via ``py -3.6``), NuGet is used to download a
  copy of 32-bit Python.

- bpo-29579: Removes readme.txt from the installer.

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

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

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

- 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
-----

- bpo-30708: PyUnicode_AsWideCharString() now raises a ValueError if the
  second argument is NULL and the wchar_t\* string contains null
  characters.

- bpo-16500: Deprecate PyOS_AfterFork() and add PyOS_BeforeFork(),
  PyOS_AfterFork_Parent() and PyOS_AfterFork_Child().

- bpo-6532: The type of results of PyThread_start_new_thread() and
  PyThread_get_thread_ident(), and the id parameter of
  PyThreadState_SetAsyncExc() changed from "long" to "unsigned long".

- Issue #27867: Function PySlice_GetIndicesEx() is deprecated and replaced with
  a macro if Py_LIMITED_API is not set or set to the value between 0x03050400
  and 0x03060000 (not including) or 0x03060100 or higher.  Added functions
  PySlice_Unpack() and PySlice_AdjustIndices().

- Issue #29083: Fixed the declaration of some public API functions.
  PyArg_VaParse() and PyArg_VaParseTupleAndKeywords() were not available in
  limited API.  PyArg_ValidateKeywordArguments(), PyArg_UnpackTuple() and
  Py_BuildValue() were not available in limited API of version < 3.3 when
  PY_SSIZE_T_CLEAN is defined.

- Issue #28769: The result of PyUnicode_AsUTF8AndSize() and PyUnicode_AsUTF8()
  is now of type ``const char *`` rather of ``char *``.

- 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.

- Issue #28822: The index parameters *start* and *end* of PyUnicode_FindChar()
  are now adjusted to behave like ``str[start:end]``.

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

- Issue #28761: The fields name and doc of structures PyMemberDef, PyGetSetDef,
  PyStructSequence_Field, PyStructSequence_Desc, and wrapperbase are now of
  type ``const char *`` rather of ``char *``.

- Issue #28748: Private variable _Py_PackageContext is now of type ``const char *``
  rather of ``char *``.

- Issue #19569: Compiler warnings are now emitted if use most of deprecated
  functions.

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

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

- bpo-30176: Add missing attribute related constants in curses documentation.

- Issue #30052: the link targets for :func:`bytes` and
  :func:`bytearray` are now their respective type definitions, rather
  than the corresponding builtin function entries. Use :ref:`bytes <func-bytes>`
  and :ref:`bytearray <func-bytearray>` to reference the latter.

  In order to ensure this and future cross-reference updates are applied
  automatically, the daily documentation builds now disable the default
  output caching features in Sphinx.

- bpo-26985: Add missing info of code object in inspect documentation.

- bpo-19824, bpo-20314, bpo-12518: Improve the documentation for, and links
  to, template strings by emphasizing their utility for internationalization,
  and by clarifying some usage constraints.

- bpo-28929: Link the documentation to its source file on GitHub.

- bpo-25008: Document smtpd.py as effectively deprecated and add a pointer to
  aiosmtpd, a third-party asyncio-based replacement.

- Issue #26355: Add canonical header link on each page to corresponding major
  version of the documentation. Patch by Matthias Bussonnier.

- Issue #29349: Fix Python 2 syntax in code for building the documentation.

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

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

Build
-----

- bpo-30687: Locate msbuild.exe on Windows when building rather than
  vcvarsall.bat

- bpo-20210: Support the *disabled* marker in Setup files. Extension modules
  listed after this marker are not built at all, neither by the Makefile nor by
  setup.py.

- bpo-29941: Add ``--with-assertions`` configure flag to explicitly enable
  C ``assert()`` checks. Defaults to off. ``--with-pydebug`` implies
  ``--with-assertions``.

- bpo-28787: Fix out-of-tree builds of Python when configured with
  ``--with--dtrace``.

- bpo-29243: Prevent unnecessary rebuilding of Python during ``make test``,
  ``make install`` and some other make targets when configured with
  ``--enable-optimizations``.

- bpo-23404: Don't regenerate generated files based on file modification time
  anymore: the action is now explicit. Replace ``make touch`` with
  ``make regen-all``.

- bpo-29643: Fix ``--enable-optimization`` didn't work.

- bpo-27593: sys.version and the platform module python_build(),
  python_branch(), and python_revision() functions now use
  git information rather than hg when building from a repo.

- bpo-29572: Update Windows build and OS X installers to use OpenSSL 1.0.2k.

- Issue #27659: Prohibit implicit C function declarations: use
  -Werror=implicit-function-declaration when possible (GCC and Clang, but it
  depends on the compiler version). Patch written by Chi Hsuan Yen.

- Issue #29384: Remove old Be OS helper scripts.

- 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.

- 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 #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.

- Issue #21124: Fix building the _struct module on Cygwin by passing ``NULL``
  instead of ``&PyType_Type`` to PyVarObject_HEAD_INIT.  Patch by Masayuki
  Yamamoto.

- Issue #13756: Fix building extensions modules on Cygwin.  Patch by Roumen
  Petrov, based on original patch by Jason Tishler.

- Issue #21085: Add configure check for siginfo_t.si_band, which Cygwin does
  not provide.  Patch by Masayuki Yamamoto with review and rebase by Erik Bray.

- 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 #27979: A full copy of libffi is no longer bundled for use when
  building _ctypes on non-OSX UNIX platforms.  An installed copy of libffi is
  now required when building _ctypes on such platforms.

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

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

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

- bpo-29748: Added the slice index converter in Argument Clinic.

- bpo-24037: Argument Clinic now uses the converter `bool(accept={int})` rather
  than `int` for semantical booleans.  This avoids repeating the default
  value for Python and C and will help in converting to `bool` in future.

- Issue #29367: python-gdb.py now supports also ``method-wrapper``
  (``wrapperobject``) objects.

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

- Issue #15369: The pybench and pystone microbenchmark have been removed from
  Tools. Please use the new Python benchmark suite
  https://github.com/python/performance which is more reliable and includes a
  portable version of pybench working on Python 2 and Python 3.

- Issue #28102: The zipfile module CLI now prints usage to stderr.
  Patch by Stephen J. Turnbull.

Tests
-----

* bpo-30357: test_thread: setUp() now uses support.threading_setup() and
  support.threading_cleanup() to wait until threads complete to avoid
  random side effects on following tests. Initial patch written by Grzegorz
  Grzywacz.

- bpo-30197: Enhanced functions swap_attr() and swap_item() in the
  test.support module.  They now work when delete replaced attribute or item
  inside the with statement.  The old value of the attribute or item (or None
  if it doesn't exist) now will be assigned to the target of the "as" clause,
  if there is one.

- Issue #24932: Use proper command line parsing in _testembed

- 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 #26936: Fix the test_socket failures on Android - getservbyname(),
   getservbyport() and getaddrinfo() are broken on some Android API levels.

- 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.

- 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.

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

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


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

*Release date: XXXX-XX-XX*

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

- 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 #29085: Allow random.Random.seed() to use high quality OS randomness
  rather than the pid and time.

- 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 passing 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 #29326: Ignores blank lines in ._pth files (Patch by Alexey Izbyshev)

- Issue #28164: Correctly handle special console filenames (patch by Eryk Sun)

- Issue #29409: Implement PEP 529 for io.FileIO (Patch by Eryk Sun)

- Issue #29392: Prevent crash when passing invalid arguments into msvcrt module.

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

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

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

- Issue #29349: Fix Python 2 syntax in code for building the documentation.

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 #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 #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 #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 #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 #26128: Added keyword-only arguments support for
  subprocess.STARTUPINFO

- 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.

- 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 passing a non-mapping as a var-keyword argument.

- Issue #28257: Improved error message when passing 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 #26359: 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.3?
===========================

Release date: 2017-01-17

There were no code changes between 3.5.3rc1 and 3.5.3 final.


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

Release date: 2017-01-02

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

- Issue #29073: bytearray formatting no longer truncates on first null byte.

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

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

- 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 #28512: Fixed setting the offset attribute of SyntaxError by
  PyErr_SyntaxLocationEx() and PyErr_SyntaxLocationObject().

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

- 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 #28426: Fixed potential crash in PyUnicode_AsDecodedObject() in debug
  build.

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

- 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: 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 #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 error message from
  ``complex(1.0, {2:3})``. Patch by Soumya Sharma.

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

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

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

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

- Issue #28189: dictitems_contains no longer swallows compare errors.
  (Patch by Xiang Zhang)

- 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 #26020: set literal evaluation order did not match documented behaviour.

- 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 #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 #27419: Standard __import__() no longer look up "__import__" in globals
  or builtins for importing submodules or "from import".  Fixed handling an
  error of non-string package name.

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

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

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

- 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 #27443: __length_hint__() of bytearray iterators no longer return a
  negative integer for a resized bytearray.

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

Library
-------

- 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 #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 #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 #25659: In ctypes, prevent a crash calling the from_buffer() and
  from_buffer_copy() methods on abstract classes like Array.

- 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 #28387: Fixed possible crash in _io.TextIOWrapper deallocator when
  the garbage collector is invoked in other thread.  Based on patch by
  Sebastian Cufre.

- 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 #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 #25464: Fixed HList.header_exists() in tkinter.tix module by addin
  a workaround to Tix library bug.

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

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

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

- 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 #28321: Fixed writing non-BMP characters with binary format in plistlib.

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

- 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 #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 #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.

- 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 #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 #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 #27599: Fixed buffer overrun in binascii.b2a_qp() and binascii.a2b_qp().

- Issue #19003:m email.generator now replaces only ``\r`` and/or ``\n`` line
  endings, per the RFC, instead of all unicode line endings.

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

- 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 #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 #27445: Don't pass str(_charset) to MIMEText.set_payload().
  Patch by Claude Paroz.

- 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 #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 #27988: Fix email iter_attachments incorrect mutation of payload list.

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

- 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 #26470: Port ssl and hashlib module to OpenSSL 1.1.0.

- 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.

- 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 #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 #2466: posixpath.ismount now correctly recognizes mount points which
  the user does not have permission to access.

- 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.

- 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 #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 #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 #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 #26664: Fix activate.fish by removing mis-use of ``$``.

- Issue #22115: Fixed tracing Tkinter variables: 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.

- Fix a scoping issue in importlib.util.LazyLoader which triggered an
  UnboundLocalError when lazy-loading a module that was already put into
  sys.modules.

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

- 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 #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 #26386: Fixed ttk.TreeView selection operations with item id's
  containing spaces.

- [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.

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

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

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

- 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.

- 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 #28600: Optimize loop.call_soon().

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

- 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 #24142: Reading a corrupt config file left the parser in an
  invalid state.  Original patch by Florian Höch.

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

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.

- 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 #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 #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 #27452: add line counter and crc to IDLE configHandler test dump.

- 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.

C API
-----

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

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

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

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

Tests
-----

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

- 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.

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

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

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

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.

- 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.

Windows
-------

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

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

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

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

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

Build
-----

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

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

- 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 #28444: Fix missing extensions modules when cross compiling.

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

- 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 #28066: Fix the logic that searches build directories for generated
  include files when building outside the source tree.

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

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

- Issue #27705: Update message in validate_ucrtbase.py

- 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 #26307: The profile-opt build now applies PGO to the built-in modules.

- Issue #26359: Add the --with-optimizations configure flag.

- 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 and ld_so_aix,
  which are required on AIX.  This updates references to an installation path
  that was changed in 3.2a4, and undoes changed references to the build tree
  that were made 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.

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


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

Release date: 2016-06-26

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

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

Tests
-----

- Issue #26867: Ubuntu's openssl OP_NO_SSLv3 is forced on by default; fix test.

IDLE
----

- Issue #27365: Allow non-ascii in idlelib/NEWS.txt - minimal part for 3.5.2.


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

Release date: 2016-06-12

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

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

- 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.  Patch by
  Joe Jevnik.

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

- 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 #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 #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 #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 #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 #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 #27138: Fix the doc comment for FileFinder.find_spec().

- 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 #26194:  Deque.insert() gave odd results for bounded deques that had
  reached their maximum size.  Now an IndexError will be raised when attempting
  to insert into a full deque.

- 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`` (``int``), even if ``1`` and ``1.0``
  are equal.

- 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 #27147: Mention PEP 420 in the importlib docs.

- 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 #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 #25887: Raise a RuntimeError when a coroutine object is awaited
  more than once.

- 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
-------

- [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 #20900: distutils register command now decodes HTTP responses
  correctly.  Initial patch by ingrid.

- 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 #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 #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.

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

- 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 #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 #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 #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 #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 #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 #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 #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 #16329: Add .webm to mimetypes.types_map.  Patch by Giampaolo Rodola'.

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

- 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 #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 #22854: Change BufferedReader.writable() and
  BufferedWriter.readable() to always return False.

- 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 #21925: :func:`warnings.formatwarning` now catches exceptions on
  ``linecache.getline(...)`` to be able to log :exc:`ResourceWarning` emitted
  late during the Python shutdown process.

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

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

- [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 #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 the fileinput module.
  The bufsize parameter is no longer used.

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

- 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 #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 SystemError 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.

- [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 #26117: The os.scandir() iterator now closes file descriptor not only
  when the iteration is finished, but when it was failed with error.

- 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 #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 #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 #25850: Use cross-compilation by default for 64-bit Windows.

- Issue #17633: Improve zipimport's support for namespace packages.

- Issue #24705: Fix sysconfig._parse_makefile not expanding ${} vars
  appearing before $() vars.

- 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 #25447: fileinput now uses sys.stdin as-is if it does not have a
  buffer attribute (restores backward compatibility).

- Issue #25447: Copying the lru_cache() wrapper object now always works,
  independedly from the type of the wrapped object (by returning the original
  object unchanged).

- 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 #25902: Fixed various refcount issues in ElementTree iteration.

- 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 #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 #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.

- 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

- Issue #27223: asyncio: Fix _read_ready and _write_ready to respect
  _conn_lost.
  Patch by Łukasz Langa.

- Issue #22970: asyncio: Fix inconsistency cancelling Condition.wait.
  Patch by David Coles.

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 #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 #27117: Make colorizer htest and turtledemo work with dark themes.
  Move code for configuring text widget colors to a new function.

- 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 IDLE's undo delegator.
  Original patch by Saimadhav Heblikar .

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

- Issue #23977: Add more asserts to test_delegator.

- 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'.

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

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

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

- 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 #25500: Fix documentation to not claim that __import__ is searched for
  in the global scope.

- 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 #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 self-signed.pythontest.net.  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 #26583: Skip test_timestamp_overflow in test_import if bytecode
  files cannot be written.

Build
-----

- Issue #26884: Fix linking extension modules for cross builds.
  Patch by Xavier de Gaye.

- 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 #27229: Fix the cross-compiling pgen rule for in-tree builds.  Patch
  by Xavier de Gaye.

- Issue #21668: Link audioop, _datetime, _ctypes_test modules to libm,
  except on Mac OS X. Patch written by Xavier de Gaye.

- 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 #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 #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 now deprecated, and simply calls
  ``PCbuild\build.bat --pgo %*``.

- 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 #26930: Update OS X 10.5+ 32-bit-only installer to build
  and link with OpenSSL 1.0.2h.

- 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.

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.

Misc
----

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


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 #22558: Add remaining doc links to source code for Python-coded modules.
  Patch by Yoni Lavi.

- 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 #18622: unittest.mock.mock_open().reset_mock would recurse infinitely.
  Patch from Nicola Palumbo and Laurent De Buyst.

- Issue #23661: unittest.mock side_effects can now be exceptions again. This
  was a regression vs Python 3.4. Patch from Ignacio Rossi

- 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 #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 #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 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.)**
