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

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

*Release date: XXXX-XX-XX*

Library
-------

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

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

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

IDLE
----

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


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

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

- Fix TLS stripping vulnerability in smptlib, 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.

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

- Issue #25548: Showing memory address of class objects in repl.

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.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

- Issue #16620: Fixed AttributeError in msilib.Directory.glob().

- Issue #26013: Added compatibility with broken protocol 2 pickles created
  in old Python 3 versions (3.4.3 and lower).

- Issue #26129: Deprecated accepting non-integers in grp.getgrgid().

- Issue #25850: Use cross-compilation by default for 64-bit Windows.

- Issue #25822: Add docstrings to the fields of urllib.parse results.
  Patch contributed by Swati Jaiswal.

- Issue #22642: Convert trace module option parsing mechanism to argparse.
  Patch contributed by SilentGhost.

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

- Issue #26069: Remove the deprecated apis in the trace module.

- Issue #22138: Fix mock.patch behavior when patching descriptors. Restore
  original values after patching. Patch contributed by Sean McCully.

- Issue #25672: In the ssl module, enable the SSL_MODE_RELEASE_BUFFERS mode
  option if it is safe to do so.

- Issue #26012: Don't traverse into symlinks for ** pattern in
  pathlib.Path.[r]glob().

- Issue #24120: Ignore PermissionError when traversing a tree with
  pathlib.Path.[r]glob().  Patch by Ulrich Petri.

- Issue #21815: Accept ] characters in the data portion of imap responses,
  in order to handle the flags with square brackets accepted and produced
  by servers such as gmail.

- Issue #25447: fileinput now uses sys.stdin as-is if it does not have a
  buffer attribute (restores backward compatibility).

- Issue #25971: Optimized creating Fractions from floats by 2 times and from
  Decimals by 3 times.

- Issue #25802: Document as deprecated the remaining implementations of
  importlib.abc.Loader.load_module().

- Issue #25928: Add Decimal.as_integer_ratio().

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

- Issue #25768: Have the functions in compileall return booleans instead of
  ints and add proper documentation and tests for the return values.

- Issue #24103: Fixed possible use after free in ElementTree.XMLPullParser.

- Issue #25860: os.fwalk() no longer skips remaining directories when error
  occurs.  Original patch by Samson Lee.

- Issue #25914: Fixed and simplified OrderedDict.__sizeof__.

- Issue #25869: Optimized deepcopying ElementTree; it is now 20 times faster.

- Issue #25873: Optimized iterating ElementTree.  Iterating elements
  Element.iter() is now 40% faster, iterating text Element.itertext()
  is now up to 2.5 times faster.

- Issue #25902: Fixed various refcount issues in ElementTree iteration.

- Issue #22227: The TarFile iterator is reimplemented using generator.
  This implementation is simpler that using class.

- Issue #25638: Optimized ElementTree.iterparse(); it is now 2x faster.
  Optimized ElementTree parsing; it is now 10% faster.

- Issue #25761: Improved detecting errors in broken pickle data.

- Issue #25717: Restore the previous behaviour of tolerating most fstat()
  errors when opening files.  This was a regression in 3.5a1, and stopped
  anonymous temporary files from working in special cases.

- Issue #24903: Fix regression in number of arguments compileall accepts when
  '-d' is specified.  The check on the number of arguments has been dropped
  completely as it never worked correctly anyway.

- Issue #25764: In the subprocess module, preserve any exception caused by
  fork() failure when preexec_fn is used.

- Issue #25771: Tweak the exception message for importlib.util.resolve_name()
  when 'package' isn't specified but necessary.

- Issue #6478: _strptime's regexp cache now is reset after changing timezone
  with time.tzset().

- Issue #14285: When executing a package with the "python -m package" option,
  and package initialization fails, a proper traceback is now reported.  The
  "runpy" module now lets exceptions from package initialization pass back to
  the caller, rather than raising ImportError.

- Issue #19771: Also in runpy and the "-m" option, omit the irrelevant
  message ". . . is a package and cannot be directly executed" if the package
  could not even be initialized (e.g. due to a bad ``*.pyc`` file).

- Issue #25177: Fixed problem with the mean of very small and very large
  numbers. As a side effect, statistics.mean and statistics.variance should
  be significantly faster.

- Issue #25718: Fixed copying object with state with boolean value is false.

- Issue #10131: Fixed deep copying of minidom documents.  Based on patch
  by Marian Ganisin.

- Issue #7990: dir() on ElementTree.Element now lists properties: "tag",
  "text", "tail" and "attrib".  Original patch by Santoso Wijaya.

- Issue #25725: Fixed a reference leak in pickle.loads() when unpickling
  invalid data including tuple instructions.

- Issue #25663: In the Readline completer, avoid listing duplicate global
  names, and search the global namespace before searching builtins.

- Issue #25688: Fixed file leak in ElementTree.iterparse() raising an error.

- Issue #23914: Fixed SystemError raised by unpickler on broken pickle data.

- Issue #25691: Fixed crash on deleting ElementTree.Element attributes.

- Issue #25624: ZipFile now always writes a ZIP_STORED header for directory
  entries.  Patch by Dingyuan Wang.

- Issue #25626: Change three zlib functions to accept sizes that fit in
  Py_ssize_t, but internally cap those sizes to UINT_MAX.  This resolves a
  regression in 3.5 where GzipFile.read() failed to read chunks larger than 2
  or 4 GiB.  The change affects the zlib.Decompress.decompress() max_length
  parameter, the zlib.decompress() bufsize parameter, and the
  zlib.Decompress.flush() length parameter.

- Issue #25583: Avoid incorrect errors raised by os.makedirs(exist_ok=True)
  when the OS gives priority to errors such as EACCES over EEXIST.

- Issue #25593: Change semantics of EventLoop.stop() in asyncio.

- Issue #6973: When we know a subprocess.Popen process has died, do
  not allow the send_signal(), terminate(), or kill() methods to do
  anything as they could potentially signal a different process.

- Issue #23883: Added missing APIs to __all__ to match the documented APIs
  for the following modules: calendar, csv, enum, fileinput, ftplib, logging,
  optparse, tarfile, threading and wave.  Also added a
  test.support.check__all__() helper.  Patches by Jacek Kołodziej, Mauro
  S. M. Rodrigues and Joel Taddei.

- Issue #25590: In the Readline completer, only call getattr() once per
  attribute.  Also complete names of attributes such as properties and slots
  which are listed by dir() but not yet created on an instance.

- Issue #25498: Fix a crash when garbage-collecting ctypes objects created
  by wrapping a memoryview.  This was a regression made in 3.5a1.  Based
  on patch by Eryksun.

- Issue #25584: Added "escape" to the __all__ list in the glob module.

- Issue #25584: Fixed recursive glob() with patterns starting with '\*\*'.

- Issue #25446: Fix regression in smtplib's AUTH LOGIN support.

- Issue #18010: Fix the pydoc web server's module search function to handle
  exceptions from importing packages.

- Issue #25554: Got rid of circular references in regular expression parsing.

- Issue #18973: Command-line interface of the calendar module now uses argparse
  instead of optparse.

- Issue #25510: fileinput.FileInput.readline() now returns b'' instead of ''
  at the end if the FileInput was opened with binary mode.
  Patch by Ryosuke Ito.

- Issue #25503: Fixed inspect.getdoc() for inherited docstrings of properties.
  Original patch by John Mark Vandenberg.

- Issue #25515: Always use os.urandom as a source of randomness in uuid.uuid4.

- Issue #21827: Fixed textwrap.dedent() for the case when largest common
  whitespace is a substring of smallest leading whitespace.
  Based on patch by Robert Li.

- Issue #25447: The lru_cache() wrapper objects now can be copied and pickled
  (by returning the original object unchanged).

- Issue #25390: typing: Don't crash on Union[str, Pattern].

- Issue #25441: asyncio: Raise error from drain() when socket is closed.

- Issue #25410: Cleaned up and fixed minor bugs in C implementation of
  OrderedDict.

- Issue #25411: Improved Unicode support in SMTPHandler through better use of
  the email package. Thanks to user simon04 for the patch.

- Move the imp module from a PendingDeprecationWarning to DeprecationWarning.

- Issue #25407: Remove mentions of the formatter module being removed in
  Python 3.6.

- Issue #25406: Fixed a bug in C implementation of OrderedDict.move_to_end()
  that caused segmentation fault or hang in iterating after moving several
  items to the start of ordered dict.

- Issue #25382: pickletools.dis() now outputs implicit memo index for the
  MEMOIZE opcode.

- Issue #25357: Add an optional newline paramer to binascii.b2a_base64().
  base64.b64encode() uses it to avoid a memory copy.

- Issue #24164: Objects that need calling ``__new__`` with keyword arguments,
  can now be pickled using pickle protocols older than protocol version 4.

- Issue #25364: zipfile now works in threads disabled builds.

- Issue #25328: smtpd's SMTPChannel now correctly raises a ValueError if both
  decode_data and enable_SMTPUTF8 are set to true.

- Issue #16099: RobotFileParser now supports Crawl-delay and Request-rate
  extensions.  Patch by Nikolay Bogoychev.

- Issue #25316: distutils raises OSError instead of DistutilsPlatformError
  when MSVC is not installed.

- Issue #25380: Fixed protocol for the STACK_GLOBAL opcode in
  pickletools.opcodes.

- Issue #23972: Updates asyncio datagram create method allowing reuseport
  and reuseaddr socket options to be set prior to binding the socket.
  Mirroring the existing asyncio create_server method the reuseaddr option
  for datagram sockets defaults to True if the O/S is 'posix' (except if the
  platform is Cygwin). Patch by Chris Laws.

- Issue #25304: Add asyncio.run_coroutine_threadsafe().  This lets you
  submit a coroutine to a loop from another thread, returning a
  concurrent.futures.Future.  By Vincent Michel.

- Issue #25232: Fix CGIRequestHandler to split the query from the URL at the
  first question mark (?) rather than the last. Patch from Xiang Zhang.

- Issue #24657: Prevent CGIRequestHandler from collapsing slashes in the
  query part of the URL as if it were a path. Patch from Xiang Zhang.

- Issue #25287: Don't add crypt.METHOD_CRYPT to crypt.methods if it's not
  supported. Check if it is supported, it may not be supported on OpenBSD for
  example.

- Issue #23600: Default implementation of tzinfo.fromutc() was returning
  wrong results in some cases.

- Issue #25203: Failed readline.set_completer_delims() no longer left the
  module in inconsistent state.

- Issue #25011: rlcompleter now omits private and special attribute names unless
  the prefix starts with underscores.

- Issue #25209: rlcompleter now can add a space or a colon after completed keyword.

- Issue #22241: timezone.utc name is now plain 'UTC', not 'UTC-00:00'.

- Issue #23517: fromtimestamp() and utcfromtimestamp() methods of
  datetime.datetime now round microseconds to nearest with ties going to
  nearest even integer (ROUND_HALF_EVEN), as round(float), instead of rounding
  towards -Infinity (ROUND_FLOOR).

- Issue #23552: Timeit now warns when there is substantial (4x) variance
  between best and worst times. Patch from Serhiy Storchaka.

- Issue #24633: site-packages/README -> README.txt.

- Issue #24879: help() and pydoc can now list named tuple fields in the
  order they were defined rather than alphabetically.  The ordering is
  determined by the _fields attribute if present.

- Issue #24874: Improve speed of itertools.cycle() and make its
  pickle more compact.

- Fix crash in itertools.cycle.__setstate__() when the first argument wasn't
  a list.

- Issue #20059: urllib.parse raises ValueError on all invalid ports.
  Patch by Martin Panter.

- Issue #24360: Improve __repr__ of argparse.Namespace() for invalid
  identifiers.  Patch by Matthias Bussonnier.

- Issue #23426: run_setup was broken in distutils.
  Patch from Alexander Belopolsky.

- Issue #13938: 2to3 converts StringTypes to a tuple. Patch from Mark Hammond.

- Issue #2091: open() accepted a 'U' mode string containing '+', but 'U' can
  only be used with 'r'. Patch from Jeff Balogh and John O'Connor.

- Issue #8585: improved tests for zipimporter2. Patch from Mark Lawrence.

- Issue #18622: unittest.mock.mock_open().reset_mock would recurse infinitely.
  Patch from Nicola Palumbo and Laurent De Buyst.

- Issue #24426: Fast searching optimization in regular expressions now works
  for patterns that starts with capturing groups.  Fast searching optimization
  now can't be disabled at compile time.

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

- Issue #13248: Remove deprecated inspect.getmoduleinfo function.

- Issue #25578: Fix (another) memory leak in SSLSocket.getpeercer().

- Issue #25530: Disable the vulnerable SSLv3 protocol by default when creating
  ssl.SSLContext.

- Issue #25569: Fix memory leak in SSLSocket.getpeercert().

- Issue #25471: Sockets returned from accept() shouldn't appear to be
  nonblocking.

- Issue #25319: When threading.Event is reinitialized, the underlying condition
  should use a regular lock rather than a recursive lock.

- Skip getaddrinfo if host is already resolved.
  Patch by A. Jesse Jiryu Davis.

- Issue #26050: Add asyncio.StreamReader.readuntil() method.
  Patch by Марк Коренберг.

- Issue #25924: Avoid unnecessary serialization of getaddrinfo(3) calls on
  OS X versions 10.5 or higher.  Original patch by A. Jesse Jiryu Davis.

- Issue #26406: Avoid unnecessary serialization of getaddrinfo(3) calls on
  current versions of OpenBSD and NetBSD.  Patch by A. Jesse Jiryu Davis.

- Issue #26848: Fix asyncio/subprocess.communicate() to handle empty input.
  Patch by Jack O'Connor.

- Issue #27040: Add loop.get_exception_handler method

- Issue #27041: asyncio: Add loop.create_future method

IDLE
----

- Issue #20640: Add tests for idlelib.configHelpSourceEdit.
  Patch by Saimadhav Heblikar.

- In the 'IDLE-console differences' section of the IDLE doc, clarify
  how running with IDLE affects sys.modules and the standard streams.

- Issue #25507: fix incorrect change in IOBinding that prevented printing.
  Augment IOBinding htest to include all major IOBinding functions.

- Issue #25905: Revert unwanted conversion of ' to ’ RIGHT SINGLE QUOTATION
  MARK in README.txt and open this and NEWS.txt with 'ascii'.
  Re-encode CREDITS.txt to utf-8 and open it with 'utf-8'.

- Issue #15348: Stop the debugger engine (normally in a user process)
  before closing the debugger window (running in the IDLE process).
  This prevents the RuntimeErrors that were being caught and ignored.

- Issue #24455: Prevent IDLE from hanging when a) closing the shell while the
  debugger is active (15347); b) closing the debugger with the [X] button
  (15348); and c) activating the debugger when already active (24455).
  The patch by Mark Roseman does this by making two changes.
  1. Suspend and resume the gui.interaction method with the tcl vwait
  mechanism intended for this purpose (instead of root.mainloop & .quit).
  2. In gui.run, allow any existing interaction to terminate first.

- Change 'The program' to 'Your program' in an IDLE 'kill program?' message
  to make it clearer that the program referred to is the currently running
  user program, not IDLE itself.

- Issue #24750: Improve the appearance of the IDLE editor window status bar.
  Patch by Mark Roseman.

- Issue #25313: Change the handling of new built-in text color themes to better
  address the compatibility problem introduced by the addition of IDLE Dark.
  Consistently use the revised idleConf.CurrentTheme everywhere in idlelib.

- Issue #24782: Extension configuration is now a tab in the IDLE Preferences
  dialog rather than a separate dialog.  The former tabs are now a sorted
  list.  Patch by Mark Roseman.

- Issue #22726: Re-activate the config dialog help button with some content
  about the other buttons and the new IDLE Dark theme.

- Issue #24820: IDLE now has an 'IDLE Dark' built-in text color theme.
  It is more or less IDLE Classic inverted, with a cobalt blue background.
  Strings, comments, keywords, ... are still green, red, orange, ... .
  To use it with IDLEs released before November 2015, hit the
  'Save as New Custom Theme' button and enter a new name,
  such as 'Custom Dark'.  The custom theme will work with any IDLE
  release, and can be modified.

- Issue #25224: README.txt is now an idlelib index for IDLE developers and
  curious users.  The previous user content is now in the IDLE doc chapter.
  'IDLE' now means 'Integrated Development and Learning Environment'.

- Issue #24820: Users can now set breakpoint colors in
  Settings -> Custom Highlighting.  Original patch by Mark Roseman.

- Issue #24972: Inactive selection background now matches active selection
  background, as configured by users, on all systems.  Found items are now
  always highlighted on Windows.  Initial patch by Mark Roseman.

- Issue #24570: Idle: make calltip and completion boxes appear on Macs
  affected by a tk regression.  Initial patch by Mark Roseman.

- Issue #24988: Idle ScrolledList context menus (used in debugger)
  now work on Mac Aqua.  Patch by Mark Roseman.

- Issue #24801: Make right-click for context menu work on Mac Aqua.
  Patch by Mark Roseman.

- Issue #25173: Associate tkinter messageboxes with a specific widget.
  For Mac OSX, make them a 'sheet'.  Patch by Mark Roseman.

- Issue #25198: Enhance the initial html viewer now used for Idle Help.
  * Properly indent fixed-pitch text (patch by Mark Roseman).
  * Give code snippet a very Sphinx-like light blueish-gray background.
  * Re-use initial width and height set by users for shell and editor.
  * When the Table of Contents (TOC) menu is used, put the section header
  at the top of the screen.

- Issue #25225: Condense and rewrite Idle doc section on text colors.

- Issue #21995: Explain some differences between IDLE and console Python.

- Issue #22820: Explain need for *print* when running file from Idle editor.

- Issue #25224: Doc: augment Idle feature list and no-subprocess section.

- Issue #25219: Update doc for Idle command line options.
  Some were missing and notes were not correct.

- Issue #24861: Most of idlelib is private and subject to change.
  Use idleib.idle.* to start Idle. See idlelib.__init__.__doc__.

- Issue #25199: Idle: add synchronization comments for future maintainers.

- Issue #16893: Replace help.txt with help.html for Idle doc display.
  The new idlelib/help.html is rstripped Doc/build/html/library/idle.html.
  It looks better than help.txt and will better document Idle as released.
  The tkinter html viewer that works for this file was written by Rose Roseman.
  The now unused EditorWindow.HelpDialog class and helt.txt file are deprecated.

- Issue #24199: Deprecate unused idlelib.idlever with possible removal in 3.6.

- Issue #24790: Remove extraneous code (which also create 2 & 3 conflicts).

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

- Issue #26736: Used HTTPS for external links in the documentation if possible.

- Issue #6953: Rework the Readline module documentation to group related
  functions together, and add more details such as what underlying Readline
  functions and variables are accessed.

- Issue #23606: Adds note to ctypes documentation regarding cdll.msvcrt.

- Issue #24952: Clarify the default size argument of stack_size() in
  the "threading" and "_thread" modules. Patch from Mattip.

- Issue #26014: Update 3.x packaging documentation:
  * "See also" links to the new docs are now provided in the legacy pages
  * links to setuptools documentation have been updated

Tests
-----

- Issue #21916: Added tests for the turtle module.  Patch by ingrid,
  Gregory Loyse and Jelle Zijlstra.

- Issue #26295: When using "python3 -m test --testdir=TESTDIR", regrtest
  doesn't add "test." prefix to test module names.

- Issue #26523: The multiprocessing thread pool (multiprocessing.dummy.Pool)
  was untested.

- Issue #26015: Added new tests for pickling iterators of mutable sequences.

- Issue #26325: Added test.support.check_no_resource_warning() to check that
  no ResourceWarning is emitted.

- Issue #25940: Changed test_ssl to use its internal local server more.  This
  avoids relying on svn.python.org, which recently changed root certificate.

- Issue #25616: Tests for OrderedDict are extracted from test_collections
  into separate file test_ordered_dict.

- Issue #25449: Added tests for OrderedDict subclasses.

- Issue #25188: Add -P/--pgo to test.regrtest to suppress error output when
  running the test suite for the purposes of a PGO build. Initial patch by
  Alecsandru Patrascu.

- Issue #22806: Add ``python -m test --list-tests`` command to list tests.

- Issue #18174: ``python -m test --huntrleaks ...`` now also checks for leak of
  file descriptors. Patch written by Richard Oudkerk.

- Issue #25260: Fix ``python -m test --coverage`` on Windows. Remove the
  list of ignored directories.

- ``PCbuild\rt.bat`` now accepts an unlimited number of arguments to pass along
  to regrtest.py.  Previously there was a limit of 9.

- Issue #26583: Skip test_timestamp_overflow in test_import if bytecode
  files cannot be written.

Build
-----

- Issue #21277: Don't try to link _ctypes with a ffi_convenience library.

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

- Issue #26932: Fixed support of RTLD_* constants defined as enum values,
  not via macros (in particular on Android).  Patch by Chi Hsuan Yen.

- Issue #22359: Disable the rules for running _freeze_importlib and pgen when
  cross-compiling.  The output of these programs is normally saved with the
  source code anyway, and is still regenerated when doing a native build.
  Patch by Xavier de Gaye.

- Issue #21668: Link audioop, _datetime, _ctypes_test modules to libm,
  except on Mac OS X. Patch written by Chi Hsuan Yen.

- Issue #25702: A --with-lto configure option has been added that will
  enable link time optimizations at build time during a make profile-opt.
  Some compilers and toolchains are known to not produce stable code when
  using LTO, be sure to test things thoroughly before relying on it.
  It can provide a few % speed up over profile-opt alone.

- Issue #26624: Adds validation of ucrtbase[d].dll version with warning
  for old versions.

- Issue #17603: Avoid error about nonexistant fileblocks.o file by using a
  lower-level check for st_blocks in struct stat.

- Issue #26079: Fixing the build output folder for tix-8.4.3.6. Patch by
  Bjoern Thiel.

- Issue #26465: Update Windows builds to use OpenSSL 1.0.2g.

- Issue #25348: Added ``--pgo`` and ``--pgo-job`` arguments to
  ``PCbuild\build.bat`` for building with Profile-Guided Optimization.  The
  old ``PCbuild\build_pgo.bat`` script is removed.

- Issue #25827: Add support for building with ICC to ``configure``, including
  a new ``--with-icc`` flag.

- Issue #25696: Fix installation of Python on UNIX with make -j9.

- Issue #24986: It is now possible to build Python on Windows without errors
  when external libraries are not available.

- Issue #24421: Compile Modules/_math.c once, before building extensions.
  Previously it could fail to compile properly if the math and cmath builds
  were concurrent.

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

- Issue #26268: Update Windows builds to use OpenSSL 1.0.2f.

- Issue #25136: Support Apple Xcode 7's new textual SDK stub libraries.

- Issue #24324: Do not enable unreachable code warnings when using
  gcc as the option does not work correctly in older versions of gcc
  and has been silently removed as of gcc-4.5.

Windows
-------

- Issue #27053: Updates make_zip.py to correctly generate library ZIP file.

- Issue #26268: Update the prepare_ssl.py script to handle OpenSSL releases
  that don't include the contents of the include directory (that is, 1.0.2e
  and later).

- Issue #26071: bdist_wininst created binaries fail to start and find
  32bit Python

- Issue #26073: Update the list of magic numbers in launcher

- Issue #26065: Excludes venv from library when generating embeddable
  distro.

- Issue #25022: Removed very outdated PC/example_nt/ directory.

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

- Issue #26799: Fix python-gdb.py: don't get C types once when the Python code
  is loaded, but get C types on demand. The C types can change if
  python-gdb.py is loaded before the Python executable. Patch written by Thomas
  Ilsche.

- Issue #26271: Fix the Freeze tool to properly use flags passed through
  configure. Patch by Daniel Shaulov.

- Issue #26489: Add dictionary unpacking support to Tools/parser/unparse.py.
  Patch by Guo Ci Teo.

- Issue #26316: Fix variable name typo in Argument Clinic.

- Issue #25440: Fix output of python-config --extension-suffix.

- Issue #25154: The pyvenv script has been deprecated in favour of
  `python3 -m venv`.

C API
-----

- Issue #26312: SystemError is now raised in all programming bugs with using
  PyArg_ParseTupleAndKeywords().  RuntimeError did raised before in some
  programming bugs.

- Issue #26198: ValueError is now raised instead of TypeError on buffer
  overflow in parsing "es#" and "et#" format units.  SystemError is now raised
  instead of TypeError on programmical error in parsing format string.


What's New in Python 3.5.1 final?
=================================

Release date: 2015-12-06

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

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

Windows
-------

- Issue #25715: Python 3.5.1 installer shows wrong upgrade path and incorrect
  logic for launcher detection.


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

Release date: 2015-11-22

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

- Issue #25182: The stdprinter (used as sys.stderr before the io module is
  imported at startup) now uses the backslashreplace error handler.

- Issue #25131: Make the line number and column offset of set/dict literals and
  comprehensions correspond to the opening brace.

- Issue #25150: Hide the private _Py_atomic_xxx symbols from the public
  Python.h header to fix a compilation error with OpenMP. PyThreadState_GET()
  becomes an alias to PyThreadState_Get() to avoid ABI incompatibilies.

Library
-------

- Issue #25626: Change three zlib functions to accept sizes that fit in
  Py_ssize_t, but internally cap those sizes to UINT_MAX.  This resolves a
  regression in 3.5 where GzipFile.read() failed to read chunks larger than 2
  or 4 GiB.  The change affects the zlib.Decompress.decompress() max_length
  parameter, the zlib.decompress() bufsize parameter, and the
  zlib.Decompress.flush() length parameter.

- Issue #25583: Avoid incorrect errors raised by os.makedirs(exist_ok=True)
  when the OS gives priority to errors such as EACCES over EEXIST.

- Issue #25593: Change semantics of EventLoop.stop() in asyncio.

- Issue #6973: When we know a subprocess.Popen process has died, do
  not allow the send_signal(), terminate(), or kill() methods to do
  anything as they could potentially signal a different process.

- Issue #25590: In the Readline completer, only call getattr() once per
  attribute.

- Issue #25498: Fix a crash when garbage-collecting ctypes objects created
  by wrapping a memoryview.  This was a regression made in 3.5a1.  Based
  on patch by Eryksun.

- Issue #25584: Added "escape" to the __all__ list in the glob module.

- Issue #25584: Fixed recursive glob() with patterns starting with '\*\*'.

- Issue #25446: Fix regression in smtplib's AUTH LOGIN support.

- Issue #18010: Fix the pydoc web server's module search function to handle
  exceptions from importing packages.

- Issue #25554: Got rid of circular references in regular expression parsing.

- Issue #25510: fileinput.FileInput.readline() now returns b'' instead of ''
  at the end if the FileInput was opened with binary mode.
  Patch by Ryosuke Ito.

- Issue #25503: Fixed inspect.getdoc() for inherited docstrings of properties.
  Original patch by John Mark Vandenberg.

- Issue #25515: Always use os.urandom as a source of randomness in uuid.uuid4.

- Issue #21827: Fixed textwrap.dedent() for the case when largest common
  whitespace is a substring of smallest leading whitespace.
  Based on patch by Robert Li.

- Issue #25447: The lru_cache() wrapper objects now can be copied and pickled
  (by returning the original object unchanged).

- Issue #25390: typing: Don't crash on Union[str, Pattern].

- Issue #25441: asyncio: Raise error from drain() when socket is closed.

- Issue #25410: Cleaned up and fixed minor bugs in C implementation of
  OrderedDict.

- Issue #25411: Improved Unicode support in SMTPHandler through better use of
  the email package. Thanks to user simon04 for the patch.

- Issue #25407: Remove mentions of the formatter module being removed in
  Python 3.6.

- Issue #25406: Fixed a bug in C implementation of OrderedDict.move_to_end()
  that caused segmentation fault or hang in iterating after moving several
  items to the start of ordered dict.

- Issue #25364: zipfile now works in threads disabled builds.

- Issue #25328: smtpd's SMTPChannel now correctly raises a ValueError if both
  decode_data and enable_SMTPUTF8 are set to true.

- Issue #25316: distutils raises OSError instead of DistutilsPlatformError
  when MSVC is not installed.

- Issue #25380: Fixed protocol for the STACK_GLOBAL opcode in
  pickletools.opcodes.

- Issue #23972: Updates asyncio datagram create method allowing reuseport
  and reuseaddr socket options to be set prior to binding the socket.
  Mirroring the existing asyncio create_server method the reuseaddr option
  for datagram sockets defaults to True if the O/S is 'posix' (except if the
  platform is Cygwin). Patch by Chris Laws.

- Issue #25304: Add asyncio.run_coroutine_threadsafe().  This lets you
  submit a coroutine to a loop from another thread, returning a
  concurrent.futures.Future.  By Vincent Michel.

- Issue #25232: Fix CGIRequestHandler to split the query from the URL at the
  first question mark (?) rather than the last. Patch from Xiang Zhang.

- Issue #24657: Prevent CGIRequestHandler from collapsing slashes in the
  query part of the URL as if it were a path. Patch from Xiang Zhang.

- Issue #24483: C implementation of functools.lru_cache() now calculates key's
  hash only once.

- Issue #22958: Constructor and update method of weakref.WeakValueDictionary
  now accept the self and the dict keyword arguments.

- Issue #22609: Constructor of collections.UserDict now accepts the self keyword
  argument.

- Issue #25111: Fixed comparison of traceback.FrameSummary.

- Issue #25262: Added support for BINBYTES8 opcode in Python implementation of
  unpickler.  Highest 32 bits of 64-bit size for BINUNICODE8 and BINBYTES8
  opcodes no longer silently ignored on 32-bit platforms in C implementation.

- Issue #25034: Fix string.Formatter problem with auto-numbering and
  nested format_specs. Patch by Anthon van der Neut.

- Issue #25233: Rewrite the guts of asyncio.Queue and
  asyncio.Semaphore to be more understandable and correct.

- Issue #25203: Failed readline.set_completer_delims() no longer left the
  module in inconsistent state.

- Issue #23600: Default implementation of tzinfo.fromutc() was returning
  wrong results in some cases.

- Issue #23329: Allow the ssl module to be built with older versions of
  LibreSSL.

- Prevent overflow in _Unpickler_Read.

- Issue #25047: The XML encoding declaration written by Element Tree now
  respects the letter case given by the user. This restores the ability to
  write encoding names in uppercase like "UTF-8", which worked in Python 2.

- Issue #25135: Make deque_clear() safer by emptying the deque before clearing.
  This helps avoid possible reentrancy issues.

- Issue #19143: platform module now reads Windows version from kernel32.dll to
  avoid compatibility shims.

- Issue #25092: Fix datetime.strftime() failure when errno was already set to
  EINVAL.

- Issue #23517: Fix rounding in fromtimestamp() and utcfromtimestamp() methods
  of datetime.datetime: microseconds are now rounded to nearest with ties
  going to nearest even integer (ROUND_HALF_EVEN), instead of being rounding
  towards minus infinity (ROUND_FLOOR). It's important that these methods use
  the same rounding mode than datetime.timedelta to keep the property:
  (datetime(1970,1,1) + timedelta(seconds=t)) == datetime.utcfromtimestamp(t).
  It also the rounding mode used by round(float) for example.

- Issue #25155: Fix datetime.datetime.now() and datetime.datetime.utcnow() on
  Windows to support date after year 2038. It was a regression introduced in
  Python 3.5.0.

- Issue #25108: Omitted internal frames in traceback functions print_stack(),
  format_stack(), and extract_stack() called without arguments.

- Issue #25118: Fix a regression of Python 3.5.0 in os.waitpid() on Windows.

- Issue #24684: socket.socket.getaddrinfo() now calls
  PyUnicode_AsEncodedString() instead of calling the encode() method of the
  host, to handle correctly custom string with an encode() method which doesn't
  return a byte string. The encoder of the IDNA codec is now called directly
  instead of calling the encode() method of the string.

- Issue #25060: Correctly compute stack usage of the BUILD_MAP opcode.

- Issue #24857: Comparing call_args to a long sequence now correctly returns a
  boolean result instead of raising an exception.  Patch by A Kaptur.

- Issue #23144: Make sure that HTMLParser.feed() returns all the data, even
  when convert_charrefs is True.

- Issue #24982: shutil.make_archive() with the "zip" format now adds entries
  for directories (including empty directories) in ZIP file.

- Issue #25019: Fixed a crash caused by setting non-string key of expat parser.
  Based on patch by John Leitch.

- Issue #16180: Exit pdb if file has syntax error, instead of trapping user
  in an infinite loop.  Patch by Xavier de Gaye.

- Issue #24891: Fix a race condition at Python startup if the file descriptor
  of stdin (0), stdout (1) or stderr (2) is closed while Python is creating
  sys.stdin, sys.stdout and sys.stderr objects. These attributes are now set
  to None if the creation of the object failed, instead of raising an OSError
  exception. Initial patch written by Marco Paolini.

- Issue #24992: Fix error handling and a race condition (related to garbage
  collection) in collections.OrderedDict constructor.

- Issue #24881: Fixed setting binary mode in Python implementation of FileIO
  on Windows and Cygwin.  Patch from Akira Li.

- Issue #25578: Fix (another) memory leak in SSLSocket.getpeercer().

- Issue #25530: Disable the vulnerable SSLv3 protocol by default when creating
  ssl.SSLContext.

- Issue #25569: Fix memory leak in SSLSocket.getpeercert().

- Issue #25471: Sockets returned from accept() shouldn't appear to be
  nonblocking.

- Issue #25319: When threading.Event is reinitialized, the underlying condition
  should use a regular lock rather than a recursive lock.

- Issue #21112: Fix regression in unittest.expectedFailure on subclasses.
  Patch from Berker Peksag.

- Issue #24764: cgi.FieldStorage.read_multi() now ignores the Content-Length
  header in part headers. Patch written by Peter Landry and reviewed by Pierre
  Quentel.

- Issue #24913: Fix overrun error in deque.index().
  Found by John Leitch and Bryce Darling.

- Issue #24774: Fix docstring in http.server.test. Patch from Chiu-Hsiang Hsu.

- Issue #21159: Improve message in configparser.InterpolationMissingOptionError.
  Patch from Łukasz Langa.

- Issue #20362: Honour TestCase.longMessage correctly in assertRegex.
  Patch from Ilia Kurenkov.

- Issue #23572: Fixed functools.singledispatch on classes with falsy
  metaclasses.  Patch by Ethan Furman.

- asyncio: ensure_future() now accepts awaitable objects.

IDLE
----

- Issue #15348: Stop the debugger engine (normally in a user process)
  before closing the debugger window (running in the IDLE process).
  This prevents the RuntimeErrors that were being caught and ignored.

- Issue #24455: Prevent IDLE from hanging when a) closing the shell while the
  debugger is active (15347); b) closing the debugger with the [X] button
  (15348); and c) activating the debugger when already active (24455).
  The patch by Mark Roseman does this by making two changes.
  1. Suspend and resume the gui.interaction method with the tcl vwait
  mechanism intended for this purpose (instead of root.mainloop & .quit).
  2. In gui.run, allow any existing interaction to terminate first.

- Change 'The program' to 'Your program' in an IDLE 'kill program?' message
  to make it clearer that the program referred to is the currently running
  user program, not IDLE itself.

- Issue #24750: Improve the appearance of the IDLE editor window status bar.
  Patch by Mark Roseman.

- Issue #25313: Change the handling of new built-in text color themes to better
  address the compatibility problem introduced by the addition of IDLE Dark.
  Consistently use the revised idleConf.CurrentTheme everywhere in idlelib.

- Issue #24782: Extension configuration is now a tab in the IDLE Preferences
  dialog rather than a separate dialog.  The former tabs are now a sorted
  list.  Patch by Mark Roseman.

- Issue #22726: Re-activate the config dialog help button with some content
  about the other buttons and the new IDLE Dark theme.

- Issue #24820: IDLE now has an 'IDLE Dark' built-in text color theme.
  It is more or less IDLE Classic inverted, with a cobalt blue background.
  Strings, comments, keywords, ... are still green, red, orange, ... .
  To use it with IDLEs released before November 2015, hit the
  'Save as New Custom Theme' button and enter a new name,
  such as 'Custom Dark'.  The custom theme will work with any IDLE
  release, and can be modified.

- Issue #25224: README.txt is now an idlelib index for IDLE developers and
  curious users.  The previous user content is now in the IDLE doc chapter.
  'IDLE' now means 'Integrated Development and Learning Environment'.

- Issue #24820: Users can now set breakpoint colors in
  Settings -> Custom Highlighting.  Original patch by Mark Roseman.

- Issue #24972: Inactive selection background now matches active selection
  background, as configured by users, on all systems.  Found items are now
  always highlighted on Windows.  Initial patch by Mark Roseman.

- Issue #24570: Idle: make calltip and completion boxes appear on Macs
  affected by a tk regression.  Initial patch by Mark Roseman.

- Issue #24988: Idle ScrolledList context menus (used in debugger)
  now work on Mac Aqua.  Patch by Mark Roseman.

- Issue #24801: Make right-click for context menu work on Mac Aqua.
  Patch by Mark Roseman.

- Issue #25173: Associate tkinter messageboxes with a specific widget.
  For Mac OSX, make them a 'sheet'.  Patch by Mark Roseman.

- Issue #25198: Enhance the initial html viewer now used for Idle Help.
  * Properly indent fixed-pitch text (patch by Mark Roseman).
  * Give code snippet a very Sphinx-like light blueish-gray background.
  * Re-use initial width and height set by users for shell and editor.
  * When the Table of Contents (TOC) menu is used, put the section header
  at the top of the screen.

- Issue #25225: Condense and rewrite Idle doc section on text colors.

- Issue #21995: Explain some differences between IDLE and console Python.

- Issue #22820: Explain need for *print* when running file from Idle editor.

- Issue #25224: Doc: augment Idle feature list and no-subprocess section.

- Issue #25219: Update doc for Idle command line options.
  Some were missing and notes were not correct.

- Issue #24861: Most of idlelib is private and subject to change.
  Use idleib.idle.* to start Idle. See idlelib.__init__.__doc__.

- Issue #25199: Idle: add synchronization comments for future maintainers.

- Issue #16893: Replace help.txt with help.html for Idle doc display.
  The new idlelib/help.html is rstripped Doc/build/html/library/idle.html.
  It looks better than help.txt and will better document Idle as released.
  The tkinter html viewer that works for this file was written by Mark Roseman.
  The now unused EditorWindow.HelpDialog class and helt.txt file are deprecated.

- Issue #24199: Deprecate unused idlelib.idlever with possible removal in 3.6.

- Issue #24790: Remove extraneous code (which also create 2 & 3 conflicts).

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

- Issue #12067: Rewrite Comparisons section in the Expressions chapter of the
  language reference. Some of the details of comparing mixed types were
  incorrect or ambiguous. NotImplemented is only relevant at a lower level
  than the Expressions chapter. Added details of comparing range() objects,
  and default behaviour and consistency suggestions for user-defined classes.
  Patch from Andy Maier.

- Issue #24952: Clarify the default size argument of stack_size() in
  the "threading" and "_thread" modules. Patch from Mattip.

- Issue #23725: Overhaul tempfile docs. Note deprecated status of mktemp.
  Patch from Zbigniew Jędrzejewski-Szmek.

- Issue #24808: Update the types of some PyTypeObject fields.  Patch by
  Joseph Weston.

- Issue #22812: Fix unittest discovery examples.
  Patch from Pam McA'Nulty.

Tests
-----

- Issue #25449: Added tests for OrderedDict subclasses.

- Issue #25099: Make test_compileall not fail when an entry on sys.path cannot
  be written to (commonly seen in administrative installs on Windows).

- Issue #23919: Prevents assert dialogs appearing in the test suite.

- ``PCbuild\rt.bat`` now accepts an unlimited number of arguments to pass along
  to regrtest.py.  Previously there was a limit of 9.

Build
-----

- Issue #24915: Add LLVM support for PGO builds and use the test suite to
  generate the profile data. Initial patch by Alecsandru Patrascu of Intel.

- Issue #24910: Windows MSIs now have unique display names.

- Issue #24986: It is now possible to build Python on Windows without errors
  when external libraries are not available.

Windows
-------

- Issue #25450: Updates shortcuts to start Python in installation directory.

- Issue #25164: Changes default all-users install directory to match per-user
  directory.

- Issue #25143: Improves installer error messages for unsupported platforms.

- Issue #25163: Display correct directory in installer when using non-default
  settings.

- Issue #25361: Disables use of SSE2 instructions in Windows 32-bit build

- Issue #25089: Adds logging to installer for case where launcher is not
  selected on upgrade.

- Issue #25165: Windows uninstallation should not remove launcher if other
  versions remain

- Issue #25112: py.exe launcher is missing icons

- Issue #25102: Windows installer does not precompile for -O or -OO.

- Issue #25081: Makes Back button in installer go back to upgrade page when
  upgrading.

- Issue #25091: Increases font size of the installer.

- Issue #25126: Clarifies that the non-web installer will download some
  components.

- Issue #25213: Restores requestedExecutionLevel to manifest to disable
  UAC virtualization.

- Issue #25022: Removed very outdated PC/example_nt/ directory.

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

- Issue #25440: Fix output of python-config --extension-suffix.


What's New in Python 3.5.0 final?
=================================

Release date: 2015-09-13

Build
-----

- Issue #25071: Windows installer should not require TargetDir
  parameter when installing quietly.


What's New in Python 3.5.0 release candidate 4?
===============================================

Release date: 2015-09-09

Library
-------

- Issue #25029: Fixes MemoryError in test_strptime.

Build
-----

- Issue #25027: Reverts partial-static build options and adds
  vcruntime140.dll to Windows installation.


What's New in Python 3.5.0 release candidate 3?
===============================================

Release date: 2015-09-07

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

- Issue #24305: Prevent import subsystem stack frames from being counted
  by the warnings.warn(stacklevel=) parameter.

- Issue #24912: Prevent __class__ assignment to immutable built-in objects.

- Issue #24975: Fix AST compilation for PEP 448 syntax.

Library
-------

- Issue #24917: time_strftime() buffer over-read.

- Issue #24748: To resolve a compatibility problem found with py2exe and
  pywin32, imp.load_dynamic() once again ignores previously loaded modules
  to support Python modules replacing themselves with extension modules.
  Patch by Petr Viktorin.

- Issue #24635: Fixed a bug in typing.py where isinstance([], typing.Iterable)
  would return True once, then False on subsequent calls.

- Issue #24989: Fixed buffer overread in BytesIO.readline() if a position is
  set beyond size.  Based on patch by John Leitch.

- Issue #24913: Fix overrun error in deque.index().
  Found by John Leitch and Bryce Darling.


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

Release date: 2015-08-25

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

- Issue #24769: Interpreter now starts properly when dynamic loading
  is disabled.  Patch by Petr Viktorin.

- Issue #21167: NAN operations are now handled correctly when python is
  compiled with ICC even if -fp-model strict is not specified.

- Issue #24492: A "package" lacking a __name__ attribute when trying to perform
  a ``from .. import ...`` statement will trigger an ImportError instead of an
  AttributeError.

Library
-------

- Issue #24847: Removes vcruntime140.dll dependency from Tcl/Tk.

- Issue #24839: platform._syscmd_ver raises DeprecationWarning

- Issue #24867: Fix Task.get_stack() for 'async def' coroutines


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

Release date: 2015-08-09

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

- Issue #24667: Resize odict in all cases that the underlying dict resizes.

Library
-------

- Issue #24824: Signatures of codecs.encode() and codecs.decode() now are
  compatible with pydoc.

- Issue #24634: Importing uuid should not try to load libc on Windows

- Issue #24798: _msvccompiler.py doesn't properly support manifests

- Issue #4395: Better testing and documentation of binary operators.
  Patch by Martin Panter.

- Issue #23973: Update typing.py from GitHub repo.

- Issue #23004: mock_open() now reads binary data correctly when the type of
  read_data is bytes.  Initial patch by Aaron Hill.

- Issue #23888: Handle fractional time in cookie expiry. Patch by ssh.

- Issue #23652: Make it possible to compile the select module against the
  libc headers from the Linux Standard Base, which do not include some
  EPOLL macros.  Patch by Matt Frank.

- Issue #22932: Fix timezones in email.utils.formatdate.
  Patch from Dmitry Shachnev.

- Issue #23779: imaplib raises TypeError if authenticator tries to abort.
  Patch from Craig Holmquist.

- Issue #23319: Fix ctypes.BigEndianStructure, swap correctly bytes. Patch
  written by Matthieu Gautier.

- Issue #23254: Document how to close the TCPServer listening socket.
  Patch from Martin Panter.

- Issue #19450: Update Windows and OS X installer builds to use SQLite 3.8.11.

- Issue #17527: Add PATCH to wsgiref.validator. Patch from Luca Sbardella.

- Issue #24791: Fix grammar regression for call syntax: 'g(\*a or b)'.

IDLE
----

- Issue #23672: Allow Idle to edit and run files with astral chars in name.
  Patch by Mohd Sanad Zaki Rizvi.

- Issue #24745: Idle editor default font. Switch from Courier to
  platform-sensitive TkFixedFont.  This should not affect current customized
  font selections.  If there is a problem, edit $HOME/.idlerc/config-main.cfg
  and remove 'fontxxx' entries from [Editor Window].  Patch by Mark Roseman.

- Issue #21192: Idle editor. When a file is run, put its name in the restart bar.
  Do not print false prompts. Original patch by Adnan Umer.

- Issue #13884: Idle menus. Remove tearoff lines. Patch by Roger Serwy.

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

- Issue #24129: Clarify the reference documentation for name resolution.
  This includes removing the assumption that readers will be familiar with the
  name resolution scheme Python used prior to the introduction of lexical
  scoping for function namespaces. Patch by Ivan Levkivskyi.

- Issue #20769: Improve reload() docs. Patch by Dorian Pula.

- Issue #23589: Remove duplicate sentence from the FAQ.  Patch by Yongzhi Pan.

- Issue #24729: Correct IO tutorial to match implementation regarding
  encoding parameter to open function.

Tests
-----

- Issue #24751: When running regrtest with the ``-w`` command line option,
  a test run is no longer marked as a failure if all tests succeed when
  re-run.


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

Release date: 2015-07-26

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

- Issue #23573: Restored optimization of bytes.rfind() and bytearray.rfind()
  for single-byte argument on Linux.

- Issue #24569: Make PEP 448 dictionary evaluation more consistent.

- Issue #24583: Fix crash when set is mutated while being updated.

- Issue #24407: Fix crash when dict is mutated while being updated.

- Issue #24619: New approach for tokenizing async/await. As a consequence,
  it is now possible to have one-line 'async def foo(): await ..' functions.

- Issue #24687: Plug refleak on SyntaxError in function parameters
  annotations.

- Issue #15944: memoryview: Allow arbitrary formats when casting to bytes.
  Patch by Martin Panter.

Library
-------

- Issue #23441: rcompleter now prints a tab character instead of displaying
  possible completions for an empty word.  Initial patch by Martin Sekera.

- Issue #24683: Fixed crashes in _json functions called with arguments of
  inappropriate type.

- Issue #21697: shutil.copytree() now correctly handles symbolic links that
  point to directories.  Patch by Eduardo Seabra and Thomas Kluyver.

- Issue #14373: Fixed segmentation fault when gc.collect() is called during
  constructing lru_cache (C implementation).

- Issue #24695: Fix a regression in traceback.print_exception().  If
  exc_traceback is None we shouldn't print a traceback header like described
  in the documentation.

- Issue #24620: Random.setstate() now validates the value of state last element.

- Issue #22485: Fixed an issue that caused `inspect.getsource` to return
  incorrect results on nested functions.

- Issue #22153: Improve unittest docs. Patch from Martin Panter and evilzero.

- Issue #24580: Symbolic group references to open group in re patterns now are
  explicitly forbidden as well as numeric group references.

- Issue #24206: Fixed __eq__ and __ne__ methods of inspect classes.

- Issue #24631: Fixed regression in the timeit module with multiline setup.

- Issue #24608: chunk.Chunk.read() now always returns bytes, not str.

- Issue #18684: Fixed reading out of the buffer in the re module.

- Issue #24259: tarfile now raises a ReadError if an archive is truncated
  inside a data segment.

- Issue #15014: SMTP.auth() and SMTP.login() now support RFC 4954's optional
  initial-response argument to the SMTP AUTH command.

- Issue #6549: Remove hyphen from ttk.Style().element options.  Only return result
  from ttk.Style().configure if a result was generated or a query submitted.

- Issue #24669: Fix inspect.getsource() for 'async def' functions.
  Patch by Kai Groner.

- Issue #24688: ast.get_docstring() for 'async def' functions.

Build
-----

- Issue #24603: Update Windows builds and OS X 10.5 installer to use OpenSSL
  1.0.2d.

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

Release date: 2015-07-05

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

- Issue #24467: Fixed possible buffer over-read in bytearray. The bytearray
  object now always allocates place for trailing null byte and it's buffer now
  is always null-terminated.

- Upgrade to Unicode 8.0.0.

- Issue #24345: Add Py_tp_finalize slot for the stable ABI.

- Issue #24400: Introduce a distinct type for PEP 492 coroutines; add
  types.CoroutineType, inspect.getcoroutinestate, inspect.getcoroutinelocals;
  coroutines no longer use CO_GENERATOR flag; sys.set_coroutine_wrapper
  works only for 'async def' coroutines; inspect.iscoroutine no longer
  uses collections.abc.Coroutine, it's intended to test for pure 'async def'
  coroutines only; add new opcode: GET_YIELD_FROM_ITER; fix generators wrapper
  used in types.coroutine to be instance of collections.abc.Generator;
  collections.abc.Awaitable and collections.abc.Coroutine can no longer
  be used to detect generator-based coroutines--use inspect.isawaitable
  instead.

- Issue #24450: Add gi_yieldfrom to generators and cr_await to coroutines.
  Contributed by Benno Leslie and Yury Selivanov.

- Issue #19235: Add new RecursionError exception. Patch by Georg Brandl.

Library
-------

- Issue #21750: mock_open.read_data can now be read from each instance, as it
  could in Python 3.3.

- Issue #24552: Fix use after free in an error case of the _pickle module.

- Issue #24514: tarfile now tolerates number fields consisting of only
  whitespace.

- Issue #19176: Fixed doctype() related bugs in C implementation of ElementTree.
  A deprecation warning no longer issued by XMLParser subclass with default
  doctype() method.  Direct call of doctype() now issues a warning.  Parser's
  doctype() now is not called if target's doctype() is called.  Based on patch
  by Martin Panter.

- Issue #20387: Restore semantic round-trip correctness in tokenize/untokenize
  for tab-indented blocks.

- Issue #24456: Fixed possible buffer over-read in adpcm2lin() and lin2adpcm()
  functions of the audioop module.

- Issue #24336: The contextmanager decorator now works with functions with
  keyword arguments called "func" and "self".  Patch by Martin Panter.

- Issue #24522: Fix possible integer overflow in json accelerator module.

- Issue #24489: ensure a previously set C errno doesn't disturb cmath.polar().

- Issue #24408: Fixed AttributeError in measure() and metrics() methods of
  tkinter.Font.

- Issue #14373: C implementation of functools.lru_cache() now can be used with
  methods.

- Issue #24347: Set KeyError if PyDict_GetItemWithError returns NULL.

- Issue #24348: Drop superfluous incref/decref.

- Issue #24359: Check for changed OrderedDict size during iteration.

- Issue #24368: Support keyword arguments in OrderedDict methods.

- Issue #24362: Simplify the C OrderedDict fast nodes resize logic.

- Issue #24377: Fix a ref leak in OrderedDict.__repr__.

- Issue #24369: Defend against key-changes during iteration.

Tests
-----

- Issue #24373: _testmultiphase and xxlimited now use tp_traverse and
  tp_finalize to avoid reference leaks encountered when combining tp_dealloc
  with PyType_FromSpec (see issue #16690 for details)

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

- Issue #24458: Update documentation to cover multi-phase initialization for
  extension modules (PEP 489). Patch by Petr Viktorin.

- Issue #24351: Clarify what is meant by "identifier" in the context of
  string.Template instances.

Build
-----

- Issue #24432: Update Windows builds and OS X 10.5 installer to use OpenSSL
  1.0.2c.


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

Release date: 2015-05-31

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

- Issue #24284: The startswith and endswith methods of the str class no longer
  return True when finding the empty string and the indexes are completely out
  of range.

- Issue #24115: Update uses of PyObject_IsTrue(), PyObject_Not(),
  PyObject_IsInstance(), PyObject_RichCompareBool() and _PyDict_Contains()
  to check for and handle errors correctly.

- Issue #24328: Fix importing one character extension modules.

- Issue #11205: In dictionary displays, evaluate the key before the value.

- Issue #24285: Fixed regression that prevented importing extension modules
  from inside packages. Patch by Petr Viktorin.

Library
-------

- Issue #23247: Fix a crash in the StreamWriter.reset() of CJK codecs.

- Issue #24270: Add math.isclose() and cmath.isclose() functions as per PEP 485.
  Contributed by Chris Barker and Tal Einat.

- Issue #5633: Fixed timeit when the statement is a string and the setup is not.

- Issue #24326: Fixed audioop.ratecv() with non-default weightB argument.
  Original patch by David Moore.

- Issue #16991: Add a C implementation of OrderedDict.

- Issue #23934: Fix inspect.signature to fail correctly for builtin types
  lacking signature information.  Initial patch by James Powell.


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

Release date: 2015-05-24

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

- Issue #24276: Fixed optimization of property descriptor getter.

- Issue #24268: PEP 489: Multi-phase extension module initialization.
  Patch by Petr Viktorin.

- Issue #23359: Optimize set object internals by specializing the
  hash table search into a lookup function and an insert function.

- Issue #23955: Add pyvenv.cfg option to suppress registry/environment
  lookup for generating sys.path on Windows.

- Issue #24257: Fixed system error in the comparison of faked
  types.SimpleNamespace.

- Issue #22939: Fixed integer overflow in iterator object.  Patch by
  Clement Rouault.

- Issue #23985: Fix a possible buffer overrun when deleting a slice from
  the front of a bytearray and then appending some other bytes data.

- Issue #24102: Fixed exception type checking in standard error handlers.

- Issue #15027: The UTF-32 encoder is now 3x to 7x faster.

- Issue #23290: Optimize set_merge() for cases where the target is empty.
  (Contributed by Serhiy Storchaka.)

- Issue #2292: PEP 448: Additional Unpacking Generalizations.

- Issue #24096: Make warnings.warn_explicit more robust against mutation of the
  warnings.filters list.

- Issue #23996: Avoid a crash when a delegated generator raises an
  unnormalized StopIteration exception.  Patch by Stefan Behnel.

- Issue #23910: Optimize property() getter calls.  Patch by Joe Jevnik.

- Issue #23911: Move path-based importlib bootstrap code to a separate
  frozen module.

- Issue #24192: Fix namespace package imports.

- Issue #24022: Fix tokenizer crash when processing undecodable source code.

- Issue #9951: Added a hex() method to bytes, bytearray, and memoryview.

- Issue #22906: PEP 479: Change StopIteration handling inside generators.

- Issue #24017: PEP 492: Coroutines with async and await syntax.

Library
-------

- Issue #14373: Added C implementation of functools.lru_cache().  Based on
  patches by Matt Joiner and Alexey Kachayev.

- Issue #24230: The tempfile module now accepts bytes for prefix, suffix and dir
  parameters and returns bytes in such situations (matching the os module APIs).

- Issue #22189: collections.UserString now supports __getnewargs__(),
  __rmod__(), casefold(), format_map(), isprintable(), and maketrans().
  Patch by Joe Jevnik.

- Issue #24244: Prevents termination when an invalid format string is
  encountered on Windows in strftime.

- Issue #23973: PEP 484: Add the typing module.

- Issue #23086: The collections.abc.Sequence() abstract base class added
  *start* and *stop* parameters to the index() mixin.
  Patch by Devin Jeanpierre.

- Issue #20035: Replaced the ``tkinter._fix`` module used for setting up the
  Tcl/Tk environment on Windows with a private function in the ``_tkinter``
  module that makes no permanent changes to the environment.

- Issue #24257: Fixed segmentation fault in sqlite3.Row constructor with faked
  cursor type.

- Issue #15836: assertRaises(), assertRaisesRegex(), assertWarns() and
  assertWarnsRegex() assertments now check the type of the first argument
  to prevent possible user error.  Based on patch by Daniel Wagner-Hall.

- Issue #9858: Add missing method stubs to _io.RawIOBase.  Patch by Laura
  Rupprecht.

- Issue #22955: attrgetter, itemgetter and methodcaller objects in the operator
  module now support pickling.  Added readable and evaluable repr for these
  objects.  Based on patch by Josh Rosenberg.

- Issue #22107: tempfile.gettempdir() and tempfile.mkdtemp() now try again
  when a directory with the chosen name already exists on Windows as well as
  on Unix.  tempfile.mkstemp() now fails early if parent directory is not
  valid (not exists or is a file) on Windows.

- Issue #23780: Improved error message in os.path.join() with single argument.

- Issue #6598: Increased time precision and random number range in
  email.utils.make_msgid() to strengthen the uniqueness of the message ID.

- Issue #24091: Fixed various crashes in corner cases in C implementation of
  ElementTree.

- Issue #21931: msilib.FCICreate() now raises TypeError in the case of a bad
  argument instead of a ValueError with a bogus FCI error number.
  Patch by Jeffrey Armstrong.

- Issue #13866: *quote_via* argument added to urllib.parse.urlencode.

- Issue #20098: New mangle_from policy option for email, default True
  for compat32, but False for all other policies.

- Issue #24211: The email library now supports RFC 6532: it can generate
  headers using utf-8 instead of encoded words.

- Issue #16314: Added support for the LZMA compression in distutils.

- Issue #21804: poplib now supports RFC 6856 (UTF8).

- Issue #18682: Optimized pprint functions for builtin scalar types.

- Issue #22027: smtplib now supports RFC 6531 (SMTPUTF8).

- Issue #23488: Random generator objects now consume 2x less memory on 64-bit.

- Issue #1322: platform.dist() and platform.linux_distribution() functions are
  now deprecated.  Initial patch by Vajrasky Kok.

- Issue #22486: Added the math.gcd() function.  The fractions.gcd() function now is
  deprecated.  Based on patch by Mark Dickinson.

- Issue #24064: Property() docstrings are now writeable.
  (Patch by Berker Peksag.)

- Issue #22681: Added support for the koi8_t encoding.

- Issue #22682: Added support for the kz1048 encoding.

- Issue #23796: peek and read1 methods of BufferedReader now raise ValueError
  if they called on a closed object. Patch by John Hergenroeder.

- Issue #21795: smtpd now supports the 8BITMIME extension whenever
  the new *decode_data* constructor argument is set to False.

- Issue #24155: optimize heapq.heapify() for better cache performance
  when heapifying large lists.

- Issue #21800: imaplib now supports RFC 5161 (enable), RFC 6855
  (utf8/internationalized email) and automatically encodes non-ASCII
  usernames and passwords to UTF8.

- Issue #20274: When calling a _sqlite.Connection, it now complains if passed
  any keyword arguments.  Previously it silently ignored them.

- Issue #20274: Remove ignored and erroneous "kwargs" parameters from three
  METH_VARARGS methods on _sqlite.Connection.

- Issue #24134: assertRaises(), assertRaisesRegex(), assertWarns() and
  assertWarnsRegex() checks now emits a deprecation warning when callable is
  None or keyword arguments except msg is passed in the context manager mode.

- Issue #24018: Add a collections.abc.Generator abstract base class.
  Contributed by Stefan Behnel.

- Issue #23880: Tkinter's getint() and getdouble() now support Tcl_Obj.
  Tkinter's getdouble() now supports any numbers (in particular int).

- Issue #22619: Added negative limit support in the traceback module.
  Based on patch by Dmitry Kazakov.

- Issue #24094: Fix possible crash in json.encode with poorly behaved dict
  subclasses.

- Issue #9246: On POSIX, os.getcwd() now supports paths longer than 1025 bytes.
  Patch written by William Orr.

- Issue #17445: add difflib.diff_bytes() to support comparison of
  byte strings (fixes a regression from Python 2).

- Issue #23917: Fall back to sequential compilation when ProcessPoolExecutor
  doesn't exist.  Patch by Claudiu Popa.

- Issue #23008: Fixed resolving attributes with boolean value is False in pydoc.

- Fix asyncio issue 235: LifoQueue and PriorityQueue's put didn't
  increment unfinished tasks (this bug was introduced when
  JoinableQueue was merged with Queue).

- Issue #23908: os functions now reject paths with embedded null character
  on Windows instead of silently truncate 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 successfuly. The socket timeout is now the
  maximum total duration to send all data.

- Issue #22721: An order of multiline pprint output of set or dict containing
  orderable and non-orderable elements no longer depends on iteration order of
  set or dict.

- Issue #15133: _tkinter.tkapp.getboolean() now supports Tcl_Obj and always
  returns bool.  tkinter.BooleanVar now validates input values (accepted bool,
  int, str, and Tcl_Obj).  tkinter.BooleanVar.get() now always returns bool.

- Issue #10590: xml.sax.parseString() now supports string argument.

- Issue #23338: Fixed formatting ctypes error messages on Cygwin.
  Patch by Makoto Kato.

- Issue #15582: inspect.getdoc() now follows inheritance chains.

- Issue #2175: SAX parsers now support a character stream of InputSource object.

- Issue #16840: Tkinter now supports 64-bit integers added in Tcl 8.4 and
  arbitrary precision integers added in Tcl 8.5.

- Issue #23834: Fix socket.sendto(), use the C Py_ssize_t type to store the
  result of sendto() instead of the C int type.

- Issue #23618: :meth:`socket.socket.connect` now waits until the connection
  completes instead of raising :exc:`InterruptedError` if the connection is
  interrupted by signals, signal handlers don't raise an exception and the
  socket is blocking or has a timeout. :meth:`socket.socket.connect` still
  raise :exc:`InterruptedError` for non-blocking sockets.

- Issue #21526: Tkinter now supports new boolean type in Tcl 8.5.

- Issue #23836: Fix the faulthandler module to handle reentrant calls to
  its signal handlers.

- Issue #23838: linecache now clears the cache and returns an empty result on
  MemoryError.

- Issue #10395: Added os.path.commonpath(). Implemented in posixpath and ntpath.
  Based on patch by Rafik Draoui.

- Issue #23611: Serializing more "lookupable" objects (such as unbound methods
  or nested classes) now are supported with pickle protocols < 4.

- Issue #13583: sqlite3.Row now supports slice indexing.

- Issue #18473: Fixed 2to3 and 3to2 compatible pickle mappings.  Fixed
  ambigious reverse mappings.  Added many new mappings.  Import mapping is no
  longer applied to modules already mapped with full name mapping.

- Issue #23485: select.select() is now retried automatically with the
  recomputed timeout when interrupted by a signal, except if the signal handler
  raises an exception. This change is part of the PEP 475.

- Issue #23752: When built from an existing file descriptor, io.FileIO() now
  only calls fstat() once. Before fstat() was called twice, which was not
  necessary.

- Issue #23704: collections.deque() objects now support __add__, __mul__, and
  __imul__().

- Issue #23171: csv.Writer.writerow() now supports arbitrary iterables.

- Issue #23745: The new email header parser now handles duplicate MIME
  parameter names without error, similar to how get_param behaves.

- Issue #22117: Fix os.utime(), it now rounds the timestamp towards minus
  infinity (-inf) instead of rounding towards zero.

- Issue #23310: Fix MagicMock's initializer to work with __methods__, just
  like configure_mock().  Patch by Kasia Jachim.

Build
-----

- Issue #23817: FreeBSD now uses "1.0" in the SOVERSION as other operating
  systems, instead of just "1".

- Issue #23501: Argument Clinic now generates code into separate files by default.

Tests
-----

- Issue #23799: Added test.support.start_threads() for running and
  cleaning up multiple threads.

- Issue #22390: test.regrtest now emits a warning if temporary files or
  directories are left after running a test.

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

- Issue #18128: pygettext now uses standard +NNNN format in the
  POT-Creation-Date header.

- Issue #23935: Argument Clinic's understanding of format units
  accepting bytes, bytearrays, and buffers is now consistent with
  both the documentation and the implementation.

- Issue #23944: Argument Clinic now wraps long impl prototypes at column 78.

- Issue #20586: Argument Clinic now ensures that functions without docstrings
  have signatures.

- Issue #23492: Argument Clinic now generates argument parsing code with
  PyArg_Parse instead of PyArg_ParseTuple if possible.

- Issue #23500: Argument Clinic is now smarter about generating the "#ifndef"
  (empty) definition of the methoddef macro: it's only generated once, even
  if Argument Clinic processes the same symbol multiple times, and it's emitted
  at the end of all processing rather than immediately after the first use.

C API
-----

- Issue #23998: PyImport_ReInitLock() now checks for lock allocation error


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

Release date: 2015-03-28

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

- Issue #23573: Increased performance of string search operations (str.find,
  str.index, str.count, the in operator, str.split, str.partition) with
  arguments of different kinds (UCS1, UCS2, UCS4).

- Issue #23753: Python doesn't support anymore platforms without stat() or
  fstat(), these functions are always required.

- Issue #23681: The -b option now affects comparisons of bytes with int.

- Issue #23632: Memoryviews now allow tuple indexing (including for
  multi-dimensional memoryviews).

- Issue #23192: Fixed generator lambdas.  Patch by Bruno Cauet.

- Issue #23629: Fix the default __sizeof__ implementation for variable-sized
  objects.

Library
-------

- Issue #14260: The groupindex attribute of regular expression pattern object
  now is non-modifiable mapping.

- Issue #23792: Ignore KeyboardInterrupt when the pydoc pager is active.
  This mimics the behavior of the standard unix pagers, and prevents
  pipepager from shutting down while the pager itself is still running.

- Issue #23775: pprint() of OrderedDict now outputs the same representation
  as repr().

- Issue #23765: Removed IsBadStringPtr calls in ctypes

- Issue #22364: Improved some re error messages using regex for hints.

- Issue #23742: ntpath.expandvars() no longer loses unbalanced single quotes.

- Issue #21717: The zipfile.ZipFile.open function now supports 'x' (exclusive
  creation) mode.

- Issue #21802: The reader in BufferedRWPair now is closed even when closing
  writer failed in BufferedRWPair.close().

- Issue #23622: Unknown escapes in regular expressions that consist of ``'\'``
  and an ASCII letter now raise a deprecation warning and will be forbidden
  in Python 3.6.

- Issue #23671: string.Template now allows specifying the "self" parameter as
  a keyword argument.  string.Formatter now allows specifying the "self" and
  the "format_string" parameters as keyword arguments.

- Issue #23502: The pprint module now supports mapping proxies.

- Issue #17530: pprint now wraps long bytes objects and bytearrays.

- Issue #22687: Fixed some corner cases in breaking words in tetxtwrap.
  Got rid of quadratic complexity in breaking long words.

- Issue #4727: The copy module now uses pickle protocol 4 (PEP 3154) and
  supports copying of instances of classes whose __new__ method takes
  keyword-only arguments.

- Issue #23491: Added a zipapp module to support creating executable zip
  file archives of Python code. Registered ".pyz" and ".pyzw" extensions
  on Windows for these archives (PEP 441).

- Issue #23657: Avoid explicit checks for str in zipapp, adding support
  for pathlib.Path objects as arguments.

- Issue #23688: Added support of arbitrary bytes-like objects and avoided
  unnecessary copying of memoryview in gzip.GzipFile.write().
  Original patch by Wolfgang Maier.

- Issue #23252: Added support for writing ZIP files to unseekable streams.

- Issue #23647: Increase impalib's MAXLINE to accommodate modern mailbox sizes.

- Issue #23539: If body is None, http.client.HTTPConnection.request now sets
  Content-Length to 0 for PUT, POST, and PATCH headers to avoid 411 errors from
  some web servers.

- Issue #22351: The nntplib.NNTP constructor no longer leaves the connection
  and socket open until the garbage collector cleans them up.  Patch by
  Martin Panter.

- Issue #23704: collections.deque() objects now support methods for index(),
  insert(), and copy().  This allows deques to be registered as a
  MutableSequence and it improves their substitutability for lists.

- Issue #23715: :func:`signal.sigwaitinfo` and :func:`signal.sigtimedwait` are
  now retried when interrupted by a signal not in the *sigset* parameter, if
  the signal handler does not raise an exception. signal.sigtimedwait()
  recomputes the timeout with a monotonic clock when it is retried.

- Issue #23001: Few functions in modules mmap, ossaudiodev, socket, ssl, and
  codecs, that accepted only read-only bytes-like object now accept writable
  bytes-like object too.

- Issue #23646: If time.sleep() is interrupted by a signal, the sleep is now
  retried with the recomputed delay, except if the signal handler raises an
  exception (PEP 475).

- Issue #23136: _strptime now uniformly handles all days in week 0, including
  Dec 30 of previous year.  Based on patch by Jim Carroll.

- Issue #23700: Iterator of NamedTemporaryFile now keeps a reference to
  NamedTemporaryFile instance.  Patch by Bohuslav Kabrda.

- Issue #22903: The fake test case created by unittest.loader when it fails
  importing a test module is now picklable.

- Issue #22181: On Linux, os.urandom() now uses the new getrandom() syscall if
  available, syscall introduced in the Linux kernel 3.17. It is more reliable
  and more secure, because it avoids the need of a file descriptor and waits
  until the kernel has enough entropy.

- Issue #2211: Updated the implementation of the http.cookies.Morsel class.
  Setting attributes key, value and coded_value directly now is deprecated.
  update() and setdefault() now transform and check keys.  Comparing for
  equality now takes into account attributes key, value and coded_value.
  copy() now returns a Morsel, not a dict.  repr() now contains all attributes.
  Optimized checking keys and quoting values.  Added new tests.
  Original patch by Demian Brecht.

- Issue #18983: Allow selection of output units in timeit.
  Patch by Julian Gindi.

- Issue #23631: Fix traceback.format_list when a traceback has been mutated.

- Issue #23568: Add rdivmod support to MagicMock() objects.
  Patch by Håkan Lövdahl.

- Issue #2052: Add charset parameter to HtmlDiff.make_file().

- Issue #23668: Support os.truncate and os.ftruncate on Windows.

- Issue #23138: Fixed parsing cookies with absent keys or values in cookiejar.
  Patch by Demian Brecht.

- Issue #23051: multiprocessing.Pool methods imap() and imap_unordered() now
  handle exceptions raised by an iterator.  Patch by Alon Diamant and Davin
  Potts.

- Issue #23581: Add matmul support to MagicMock. Patch by Håkan Lövdahl.

- Issue #23566: enable(), register(), dump_traceback() and
  dump_traceback_later() functions of faulthandler now accept file
  descriptors. Patch by Wei Wu.

- Issue #22928: Disabled HTTP header injections in http.client.
  Original patch by Demian Brecht.

- Issue #23615: Modules bz2, tarfile and tokenize now can be reloaded with
  imp.reload().  Patch by Thomas Kluyver.

- Issue #23605: os.walk() now calls os.scandir() instead of os.listdir().
  The usage of os.scandir() reduces the number of calls to os.stat().
  Initial patch written by Ben Hoyt.

Build
-----

- Issue #23585: make patchcheck will ensure the interpreter is built.

Tests
-----

- Issue #23583: Added tests for standard IO streams in IDLE.

- Issue #22289: Prevent test_urllib2net failures due to ftp connection timeout.

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

- Issue #22826: The result of open() in Tools/freeze/bkfile.py is now better
  compatible with regular files (in particular it now supports the context
  management protocol).


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

Release date: 2015-03-09

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

- Issue #23571: PyObject_Call() and PyCFunction_Call() now raise a SystemError
  if a function returns a result and raises an exception. The SystemError is
  chained to the previous exception.

Library
-------

- Issue #22524: New os.scandir() function, part of the PEP 471: "os.scandir()
  function -- a better and faster directory iterator". Patch written by Ben
  Hoyt.

- Issue #23103: Reduced the memory consumption of IPv4Address and IPv6Address.

- Issue #21793: BaseHTTPRequestHandler again logs response code as numeric,
  not as stringified enum.  Patch by Demian Brecht.

- Issue #23476: In the ssl module, enable OpenSSL's X509_V_FLAG_TRUSTED_FIRST
  flag on certificate stores when it is available.

- Issue #23576: Avoid stalling in SSL reads when EOF has been reached in the
  SSL layer but the underlying connection hasn't been closed.

- Issue #23504: Added an __all__ to the types module.

- Issue #23563: Optimized utility functions in urllib.parse.

- Issue #7830: Flatten nested functools.partial.

- Issue #20204: Added the __module__ attribute to _tkinter classes.

- Issue #19980: Improved help() for non-recognized strings.  help('') now
  shows the help on str.  help('help') now shows the help on help().
  Original patch by Mark Lawrence.

- Issue #23521: Corrected pure python implementation of timedelta division.

 * Eliminated OverflowError from timedelta * float for some floats;
 * Corrected rounding in timedlta true division.

- Issue #21619: Popen objects no longer leave a zombie after exit in the with
  statement if the pipe was broken.  Patch by Martin Panter.

- Issue #22936: Make it possible to show local variables in tracebacks for
  both the traceback module and unittest.

- Issue #15955: Add an option to limit the output size in bz2.decompress().
  Patch by Nikolaus Rath.

- Issue #6639: Module-level turtle functions no longer raise TclError after
  closing the window.

- Issues #814253, #9179: Group references and conditional group references now
  work in lookbehind assertions in regular expressions.

- Issue #23215: Multibyte codecs with custom error handlers that ignores errors
  consumed too much memory and raised SystemError or MemoryError.
  Original patch by Aleksi Torhamo.

- Issue #5700: io.FileIO() called flush() after closing the file.
  flush() was not called in close() if closefd=False.

- Issue #23374: Fixed pydoc failure with non-ASCII files when stdout encoding
  differs from file system encoding (e.g. on Mac OS).

- Issue #23481: Remove RC4 from the SSL module's default cipher list.

- Issue #21548: Fix pydoc.synopsis() and pydoc.apropos() on modules with empty
  docstrings.

- Issue #22885: Fixed arbitrary code execution vulnerability in the dbm.dumb
  module.  Original patch by Claudiu Popa.

- Issue #23239: ssl.match_hostname() now supports matching of IP addresses.

- Issue #23146: Fix mishandling of absolute Windows paths with forward
  slashes in pathlib.

- Issue #23096: Pickle representation of floats with protocol 0 now is the same
  for both Python and C implementations.

- Issue #19105: pprint now more efficiently uses free space at the right.

- Issue #14910: Add allow_abbrev parameter to argparse.ArgumentParser. Patch by
  Jonathan Paugh, Steven Bethard, paul j3 and Daniel Eriksson.

- Issue #21717: tarfile.open() now supports 'x' (exclusive creation) mode.

- Issue #23344: marshal.dumps() is now 20-25% faster on average.

- Issue #20416: marshal.dumps() with protocols 3 and 4 is now 40-50% faster on
  average.

- Issue #23421: Fixed compression in tarfile CLI.  Patch by wdv4758h.

- Issue #23367: Fix possible overflows in the unicodedata module.

- Issue #23361: Fix possible overflow in Windows subprocess creation code.

- logging.handlers.QueueListener now takes a respect_handler_level keyword
  argument which, if set to True, will pass messages to handlers taking handler
  levels into account.

- Issue #19705: turtledemo now has a visual sorting algorithm demo.  Original
  patch from Jason Yeo.

- Issue #23801: Fix issue where cgi.FieldStorage did not always ignore the
  entire preamble to a multipart body.

Build
-----

- Issue #23445: pydebug builds now use "gcc -Og" where possible, to make
  the resulting executable faster.

- Issue #23686: Update OS X 10.5 installer build to use OpenSSL 1.0.2a.

C API
-----

- Issue #20204: Deprecation warning is now raised for builtin types without the
  __module__ attribute.

Windows
-------

- Issue #23465: Implement PEP 486 - Make the Python Launcher aware of virtual
  environments. Patch by Paul Moore.

- Issue #23437: Make user scripts directory versioned on Windows. Patch by Paul
  Moore.


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

Release date: 2015-02-08

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

- Issue #23285: PEP 475 - EINTR handling.

- Issue #22735: Fix many edge cases (including crashes) involving custom mro()
  implementations.

- Issue #22896: Avoid using PyObject_AsCharBuffer(), PyObject_AsReadBuffer()
  and PyObject_AsWriteBuffer().

- Issue #21295: Revert some changes (issue #16795) to AST line numbers and
  column offsets that constituted a regression.

- Issue #22986: Allow changing an object's __class__ between a dynamic type and
  static type in some cases.

- Issue #15859: PyUnicode_EncodeFSDefault(), PyUnicode_EncodeMBCS() and
  PyUnicode_EncodeCodePage() now raise an exception if the object is not a
  Unicode object. For PyUnicode_EncodeFSDefault(), it was already the case on
  platforms other than Windows. Patch written by Campbell Barton.

- Issue #21408: The default __ne__() now returns NotImplemented if __eq__()
  returned NotImplemented.  Original patch by Martin Panter.

- Issue #23321: Fixed a crash in str.decode() when error handler returned
  replacment string longer than mailformed input data.

- Issue #22286: The "backslashreplace" error handlers now works with
  decoding and translating.

- Issue #23253: Delay-load ShellExecute[AW] in os.startfile for reduced
  startup overhead on Windows.

- Issue #22038: pyatomic.h now uses stdatomic.h or GCC built-in functions for
  atomic memory access if available. Patch written by Vitor de Lima and Gustavo
  Temple.

- Issue #20284: %-interpolation (aka printf) formatting added for bytes and
  bytearray.

- Issue #23048: Fix jumping out of an infinite while loop in the pdb.

- Issue #20335: bytes constructor now raises TypeError when encoding or errors
  is specified with non-string argument.  Based on patch by Renaud Blanch.

- Issue #22834: If the current working directory ends up being set to a
  non-existent directory then import will no longer raise FileNotFoundError.

- Issue #22869: Move the interpreter startup & shutdown code to a new
  dedicated pylifecycle.c module

- Issue #22847: Improve method cache efficiency.

- Issue #22335: Fix crash when trying to enlarge a bytearray to 0x7fffffff
  bytes on a 32-bit platform.

- Issue #22653: Fix an assertion failure in debug mode when doing a reentrant
  dict insertion in debug mode.

- Issue #22643: Fix integer overflow in Unicode case operations (upper, lower,
  title, swapcase, casefold).

- Issue #17636: Circular imports involving relative imports are now
  supported.

- Issue #22604: Fix assertion error in debug mode when dividing a complex
  number by (nan+0j).

- Issue #21052: Do not raise ImportWarning when sys.path_hooks or sys.meta_path
  are set to None.

- Issue #16518: Use 'bytes-like object required' in error messages that
  previously used the far more cryptic "'x' does not support the buffer
  protocol.

- Issue #22470: Fixed integer overflow issues in "backslashreplace",
  "xmlcharrefreplace", and "surrogatepass" error handlers.

- Issue #22540: speed up `PyObject_IsInstance` and `PyObject_IsSubclass` in the
  common case that the second argument has metaclass `type`.

- Issue #18711: Add a new `PyErr_FormatV` function, similar to `PyErr_Format`
  but accepting a `va_list` argument.

- Issue #22520: Fix overflow checking when generating the repr of a unicode
  object.

- Issue #22519: Fix overflow checking in PyBytes_Repr.

- Issue #22518: Fix integer overflow issues in latin-1 encoding.

- Issue #16324: _charset parameter of MIMEText now also accepts
  email.charset.Charset instances. Initial patch by Claude Paroz.

- Issue #1764286: Fix inspect.getsource() to support decorated functions.
  Patch by Claudiu Popa.

- Issue #18554: os.__all__ includes posix functions.

- Issue #21391: Use os.path.abspath in the shutil module.

- Issue #11471: avoid generating a JUMP_FORWARD instruction at the end of
  an if-block if there is no else-clause.  Original patch by Eugene Toder.

- Issue #22215: Now ValueError is raised instead of TypeError when str or bytes
  argument contains not permitted null character or byte.

- Issue #22258: Fix the internal function set_inheritable() on Illumos.
  This platform exposes the function ``ioctl(FIOCLEX)``, but calling it fails
  with errno is ENOTTY: "Inappropriate ioctl for device". set_inheritable()
  now falls back to the slower ``fcntl()`` (``F_GETFD`` and then ``F_SETFD``).

- Issue #21389: Displaying the __qualname__ of the underlying function in the
  repr of a bound method.

- Issue #22206: Using pthread, PyThread_create_key() now sets errno to ENOMEM
  and returns -1 (error) on integer overflow.

- Issue #20184: Argument Clinic based signature introspection added for
  30 of the builtin functions.

- Issue #22116: C functions and methods (of the 'builtin_function_or_method'
  type) can now be weakref'ed.  Patch by Wei Wu.

- Issue #22077: Improve index error messages for bytearrays, bytes, lists,
  and tuples by adding 'or slices'. Added ', not <typename>' for bytearrays.
  Original patch by Claudiu Popa.

- Issue #20179: Apply Argument Clinic to bytes and bytearray.
  Patch by Tal Einat.

- Issue #22082: Clear interned strings in slotdefs.

- Upgrade Unicode database to Unicode 7.0.0.

- Issue #21897: Fix a crash with the f_locals attribute with closure
  variables when frame.clear() has been called.

- Issue #21205: Add a new ``__qualname__`` attribute to generator, the
  qualified name, and use it in the representation of a generator
  (``repr(gen)``). The default name of the generator (``__name__`` attribute)
  is now get from the function instead of the code. Use ``gen.gi_code.co_name``
  to get the name of the code.

- Issue #21669: With the aid of heuristics in SyntaxError.__init__, the
  parser now attempts to generate more meaningful (or at least more search
  engine friendly) error messages when "exec" and "print" are used as
  statements.

- Issue #21642: In the conditional if-else expression, allow an integer written
  with no space between itself and the ``else`` keyword (e.g. ``True if 42else
  False``) to be valid syntax.

- Issue #21523: Fix over-pessimistic computation of the stack effect of
  some opcodes in the compiler.  This also fixes a quadratic compilation
  time issue noticeable when compiling code with a large number of "and"
  and "or" operators.

- Issue #21418: Fix a crash in the builtin function super() when called without
  argument and without current frame (ex: embedded Python).

- Issue #21425: Fix flushing of standard streams in the interactive
  interpreter.

- Issue #21435: In rare cases, when running finalizers on objects in cyclic
  trash a bad pointer dereference could occur due to a subtle flaw in
  internal iteration logic.

- Issue #21377: PyBytes_Concat() now tries to concatenate in-place when the
  first argument has a reference count of 1.  Patch by Nikolaus Rath.

- Issue #20355: -W command line options now have higher priority than the
  PYTHONWARNINGS environment variable.  Patch by Arfrever.

- Issue #21274: Define PATH_MAX for GNU/Hurd in Python/pythonrun.c.

- Issue #20904: Support setting FPU precision on m68k.

- Issue #21209: Fix sending tuples to custom generator objects with the yield
  from syntax.

- Issue #21193: pow(a, b, c) now raises ValueError rather than TypeError when b
  is negative.  Patch by Josh Rosenberg.

- PEP 465 and Issue #21176: Add the '@' operator for matrix multiplication.

- Issue #21134: Fix segfault when str is called on an uninitialized
  UnicodeEncodeError, UnicodeDecodeError, or UnicodeTranslateError object.

- Issue #19537: Fix PyUnicode_DATA() alignment under m68k.  Patch by
  Andreas Schwab.

- Issue #20929: Add a type cast to avoid shifting a negative number.

- Issue #20731: Properly position in source code files even if they
  are opened in text mode. Patch by Serhiy Storchaka.

- Issue #20637: Key-sharing now also works for instance dictionaries of
  subclasses.  Patch by Peter Ingebretson.

- Issue #8297: Attributes missing from modules now include the module name
  in the error text.  Original patch by ysj.ray.

- Issue #19995: %c, %o, %x, and %X now raise TypeError on non-integer input.

- Issue #19655: The ASDL parser - used by the build process to generate code for
  managing the Python AST in C - was rewritten. The new parser is self contained
  and does not require to carry long the spark.py parser-generator library;
  spark.py was removed from the source base.

- Issue #12546: Allow ``\x00`` to be used as a fill character when using str, int,
  float, and complex __format__ methods.

- Issue #20480: Add ipaddress.reverse_pointer. Patch by Leon Weber.

- Issue #13598: Modify string.Formatter to support auto-numbering of
  replacement fields. It now matches the behavior of str.format() in
  this regard. Patches by Phil Elson and Ramchandra Apte.

- Issue #8931: Make alternate formatting ('#') for type 'c' raise an
  exception. In versions prior to 3.5, '#' with 'c' had no effect. Now
  specifying it is an error.  Patch by Torsten Landschoff.

- Issue #23165: Perform overflow checks before allocating memory in the
  _Py_char2wchar function.

Library
-------

- Issue #23399: pyvenv creates relative symlinks where possible.

- Issue #20289: cgi.FieldStorage() now supports the context management
  protocol.

- Issue #13128: Print response headers for CONNECT requests when debuglevel
  > 0. Patch by Demian Brecht.

- Issue #15381: Optimized io.BytesIO to make less allocations and copyings.

- Issue #22818: Splitting on a pattern that could match an empty string now
  raises a warning.  Patterns that can only match empty strings are now
  rejected.

- Issue #23099: Closing io.BytesIO with exported buffer is rejected now to
  prevent corrupting exported buffer.

- Issue #23326: Removed __ne__ implementations.  Since fixing default __ne__
  implementation in issue #21408 they are redundant.

- Issue #23363: Fix possible overflow in itertools.permutations.

- Issue #23364: Fix possible overflow in itertools.product.

- Issue #23366: Fixed possible integer overflow in itertools.combinations.

- Issue #23369: Fixed possible integer overflow in
  _json.encode_basestring_ascii.

- Issue #23353: Fix the exception handling of generators in
  PyEval_EvalFrameEx(). At entry, save or swap the exception state even if
  PyEval_EvalFrameEx() is called with throwflag=0. At exit, the exception state
  is now always restored or swapped, not only if why is WHY_YIELD or
  WHY_RETURN. Patch co-written with Antoine Pitrou.

- Issue #14099: Restored support of writing ZIP files to tellable but
  non-seekable streams.

- Issue #14099: Writing to ZipFile and reading multiple ZipExtFiles is
  threadsafe now.

- Issue #19361: JSON decoder now raises JSONDecodeError instead of ValueError.

- Issue #18518: timeit now rejects statements which can't be compiled outside
  a function or a loop (e.g. "return" or "break").

- Issue #23094: Fixed readline with frames in Python implementation of pickle.

- Issue #23268: Fixed bugs in the comparison of ipaddress classes.

- Issue #21408: Removed incorrect implementations of __ne__() which didn't
  returned NotImplemented if __eq__() returned NotImplemented.  The default
  __ne__() now works correctly.

- Issue #19996: :class:`email.feedparser.FeedParser` now handles (malformed)
  headers with no key rather than assuming the body has started.

- Issue #20188: Support Application-Layer Protocol Negotiation (ALPN) in the ssl
  module.

- Issue #23133: Pickling of ipaddress objects now produces more compact and
  portable representation.

- Issue #23248: Update ssl error codes from latest OpenSSL git master.

- Issue #23266: Much faster implementation of ipaddress.collapse_addresses()
  when there are many non-consecutive addresses.

- Issue #23098: 64-bit dev_t is now supported in the os module.

- Issue #21817: When an exception is raised in a task submitted to a
  ProcessPoolExecutor, the remote traceback is now displayed in the
  parent process.  Patch by Claudiu Popa.

- Issue #15955: Add an option to limit output size when decompressing LZMA
  data.  Patch by Nikolaus Rath and Martin Panter.

- Issue #23250: In the http.cookies module, capitalize "HttpOnly" and "Secure"
  as they are written in the standard.

- Issue #23063: In the disutils' check command, fix parsing of reST with code or
  code-block directives.

- Issue #23209, #23225: selectors.BaseSelector.get_key() now raises a
  RuntimeError if the selector is closed. And selectors.BaseSelector.close()
  now clears its internal reference to the selector mapping to break a
  reference cycle. Initial patch written by Martin Richard.

- Issue #17911: Provide a way to seed the linecache for a PEP-302 module
  without actually loading the code.

- Issue #17911: Provide a new object API for traceback, including the ability
  to not lookup lines at all until the traceback is actually rendered, without
  any trace of the original objects being kept alive.

- Issue #19777: Provide a home() classmethod on Path objects.  Contributed
  by Victor Salgado and Mayank Tripathi.

- Issue #23206: Make ``json.dumps(..., ensure_ascii=False)`` as fast as the
  default case of ``ensure_ascii=True``.  Patch by Naoki Inada.

- Issue #23185: Add math.inf and math.nan constants.

- Issue #23186: Add ssl.SSLObject.shared_ciphers() and
  ssl.SSLSocket.shared_ciphers() to fetch the client's list ciphers sent at
  handshake.

- Issue #23143: Remove compatibility with OpenSSLs older than 0.9.8.

- Issue #23132: Improve performance and introspection support of comparison
  methods created by functool.total_ordering.

- Issue #19776: Add an expanduser() method on Path objects.

- Issue #23112: Fix SimpleHTTPServer to correctly carry the query string and
  fragment when it redirects to add a trailing slash.

- Issue #21793: Added http.HTTPStatus enums (i.e. HTTPStatus.OK,
  HTTPStatus.NOT_FOUND).  Patch by Demian Brecht.

- Issue #23093: In the io, module allow more operations to work on detached
  streams.

- Issue #23111: In the ftplib, make ssl.PROTOCOL_SSLv23 the default protocol
  version.

- Issue #22585: On OpenBSD 5.6 and newer, os.urandom() now calls getentropy(),
  instead of reading /dev/urandom, to get pseudo-random bytes.

- Issue #19104: pprint now produces evaluable output for wrapped strings.

- Issue #23071: Added missing names to codecs.__all__.  Patch by Martin Panter.

- Issue #22783: Pickling now uses the NEWOBJ opcode instead of the NEWOBJ_EX
  opcode if possible.

- Issue #15513: Added a __sizeof__ implementation for pickle classes.

- Issue #19858: pickletools.optimize() now aware of the MEMOIZE opcode, can
  produce more compact result and no longer produces invalid output if input
  data contains MEMOIZE opcodes together with PUT or BINPUT opcodes.

- Issue #22095: Fixed HTTPConnection.set_tunnel with default port.  The port
  value in the host header was set to "None".  Patch by Demian Brecht.

- Issue #23016: A warning no longer produces an AttributeError when the program
  is run with pythonw.exe.

- Issue #21775: shutil.copytree(): fix crash when copying to VFAT. An exception
  handler assumed that OSError objects always have a 'winerror' attribute.
  That is not the case, so the exception handler itself raised AttributeError
  when run on Linux (and, presumably, any other non-Windows OS).
  Patch by Greg Ward.

- Issue #1218234: Fix inspect.getsource() to load updated source of
  reloaded module. Initial patch by Berker Peksag.

- Issue #21740: Support wrapped callables in doctest. Patch by Claudiu Popa.

- Issue #23009: Make sure selectors.EpollSelecrtor.select() works when no
  FD is registered.

- Issue #22959: In the constructor of http.client.HTTPSConnection, prefer the
  context's check_hostname attribute over the *check_hostname* parameter.

- Issue #22696: Add function :func:`sys.is_finalizing` to know about
  interpreter shutdown.

- Issue #16043: Add a default limit for the amount of data xmlrpclib.gzip_decode
  will return. This resolves CVE-2013-1753.

- Issue #14099: ZipFile.open() no longer reopen the underlying file.  Objects
  returned by ZipFile.open() can now operate independently of the ZipFile even
  if the ZipFile was created by passing in a file-like object as the first
  argument to the constructor.

- Issue #22966: Fix __pycache__ pyc file name clobber when pyc_compile is
  asked to compile a source file containing multiple dots in the source file
  name.

- Issue #21971: Update turtledemo doc and add module to the index.

- Issue #21032: Fixed socket leak if HTTPConnection.getresponse() fails.
  Original patch by Martin Panter.

- Issue #22407: Deprecated the use of re.LOCALE flag with str patterns or
  re.ASCII. It was newer worked.

- Issue #22902: The "ip" command is now used on Linux to determine MAC address
  in uuid.getnode().  Pach by Bruno Cauet.

- Issue #22960: Add a context argument to xmlrpclib.ServerProxy constructor.

- Issue #22389: Add contextlib.redirect_stderr().

- Issue #21356: Make ssl.RAND_egd() optional to support LibreSSL. The
  availability of the function is checked during the compilation. Patch written
  by Bernard Spil.

- Issue #22915: SAX parser now supports files opened with file descriptor or
  bytes path.

- Issue #22609: Constructors and update methods of mapping classes in the
  collections module now accept the self keyword argument.

- Issue #22940: Add readline.append_history_file.

- Issue #19676: Added the "namereplace" error handler.

- Issue #22788: Add *context* parameter to logging.handlers.HTTPHandler.

- Issue #22921: Allow SSLContext to take the *hostname* parameter even if
  OpenSSL doesn't support SNI.

- Issue #22894: TestCase.subTest() would cause the test suite to be stopped
  when in failfast mode, even in the absence of failures.

- Issue #22796: HTTP cookie parsing is now stricter, in order to protect
  against potential injection attacks.

- Issue #22370: Windows detection in pathlib is now more robust.

- Issue #22841: Reject coroutines in asyncio add_signal_handler().
  Patch by Ludovic.Gasc.

- Issue #19494: Added urllib.request.HTTPBasicPriorAuthHandler. Patch by
  Matej Cepl.

- Issue #22578: Added attributes to the re.error class.

- Issue #22849: Fix possible double free in the io.TextIOWrapper constructor.

- Issue #12728: Different Unicode characters having the same uppercase but
  different lowercase are now matched in case-insensitive regular expressions.

- Issue #22821: Fixed fcntl() with integer argument on 64-bit big-endian
  platforms.

- Issue #21650: Add an `--sort-keys` option to json.tool CLI.

- Issue #22824: Updated reprlib output format for sets to use set literals.
  Patch contributed by Berker Peksag.

- Issue #22824: Updated reprlib output format for arrays to display empty
  arrays without an unnecessary empty list.  Suggested by Serhiy Storchaka.

- Issue #22406: Fixed the uu_codec codec incorrectly ported to 3.x.
  Based on patch by Martin Panter.

- Issue #17293: uuid.getnode() now determines MAC address on AIX using netstat.
  Based on patch by Aivars Kalvāns.

- Issue #22769: Fixed ttk.Treeview.tag_has() when called without arguments.

- Issue #22417: Verify certificates by default in httplib (PEP 476).

- Issue #22775: Fixed unpickling of http.cookies.SimpleCookie with protocol 2
  and above.  Patch by Tim Graham.

- Issue #22776: Brought excluded code into the scope of a try block in
  SysLogHandler.emit().

- Issue #22665: Add missing get_terminal_size and SameFileError to
  shutil.__all__.

- Issue #6623: Remove deprecated Netrc class in the ftplib module. Patch by
  Matt Chaput.

- Issue #17381: Fixed handling of case-insensitive ranges in regular
  expressions.

- Issue #22410: Module level functions in the re module now cache compiled
  locale-dependent regular expressions taking into account the locale.

- Issue #22759: Query methods on pathlib.Path() (exists(), is_dir(), etc.)
  now return False when the underlying stat call raises NotADirectoryError.

- Issue #8876: distutils now falls back to copying files when hard linking
  doesn't work.  This allows use with special filesystems such as VirtualBox
  shared folders.

- Issue #22217: Implemented reprs of classes in the zipfile module.

- Issue #22457: Honour load_tests in the start_dir of discovery.

- Issue #18216: gettext now raises an error when a .mo file has an
  unsupported major version number.  Patch by Aaron Hill.

- Issue #13918: Provide a locale.delocalize() function which can remove
  locale-specific number formatting from a string representing a number,
  without then converting it to a specific type.  Patch by Cédric Krier.

- Issue #22676: Make the pickling of global objects which don't have a
  __module__ attribute less slow.

- Issue #18853: Fixed ResourceWarning in shlex.__nain__.

- Issue #9351: Defaults set with set_defaults on an argparse subparser
  are no longer ignored when also set on the parent parser.

- Issue #7559: unittest test loading ImportErrors are reported as import errors
  with their import exception rather than as attribute errors after the import
  has already failed.

- Issue #19746: Make it possible to examine the errors from unittest
  discovery without executing the test suite. The new `errors` attribute
  on TestLoader exposes these non-fatal errors encountered during discovery.

- Issue #21991: Make email.headerregistry's header 'params' attributes
  be read-only (MappingProxyType).  Previously the dictionary was modifiable
  but a new one was created on each access of the attribute.

- Issue #22638: SSLv3 is now disabled throughout the standard library.
  It can still be enabled by instantiating a SSLContext manually.

- Issue #22641: In asyncio, the default SSL context for client connections
  is now created using ssl.create_default_context(), for stronger security.

- Issue #17401: Include closefd in io.FileIO repr.

- Issue #21338: Add silent mode for compileall. quiet parameters of
  compile_{dir, file, path} functions now have a multilevel value. Also,
  -q option of the CLI now have a multilevel value. Patch by Thomas Kluyver.

- Issue #20152: Convert the array and cmath modules to Argument Clinic.

- Issue #18643: Add socket.socketpair() on Windows.

- Issue #22435: Fix a file descriptor leak when SocketServer bind fails.

- Issue #13096: Fixed segfault in CTypes POINTER handling of large
  values.

- Issue #11694: Raise ConversionError in xdrlib as documented.  Patch
  by Filip Gruszczyński and Claudiu Popa.

- Issue #19380: Optimized parsing of regular expressions.

- Issue #1519638: Now unmatched groups are replaced with empty strings in re.sub()
  and re.subn().

- Issue #18615: sndhdr.what/whathdr now return a namedtuple.

- Issue #22462: Fix pyexpat's creation of a dummy frame to make it
  appear in exception tracebacks.

- Issue #21965: Add support for in-memory SSL to the ssl module.  Patch
  by Geert Jansen.

- Issue #21173: Fix len() on a WeakKeyDictionary when .clear() was called
  with an iterator alive.

- Issue #11866: Eliminated race condition in the computation of names
  for new threads.

- Issue #21905: Avoid RuntimeError in pickle.whichmodule() when sys.modules
  is mutated while iterating.  Patch by Olivier Grisel.

- Issue #11271: concurrent.futures.Executor.map() now takes a *chunksize*
  argument to allow batching of tasks in child processes and improve
  performance of ProcessPoolExecutor.  Patch by Dan O'Reilly.

- Issue #21883: os.path.join() and os.path.relpath() now raise a TypeError with
  more helpful error message for unsupported or mismatched types of arguments.

- Issue #22219: The zipfile module CLI now adds entries for directories
  (including empty directories) in ZIP file.

- Issue #22449: In the ssl.SSLContext.load_default_certs, consult the
  environmental variables SSL_CERT_DIR and SSL_CERT_FILE on Windows.

- Issue #22508: The email.__version__ variable has been removed; the email
  code is no longer shipped separately from the stdlib, and __version__
  hasn't been updated in several releases.

- Issue #20076: Added non derived UTF-8 aliases to locale aliases table.

- Issue #20079: Added locales supported in glibc 2.18 to locale alias table.

- Issue #20218: Added convenience methods read_text/write_text and read_bytes/
  write_bytes to pathlib.Path objects.

- Issue #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 truncate 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 later 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 supresses 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.


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

Release date: 2014-03-16

Library
-------

- Issue #20939: Fix test_geturl failure in test_urllibnet due to
  new redirect of http://www.python.org/ to https://www.python.org.

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

- Merge in all documentation changes since branching 3.4.0rc1.


What's New in Python 3.4.0 release candidate 3?
===============================================

Release date: 2014-03-09

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

- Issue #20786: Fix signatures for dict.__delitem__ and
  property.__delete__ builtins.

Library
-------

- Issue #20839: Don't trigger a DeprecationWarning in the still supported
  pkgutil.get_loader() API when __loader__ isn't set on a module (nor
  when pkgutil.find_loader() is called directly).

Build
-----

- Issue #14512: Launch pydoc -b instead of pydocgui.pyw on Windows.

- Issue #20748: Uninstalling pip does not leave behind the pyc of
  the uninstaller anymore.

- Issue #20568: The Windows installer now installs the unversioned ``pip``
  command in addition to the versioned ``pip3`` and ``pip3.4`` commands.

- Issue #20757: The ensurepip helper for the Windows uninstaller now skips
  uninstalling pip (rather than failing) if the user has updated pip to a
  different version from the one bundled with ensurepip.

- Issue #20465: Update OS X and Windows installer builds to use
  SQLite 3.8.3.1.


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

Release date: 2014-02-23

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

- Issue #20625: Parameter names in __annotations__ were not mangled properly.
  Discovered by Jonas Wielicki, patch by Yury Selivanov.

- Issue #20261: In pickle, lookup __getnewargs__ and __getnewargs_ex__ on the
  type of the object.

- Issue #20619: Give the AST nodes of keyword-only arguments a column and line
  number.

- Issue #20526: Revert changes of issue #19466 which introduces a regression:
  don't clear anymore the state of Python threads early during the Python
  shutdown.

Library
-------

- Issue #20710: The pydoc summary line no longer displays the "self" parameter
  for bound methods.

- Issue #20566: Change asyncio.as_completed() to use a Queue, to
  avoid O(N**2) behavior.

- Issue #20704: Implement new debug API in asyncio. Add new methods
  BaseEventLoop.set_debug() and BaseEventLoop.get_debug().
  Add support for setting 'asyncio.tasks._DEBUG' variable with
  'PYTHONASYNCIODEBUG' environment variable.

- asyncio: Refactoring and fixes: BaseEventLoop.sock_connect() raises an
  error if the address is not resolved; use __slots__ in Handle and
  TimerHandle; as_completed() and wait() raise TypeError if the passed
  list of Futures is a single Future; call_soon() and other 'call_*()'
  functions raise TypeError if the passed callback is a coroutine
  function; _ProactorBasePipeTransport uses _FlowControlMixin;
  WriteTransport.set_write_buffer_size() calls _maybe_pause_protocol()
  to consider pausing receiving if the watermark limits have changed;
  fix _check_resolved_address() for IPv6 address; and other minor
  improvements, along with multiple documentation updates.

- Issue #20684: Fix inspect.getfullargspec() to not to follow __wrapped__
  chains. Make its behaviour consistent with bound methods first argument.
  Patch by Nick Coghlan and Yury Selivanov.

- Issue #20681: Add new error handling API in asyncio. New APIs:
  loop.set_exception_handler(), loop.default_exception_handler(), and
  loop.call_exception_handler().

- Issue #20673: Implement support for UNIX Domain Sockets in asyncio.
  New APIs: loop.create_unix_connection(), loop.create_unix_server(),
  streams.open_unix_connection(), and streams.start_unix_server().

- Issue #20616: Add a format() method to tracemalloc.Traceback.

- Issue #19744: the ensurepip installation step now just prints a warning to
  stderr rather than failing outright if SSL/TLS is unavailable. This allows
  local installation of POSIX builds without SSL/TLS support.

- Issue #20594: Avoid name clash with the libc function posix_close.

Build
-----

- Issue #20641: Run MSI custom actions (pip installation, pyc compilation)
  with the NoImpersonate flag, to support elevated execution (UAC).

- Issue #20221: Removed conflicting (or circular) hypot definition when
  compiled with VS 2010 or above.  Initial patch by Tabrez Mohammed.

- Issue #20609: Restored the ability to build 64-bit Windows binaries on
  32-bit Windows, which was broken by the change in issue #19788.


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

Release date: 2014-02-10

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

- Issue #19255: The builtins module is restored to initial value before
  cleaning other modules.  The sys and builtins modules are cleaned last.

- Issue #20588: Make Python-ast.c C89 compliant.

- Issue #20437: Fixed 22 potential bugs when deleting objects references.

- Issue #20500: Displaying an exception at interpreter shutdown no longer
  risks triggering an assertion failure in PyObject_Str.

- Issue #20538: UTF-7 incremental decoder produced inconsistent string when
  input was truncated in BASE64 section.

- Issue #20404: io.TextIOWrapper (and hence the open() builtin) now uses the
  internal codec marking system added for issue #19619 to throw LookupError
  for known non-text encodings at stream construction time. The existing
  output type checks remain in place to deal with unmarked third party
  codecs.

- Issue #17162: Add PyType_GetSlot.

- Issue #20162: Fix an alignment issue in the siphash24() hash function which
  caused a crash on PowerPC 64-bit (ppc64).

Library
-------

- Issue #20530: The signatures for slot builtins have been updated
  to reflect the fact that they only accept positional-only arguments.

- Issue #20517: Functions in the os module that accept two filenames
  now register both filenames in the exception on failure.

- Issue #20563: The ipaddress module API is now considered stable.

- Issue #14983: email.generator now always adds a line end after each MIME
  boundary marker, instead of doing so only when there is an epilogue.  This
  fixes an RFC compliance bug and solves an issue with signed MIME parts.

- Issue #20540: Fix a performance regression (vs. Python 3.2) when layering
  a multiprocessing Connection over a TCP socket.  For small payloads, Nagle's
  algorithm would introduce idle delays before the entire transmission of a
  message.

- Issue #16983: the new email header parsing code will now decode encoded words
  that are (incorrectly) surrounded by quotes, and register a defect.

- Issue #19772: email.generator no longer mutates the message object when
  doing a down-transform from 8bit to 7bit CTEs.

- Issue #20536: the statistics module now correctly handle Decimal instances
  with positive exponents

- Issue #18805: the netmask/hostmask parsing in ipaddress now more reliably
  filters out illegal values and correctly allows any valid prefix length.

- Issue #20481: For at least Python 3.4, the statistics module will require
  that all inputs for a single operation be of a single consistent type, or
  else a mixed of ints and a single other consistent type. This avoids
  some interoperability issues that arose with the previous approach of
  coercing to a suitable common type.

- Issue #20478: the statistics module now treats collections.Counter inputs
  like any other iterable.

- Issue #17369: get_filename was raising an exception if the filename
  parameter's RFC2231 encoding was broken in certain ways.  This was
  a regression relative to python2.

- Issue #20013: Some imap servers disconnect if the current mailbox is
  deleted, and imaplib did not handle that case gracefully.  Now it
  handles the 'bye' correctly.

- Issue #20531: Revert 3.4 version of fix for #19063, and apply the 3.3
  version.  That is, do *not* raise an error if unicode is passed to
  email.message.Message.set_payload.

- Issue #20476: If a non-compat32 policy is used with any of the email parsers,
  EmailMessage is now used as the factory class.  The factory class should
  really come from the policy; that will get fixed in 3.5.

- Issue #19920: TarFile.list() no longer fails when outputs a listing
  containing non-encodable characters.  Based on patch by Vajrasky Kok.

- Issue #20515: Fix NULL pointer dereference introduced by issue #20368.

- Issue #19186: Restore namespacing of expat symbols inside the pyexpat module.

- Issue #20053: ensurepip (and hence venv) are no longer affected by the
  settings in the default pip configuration file.

- Issue #20426: When passing the re.DEBUG flag, re.compile() displays the
  debug output every time it is called, regardless of the compilation cache.

- Issue #20368: The null character now correctly passed from Tcl to Python.
  Improved error handling in variables-related commands.

- Issue #20435: Fix _pyio.StringIO.getvalue() to take into account newline
  translation settings.

- tracemalloc: Fix slicing traces and fix slicing a traceback.

- Issue #20354: Fix an alignment issue in the tracemalloc module on 64-bit
  platforms. Bug seen on 64-bit Linux when using "make profile-opt".

- Issue #17159: inspect.signature now accepts duck types of functions,
  which adds support for Cython functions. Initial patch by Stefan Behnel.

- Issue #18801: Fix inspect.classify_class_attrs to correctly classify
  object.__new__ and object.__init__.

- Fixed cmath.isinf's name in its argument parsing code.

- Issue #20311, #20452: poll and epoll now round the timeout away from zero,
  instead of rounding towards zero, in select and selectors modules:
  select.epoll.poll(), selectors.PollSelector.poll() and
  selectors.EpollSelector.poll(). For example, a timeout of one microsecond
  (1e-6) is now rounded to one millisecondi (1e-3), instead of being rounded to
  zero.  However, the granularity property and asyncio's resolution feature
  were removed again.

- asyncio: Some refactoring; various fixes; add write flow control to
  unix pipes; Future.set_exception() instantiates the exception
  argument if it is a class; improved proactor pipe transport; support
  wait_for(f, None); don't log broken/disconnected pipes; use
  ValueError instead of assert for forbidden subprocess_{shell,exec}
  arguments; added a convenience API for subprocess management; added
  StreamReader.at_eof(); properly handle duplicate coroutines/futures
  in gather(), wait(), as_completed(); use a bytearray for buffering
  in StreamReader; and more.

- Issue #20288: fix handling of invalid numeric charrefs in HTMLParser.

- Issue #20424: Python implementation of io.StringIO now supports lone surrogates.

- Issue #20308: inspect.signature now works on classes without user-defined
  __init__ or __new__ methods.

- Issue #20372: inspect.getfile (and a bunch of other inspect functions that
  use it) doesn't crash with unexpected AttributeError on classes defined in C
  without __module__.

- Issue #20356: inspect.signature formatting uses '/' to separate
  positional-only parameters from others.

- Issue #20223: inspect.signature now supports methods defined with
  functools.partialmethods.

- Issue #19456: ntpath.join() now joins relative paths correctly when a drive
  is present.

- Issue #19077: tempfile.TemporaryDirectory cleanup no longer fails when
  called during shutdown.  Emitting resource warning in __del__ no longer fails.
  Original patch by Antoine Pitrou.

- Issue #20394: Silence Coverity warning in audioop module.

- Issue #20367: Fix behavior of concurrent.futures.as_completed() for
  duplicate arguments.  Patch by Glenn Langford.

- Issue #8260: The read(), readline() and readlines() methods of
  codecs.StreamReader returned incomplete data when were called after
  readline() or read(size).  Based on patch by Amaury Forgeot d'Arc.

- Issue #20105: the codec exception chaining now correctly sets the
  traceback of the original exception as its __traceback__ attribute.

- Issue #17481: inspect.getfullargspec() now uses inspect.signature() API.

- Issue #15304: concurrent.futures.wait() can block forever even if
  Futures have completed. Patch by Glenn Langford.

- Issue #14455: plistlib: fix serializing integers in the range
  of an unsigned long long but outside of the range of signed long long for
  binary plist files.

IDLE
----

- Issue #20406: Use Python application icons for Idle window title bars.
  Patch mostly by Serhiy Storchaka.

- Update the python.gif icon for the Idle classbrowser and pathbowser
  from the old green snake to the new blue and yellow snakes.

- Issue #17721: Remove non-functional configuration dialog help button until we
  make it actually gives some help when clicked. Patch by Guilherme Simões.

Tests
-----

- Issue #20532: Tests which use _testcapi now are marked as CPython only.

- Issue #19920: Added tests for TarFile.list().  Based on patch by Vajrasky Kok.

- Issue #19990: Added tests for the imghdr module.  Based on patch by
  Claudiu Popa.

- Issue #20474: Fix test_socket "unexpected success" failures on OS X 10.7+.

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

- Issue #20530: Argument Clinic's signature format has been revised again.
  The new syntax is highly human readable while still preventing false
  positives.  The syntax also extends Python syntax to denote "self" and
  positional-only parameters, allowing inspect.Signature objects to be
  totally accurate for all supported builtins in Python 3.4.

- Issue #20456: Argument Clinic now observes the C preprocessor conditional
  compilation statements of the C files it parses.  When a Clinic block is
  inside a conditional code, it adjusts its output to match, including
  automatically generating an empty methoddef macro.

- Issue #20456: Cloned functions in Argument Clinic now use the correct
  name, not the name of the function they were cloned from, for text
  strings inside generated code.

- Issue #20456: Fixed Argument Clinic's test suite and "--converters" feature.

- Issue #20456: Argument Clinic now allows specifying different names
  for a parameter in Python and C, using "as" on the parameter line.

- Issue #20326: Argument Clinic now uses a simple, unique signature to
  annotate text signatures in docstrings, resulting in fewer false
  positives.  "self" parameters are also explicitly marked, allowing
  inspect.Signature() to authoritatively detect (and skip) said parameters.

- Issue #20326: Argument Clinic now generates separate checksums for the
  input and output sections of the block, allowing external tools to verify
  that the input has not changed (and thus the output is not out-of-date).

Build
-----

- Issue #20465: Update SQLite shipped with OS X installer to 3.8.3.

C-API
-----

- Issue #20517: Added new functions allowing OSError exceptions to reference
  two filenames instead of one: PyErr_SetFromErrnoWithFilenameObjects() and
  PyErr_SetExcFromWindowsErrWithFilenameObjects().

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

- Issue #20488: Change wording to say importlib is *the* implementation of
  import instead of just *an* implementation.

- Issue #6386: Clarify in the tutorial that specifying a symlink to execute
  means the directory containing the executed script and not the symlink is
  added to sys.path.


What's New in Python 3.4.0 Beta 3?
==================================

Release date: 2014-01-26

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

- Issue #20189: Four additional builtin types (PyTypeObject,
  PyMethodDescr_Type, _PyMethodWrapper_Type, and PyWrapperDescr_Type)
  have been modified to provide introspection information for builtins.

- Issue #17825: Cursor "^" is correctly positioned for SyntaxError and
  IndentationError.

- Issue #2382: SyntaxError cursor "^" is now written at correct position in most
  cases when multibyte characters are in line (before "^").  This still not
  works correctly with wide East Asian characters.

- Issue #18960: The first line of Python script could be executed twice when
  the source encoding was specified on the second line.  Now the source encoding
  declaration on the second line isn't effective if the first line contains
  anything except a comment.  'python -x' works now again with files with the
  source encoding declarations, and can be used to make Python batch files
  on Windows.

Library
-------

- asyncio: Various improvements and small changes not all covered by
  issues listed below.  E.g. wait_for() now cancels the inner task if
  the timeout occcurs; tweaked the set of exported symbols; renamed
  Empty/Full to QueueEmpty/QueueFull; "with (yield from lock)" now
  uses a separate context manager; readexactly() raises if not enough
  data was read; PTY support tweaks.

- Issue #20311: asyncio: Add a granularity attribute to BaseEventLoop: maximum
  between the resolution of the BaseEventLoop.time() method and the resolution
  of the selector. The granuarility is used in the scheduler to round time and
  deadline.

- Issue #20311: selectors: Add a resolution attribute to BaseSelector.

- Issue #20189: unittest.mock now no longer assumes that any object for
  which it could get an inspect.Signature is a callable written in Python.
  Fix courtesy of Michael Foord.

- Issue #20317: ExitStack.__exit__ could create a self-referential loop if an
  exception raised by a cleanup operation already had its context set
  correctly (for example, by the @contextmanager decorator). The infinite
  loop this caused is now avoided by checking if the expected context is
  already set before trying to fix it.

- Issue #20374: Fix build with GNU readline >= 6.3.

- Issue #20262: Warnings are raised now when duplicate names are added in the
  ZIP file or too long ZIP file comment is truncated.

- Issue #20165: The unittest module no longer considers tests marked with
  @expectedFailure successful if they pass.

- Issue #18574: Added missing newline in 100-Continue reply from
  http.server.BaseHTTPRequestHandler. Patch by Nikolaus Rath.

- Issue #20270: urllib.urlparse now supports empty ports.

- Issue #20243: TarFile no longer raise ReadError when opened in write mode.

- Issue #20238: TarFile opened with external fileobj and "w:gz" mode didn't
  write complete output on close.

- Issue #20245: The open functions in the tarfile module now correctly handle
  empty mode.

- Issue #20242: Fixed basicConfig() format strings for the alternative
  formatting styles. Thanks to kespindler for the bug report and patch.

- Issue #20246: Fix buffer overflow in socket.recvfrom_into.

- Issues #20206 and #5803: Fix edge case in email.quoprimime.encode where it
  truncated lines ending in a character needing encoding but no newline by
  using a more efficient algorithm that doesn't have the bug.

- Issue #19082: Working xmlrpc.server and xmlrpc.client examples. Both in
  modules and in documentation. Initial patch contributed by Vajrasky Kok.

- Issue #20138: The wsgiref.application_uri() and wsgiref.request_uri()
  functions now conform to PEP 3333 when handle non-ASCII URLs.

- Issue #19097: Raise the correct Exception when cgi.FieldStorage is given an
  invalid fileobj.

- Issue #20152: Ported Python/import.c over to Argument Clinic.

- Issue #13107: argparse and optparse no longer raises an exception when output
  a help on environment with too small COLUMNS.  Based on patch by
  Elazar Gershuni.

- Issue #20207: Always disable SSLv2 except when PROTOCOL_SSLv2 is explicitly
  asked for.

- Issue #18960: The tokenize module now ignore the source encoding declaration
  on the second line if the first line contains anything except a comment.

- Issue #20078: Reading malformed zipfiles no longer hangs with 100% CPU
  consumption.

- Issue #20113: os.readv() and os.writev() now raise an OSError exception on
  error instead of returning -1.

- Issue #19719: Make importlib.abc.MetaPathFinder.find_module(),
  PathEntryFinder.find_loader(), and Loader.load_module() use PEP 451 APIs to
  help with backwards-compatibility.

- Issue #20144: inspect.Signature now supports parsing simple symbolic
  constants as parameter default values in __text_signature__.

- Issue #20072: Fixed multiple errors in tkinter with wantobjects is False.

- Issue #20229: Avoid plistlib deprecation warning in platform.mac_ver().

- Issue #14455: Fix some problems with the new binary plist support in plistlib.

IDLE
----

- Issue #17390: Add Python version to Idle editor window title bar.
  Original patches by Edmond Burnett and Kent Johnson.

- Issue #18960: IDLE now ignores the source encoding declaration on the second
  line if the first line contains anything except a comment.

Tests
-----

- Issue #20358: Tests for curses.window.overlay and curses.window.overwrite
  no longer specify min{row,col} > max{row,col}.

- Issue #19804: The test_find_mac test in test_uuid is now skipped if the
  ifconfig executable is not available.

- Issue #19886: Use better estimated memory requirements for bigmem tests.

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

- Issue #20390: Argument Clinic's "file" output preset now defaults to
  "{dirname}/clinic/{basename}.h".

- Issue #20390: Argument Clinic's "class" directive syntax has been extended
  with two new required arguments: "typedef" and "type_object".

- Issue #20390: Argument Clinic: If __new__ or __init__ functions didn't use
  kwargs (or args), the PyArg_NoKeywords (or PyArg_NoPositional) calls
  generated are only run when the type object is an exact match.

- Issue #20390: Argument Clinic now fails if you have required parameters after
  optional parameters.

- Issue #20390: Argument Clinic converters now have a new template they can
  inject code into: "modifiers".  Code put there is run in the parsing
  function after argument parsing but before the call to the impl.

- Issue #20376: Argument Clinic now escapes backslashes in docstrings.

- Issue #20381: Argument Clinic now sanity checks the default argument when
  c_default is also specified, providing a nice failure message for
  disallowed values.

- Issue #20189: Argument Clinic now ensures that parser functions for
  __new__ are always of type newfunc, the type of the tp_new slot.
  Similarly, parser functions for __init__ are now always of type initproc,
  the type of tp_init.

- Issue #20189: Argument Clinic now suppresses the docstring for __new__
  and __init__ functions if no docstring is provided in the input.

- Issue #20189: Argument Clinic now suppresses the "self" parameter in the
  impl for @staticmethod functions.

- Issue #20294: Argument Clinic now supports argument parsing for __new__ and
  __init__ functions.

- Issue #20299: Argument Clinic custom converters may now change the default
  value of c_default and py_default with a class member.

- Issue #20287: Argument Clinic's output is now configurable, allowing
  delaying its output or even redirecting it to a separate file.

- Issue #20226: Argument Clinic now permits simple expressions
  (e.g. "sys.maxsize - 1") as default values for parameters.

- Issue #19936: Added executable bits or shebang lines to Python scripts which
  requires them.  Disable executable bits and shebang lines in test and
  benchmark files in order to prevent using a random system python, and in
  source files of modules which don't provide command line interface.  Fixed
  shebang lines in the unittestgui and checkpip scripts.

- Issue #20268: Argument Clinic now supports cloning the parameters and
  return converter of existing functions.

- Issue #20228: Argument Clinic now has special support for class special
  methods.

- Issue #20214: Fixed a number of small issues and documentation errors in
  Argument Clinic (see issue for details).

- Issue #20196: Fixed a bug where Argument Clinic did not generate correct
  parsing code for functions with positional-only parameters where all arguments
  are optional.

- Issue #18960: 2to3 and the findnocoding.py script now ignore the source
  encoding declaration on the second line if the first line contains anything
  except a comment.

- Issue #19723: The marker comments Argument Clinic uses have been changed
  to improve readability.

- Issue #20157: When Argument Clinic renames a parameter because its name
  collides with a C keyword, it no longer exposes that rename to PyArg_Parse.

- Issue #20141: Improved Argument Clinic's support for the PyArg_Parse "O!"
  format unit.

- Issue #20144: Argument Clinic now supports simple symbolic constants
  as parameter default values.

- Issue #20143: The line numbers reported in Argument Clinic errors are
  now more accurate.

- Issue #20142: Py_buffer variables generated by Argument Clinic are now
  initialized with a default value.

Build
-----

- Issue #12837: Silence a tautological comparison warning on OS X under Clang in
  socketmodule.c.


What's New in Python 3.4.0 Beta 2?
==================================

Release date: 2014-01-05

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

- Issue #17432: Drop UCS2 from names of Unicode functions in python3.def.

- Issue #19526: Exclude all new API from the stable ABI. Exceptions can be
  made if a need is demonstrated.

- Issue #19969: PyBytes_FromFormatV() now raises an OverflowError if "%c"
  argument is not in range [0; 255].

- Issue #19995: %c, %o, %x, and %X now issue a DeprecationWarning on non-integer
  input; reworded docs to clarify that an integer type should define both __int__
  and __index__.

- Issue #19787: PyThread_set_key_value() now always set the value. In Python
  3.3, the function did nothing if the key already exists (if the current value
  is a non-NULL pointer).

- Issue #14432: Remove the thread state field from the frame structure. Fix a
  crash when a generator is created in a C thread that is destroyed while the
  generator is still used. The issue was that a generator contains a frame, and
  the frame kept a reference to the Python state of the destroyed C thread. The
  crash occurs when a trace function is setup.

- Issue #19576: PyGILState_Ensure() now initializes threads. At startup, Python
  has no concrete GIL. If PyGILState_Ensure() is called from a new thread for
  the first time and PyEval_InitThreads() was not called yet, a GIL needs to be
  created.

- Issue #17576: Deprecation warning emitted now when __int__() or __index__()
  return not int instance.

- Issue #19932: Fix typo in import.h, missing whitespaces in function prototypes.

- Issue #19736: Add module-level statvfs constants defined for GNU/glibc
  based systems.

- Issue #20097: Fix bad use of "self" in importlib's WindowsRegistryFinder.

- Issue #19729: In str.format(), fix recursive expansion in format spec.

- Issue #19638: Fix possible crash / undefined behaviour from huge (more than 2
  billion characters) input strings in _Py_dg_strtod.

Library
-------

- Issue #20154: Deadlock in asyncio.StreamReader.readexactly().

- Issue #16113: Remove sha3 module again.

- Issue #20111: pathlib.Path.with_suffix() now sanity checks the given suffix.

- Fix breakage in TestSuite.countTestCases() introduced by issue #11798.

- Issue #20108: Avoid parameter name clash in inspect.getcallargs().

- Issue #19918: Fix PurePath.relative_to() under Windows.

- Issue #19422: Explicitly disallow non-SOCK_STREAM sockets in the ssl
  module, rather than silently let them emit clear text data.

- Issue #20046: Locale alias table no longer contains entities which can be
  calculated.  Generalized support of the euro modifier.

- Issue #20027: Fixed locale aliases for devanagari locales.

- Issue #20067: Tkinter variables now work when wantobjects is false.

- Issue #19020: Tkinter now uses splitlist() instead of split() in configure
  methods.

- Issue #19744: ensurepip now provides a better error message when Python is
  built without SSL/TLS support (pip currently requires that support to run,
  even if only operating with local wheel files)

- Issue #19734: ensurepip now ignores all pip environment variables to avoid
  odd behaviour based on user configuration settings

- Fix TypeError on "setup.py upload --show-response".

- Issue #20045: Fix "setup.py register --list-classifiers".

- Issue #18879: When a method is looked up on a temporary file, avoid closing
  the file before the method is possibly called.

- Issue #20037: Avoid crashes when opening a text file late at interpreter
  shutdown.

- Issue #19967: Thanks to the PEP 442, asyncio.Future now uses a
  destructor to log uncaught exceptions, instead of the dedicated
  _TracebackLogger class.

- Added a Task.current_task() class method to asyncio.

- Issue #19850: Set SA_RESTART in asyncio when registering a signal
  handler to limit EINTR occurrences.

- Implemented write flow control in asyncio for proactor event loop (Windows).

- Change write buffer in asyncio use to avoid O(N**2) behavior.  Make
  write()/sendto() accept bytearray/memoryview.

- Issue #20034: Updated alias mapping to most recent locale.alias file
  from X.org distribution using makelocalealias.py.

- Issue #5815: Fixed support for locales with modifiers.  Fixed support for
  locale encodings with hyphens.

- Issue #20026: Fix the sqlite module to handle correctly invalid isolation
  level (wrong type).

- Issue #18829: csv.Dialect() now checks type for delimiter, escapechar and
  quotechar fields.  Original patch by Vajrasky Kok.

- Issue #19855: uuid.getnode() on Unix now looks on the PATH for the
  executables used to find the mac address, with /sbin and /usr/sbin as
  fallbacks.

- Issue #20007: HTTPResponse.read(0) no more prematurely closes connection.
  Original patch by Simon Sapin.

- Issue #19946: multiprocessing now uses runpy to initialize __main__ in
  child processes when necessary, allowing it to correctly handle scripts
  without suffixes and submodules that use explicit relative imports or
  otherwise rely on parent modules being correctly imported prior to
  execution.

- Issue #19921: When Path.mkdir() is called with parents=True, any missing
  parent is created with the default permissions, ignoring the mode argument
  (mimicking the POSIX "mkdir -p" command).

- Issue #19887: Improve the Path.resolve() algorithm to support certain
  symlink chains.

- Issue #19912: Fixed numerous bugs in ntpath.splitunc().

- Issue #19911: ntpath.splitdrive() now correctly processes the 'İ' character
  (U+0130, LATIN CAPITAL LETTER I WITH DOT ABOVE).

- Issue #19532: python -m compileall with no filename/directory arguments now
  respects the -f and -q flags instead of ignoring them.

- Issue #19623: Fixed writing to unseekable files in the aifc module.

- Issue #19946: multiprocessing.spawn now raises ImportError when the module to
  be used as the main module cannot be imported.

- Issue #17919: select.poll.register() again works with poll.POLLNVAL on AIX.
  Fixed integer overflow in the eventmask parameter.

- Issue #19063: if a Charset's body_encoding was set to None, the email
  package would generate a message claiming the Content-Transfer-Encoding
  was 7bit, and produce garbage output for the content.  This now works.
  A couple of other set_payload mishandlings of non-ASCII are also fixed.
  In addition, calling set_payload with a string argument without
  specifying a charset now raises an error (this is a new error in 3.4).

- Issue #15475: Add __sizeof__ implementations for itertools objects.

- Issue #19944: Fix importlib.find_spec() so it imports parents as needed
  and move the function to importlib.util.

- Issue #19880: Fix a reference leak in unittest.TestCase. Explicitly break
  reference cycles between frames and the _Outcome instance.

- Issue #17429: platform.linux_distribution() now decodes files from the UTF-8
  encoding with the surrogateescape error handler, instead of decoding from the
  locale encoding in strict mode. It fixes the function on Fedora 19 which is
  probably the first major distribution release with a non-ASCII name. Patch
  written by Toshio Kuratomi.

- Issue #19343: Expose FreeBSD-specific APIs in resource module.  Original
  patch by Koobs.

- Issue #19929: Call os.read with 32768 within subprocess.Popen.communicate
  rather than 4096 for efficiency.  A microbenchmark shows Linux and OS X
  both using ~50% less cpu time this way.

- Issue #19506: Use a memoryview to avoid a data copy when piping data
  to stdin within subprocess.Popen.communicate.  5-10% less cpu usage.

- Issue #19876: selectors unregister() no longer raises ValueError or OSError
  if the FD is closed (as long as it was registered).

- Issue #19908: pathlib now joins relative Windows paths correctly when a drive
  is present.  Original patch by Antoine Pitrou.

- Issue #19296: Silence compiler warning in dbm_open

- Issue #6784: Strings from Python 2 can now be unpickled as bytes
  objects by setting the encoding argument of Unpickler to be 'bytes'.
  Initial patch by Merlijn van Deen.

- Issue #19839: Fix regression in bz2 module's handling of non-bzip2 data at
  EOF, and analogous bug in lzma module.

- Issue #19881: Fix pickling bug where cpickle would emit bad pickle data for
  large bytes string (i.e., with size greater than 2**32-1).

- Issue #19138: doctest's IGNORE_EXCEPTION_DETAIL now allows a match when
  no exception detail exists (no colon following the exception's name, or
  a colon does follow but no text follows the colon).

- Issue #19927: Add __eq__ to path-based loaders in importlib.

- Issue #19827: On UNIX, setblocking() and settimeout() methods of
  socket.socket can now avoid a second syscall if the ioctl() function can be
  used, or if the non-blocking flag of the socket is unchanged.

- Issue #19785: smtplib now supports SSLContext.check_hostname and server name
  indication for TLS/SSL connections.

- Issue #19784: poplib now supports SSLContext.check_hostname and server name
  indication for TLS/SSL connections.

- Issue #19783: nntplib now supports SSLContext.check_hostname and server name
  indication for TLS/SSL connections.

- Issue #19782: imaplib now supports SSLContext.check_hostname and server name
  indication for TLS/SSL connections.

- Issue #20123: Fix pydoc.synopsis() for "binary" modules.

- Issue #19834: Support unpickling of exceptions pickled by Python 2.

- Issue #19781: ftplib now supports SSLContext.check_hostname and server name
  indication for TLS/SSL connections.

- Issue #19509: Add SSLContext.check_hostname to match the peer's certificate
  with server_hostname on handshake.

- Issue #15798: Fixed subprocess.Popen() to no longer fail if file
  descriptor 0, 1 or 2 is closed.

- Issue #17897: Optimized unpickle prefetching.

- Issue #3693: Make the error message more helpful when the array.array()
  constructor is given a str. Move the array module typecode documentation to
  the docstring of the constructor.

- Issue #19088: Fixed incorrect caching of the copyreg module in
  object.__reduce__() and object.__reduce_ex__().

- Issue #19698: Removed exec_module() methods from
  importlib.machinery.BuiltinImporter and ExtensionFileLoader.

- Issue #18864: Added a setter for ModuleSpec.has_location.

- Fixed _pickle.Unpickler to not fail when loading empty strings as
  persistent IDs.

- Issue #11480: Fixed copy.copy to work with classes with custom metaclasses.
  Patch by Daniel Urban.

- Issue #6477: Added support for pickling the types of built-in singletons
  (i.e., Ellipsis, NotImplemented, None).

- Issue #19713: Add remaining PEP 451-related deprecations and move away
  from using find_module/find_loaer/load_module.

- Issue #19708: Update pkgutil to use the new importer APIs.

- Issue #19703: Update pydoc to use the new importer APIs.

- Issue #19851: Fixed a regression in reloading sub-modules.

- ssl.create_default_context() sets OP_NO_COMPRESSION to prevent CRIME.

- Issue #19802: Add socket.SO_PRIORITY.

- Issue #11508: Fixed uuid.getnode() and uuid.uuid1() on environment with
  virtual interface.  Original patch by Kent Frazier.

- Issue #11489: JSON decoder now accepts lone surrogates.

- Issue #19545: Avoid chained exceptions while passing stray % to
  time.strptime().  Initial patch by Claudiu Popa.

IDLE
----

- Issue #20058: sys.stdin.readline() in IDLE now always returns only one line.

- Issue #19481: print() of string subclass instance in IDLE no longer hangs.

- Issue #18270: Prevent possible IDLE AttributeError on OS X when no initial
  shell window is present.

Tests
-----

- Issue #20055: Fix test_shutil under Windows with symlink privileges held.
  Patch by Vajrasky Kok.

- Issue #20070: Don't run test_urllib2net when network resources are not
  enabled.

- Issue #19938: Re-enabled test_bug_1333982 in test_dis, which had been
  disabled since 3.0 due to the changes in listcomp handling.

- Issue #19320: test_tcl no longer fails when wantobjects is false.

- Issue #19919: Fix flaky SSL test. connect_ex() sometimes returns
  EWOULDBLOCK on Windows or VMs hosted on Windows.

- Issue #19912: Added tests for ntpath.splitunc().

- Issue #19828: Fixed test_site when the whole suite is run with -S.

- Issue #19928: Implemented a test for repr() of cell objects.

- Issue #19535: Fixed test_docxmlrpc, test_functools, test_inspect, and
  test_statistics when python is run with -OO.

- Issue #19926: Removed unneeded test_main from test_abstract_numbers.
  Patch by Vajrasky Kok.

- Issue #19572: More skipped tests explicitly marked as skipped.

- Issue #19595, #19987: Re-enabled a long-disabled test in test_winsound.

- Issue #19588: Fixed tests in test_random that were silently skipped most
  of the time.  Patch by Julian Gindi.

Build
-----

- Issue #19728: Enable pip installation by default on Windows.

- Issue #16136: Remove VMS support

- Issue #18215: Add script Tools/ssl/test_multiple_versions.py to compile and
  run Python's unit tests with multiple versions of OpenSSL.

- Issue #19922: define _INCLUDE__STDC_A1_SOURCE in HP-UX to include mbstate_t
  for mbrtowc().

- Issue #19788: kill_python(_d).exe is now run as a PreBuildEvent on the
  pythoncore sub-project.  This should prevent build errors due a previous
  build's python(_d).exe still running.

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

- Issue #20265: Updated some parts of the Using Windows document.

- Issue #20266: Updated some parts of the Windows FAQ.

- Issue #20255: Updated the about and bugs pages.

- Issue #20253: Fixed a typo in the ipaddress docs that advertised an
  illegal attribute name.  Found by INADA Naoki.

- Issue #18840: Introduce the json module in the tutorial, and de-emphasize
  the pickle module.

- Issue #19845: Updated the Compiling Python on Windows section.

- Issue #19795: Improved markup of True/False constants.

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

- Issue #19659: Added documentation for Argument Clinic.

- Issue #19976: Argument Clinic METH_NOARGS functions now always
  take two parameters.


What's New in Python 3.4.0 Beta 1?
==================================

Release date: 2013-11-24

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

- Use the repr of a module name in more places in import, especially
  exceptions.

- Issue #19619: str.encode, bytes.decode and bytearray.decode now use an
  internal API to throw LookupError for known non-text encodings, rather
  than attempting the encoding or decoding operation and then throwing a
  TypeError for an unexpected output type. (The latter mechanism remains
  in place for third party non-text encodings)

- Issue #19183: Implement PEP 456 'secure and interchangeable hash algorithm'.
  Python now uses SipHash24 on all major platforms.

- Issue #12892: The utf-16* and utf-32* encoders no longer allow surrogate code
  points (U+D800-U+DFFF) to be encoded.  The utf-32* decoders no longer decode
  byte sequences that correspond to surrogate code points.  The surrogatepass
  error handler now works with the utf-16* and utf-32* codecs.  Based on
  patches by Victor Stinner and Kang-Hao (Kenny) Lu.

- Issue #17806: Added keyword-argument support for "tabsize" to
  str/bytes.expandtabs().

- Issue #17828: Output type errors in str.encode(), bytes.decode() and
  bytearray.decode() now direct users to codecs.encode() or codecs.decode()
  as appropriate.

- Issue #17828: The interpreter now attempts to chain errors that occur in
  codec processing with a replacement exception of the same type that
  includes the codec name in the error message. It ensures it only does this
  when the creation of the replacement exception won't lose any information.

- Issue #19466: Clear the frames of daemon threads earlier during the
  Python shutdown to call objects destructors. So "unclosed file" resource
  warnings are now corretly emitted for daemon threads.

- Issue #19514: Deduplicate some _Py_IDENTIFIER declarations.
  Patch by Andrei Dorian Duma.

- Issue #17936: Fix O(n**2) behaviour when adding or removing many subclasses
  of a given type.

- Issue #19428: zipimport now handles errors when reading truncated or invalid
  ZIP archive.

- Issue #18408: Add a new PyFrame_FastToLocalsWithError() function to handle
  exceptions when merging fast locals into f_locals of a frame.
  PyEval_GetLocals() now raises an exception and return NULL on failure.

- Issue #19369: Optimized the usage of __length_hint__().

- Issue #18603: Ensure that PyOS_mystricmp and PyOS_mystrnicmp are in the
  Python executable and not removed by the linker's optimizer.

- Issue #19306: Add extra hints to the faulthandler module's stack
  dumps that these are "upside down".

Library
-------

- Issue #3158: doctest can now find doctests in functions and methods
  written in C.

- Issue #13477: Added command line interface to the tarfile module.
  Original patch by Berker Peksag.

- Issue #19674: inspect.signature() now produces a correct signature
  for some builtins.

- Issue #19722: Added opcode.stack_effect(), which
  computes the stack effect of bytecode instructions.

- Issue #19735: Implement private function ssl._create_stdlib_context() to
  create SSLContext objects in Python's stdlib module. It provides a single
  configuration point and makes use of SSLContext.load_default_certs().

- Issue #16203: Add re.fullmatch() function and regex.fullmatch() method,
  which anchor the pattern at both ends of the string to match.
  Original patch by Matthew Barnett.

- Issue #13592: Improved the repr for regular expression pattern objects.
  Based on patch by Hugo Lopes Tavares.

- Issue #19641: Added the audioop.byteswap() function to convert big-endian
  samples to little-endian and vice versa.

- Issue #15204: Deprecated the 'U' mode in file-like objects.

- Issue #17810: Implement PEP 3154, pickle protocol 4.

- Issue #19668: Added support for the cp1125 encoding.

- Issue #19689: Add ssl.create_default_context() factory function. It creates
  a new SSLContext object with secure default settings.

- Issue #19727: os.utime(..., None) is now potentially more precise
  under Windows.

- Issue #17201: ZIP64 extensions now are enabled by default.  Patch by
  William Mallard.

- Issue #19292: Add SSLContext.load_default_certs() to load default root CA
  certificates from default stores or system stores. By default the method
  loads CA certs for authentication of server certs.

- Issue #19673: Add pathlib to the stdlib as a provisional module (PEP 428).

- Issue #16596: pdb in a generator now properly skips over yield and
  yield from rather than stepping out of the generator into its
  caller.  (This is essential for stepping through asyncio coroutines.)

- Issue #17916: Added dis.Bytecode.from_traceback() and
  dis.Bytecode.current_offset to easily display "current instruction"
  markers in the new disassembly API (Patch by Claudiu Popa).

- Issue #19552: venv now supports bootstrapping pip into virtual environments

- Issue #17134: Finalize interface to Windows' certificate store. Cert and
  CRL enumeration are now two functions. enum_certificates() also returns
  purpose flags as set of OIDs.

- Issue #19555: Restore sysconfig.get_config_var('SO'), (and the distutils
  equivalent) with a DeprecationWarning pointing people at $EXT_SUFFIX.

- Issue #8813: Add SSLContext.verify_flags to change the verification flags
  of the context in order to enable certification revocation list (CRL)
  checks or strict X509 rules.

- Issue #18294: Fix the zlib module to make it 64-bit safe.

- Issue #19682: Fix compatibility issue with old version of OpenSSL that
  was introduced by Issue #18379.

- Issue #14455: plistlib now supports binary plists and has an updated API.

- Issue #19633: Fixed writing not compressed 16- and 32-bit wave files on
  big-endian platforms.

- Issue #18379: SSLSocket.getpeercert() returns CA issuer AIA fields, OCSP
  and CRL distribution points.

- Issue #18138: Implement cadata argument of SSLContext.load_verify_location()
  to load CA certificates and CRL from memory. It supports PEM and DER
  encoded strings.

- Issue #18775: Add name and block_size attribute to HMAC object. They now
  provide the same API elements as non-keyed cryptographic hash functions.

- Issue #17276: MD5 as default digestmod for HMAC is deprecated. The HMAC
  module supports digestmod names, e.g. hmac.HMAC('sha1').

- Issue #19449: in csv's writerow, handle non-string keys when generating the
  error message that certain keys are not in the 'fieldnames' list.

- Issue #13633: Added a new convert_charrefs keyword arg to HTMLParser that,
  when True, automatically converts all character references.

- Issue #2927: Added the unescape() function to the html module.

- Issue #8402: Added the escape() function to the glob module.

- Issue #17618: Add Base85 and Ascii85 encoding/decoding to the base64 module.

- Issue #19634: time.strftime("%y") now raises a ValueError on AIX when given a
  year before 1900.

- Fix test.support.bind_port() to not cause an error when Python was compiled
  on a system with SO_REUSEPORT defined in the headers but run on a system
  with an OS kernel that does not support that reasonably new socket option.

- Fix compilation error under gcc of the ctypes module bundled libffi for arm.

- Issue #19448: Add private API to SSL module to lookup ASN.1 objects by OID,
  NID, short name and long name.

- Issue #19282: dbm.open now supports the context management protocol.
  (Initial patch by Claudiu Popa)

- Issue #8311: Added support for writing any bytes-like objects in the aifc,
  sunau, and wave modules.

- Issue #5202: Added support for unseekable files in the wave module.

- Issue #19544 and Issue #1180: Restore global option to ignore
  ~/.pydistutils.cfg in Distutils, accidentally removed in backout of
  distutils2 changes.

- Issue #19523: Closed FileHandler leak which occurred when delay was set.

- Issue #19544 and Issue #6516: Restore support for --user and --group
  parameters to sdist command accidentally rolled back as part of the
  distutils2 rollback.

- Issue #13674: Prevented time.strftime from crashing on Windows when given
  a year before 1900 and a format of %y.

- Issue #19406: implementation of the ensurepip module (part of PEP 453).
  Patch by Donald Stufft and Nick Coghlan.

- Issue #19544 and Issue #6286: Restore use of urllib over http allowing use
  of http_proxy for Distutils upload command, a feature accidentally lost
  in the rollback of distutils2.

- Issue #19544 and Issue #7457: Restore the read_pkg_file method to
  distutils.dist.DistributionMetadata accidentally removed in the undo of
  distutils2.

- Issue #16685: Added support for any bytes-like objects in the audioop module.
  Removed support for strings.

- Issue #7171: Add Windows implementation of ``inet_ntop`` and ``inet_pton``
  to socket module. Patch by Atsuo Ishimoto.

- Issue #19261: Added support for writing 24-bit samples in the sunau module.

- Issue #1097797: Added CP273 encoding, used on IBM mainframes in
  Germany and Austria.  Mapping provided by Michael Bierenfeld.

- Issue #1575020: Fixed support of 24-bit wave files on big-endian platforms.

- Issue #19378: Fixed a number of cases in the dis module where the new
  "file" parameter was not being honoured correctly

- Issue #19378: Removed the "dis.Bytecode.show_info" method

- Issue #19378: Renamed the "dis.Bytecode.display_code" method to
  "dis.Bytecode.dis" and converted it to returning a string rather than
  printing output.

- Issue #19378: the "line_offset" parameter in the new "dis.get_instructions"
  API has been renamed to "first_line" (and the default value and usage
  changed accordingly). This should reduce confusion with the more common use
  of "offset" in the dis docs to refer to bytecode offsets.

- Issue #18678: Corrected spwd struct member names in spwd module:
  sp_nam->sp_namp, and sp_pwd->sp_pwdp.  The old names are kept as extra
  structseq members, for backward compatibility.

- Issue #6157: Fixed tkinter.Text.debug().  tkinter.Text.bbox() now raises
  TypeError instead of TclError on wrong number of arguments.  Original patch
  by Guilherme Polo.

- Issue #10197: Rework subprocess.get[status]output to use subprocess
  functionality and thus to work on Windows. Patch by Nick Coghlan

- Issue #6160: The bbox() method of tkinter.Spinbox now returns a tuple of
  integers instead of a string.  Based on patch by Guilherme Polo.

- Issue #19403: contextlib.redirect_stdout is now reentrant

- Issue #19286: Directories in ``package_data`` are no longer added to
  the filelist, preventing failure outlined in the ticket.

- Issue #19480: HTMLParser now accepts all valid start-tag names as defined
  by the HTML5 standard.

- Issue #15114: The html.parser module now raises a DeprecationWarning when the
  strict argument of HTMLParser or the HTMLParser.error method are used.

- Issue #19410: Undo the special-casing removal of '' for
  importlib.machinery.FileFinder.

- Issue #19424: Fix the warnings module to accept filename containing surrogate
  characters.

- Issue #19435: Fix directory traversal attack on CGIHttpRequestHandler.

- Issue #19227: Remove pthread_atfork() handler. The handler was added to
  solve #18747 but has caused issues.

- Issue #19420: Fix reference leak in module initialization code of
  _hashopenssl.c

- Issue #19329: Optimized compiling charsets in regular expressions.

- Issue #19227: Try to fix deadlocks caused by re-seeding then OpenSSL
  pseudo-random number generator on fork().

- Issue #16037: HTTPMessage.readheaders() raises an HTTPException when more than
  100 headers are read.  Adapted from patch by Jyrki Pulliainen.

- Issue #16040: CVE-2013-1752: nntplib: Limit maximum line lengths to 2048 to
  prevent readline() calls from consuming too much memory.  Patch by Jyrki
  Pulliainen.

- Issue #16041: CVE-2013-1752: poplib: Limit maximum line lengths to 2048 to
  prevent readline() calls from consuming too much memory.  Patch by Jyrki
  Pulliainen.

- Issue #17997: Change behavior of ``ssl.match_hostname()`` to follow RFC 6125,
  for security reasons.  It now doesn't match multiple wildcards nor wildcards
  inside IDN fragments.

- Issue #16039: CVE-2013-1752: Change use of readline in imaplib module to limit
  line length.  Patch by Emil Lind.

- Issue #19330: the unnecessary wrapper functions have been removed from the
  implementations of the new contextlib.redirect_stdout and
  contextlib.suppress context managers, which also ensures they provide
  reasonable help() output on instances

- Issue #19393: Fix symtable.symtable function to not be confused when there are
  functions or classes named "top".

- Issue #18685: Restore re performance to pre-PEP 393 levels.

- Issue #19339: telnetlib module is now using time.monotonic() when available
  to compute timeout.

- Issue #19399: fix sporadic test_subprocess failure.

- Issue #13234: Fix os.listdir to work with extended paths on Windows.
  Patch by Santoso Wijaya.

- Issue #19375: The site module adding a "site-python" directory to sys.path,
  if it exists, is now deprecated.

- Issue #19379: Lazily import linecache in the warnings module, to make
  startup with warnings faster until a warning gets printed.

- Issue #19288: Fixed the "in" operator of dbm.gnu databases for string
  argument.  Original patch by Arfrever Frehtes Taifersar Arahesis.

- Issue #19287: Fixed the "in" operator of dbm.ndbm databases for string
  argument.  Original patch by Arfrever Frehtes Taifersar Arahesis.

- Issue #19327: Fixed the working of regular expressions with too big charset.

- Issue #17400: New 'is_global' attribute for ipaddress to tell if an address
  is allocated by IANA for global or private networks.

- Issue #19350: Increasing the test coverage of macurl2path. Patch by Colin
  Williams.

- Issue #19365: Optimized the parsing of long replacement string in re.sub*()
  functions.

- Issue #19352: Fix unittest discovery when a module can be reached
  through several paths (e.g. under Debian/Ubuntu with virtualenv).

- Issue #15207: Fix mimetypes to read from correct part of Windows registry
  Original patch by Dave Chambers

- Issue #16595: Add prlimit() to resource module.

- Issue #19324: Expose Linux-specific constants in resource module.

- Load SSL's error strings in hashlib.

- Issue #18527: Upgrade internal copy of zlib to 1.2.8.

- Issue #19274: Add a filterfunc parameter to PyZipFile.writepy.

- Issue #8964: fix platform._sys_version to handle IronPython 2.6+.
  Patch by Martin Matusiak.

- Issue #19413: Restore pre-3.3 reload() semantics of re-finding modules.

- Issue #18958: Improve error message for json.load(s) while passing a string
  that starts with a UTF-8 BOM.

- Issue #19307: Improve error message for json.load(s) while passing objects
  of the wrong type.

- Issue #16038: CVE-2013-1752: ftplib: Limit amount of data read by
  limiting the call to readline().  Original patch by Michał
  Jastrzębski and Giampaolo Rodola.

- Issue #17087: Improved the repr for regular expression match objects.

Tests
-----

- Issue #19664: test_userdict's repr test no longer depends on the order
  of dict elements.

- Issue #19440: Clean up test_capi by removing an unnecessary __future__
  import, converting from test_main to unittest.main, and running the
  _testcapi module tests as subTests of a unittest TestCase method.

- Issue #19378: the main dis module tests are now run with both stdout
  redirection *and* passing an explicit file parameter

- Issue #19378: removed the not-actually-helpful assertInstructionMatches
  and assertBytecodeExactlyMatches helpers from bytecode_helper

- Issue #18702: All skipped tests now reported as skipped.

- Issue #19439: interpreter embedding tests are now executed on Windows
  (Patch by Zachary Ware)

- Issue #19085: Added basic tests for all tkinter widget options.

- Issue #19384: Fix test_py_compile for root user, patch by Claudiu Popa.

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

- Issue #18326: Clarify that list.sort's arguments are keyword-only.  Also,
  attempt to reduce confusion in the glossary by not saying there are
  different "types" of arguments and parameters.

Build
-----

- Issue #19358: "make clinic" now runs the Argument Clinic preprocessor
  over all CPython source files.

- Update SQLite to 3.8.1, xz to 5.0.5, and Tcl/Tk to 8.6.1 on Windows.

- Issue #16632: Enable DEP and ASLR on Windows.

- Issue #17791: Drop PREFIX and EXEC_PREFIX definitions from PC/pyconfig.h

- Add workaround for VS 2010 nmake clean issue. VS 2010 doesn't set up PATH
  for nmake.exe correctly.

- Issue #19550: Implement Windows installer changes of PEP 453 (ensurepip).

- Issue #19520: Fix compiler warning in the _sha3 module on 32bit Windows.

- Issue #19356: Avoid using a C variabled named "_self", it's a reserved
  word in some C compilers.

- Issue #15792: Correct build options on Win64. Patch by Jeremy Kloth.

- Issue #19373: Apply upstream change to Tk 8.5.15 fixing OS X 10.9
  screen refresh problem for OS X installer build.

- Issue #19649: On OS X, the same set of file names are now installed
  in bin directories for all configurations: non-framework vs framework,
  and single arch vs universal builds.  pythonx.y-32 is now always
  installed for 64-bit/32-bit universal builds.  The obsolete and
  undocumented pythonw* symlinks are no longer installed anywhere.

- Issue #19553: PEP 453 - "make install" and "make altinstall" now install or
  upgrade pip by default, using the bundled pip provided by the new ensurepip
  module.  A new configure option, --with-ensurepip[=upgrade|install|no], is
  available to override the default ensurepip "--upgrade" option.  The option
  can also be set with "make [alt]install ENSUREPIP=[upgrade|install|no]".

- Issue #19551: PEP 453 - the OS X installer now installs pip by default.

- Update third-party libraries for OS X installers: xz 5.0.3 -> 5.0.5,
  SQLite 3.7.13 -> 3.8.1

- Issue #15663: Revert OS X installer built-in Tcl/Tk support for 3.4.0b1.
  Some third-party projects, such as Matplotlib and PIL/Pillow,
  depended on being able to build with Tcl and Tk frameworks in
  /Library/Frameworks.

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

- Issue #19730: Argument Clinic now supports all the existing PyArg
  "format units" as legacy converters, as well as two new features:
  "self converters" and the "version" directive.

- Issue #19552: pyvenv now bootstraps pip into virtual environments by
  default (pass --without-pip to request the old behaviour)

- Issue #19390: Argument Clinic no longer accepts malformed Python
  and C ids.


What's New in Python 3.4.0 Alpha 4?
===================================

Release date: 2013-10-20

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

- Issue #19301: Give classes and functions that are explicitly marked global a
  global qualname.

- Issue #19279: UTF-7 decoder no longer produces illegal strings.

- Issue #16612: Add "Argument Clinic", a compile-time preprocessor for
  C files to generate argument parsing code.  (See PEP 436.)

- Issue #18810: Shift stat calls in importlib.machinery.FileFinder such that
  the code is optimistic that if something exists in a directory named exactly
  like the possible package being searched for that it's in actuality a
  directory.

- Issue #18416: importlib.machinery.PathFinder now treats '' as the cwd and
  importlib.machinery.FileFinder no longer special-cases '' to '.'. This leads
  to modules imported from cwd to now possess an absolute file path for
  __file__ (this does not affect modules specified by path on the CLI but it
  does affect -m/runpy). It also allows FileFinder to be more consistent by not
  having an edge case.

- Issue #4555: All exported C symbols are now prefixed with either
  "Py" or "_Py".

- Issue #19219: Speed up marshal.loads(), and make pyc files slightly
  (5% to 10%) smaller.

- Issue #19221: Upgrade Unicode database to version 6.3.0.

- Issue #16742: The result of the C callback PyOS_ReadlineFunctionPointer must
  now be a string allocated by PyMem_RawMalloc() or PyMem_RawRealloc() (or NULL
  if an error occurred), instead of a string allocated by PyMem_Malloc() or
  PyMem_Realloc().

- Issue #19199: Remove ``PyThreadState.tick_counter`` field

- Fix macro expansion of _PyErr_OCCURRED(), and make sure to use it in at
  least one place so as to avoid regressions.

- Issue #19087: Improve bytearray allocation in order to allow cheap popping
  of data at the front (slice deletion).

- Issue #19014: memoryview.cast() is now allowed on zero-length views.

- Issue #18690: memoryview is now automatically registered with
  collections.abc.Sequence

- Issue #19078: memoryview now correctly supports the reversed builtin
  (Patch by Claudiu Popa)

Library
-------

- Issue #17457: unittest test discovery now works with namespace packages.
  Patch by Claudiu Popa.

- Issue #18235: Fix the sysconfig variables LDSHARED and BLDSHARED under AIX.
  Patch by David Edelsohn.

- Issue #18606: Add the new "statistics" module (PEP 450).  Contributed
  by Steven D'Aprano.

- Issue #12866: The audioop module now supports 24-bit samples.

- Issue #19254: Provide an optimized Python implementation of pbkdf2_hmac.

- Issues #19201, Issue #19222, Issue #19223: Add "x" mode (exclusive creation)
  in opening file to bz2, gzip and lzma modules. Patches by Tim Heaney and
  Vajrasky Kok.

- Fix a reference count leak in _sre.

- Issue #19262: Initial check in of the 'asyncio' package (a.k.a. Tulip,
  a.k.a. PEP 3156).  There are no docs yet, and the PEP is slightly
  out of date with the code.  This module will have *provisional* status
  in Python 3.4.

- Issue #19276: Fixed the wave module on 64-bit big-endian platforms.

- Issue #19266: Rename the new-in-3.4 ``contextlib.ignore`` context manager
  to ``contextlib.suppress`` in order to be more consistent with existing
  descriptions of that operation elsewhere in the language and standard
  library documentation (Patch by Zero Piraeus).

- Issue #18891: Completed the new email package (provisional) API additions
  by adding new classes EmailMessage, MIMEPart, and ContentManager.

- Issue #18281: Unused stat constants removed from `tarfile`.

- Issue #18999: Multiprocessing now supports 'contexts' with the same API
  as the module, but bound to specified start methods.

- Issue #18468: The re.split, re.findall, and re.sub functions and the group()
  and groups() methods of match object now always return a string or a bytes
  object.

- Issue #18725: The textwrap module now supports truncating multiline text.

- Issue #18776: atexit callbacks now display their full traceback when they
  raise an exception.

- Issue #17827: Add the missing documentation for ``codecs.encode`` and
  ``codecs.decode``.

- Issue #19218: Rename collections.abc to _collections_abc in order to
  speed up interpreter start.

- Issue #18582: Add 'pbkdf2_hmac' to the hashlib module. It implements PKCS#5
  password-based key derivation functions with HMAC as pseudorandom function.

- Issue #19131: The aifc module now correctly reads and writes sampwidth of
  compressed streams.

- Issue #19209: Remove import of copyreg from the os module to speed up
  interpreter startup. stat_result and statvfs_result are now hard-coded to
  reside in the os module.

- Issue #19205: Don't import the 're' module in site and sysconfig module to
  speed up interpreter start.

- Issue #9548: Add a minimal "_bootlocale" module that is imported by the
  _io module instead of the full locale module.

- Issue #18764: Remove the 'print' alias for the PDB 'p' command so that it no
  longer shadows the print function.

- Issue #19158: A rare race in BoundedSemaphore could allow .release() too
  often.

- Issue #15805: Add contextlib.redirect_stdout().

- Issue #18716: Deprecate the formatter module.

- Issue #10712: 2to3 has a new "asserts" fixer that replaces deprecated names
  of unittest methods (e.g. failUnlessEqual -> assertEqual).

- Issue #18037: 2to3 now escapes ``'\u'`` and ``'\U'`` in native strings.

- Issue #17839: base64.decodebytes and base64.encodebytes now accept any
  object that exports a 1 dimensional array of bytes (this means the same
  is now also true for base64_codec)

- Issue #19132: The pprint module now supports compact mode.

- Issue #19137: The pprint module now correctly formats instances of set and
  frozenset subclasses.

- Issue #10042: functools.total_ordering now correctly handles
  NotImplemented being returned by the underlying comparison function (Patch
  by Katie Miller)

- Issue #19092: contextlib.ExitStack now correctly reraises exceptions
  from the __exit__ callbacks of inner context managers (Patch by Hrvoje
  Nikšić)

- Issue #12641: Avoid passing "-mno-cygwin" to the mingw32 compiler, except
  when necessary.  Patch by Oscar Benjamin.

- Issue #5845: In site.py, only load readline history from ~/.python_history
  if no history has been read already.  This avoids double writes to the
  history file at shutdown.

- Properly initialize all fields of a SSL object after allocation.

- Issue #19095: SSLSocket.getpeercert() now raises ValueError when the
  SSL handshake hasn't been done.

- Issue #4366: Fix building extensions on all platforms when --enable-shared
  is used.

- Issue #19030: Fixed `inspect.getmembers` and `inspect.classify_class_attrs`
  to attempt activating descriptors before falling back to a __dict__ search
  for faulty descriptors.  `inspect.classify_class_attrs` no longer returns
  Attributes whose home class is None.

C API
-----

- Issue #1772673: The type of `char*` arguments now changed to `const char*`.

- Issue #16129: Added a `Py_SetStandardStreamEncoding` pre-initialization API
  to allow embedding applications like Blender to force a particular
  encoding and error handler for the standard IO streams (initial patch by
  Bastien Montagne)

Tests
-----

- Issue #19275: Fix test_site on AMD64 Snow Leopard

- Issue #14407: Fix unittest test discovery in test_concurrent_futures.

- Issue #18919: Unified and extended tests for audio modules: aifc, sunau and
  wave.

- Issue #18714: Added tests for ``pdb.find_function()``.

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

- Issue #18758: Fixed and improved cross-references.

- Issue #18972: Modernize email examples and use the argparse module in them.

Build
-----

- Issue #19130: Correct PCbuild/readme.txt, Python 3.3 and 3.4 require VS 2010.

- Issue #15663: Update OS X 10.6+ installer to use Tcl/Tk 8.5.15.

- Issue #14499: Fix several problems with OS X universal build support:
    1. ppc arch detection for extension module builds broke with Xcode 5
    2. ppc arch detection in configure did not work on OS X 10.4
    3. -sysroot and -arch flags were unnecessarily duplicated
    4. there was no obvious way to configure an intel-32 only build.

- Issue #19019: Change the OS X installer build script to use CFLAGS instead
  of OPT for special build options.  By setting OPT, some compiler-specific
  options like -fwrapv were overridden and thus not used, which could result
  in broken interpreters when building with clang.


What's New in Python 3.4.0 Alpha 3?
===================================

Release date: 2013-09-29

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

- Issue #18818: The "encodingname" part of PYTHONIOENCODING is now optional.

- Issue #19098: Prevent overflow in the compiler when the recursion limit is set
  absurdly high.

Library
-------

- Issue #18929: `inspect.classify_class_attrs()` now correctly finds class
  attributes returned by `dir()` that are located in the metaclass.

- Issue #18950: Fix miscellaneous bugs in the sunau module.
  Au_read.readframes() now updates current file position and reads correct
  number of frames from multichannel stream.  Au_write.writeframesraw() now
  correctly updates current file position.  Au_read.getnframes() now returns an
  integer (as in Python 2).  Au_read and Au_write now correctly works with file
  object if start file position is not a zero.

- Issue #18594: The fast path for collections.Counter() was never taken
  due to an over-restrictive type check.

- Issue #19053: ZipExtFile.read1() with non-zero argument no more returns empty
  bytes until end of data.

- logging: added support for Unix domain sockets to SocketHandler and
  DatagramHandler.

- Issue #18996: TestCase.assertEqual() now more cleverly shorten differing
  strings in error report.

- Issue #19034: repr() for tkinter.Tcl_Obj now exposes string reperesentation.

- Issue #18978: ``urllib.request.Request`` now allows the method to be
  indicated on the class and no longer sets it to None in ``__init__``.

- Issue #18626: the inspect module now offers a basic command line
  introspection interface (Initial patch by Claudiu Popa)

- Issue #3015: Fixed tkinter with wantobject=False.  Any Tcl command call
  returned empty string.

- Issue #19037: The mailbox module now makes all changes to maildir files
  before moving them into place, to avoid race conditions with other programs
  that may be accessing the maildir directory.

- Issue #14984: On POSIX systems, when netrc is called without a filename
  argument (and therefore is reading the user's $HOME/.netrc file), it now
  enforces the same security rules as typical ftp clients: the .netrc file must
  be owned by the user that owns the process and must not be readable by any
  other user.

- Issue #18873: The tokenize module now detects Python source code encoding
  only in comment lines.

- Issue #17764: Enable http.server to bind to a user specified network
  interface.  Patch contributed by Malte Swart.

- Issue #18937: Add an assertLogs() context manager to unittest.TestCase
  to ensure that a block of code emits a message using the logging module.

- Issue #17324: Fix http.server's request handling case on trailing '/'. Patch
  contributed by Vajrasky Kok.

- Issue #19018: The heapq.merge() function no longer suppresses IndexError
  in the underlying iterables.

- Issue #18784: The uuid module no longer attempts to load libc via ctypes.CDLL
  if all the necessary functions have already been found in libuuid.  Patch by
  Evgeny Sologubov.

- The :envvar:`PYTHONFAULTHANDLER` environment variable now only enables the
  faulthandler module if the variable is non-empty. Same behaviour than other
  variables like :envvar:`PYTHONDONTWRITEBYTECODE`.

- Issue #1565525: New function ``traceback.clear_frames`` will clear
  the local variables of all the stack frames referenced by a traceback
  object.

Tests
-----

- Issue #18952: Fix regression in support data downloads introduced when
  test.support was converted to a package. Regression noticed by Zachary
  Ware.

IDLE
----

- Issue #18873: IDLE now detects Python source code encoding only in comment
  lines.

- Issue #18988: The "Tab" key now works when a word is already autocompleted.

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

- Issue #17003: Unified the size argument names in the io module with common
  practice.

Build
-----

- Issue #18596: Support the use of address sanity checking in recent versions
  of clang and GCC by appropriately marking known false alarms in the small
  object allocator. Patch contributed by Dhiru Kholia.

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

- Issue #18873: 2to3 and the findnocoding.py script now detect Python source
  code encoding only in comment lines.


What's New in Python 3.4.0 Alpha 2?
===================================

Release date: 2013-09-09

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

- Issue #18942: sys._debugmallocstats() output was damaged on Windows.

- Issue #18571: Implementation of the PEP 446: file descriptors and file
  handles are now created non-inheritable; add functions
  os.get/set_inheritable(), os.get/set_handle_inheritable() and
  socket.socket.get/set_inheritable().

- Issue #11619: The parser and the import machinery do not encode Unicode
  filenames anymore on Windows.

- Issue #18808: Non-daemon threads are now automatically joined when
  a sub-interpreter is shutdown (it would previously dump a fatal error).

- Remove support for compiling on systems without getcwd().

- Issue #18774: Remove last bits of GNU PTH thread code and thread_pth.h.

- Issue #18771: Add optimization to set object lookups to reduce the cost
  of hash collisions.  The core idea is to inspect a second key/hash pair
  for each cache line retrieved.

- Issue #16105: When a signal handler fails to write to the file descriptor
  registered with ``signal.set_wakeup_fd()``, report an exception instead
  of ignoring the error.

- Issue #18722: Remove uses of the "register" keyword in C code.

- Issue #18667: Add missing "HAVE_FCHOWNAT" symbol to posix._have_functions.

- Issue #16499: Add command line option for isolated mode.

- Issue #15301: Parsing fd, uid, and gid parameters for builtins
  in Modules/posixmodule.c is now far more robust.

- Issue #18368: PyOS_StdioReadline() no longer leaks memory when realloc()
  fail.

- Issue #17934: Add a clear() method to frame objects, to help clean up
  expensive details (local variables) and break reference cycles.

- Issue #18780: %-formatting codes %d, %i, and %u now treat int-subclasses
  as int (displays value of int-subclass instead of str(int-subclass) ).

Library
-------

- Issue #18808: Thread.join() now waits for the underlying thread state to
  be destroyed before returning.  This prevents unpredictable aborts in
  Py_EndInterpreter() when some non-daemon threads are still running.

- Issue #18458: Prevent crashes with newer versions of libedit.  Its readline
  emulation has changed from 0-based indexing to 1-based like gnu readline.

- Issue #18852: Handle case of ``readline.__doc__`` being ``None`` in the new
  readline activation code in ``site.py``.

- Issue #18672: Fixed format specifiers for Py_ssize_t in debugging output in
  the _sre module.

- Issue #18830: inspect.getclasstree() no longer produces duplicate entries even
  when input list contains duplicates.

- Issue #18878: sunau.open now supports the context management protocol.  Based on
  patches by Claudiu Popa and R. David Murray.

- Issue #18909: Fix _tkinter.tkapp.interpaddr() on Windows 64-bit, don't cast
  64-bit pointer to long (32 bits).

- Issue #18876: The FileIO.mode attribute now better reflects the actual mode
  under which the file was opened.  Patch by Erik Bray.

- Issue #16853: Add new selectors module.

- Issue #18882: Add threading.main_thread() function.

- Issue #18901: The sunau getparams method now returns a namedtuple rather than
  a plain tuple.  Patch by Claudiu Popa.

- Issue #17487: The result of the wave getparams method now is pickleable again.
  Patch by Claudiu Popa.

- Issue #18756: os.urandom() now uses a lazily-opened persistent file
  descriptor, so as to avoid using many file descriptors when run in
  parallel from multiple threads.

- Issue #18418: After fork(), reinit all threads states, not only active ones.
  Patch by A. Jesse Jiryu Davis.

- Issue #17974: Switch unittest from using getopt to using argparse.

- Issue #11798: TestSuite now drops references to own tests after execution.

- Issue #16611: http.cookie now correctly parses the 'secure' and 'httponly'
  cookie flags.

- Issue #11973: Fix a problem in kevent. The flags and fflags fields are now
  properly handled as unsigned.

- Issue #18807: ``pyvenv`` now takes a --copies argument allowing copies
  instead of symlinks even where symlinks are available and the default.

- Issue #18538: ``python -m dis`` now uses argparse for argument processing.
  Patch by Michele Orrù.

- Issue #18394: Close cgi.FieldStorage's optional file.

- Issue #17702: On error, os.environb now suppresses the exception context
  when raising a new KeyError with the original key.

- Issue #16809: Fixed some tkinter incompabilities with Tcl/Tk 8.6.

- Issue #16809: Tkinter's splitlist() and split() methods now accept Tcl_Obj
  argument.

- Issue #18324: set_payload now correctly handles binary input.  This also
  supersedes the previous fixes for #14360, #1717, and #16564.

- Issue #18794: Add a fileno() method and a closed attribute to select.devpoll
  objects.

- Issue #17119: Fixed integer overflows when processing large strings and tuples
  in the tkinter module.

- Issue #18747: Re-seed OpenSSL's pseudo-random number generator after fork.
  A pthread_atfork() parent handler is used to seed the PRNG with pid, time
  and some stack data.

- Issue #8865: Concurrent invocation of select.poll.poll() now raises a
  RuntimeError exception.  Patch by Christian Schubert.

- Issue #18777: The ssl module now uses the new CRYPTO_THREADID API of
  OpenSSL 1.0.0+ instead of the deprecated CRYPTO id callback function.

- Issue #18768: Correct doc string of RAND_edg(). Patch by Vajrasky Kok.

- Issue #18178: Fix ctypes on BSD. dlmalloc.c was compiled twice which broke
  malloc weak symbols.

- Issue #18709: Fix CVE-2013-4238. The SSL module now handles NULL bytes
  inside subjectAltName correctly. Formerly the module has used OpenSSL's
  GENERAL_NAME_print() function to get the string represention of ASN.1
  strings for ``rfc822Name`` (email), ``dNSName`` (DNS) and
  ``uniformResourceIdentifier`` (URI).

- Issue #18701: Remove support of old CPython versions (<3.0) from C code.

- Issue #18756: Improve error reporting in os.urandom() when the failure
  is due to something else than /dev/urandom not existing (for example,
  exhausting the file descriptor limit).

- Issue #18673: Add O_TMPFILE to os module. O_TMPFILE requires Linux kernel
  3.11 or newer. It's only defined on system with 3.11 uapi headers, too.

- Issue #18532: Change the builtin hash algorithms' names to lower case names
  as promised by hashlib's documentation.

- Issue #8713: add new spwan and forkserver start methods, and new functions
  get_all_start_methods, get_start_method, and set_start_method, to
  multiprocessing.

- Issue #18405: Improve the entropy of crypt.mksalt().

- Issue #12015: The tempfile module now uses a suffix of 8 random characters
  instead of 6, to reduce the risk of filename collision. The entropy was
  reduced when uppercase letters were removed from the charset used to generate
  random characters.

- Issue #18585: Add :func:`textwrap.shorten` to collapse and truncate a
  piece of text to a given length.

- Issue #18598: Tweak exception message for importlib.import_module() to
  include the module name when a key argument is missing.

- Issue #19151: Fix docstring and use of _get_supported_file_loaders() to
  reflect 2-tuples.

- Issue #19152: Add ExtensionFileLoader.get_filename().

- Issue #18676: Change 'positive' to 'non-negative' in queue.py put and get
  docstrings and ValueError messages. Patch by Zhongyue Luo

- Fix refcounting issue with extension types in tkinter.

- Issue #8112: xlmrpc.server's DocXMLRPCServer server no longer raises an error
  if methods have annotations; it now correctly displays the annotations.

- Issue #18600: Added policy argument to email.message.Message.as_string,
  and as_bytes and __bytes__ methods to Message.

- Issue #18671: Output more information when logging exceptions occur.

- Issue #18621: Prevent the site module's patched builtins from keeping
  too many references alive for too long.

- Issue #4885: Add weakref support to mmap objects.  Patch by Valerie Lambert.

- Issue #8860: Fixed rounding in timedelta constructor.

- Issue #18849: Fixed a Windows-specific tempfile bug where collision with an
  existing directory caused mkstemp and related APIs to fail instead of
  retrying. Report and fix by Vlad Shcherbina.

- Issue #18920: argparse's default destination for the version action (-v,
  --version) has also been changed to stdout, to match the Python executable.

Tests
-----

- Issue #18623: Factor out the _SuppressCoreFiles context manager into
  test.support.  Patch by Valerie Lambert.

- Issue #12037: Fix test_email for desktop Windows.

- Issue #15507: test_subprocess's test_send_signal could fail if the test
  runner were run in an environment where the process inherited an ignore
  setting for SIGINT.  Restore the SIGINT handler to the desired
  KeyboardInterrupt raising one during that test.

- Issue #16799: Switched from getopt to argparse style in regrtest's argument
  parsing.  Added more tests for regrtest's argument parsing.

- Issue #18792: Use "127.0.0.1" or "::1" instead of "localhost" as much as
  possible, since "localhost" goes through a DNS lookup under recent Windows
  versions.

IDLE
----

- Issue #18489: Add tests for SearchEngine. Original patch by Phil Webster.

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

- Issue #18743: Fix references to non-existant "StringIO" module.

- Issue #18783: Removed existing mentions of Python long type in docstrings,
  error messages and comments.

Build
-----

- Issue #1584: Provide configure options to override default search paths for
  Tcl and Tk when building _tkinter.

- Issue #15663: Tcl/Tk 8.5.14 is now included with the OS X 10.6+ 64-/32-bit
  installer.  It is no longer necessary to install a third-party version of
  Tcl/Tk 8.5 to work around the problems in the Apple-supplied Tcl/Tk 8.5
  shipped in OS X 10.6 and later releases.

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

- Issue #18922: Now The Lib/smtpd.py and Tools/i18n/msgfmt.py scripts write
  their version strings to stdout, and not to sderr.


What's New in Python 3.4.0 Alpha 1?
===================================

Release date: 2013-08-03

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

- Issue #16741: Fix an error reporting in int().

- Issue #17899: Fix rare file descriptor leak in os.listdir().

- Issue #10241: Clear extension module dict copies at interpreter shutdown.
  Patch by Neil Schemenauer, minimally modified.

- Issue #9035: ismount now recognises volumes mounted below a drive root
  on Windows. Original patch by Atsuo Ishimoto.

- Issue #18214: Improve finalization of Python modules to avoid setting
  their globals to None, in most cases.

- Issue #18112: PEP 442 implementation (safe object finalization).

- Issue #18552: Check return value of PyArena_AddPyObject() in
  obj2ast_object().

- Issue #18560: Fix potential NULL pointer dereference in sum().

- Issue #18520: Add a new PyStructSequence_InitType2() function, same than
  PyStructSequence_InitType() except that it has a return value (0 on success,
  -1 on error).

- Issue #15905: Fix theoretical buffer overflow in handling of sys.argv[0],
  prefix and exec_prefix if the operation system does not obey MAXPATHLEN.

- Issue #18408: Fix many various bugs in code handling errors, especially
  on memory allocation failure (MemoryError).

- Issue #18344: Fix potential ref-leaks in _bufferedreader_read_all().

- Issue #18342: Use the repr of a module name when an import fails when using
  ``from ... import ...``.

- Issue #17872: Fix a segfault in marshal.load() when input stream returns
  more bytes than requested.

- Issue #18338: `python --version` now prints version string to stdout, and
  not to stderr.  Patch by Berker Peksag and Michael Dickens.

- Issue #18426: Fix NULL pointer dereference in C extension import when
  PyModule_GetDef() returns an error.

- Issue #17206: On Windows, increase the stack size from 2 MB to 4.2 MB to fix
  a stack overflow in the marshal module (fix a crash in test_marshal).
  Patch written by Jeremy Kloth.

- Issue #3329: Implement the PEP 445: Add new APIs to customize Python memory
  allocators.

- Issue #18328: Reorder ops in PyThreadState_Delete*() functions. Now the
  tstate is first removed from TLS and then deallocated.

- Issue #13483: Use VirtualAlloc in obmalloc on Windows.

- Issue #18184: PyUnicode_FromFormat() and PyUnicode_FromFormatV() now raise
  OverflowError when an argument of %c format is out of range.

- Issue #18111: The min() and max() functions now support a default argument
  to be returned instead of raising a ValueError on an empty sequence.
  (Contributed by Julian Berman.)

- Issue #18137: Detect integer overflow on precision in float.__format__()
  and complex.__format__().

- Issue #18183: Fix various unicode operations on strings with large unicode
  codepoints.

- Issue #18180: Fix ref leak in _PyImport_GetDynLoadWindows().

- Issue #18038: SyntaxError raised during compilation sources with illegal
  encoding now always contains an encoding name.

- Issue #17931: Resolve confusion on Windows between pids and process
  handles.

- Tweak the exception message when the magic number or size value in a bytecode
  file is truncated.

- Issue #17932: Fix an integer overflow issue on Windows 64-bit in iterators:
  change the C type of seqiterobject.it_index from long to Py_ssize_t.

- Issue #18065: Don't set __path__ to the package name for frozen packages.

- Issue #18088: When reloading a module, unconditionally reset all relevant
  attributes on the module (e.g. __name__, __loader__, __package__, __file__,
  __cached__).

- Issue #17937: Try harder to collect cyclic garbage at shutdown.

- Issue #12370: Prevent class bodies from interfering with the __class__
  closure.

- Issue #17644: Fix a crash in str.format when curly braces are used in square
  brackets.

- Issue #17237: Fix crash in the ASCII decoder on m68k.

- Issue #17927: Frame objects kept arguments alive if they had been
  copied into a cell, even if the cell was cleared.

- Issue #1545463: At shutdown, defer finalization of codec modules so
  that stderr remains usable.

- Issue #7330: Implement width and precision (ex: "%5.3s") for the format
  string of PyUnicode_FromFormat() function, original patch written by Ysj Ray.

- Issue #1545463: Global variables caught in reference cycles are now
  garbage-collected at shutdown.

- Issue #17094: Clear stale thread states after fork().  Note that this
  is a potentially disruptive change since it may release some system
  resources which would otherwise remain perpetually alive (e.g. database
  connections kept in thread-local storage).

- Issue #17408: Avoid using an obsolete instance of the copyreg module when
  the interpreter is shutdown and then started again.

- Issue #5845: Enable tab-completion in the interactive interpreter by
  default, thanks to a new sys.__interactivehook__.

- Issue #17115,17116: Module initialization now includes setting __package__ and
  __loader__ attributes to None.

- Issue #17853: Ensure locals of a class that shadow free variables always win
  over the closures.

- Issue #17863: In the interactive console, don't loop forever if the encoding
  can't be fetched from stdin.

- Issue #17867: Raise an ImportError if __import__ is not found in __builtins__.

- Issue #18698: Ensure importlib.reload() returns the module out of sys.modules.

- Issue #17857: Prevent build failures with pre-3.5.0 versions of sqlite3,
  such as was shipped with Centos 5 and Mac OS X 10.4.

- Issue #17413: sys.settrace callbacks were being passed a string instead of an
  exception instance for the 'value' element of the arg tuple if the exception
  originated from C code; now an exception instance is always provided.

- Issue #17782: Fix undefined behaviour on platforms where
  ``struct timespec``'s "tv_nsec" member is not a C long.

- Issue #17722: When looking up __round__, resolve descriptors.

- Issue #16061: Speed up str.replace() for replacing 1-character strings.

- Issue #17715: Fix segmentation fault from raising an exception in a __trunc__
  method.

- Issue #17643: Add __callback__ attribute to weakref.ref.

- Issue #16447: Fixed potential segmentation fault when setting __name__ on a
  class.

- Issue #17669: Fix crash involving finalization of generators using yield from.

- Issue #14439: Python now prints the traceback on runpy failure at startup.

- Issue #17469: Fix _Py_GetAllocatedBlocks() and sys.getallocatedblocks()
  when running on valgrind.

- Issue #17619: Make input() check for Ctrl-C correctly on Windows.

- Issue #17357: Add missing verbosity messages for -v/-vv that were lost during
  the importlib transition.

- Issue #17610: Don't rely on non-standard behavior of the C qsort() function.

- Issue #17323: The "[X refs, Y blocks]" printed by debug builds has been
  disabled by default.  It can be re-enabled with the `-X showrefcount` option.

- Issue #17328: Fix possible refleak in dict.setdefault.

- Issue #17275: Corrected class name in init error messages of the C version of
  BufferedWriter and BufferedRandom.

- Issue #7963: Fixed misleading error message that issued when object is
  called without arguments.

- Issue #8745: Small speed up zipimport on Windows. Patch by Catalin Iacob.

- Issue #5308: Raise ValueError when marshalling too large object (a sequence
  with size >= 2**31), instead of producing illegal marshal data.

- Issue #12983: Bytes literals with invalid ``\x`` escape now raise a SyntaxError
  and a full traceback including line number.

- Issue #16967: In function definition, evaluate positional defaults before
  keyword-only defaults.

- Issue #17173: Remove uses of locale-dependent C functions (isalpha() etc.)
  in the interpreter.

- Issue #17137: When a Unicode string is resized, the internal wide character
  string (wstr) format is now cleared.

- Issue #17043: The unicode-internal decoder no longer read past the end of
  input buffer.

- Issue #17098: All modules now have __loader__ set even if they pre-exist the
  bootstrapping of importlib.

- Issue #16979: Fix error handling bugs in the unicode-escape-decode decoder.

- Issue #16772: The base argument to the int constructor no longer accepts
  floats, or other non-integer objects with an __int__ method.  Objects
  with an __index__ method are now accepted.

- Issue #10156: In the interpreter's initialization phase, unicode globals
  are now initialized dynamically as needed.

- Issue #16980: Fix processing of escaped non-ascii bytes in the
  unicode-escape-decode decoder.

- Issue #16975: Fix error handling bug in the escape-decode bytes decoder.

- Issue #14850: Now a charmap decoder treats U+FFFE as "undefined mapping"
  in any mapping, not only in a string.

- Issue #16613: Add *m* argument to ``collections.Chainmap.new_child`` to
  allow the new child map to be specified explicitly.

- Issue #16730: importlib.machinery.FileFinder now no longers raises an
  exception when trying to populate its cache and it finds out the directory is
  unreadable or has turned into a file. Reported and diagnosed by
  David Pritchard.

- Issue #16906: Fix a logic error that prevented most static strings from being
  cleared.

- Issue #11461: Fix the incremental UTF-16 decoder. Original patch by
  Amaury Forgeot d'Arc.

- Issue #16856: Fix a segmentation fault from calling repr() on a dict with
  a key whose repr raise an exception.

- Issue #16367: Fix FileIO.readall() on Windows for files larger than 2 GB.

- Issue #16761: Calling int() with base argument only now raises TypeError.

- Issue #16759: Support the full DWORD (unsigned long) range in Reg2Py
  when retrieving a REG_DWORD value. This corrects functions like
  winreg.QueryValueEx that may have been returning truncated values.

- Issue #14420: Support the full DWORD (unsigned long) range in Py2Reg
  when passed a REG_DWORD value. Fixes OverflowError in winreg.SetValueEx.

- Issue #11939: Set the st_dev attribute of stat_result to allow Windows to
  take advantage of the os.path.samefile/sameopenfile/samestat implementations
  used by other platforms.

- Issue #16772: The int() constructor's second argument (base) no longer
  accepts non integer values.  Consistent with the behavior in Python 2.

- Issue #14470: Remove w9xpopen support per PEP 11.

- Issue #9856: Replace deprecation warning with raising TypeError
  in object.__format__. Patch by Florent Xicluna.

- Issue #16597: In buffered and text IO, call close() on the underlying stream
  if invoking flush() fails.

- Issue #16722: In the bytes() constructor, try to call __bytes__ on the
  argument before __index__.

- Issue #16421: loading multiple modules from one shared object is now
  handled correctly (previously, the first module loaded from that file
  was silently returned). Patch by Václav Šmilauer.

- Issue #16602: When a weakref's target was part of a long deallocation
  chain, the object could remain reachable through its weakref even though
  its refcount had dropped to zero.

- Issue #16495: Remove extraneous NULL encoding check from bytes_decode().

- Issue #16619: Create NameConstant AST class to represent None, True, and False
  literals. As a result, these constants are never loaded at runtime from
  builtins.

- Issue #16455: On FreeBSD and Solaris, if the locale is C, the
  ASCII/surrogateescape codec is now used (instead of the locale encoding) to
  decode the command line arguments. This change fixes inconsistencies with
  os.fsencode() and os.fsdecode(), because these operating systems announce an
  ASCII locale encoding, but actually use the ISO-8859-1 encoding in practice.

- Issue #16562: Optimize dict equality testing.  Patch by Serhiy Storchaka.

- Issue #16588: Silence unused-but-set warnings in Python/thread_pthread

- Issue #16592: stringlib_bytes_join doesn't raise MemoryError on allocation
  failure.

- Issue #16546: Fix: ast.YieldFrom argument is now mandatory.

- Issue #16514: Fix regression causing a traceback when sys.path[0] is None
  (actually, any non-string or non-bytes type).

- Issue #16306: Fix multiple error messages when unknown command line
  parameters where passed to the interpreter.  Patch by Hieu Nguyen.

- Issue #16215: Fix potential double memory free in str.replace().  Patch
  by Serhiy Storchaka.

- Issue #16290: A float return value from the __complex__ special method is no
  longer accepted in the complex() constructor.

- Issue #16416: On Mac OS X, operating system data are now always
  encoded/decoded to/from UTF-8/surrogateescape, instead of the locale encoding
  (which may be ASCII if no locale environment variable is set), to avoid
  inconsistencies with os.fsencode() and os.fsdecode() functions which are
  already using UTF-8/surrogateescape.

- Issue #16453: Fix equality testing of dead weakref objects.

- Issue #9535: Fix pending signals that have been received but not yet
  handled by Python to not persist after os.fork() in the child process.

- Issue #14794: Fix slice.indices to return correct results for huge values,
  rather than raising OverflowError.

- Issue #15001: fix segfault on "del sys.modules['__main__']". Patch by Victor
  Stinner.

- Issue #8271: the utf-8 decoder now outputs the correct number of U+FFFD
  characters when used with the 'replace' error handler on invalid utf-8
  sequences.  Patch by Serhiy Storchaka, tests by Ezio Melotti.

- Issue #5765: Apply a hard recursion limit in the compiler instead of
  blowing the stack and segfaulting. Initial patch by Andrea Griffini.

- Issue #16402: When slicing a range, fix shadowing of exceptions from
  __index__.

- Issue #16336: fix input checking in the surrogatepass error handler.
  Patch by Serhiy Storchaka.

- Issue #8401: assigning an int to a bytearray slice (e.g. b[3:4] = 5) now
  raises an error.

- Issue #7317: Display full tracebacks when an error occurs asynchronously.
  Patch by Alon Horev with update by Alexey Kachayev.

- Issue #16309: Make PYTHONPATH="" behavior the same as if PYTHONPATH
  not set at all.

- Issue #10189: Improve the error reporting of SyntaxErrors related to global
  and nonlocal statements.

- Fix segfaults on setting __qualname__ on builtin types and attempting to
  delete it on any type.

- Issue #14625: Rewrite the UTF-32 decoder. It is now 3x to 4x faster. Patch
  written by Serhiy Storchaka.

- Issue #16345: Fix an infinite loop when ``fromkeys`` on a dict subclass
  received a nonempty dict from the constructor.

- Issue #16271: Fix strange bugs that resulted from __qualname__ appearing in a
  class's __dict__ and on type.

- Issue #12805: Make bytes.join and bytearray.join faster when the separator
  is empty.  Patch by Serhiy Storchaka.

- Issue #6074: Ensure cached bytecode files can always be updated by the
  user that created them, even when the source file is read-only.

- Issue #15958: bytes.join and bytearray.join now accept arbitrary buffer
  objects.

- Issue #14783: Improve int() docstring and switch docstrings for str(),
  range(), and slice() to use multi-line signatures.

- Issue #16160: Subclass support now works for types.SimpleNamespace.

- Issue #16148: Implement PEP 424, adding operator.length_hint and
  PyObject_LengthHint.

- Upgrade Unicode data (UCD) to version 6.2.

- Issue #15379: Fix passing of non-BMP characters as integers for the charmap
  decoder (already working as unicode strings).  Patch by Serhiy Storchaka.

- Issue #15144: Fix possible integer overflow when handling pointers as integer
  values, by using `Py_uintptr_t` instead of `size_t`.  Patch by Serhiy
  Storchaka.

- Issue #15965: Explicitly cast `AT_FDCWD` as (int).  Required on Solaris 10
  (which defines `AT_FDCWD` as ``0xffd19553``), harmless on other platforms.

- Issue #15839: Convert SystemErrors in `super()` to RuntimeErrors.

- Issue #15448: Buffered IO now frees the buffer when closed, instead
  of when deallocating.

- Issue #15846: Fix SystemError which happened when using `ast.parse()` in an
  exception handler on code with syntax errors.

- Issue #15897: zipimport.c doesn't check return value of fseek().
  Patch by Felipe Cruz.

- Issue #15801: Make sure mappings passed to '%' formatting are actually
  subscriptable.

- Issue #15111: __import__ should propagate ImportError when raised as a
  side-effect of a module triggered from using fromlist.

- Issue #15022: Add pickle and comparison support to types.SimpleNamespace.

Library
-------

- Issue #4331: Added functools.partialmethod (Initial patch by Alon Horev)

- Issue #13461: Fix a crash in the TextIOWrapper.tell method on 64-bit
  platforms.  Patch by Yogesh Chaudhari.

- Issue #18681: Fix a NameError in importlib.reload() (noticed by Weizhao Li).

- Issue #14323: Expanded the number of digits in the coefficients for the
  RGB -- YIQ conversions so that they match the FCC NTSC versions.

- Issue #17998: Fix an internal error in regular expression engine.

- Issue #17557: Fix os.getgroups() to work with the modified behavior of
  getgroups(2) on OS X 10.8.  Original patch by Mateusz Lenik.

- Issue #18608: Avoid keeping a strong reference to the locale module
  inside the _io module.

- Issue #18619: Fix atexit leaking callbacks registered from sub-interpreters,
  and make it GC-aware.

- Issue #15699: The readline module now uses PEP 3121-style module
  initialization, so as to reclaim allocated resources (Python callbacks)
  at shutdown.  Original patch by Robin Schreiber.

- Issue #17616: wave.open now supports the context management protocol.

- Issue #18599: Fix name attribute of _sha1.sha1() object. It now returns
  'SHA1' instead of 'SHA'.

- Issue #13266: Added inspect.unwrap to easily unravel __wrapped__ chains
  (initial patch by Daniel Urban and Aaron Iles)

- Issue #18561: Skip name in ctypes' _build_callargs() if name is NULL.

- Issue #18559: Fix NULL pointer dereference error in _pickle module

- Issue #18556: Check the return type of PyUnicode_AsWideChar() in ctype's
  U_set().

- Issue #17818: aifc.getparams now returns a namedtuple.

- Issue #18549: Eliminate dead code in socket_ntohl()

- Issue #18530: Remove additional stat call from posixpath.ismount.
  Patch by Alex Gaynor.

- Issue #18514: Fix unreachable Py_DECREF() call in PyCData_FromBaseObj()

- Issue #9177: Calling read() or write() now raises ValueError, not
  AttributeError, on a closed SSL socket.  Patch by Senko Rasic.

- Issue #18513: Fix behaviour of cmath.rect w.r.t. signed zeros on OS X 10.8 +
  gcc.

- Issue #18479: Changed venv Activate.ps1 to make deactivate a function, and
  removed Deactivate.ps1.

- Issue #18480: Add missing call to PyType_Ready to the _elementtree extension.

- Issue #17778: Fix test discovery for test_multiprocessing. (Patch by
  Zachary Ware.)

- Issue #18393: The private module _gestalt and private functions
  platform._mac_ver_gestalt, platform._mac_ver_lookup and
  platform._bcd2str have been removed. This does not affect the public
  interface of the platform module.

- Issue #17482: functools.update_wrapper (and functools.wraps) now set the
  __wrapped__ attribute correctly even if the underlying function has a
  __wrapped__ attribute set.

- Issue #18431: The new email header parser now decodes RFC2047 encoded words
  in structured headers.

- Issue #18432: The sched module's queue method was incorrectly returning
  an iterator instead of a list.

- Issue #18044: The new email header parser was mis-parsing encoded words where
  an encoded character immediately followed the '?' that follows the CTE
  character, resulting in a decoding failure.  They are now decoded correctly.

- Issue #18101: Tcl.split() now process strings nested in a tuple as it
  do with byte strings.

- Issue #18116: getpass was always getting an error when testing /dev/tty,
  and thus was always falling back to stdin, and would then raise an exception
  if stdin could not be used (such as /dev/null).  It also leaked an open file.
  All of these issues are now fixed.

- Issue #17198: Fix a NameError in the dbm module.  Patch by Valentina
  Mukhamedzhanova.

- Issue #18013: Fix cgi.FieldStorage to parse the W3C sample form.

- Issue #18020: improve html.escape speed by an order of magnitude.
  Patch by Matt Bryant.

- Issue #18347: ElementTree's html serializer now preserves the case of
  closing tags.

- Issue #17261: Ensure multiprocessing's proxies use proper address.

- Issue #18343: faulthandler.register() now keeps the previous signal handler
  when the function is called twice, so faulthandler.unregister() restores
  correctly the original signal handler.

- Issue #17097: Make multiprocessing ignore EINTR.

- Issue #18339: Negative ints keys in unpickler.memo dict no longer cause a
  segfault inside the _pickle C extension.

- Issue #18240: The HMAC module is no longer restricted to bytes and accepts
  any bytes-like object, e.g. memoryview. Original patch by Jonas Borgström.

- Issue #18224: Removed pydoc script from created venv, as it causes problems
  on Windows and adds no value over and above python -m pydoc ...

- Issue #18155: The csv module now correctly handles csv files that use
  a delimter character that has a special meaning in regexes, instead of
  throwing an exception.

- Issue #14360: encode_quopri can now be successfully used as an encoder
  when constructing a MIMEApplication object.

- Issue #11390: Add -o and -f command line options to the doctest CLI to
  specify doctest options (and convert it to using argparse).

- Issue #18135: ssl.SSLSocket.write() now raises an OverflowError if the input
  string in longer than 2 gigabytes, and ssl.SSLContext.load_cert_chain()
  raises a ValueError if the password is longer than 2 gigabytes. The ssl
  module does not support partial write.

- Issue #11016: Add C implementation of the stat module as _stat.

- Issue #18248: Fix libffi build on AIX.

- Issue #18259: Declare sethostname in socketmodule.c for AIX

- Issue #18147: Add diagnostic functions to ssl.SSLContext(). get_ca_list()
  lists all loaded CA certificates and cert_store_stats() returns amount of
  loaded X.509 certs, X.509 CA certs and CRLs.

- Issue #18167: cgi.FieldStorage no longer fails to handle multipart/form-data
  when ``\r\n`` appears at end of 65535 bytes without other newlines.

- Issue #18076: Introduce importlib.util.decode_source().

- Issue #18357: add tests for dictview set difference.
  Patch by Fraser Tweedale.

- importlib.abc.SourceLoader.get_source() no longer changes SyntaxError or
  UnicodeDecodeError into ImportError.

- Issue #18058, 18057: Make the namespace package loader meet the
  importlib.abc.InspectLoader ABC, allowing for namespace packages to work with
  runpy.

- Issue #17177: The imp module is pending deprecation.

- subprocess: Prevent a possible double close of parent pipe fds when the
  subprocess exec runs into an error.  Prevent a regular multi-close of the
  /dev/null fd when any of stdin, stdout and stderr was set to DEVNULL.

- Issue #18194: Introduce importlib.util.cache_from_source() and
  source_from_cache() while documenting the equivalent functions in imp as
  deprecated.

- Issue #17907: Document imp.new_module() as deprecated in favour of
  types.ModuleType.

- Issue #18192: Introduce importlib.util.MAGIC_NUMBER and document as deprecated
  imp.get_magic().

- Issue #18149: Add filecmp.clear_cache() to manually clear the filecmp cache.
  Patch by Mark Levitt

- Issue #18193: Add importlib.reload().

- Issue #18157: Stop using imp.load_module() in pydoc.

- Issue #16102: Make uuid._netbios_getnode() work again on Python 3.

- Issue #17134: Add ssl.enum_cert_store() as interface to Windows' cert store.

- Issue #18143: Implement ssl.get_default_verify_paths() in order to debug
  the default locations for cafile and capath.

- Issue #17314: Move multiprocessing.forking over to importlib.

- Issue #11959: SMTPServer and SMTPChannel now take an optional map, use of
  which avoids affecting global state.

- Issue #18109: os.uname() now decodes fields from the locale encoding, and
  socket.gethostname() now decodes the hostname from the locale encoding,
  instead of using the UTF-8 encoding in strict mode.

- Issue #18089: Implement importlib.abc.InspectLoader.load_module.

- Issue #18088: Introduce importlib.abc.Loader.init_module_attrs for setting
  module attributes. Leads to the pending deprecation of
  importlib.util.module_for_loader.

- Issue #17403: urllib.parse.robotparser normalizes the urls before adding to
  ruleline. This helps in handling certain types invalid urls in a conservative
  manner. Patch contributed by Mher Movsisyan.

- Issue #18070: Have importlib.util.module_for_loader() set attributes
  unconditionally in order to properly support reloading.

- Added importlib.util.module_to_load to return a context manager to provide the
  proper module object to load.

- Issue #18025: Fixed a segfault in io.BufferedIOBase.readinto() when raw
  stream's read() returns more bytes than requested.

- Issue #18011: As was originally intended, base64.b32decode() now raises a
  binascii.Error if there are non-b32-alphabet characters present in the input
  string, instead of a TypeError.

- Issue #18072: Implement importlib.abc.InspectLoader.get_code() and
  importlib.abc.ExecutionLoader.get_code().

- Issue #8240: Set the SSL_MODE_ACCEPT_MOVING_WRITE_BUFFER flag on SSL
  sockets.

- Issue #17269: Workaround for socket.getaddrinfo crash on MacOS X
  with port None or "0" and flags AI_NUMERICSERV.

- Issue #16986: ElementTree now correctly works with string input when the
  internal XML encoding is not UTF-8 or US-ASCII.

- Issue #17996: socket module now exposes AF_LINK constant on BSD and OSX.

- Issue #17900: Allowed pickling of recursive OrderedDicts.  Decreased pickled
  size and pickling time.

- Issue #17914: Add os.cpu_count(). Patch by Yogesh Chaudhari, based on an
  initial patch by Trent Nelson.

- Issue #17812: Fixed quadratic complexity of base64.b32encode().
  Optimize base64.b32encode() and base64.b32decode() (speed up to 3x).

- Issue #17980: Fix possible abuse of ssl.match_hostname() for denial of
  service using certificates with many wildcards (CVE-2013-2099).

- Issue #15758: Fix FileIO.readall() so it no longer has O(n**2) complexity.

- Issue #14596: The struct.Struct() objects now use a more compact
  implementation.

- Issue #17981: logging's SysLogHandler now closes the socket when it catches
  socket OSErrors.

- Issue #17964: Fix os.sysconf(): the return type of the C sysconf() function
  is long, not int.

- Fix typos in the multiprocessing module.

- Issue #17754: Make ctypes.util.find_library() independent of the locale.

- Issue #17968: Fix memory leak in os.listxattr().

- Issue #17606: Fixed support of encoded byte strings in the XMLGenerator
  characters() and ignorableWhitespace() methods.  Original patch by Sebastian
  Ortiz Vasquez.

- Issue #17732: Ignore distutils.cfg options pertaining to install paths if a
  virtual environment is active.

- Issue #17915: Fix interoperability of xml.sax with file objects returned by
  codecs.open().

- Issue #16601: Restarting iteration over tarfile really restarts rather
  than continuing from where it left off.  Patch by Michael Birtwell.

- Issue #17289: The readline module now plays nicer with external modules
  or applications changing the rl_completer_word_break_characters global
  variable.  Initial patch by Bradley Froehle.

- Issue #12181: select module: Fix struct kevent definition on OpenBSD 64-bit
  platforms. Patch by Federico Schwindt.

- Issue #11816: multiple improvements to the dis module: get_instructions
  generator, ability to redirect output to a file, Bytecode and Instruction
  abstractions. Patch by Nick Coghlan, Ryan Kelly and Thomas Kluyver.

- Issue #13831: Embed stringification of remote traceback in local
  traceback raised when pool task raises an exception.

- Issue #15528: Add weakref.finalize to support finalization using
  weakref callbacks.

- Issue #14173: Avoid crashing when reading a signal handler during
  interpreter shutdown.

- Issue #15902: Fix imp.load_module() accepting None as a file when loading an
  extension module.

- Issue #13721: SSLSocket.getpeercert() and SSLSocket.do_handshake() now
  raise an OSError with ENOTCONN, instead of an AttributeError, when the
  SSLSocket is not connected.

- Issue #14679: add an __all__ (that contains only HTMLParser) to html.parser.

- Issue #17802: Fix an UnboundLocalError in html.parser.  Initial tests by
  Thomas Barlow.

- Issue #17358: Modules loaded by imp.load_source() and load_compiled() (and by
  extension load_module()) now have a better chance of working when reloaded.

- Issue #17804: New function ``struct.iter_unpack`` allows for streaming
  struct unpacking.

- Issue #17830: When keyword.py is used to update a keyword file, it now
  preserves the line endings of the original file.

- Issue #17272: Making the urllib.request's Request.full_url a descriptor.
  Fixes bugs with assignment to full_url. Patch by Demian Brecht.

- Issue #17353: Plistlib emitted empty data tags with deeply nested datastructures

- Issue #11714: Use 'with' statements to assure a Semaphore releases a
  condition variable.  Original patch by Thomas Rachel.

- Issue #16624: `subprocess.check_output` now accepts an `input` argument,
  allowing the subprocess's stdin to be provided as a (byte) string.
  Patch by Zack Weinberg.

- Issue #17795: Reverted backwards-incompatible change in SysLogHandler with
  Unix domain sockets.

- Issue #16694: Add a pure Python implementation of the operator module.
  Patch by Zachary Ware.

- Issue #11182: remove the unused and undocumented pydoc.Scanner class.
  Patch by Martin Morrison.

- Issue #17741: Add ElementTree.XMLPullParser, an event-driven parser for
  non-blocking applications.

- Issue #17555: Fix ForkAwareThreadLock so that size of after fork
  registry does not grow exponentially with generation of process.

- Issue #17707: fix regression in multiprocessing.Queue's get() method where
  it did not block for short timeouts.

- Issue #17720: Fix the Python implementation of pickle.Unpickler to correctly
  process the APPENDS opcode when it is used on non-list objects.

- Issue #17012: shutil.which() no longer falls back to the PATH environment
  variable if an empty path argument is specified.  Patch by Serhiy Storchaka.

- Issue #17710: Fix pickle raising a SystemError on bogus input.

- Issue #17341: Include the invalid name in the error messages from re about
  invalid group names.

- Issue #17702: os.environ now raises KeyError with the original environment
  variable name (str on UNIX), instead of using the encoded name (bytes on
  UNIX).

- Issue #16163: Make the importlib based version of pkgutil.iter_importers
  work for submodules. Initial patch by Berker Peksag.

- Issue #16804: Fix a bug in the 'site' module that caused running
  'python -S -m site' to incorrectly throw an exception.

- Issue #15480: Remove the deprecated and unused TYPE_INT64 code from marshal.
  Initial patch by Daniel Riti.

- Issue #2118: SMTPException is now a subclass of OSError.

- Issue #17016: Get rid of possible pointer wraparounds and integer overflows
  in the re module.  Patch by Nickolai Zeldovich.

- Issue #16658: add missing return to HTTPConnection.send().
  Patch by Jeff Knupp.

- Issue #9556: the logging package now allows specifying a time-of-day for a
  TimedRotatingFileHandler to rotate.

- Issue #14971: unittest test discovery no longer gets confused when a function
  has a different __name__ than its name in the TestCase class dictionary.

- Issue #17487: The wave getparams method now returns a namedtuple rather than
  a plain tuple.

- Issue #17675: socket repr() provides local and remote addresses (if any).
  Patch by Giampaolo Rodola'

- Issue #17093: Make the ABCs in importlib.abc provide default values or raise
  reasonable exceptions for their methods to make them more amenable to super()
  calls.

- Issue #17566: Make importlib.abc.Loader.module_repr() optional instead of an
  abstractmethod; now it raises NotImplementedError so as to be ignored by default.

- Issue #17678: Remove the use of deprecated method in http/cookiejar.py by
  changing the call to get_origin_req_host() to origin_req_host.

- Issue #17666: Fix reading gzip files with an extra field.

- Issue #16475: Support object instancing, recursion and interned strings
  in marshal

- Issue #17502: Process DEFAULT values in mock side_effect that returns iterator.

- Issue #16795: On the ast.arguments object, unify vararg with varargannotation
  and kwarg and kwargannotation. Change the column offset of ast.Attribute to be
  at the attribute name.

- Issue #17434: Properly raise a SyntaxError when a string occurs between future
  imports.

- Issue #17117: Import and @importlib.util.set_loader now set __loader__ when
  it has a value of None or the attribute doesn't exist.

- Issue #17032: The "global" in the "NameError: global name 'x' is not defined"
  error message has been removed.  Patch by Ram Rachum.

- Issue #18080: When building a C extension module on OS X, if the compiler
  is overridden with the CC environment variable, use the new compiler as
  the default for linking if LDSHARED is not also overridden.  This restores
  Distutils behavior introduced in 3.2.3 and inadvertently dropped in 3.3.0.

- Issue #18113: Fixed a refcount leak in the curses.panel module's
  set_userptr() method.  Reported by Atsuo Ishimoto.

- Implement PEP 443 "Single-dispatch generic functions".

- Implement PEP 435 "Adding an Enum type to the Python standard library".

- Issue #15596: Faster pickling of unicode strings.

- Issue #17572: Avoid chained exceptions when passing bad directives to
  time.strptime().  Initial patch by Claudiu Popa.

- Issue #17435: threading.Timer's __init__ method no longer uses mutable
  default values for the args and kwargs parameters.

- Issue #17526: fix an IndexError raised while passing code without filename to
  inspect.findsource().  Initial patch by Tyler Doyle.

- Issue #17540: Added style parameter to logging formatter configuration by dict.

- Issue #16692: The ssl module now supports TLS 1.1 and TLS 1.2.  Initial
  patch by Michele Orrù.

- Issue #17025: multiprocessing: Reduce Queue and SimpleQueue contention.

- Issue #17536: Add to webbrowser's browser list: www-browser, x-www-browser,
  iceweasel, iceape.

- Issue #17150: pprint now uses line continuations to wrap long string
  literals.

- Issue #17488: Change the subprocess.Popen bufsize parameter default value
  from unbuffered (0) to buffering (-1) to match the behavior existing code
  expects and match the behavior of the subprocess module in Python 2 to avoid
  introducing hard to track down bugs.

- Issue #17521: Corrected non-enabling of logger following two calls to
  fileConfig().

- Issue #17508: Corrected logging MemoryHandler configuration in dictConfig()
  where the target handler wasn't configured first.

- Issue #17209: curses.window.get_wch() now correctly handles KeyboardInterrupt
  (CTRL+c).

- Issue #5713: smtplib now handles 421 (closing connection) error codes when
  sending mail by closing the socket and reporting the 421 error code via the
  exception appropriate to the command that received the error response.

- Issue #16997: unittest.TestCase now provides a subTest() context manager
  to procedurally generate, in an easy way, small test instances.

- Issue #17485: Also delete the Request Content-Length header if the data
  attribute is deleted.  (Follow on to issue Issue #16464).

- Issue #15927: CVS now correctly parses escaped newlines and carriage
  when parsing with quoting turned off.

- Issue #17467: add readline and readlines support to mock_open in
  unittest.mock.

- Issue #13248: removed deprecated and undocumented difflib.isbjunk,
  isbpopular.

- Issue #17192: Update the ctypes module's libffi to v3.0.13.  This
  specifically addresses a stack misalignment issue on x86 and issues on
  some more recent platforms.

- Issue #8862: Fixed curses cleanup when getkey is interrputed by a signal.

- Issue #17443: imaplib.IMAP4_stream was using the default unbuffered IO
  in subprocess, but the imap code assumes buffered IO.  In Python2 this
  worked by accident.  IMAP4_stream now explicitly uses buffered IO.

- Issue #17476: Fixed regression relative to Python2 in undocumented pydoc
  'allmethods'; it was missing unbound methods on the class.

- Issue #17474: Remove the deprecated methods of Request class.

- Issue #16709: unittest discover order is no-longer filesystem specific. Patch
  by Jeff Ramnani.

- Use the HTTPS PyPI url for upload, overriding any plain HTTP URL in pypirc.

- Issue #5024: sndhdr.whichhdr now returns the frame count for WAV files
  rather than -1.

- Issue #17460: Remove the strict argument of HTTPConnection and removing the
  DeprecationWarning being issued from 3.2 onwards.

- Issue #16880: Do not assume _imp.load_dynamic() is defined in the imp module.

- Issue #16389: Fixed a performance regression relative to Python 3.1 in the
  caching of compiled regular expressions.

- Added missing FeedParser and BytesFeedParser to email.parser.__all__.

- Issue #17431: Fix missing import of BytesFeedParser in email.parser.

- Issue #12921: http.server's send_error takes an explain argument to send more
  information in response. Patch contributed by Karl.

- Issue #17414: Add timeit, repeat, and default_timer to timeit.__all__.

- Issue #1285086: Get rid of the refcounting hack and speed up
  urllib.parse.unquote() and urllib.parse.unquote_to_bytes().

- Issue #17099: Have importlib.find_loader() raise ValueError when __loader__
  is not set, harmonizing with what happens when the attribute is set to None.

- Expose the O_PATH constant in the os module if it is available.

- Issue #17368: Fix an off-by-one error in the Python JSON decoder that caused
  a failure while decoding empty object literals when object_pairs_hook was
  specified.

- Issue #17385: Fix quadratic behavior in threading.Condition.  The FIFO
  queue now uses a deque instead of a list.

- Issue #15806: Add contextlib.ignore().  This creates a context manager to
  ignore specified exceptions, replacing the "except SomeException: pass" idiom.

- Issue #14645: The email generator classes now produce output using the
  specified linesep throughout.  Previously if the prolog, epilog, or
  body were stored with a different linesep, that linesep was used.  This
  fix corrects an RFC non-compliance issue with smtplib.send_message.

- Issue #17278: Fix a crash in heapq.heappush() and heapq.heappop() when
  the list is being resized concurrently.

- Issue #16962: Use getdents64 instead of the obsolete getdents syscall
  in the subprocess module on Linux.

- Issue #16935: unittest now counts the module as skipped if it raises SkipTest,
  instead of counting it as an error.  Patch by Zachary Ware.

- Issue #17018: Make Process.join() retry if os.waitpid() fails with EINTR.

- Issue #17223: array module: Fix a crasher when converting an array containing
  invalid characters (outside range [U+0000; U+10ffff]) to Unicode:
  repr(array), str(array) and array.tounicode(). Patch written by Manuel Jacob.

- Issue #17197: profile/cProfile modules refactored so that code of run() and
  runctx() utility functions is not duplicated in both modules.

- Issue #14720: sqlite3: Convert datetime microseconds correctly.
  Patch by Lowe Thiderman.

- Issue #15132: Allow a list for the defaultTest argument of
  unittest.TestProgram. Patch by Jyrki Pulliainen.

- Issue #17225: JSON decoder now counts columns in the first line starting
  with 1, as in other lines.

- Issue #6623: Added explicit DeprecationWarning for ftplib.netrc, which has
  been deprecated and undocumented for a long time.

- Issue #13700: Fix byte/string handling in imaplib authentication when an
  authobject is specified.

- Issue #13153: Tkinter functions now raise TclError instead of ValueError when
  a string argument contains non-BMP character.

- Issue #9669: Protect re against infinite loops on zero-width matching in
  non-greedy repeat.  Patch by Matthew Barnett.

- Issue #13169: The maximal repetition number in a regular expression has been
  increased from 65534 to 2147483647 (on 32-bit platform) or 4294967294 (on
  64-bit).

- Issue #17143: Fix a missing import in the trace module.  Initial patch by
  Berker Peksag.

- Issue #15220: email.feedparser's line splitting algorithm is now simpler and
  faster.

- Issue #16743: Fix mmap overflow check on 32 bit Windows.

- Issue #16996: webbrowser module now uses shutil.which() to find a
  web-browser on the executable search path.

- Issue #16800: tempfile.gettempdir() no longer left temporary files when
  the disk is full.  Original patch by Amir Szekely.

- Issue #17192: Import libffi-3.0.12.

- Issue #16564: Fixed regression relative to Python2 in the operation of
  email.encoders.encode_7or8bit when used with binary data.

- Issue #17052: unittest discovery should use self.testLoader.

- Issue #4591: Uid and gid values larger than 2**31 are supported now.

- Issue #17141: random.vonmisesvariate() no longer hangs for large kappas.

- Issue #17149: Fix random.vonmisesvariate to always return results in
  [0, 2*math.pi].

- Issue #1470548: XMLGenerator now works with binary output streams.

- Issue #6975: os.path.realpath() now correctly resolves multiple nested
  symlinks on POSIX platforms.

- Issue #13773: sqlite3.connect() gets a new `uri` parameter to pass the
  filename as a URI, allowing custom options to be passed.

- Issue #16564: Fixed regression relative to Python2 in the operation of
  email.encoders.encode_noop when used with binary data.

- Issue #10355: The mode, name, encoding and newlines properties now work on
  SpooledTemporaryFile objects even when they have not yet rolled over.
  Obsolete method xreadline (which has never worked in Python 3) has been
  removed.

- Issue #16686: Fixed a lot of bugs in audioop module.  Fixed crashes in
  avgpp(), maxpp() and ratecv().  Fixed an integer overflow in add(), bias(),
  and ratecv().  reverse(), lin2lin() and ratecv() no more lose precision for
  32-bit samples.  max() and rms() no more returns a negative result and
  various other functions now work correctly with 32-bit sample -0x80000000.

- Issue #17073: Fix some integer overflows in sqlite3 module.

- Issue #16723: httplib.HTTPResponse no longer marked closed when the connection
  is automatically closed.

- Issue #15359: Add CAN_BCM protocol support to the socket module. Patch by
  Brian Thorne.

- Issue #16948: Fix quoted printable body encoding for non-latin1 character
  sets in the email package.

- Issue #16811: Fix folding of headers with no value in the provisional email
  policies.

- Issue #17132: Update symbol for "yield from" grammar changes.

- Issue #17076: Make copying of xattrs more tolerant of missing FS support.
  Patch by Thomas Wouters.

- Issue #17089: Expat parser now correctly works with string input when the
  internal XML encoding is not UTF-8 or US-ASCII.  It also now accepts bytes
  and strings larger than 2 GiB.

- Issue #6083: Fix multiple segmentation faults occurred when PyArg_ParseTuple
  parses nested mutating sequence.

- Issue #5289: Fix ctypes.util.find_library on Solaris.

- Issue #17106: Fix a segmentation fault in io.TextIOWrapper when an underlying
  stream or a decoder produces data of an unexpected type (i.e. when
  io.TextIOWrapper initialized with text stream or use bytes-to-bytes codec).

- Issue #17015: When it has a spec, a Mock object now inspects its signature
  when matching calls, so that arguments can be matched positionally or
  by name.

- Issue #15633: httplib.HTTPResponse is now mark closed when the server
  sends less than the advertised Content-Length.

- Issue #12268: The io module file object write methods no longer abort early
  when one of its write system calls is interrupted (EINTR).

- Issue #6972: The zipfile module no longer overwrites files outside of
  its destination path when extracting malicious zip files.

- Issue #4844: ZipFile now raises BadZipFile when opens a ZIP file with an
  incomplete "End of Central Directory" record.  Original patch by Guilherme
  Polo and Alan McIntyre.

- Issue #17071: Signature.bind() now works when one of the keyword arguments
  is named ``self``.

- Issue #12004: Fix an internal error in PyZipFile when writing an invalid
  Python file.  Patch by Ben Morgan.

- Have py_compile use importlib as much as possible to avoid code duplication.
  Code now raises FileExistsError if the file path to be used for the
  byte-compiled file is a symlink or non-regular file as a warning that import
  will not keep the file path type if it writes to that path.

- Issue #16972: Have site.addpackage() consider already known paths even when
  none are explicitly passed in. Bug report and fix by Kirill.

- Issue #1602133: on Mac OS X a shared library build (``--enable-shared``)
  now fills the ``os.environ`` variable correctly.

- Issue #15505: `unittest.installHandler` no longer assumes SIGINT handler is
  set to a callable object.

- Issue #13454: Fix a crash when deleting an iterator created by itertools.tee()
  if all other iterators were very advanced before.

- Issue #12411: Fix to cgi.parse_multipart to correctly use bytes boundaries
  and bytes data. Patch by Jonas Wagner.

- Issue #16957: shutil.which() no longer searches a bare file name in the
  current directory on Unix and no longer searches a relative file path with
  a directory part in PATH directories.  Patch by Thomas Kluyver.

- Issue #1159051: GzipFile now raises EOFError when reading a corrupted file
  with truncated header or footer.

- Issue #16993: shutil.which() now preserves the case of the path and extension
  on Windows.

- Issue #16992: On Windows in signal.set_wakeup_fd, validate the file
  descriptor argument.

- Issue #16422: For compatibility with the Python version, the C version of
  decimal now uses strings instead of integers for rounding mode constants.

- Issue #15861: tkinter now correctly works with lists and tuples containing
  strings with whitespaces, backslashes or unbalanced braces.

- Issue #9720: zipfile now writes correct local headers for files larger than
  4 GiB.

- Issue #16955: Fix the poll() method for multiprocessing's socket
  connections on Windows.

- SSLContext.load_dh_params() now properly closes the input file.

- Issue #15031: Refactor some .pyc management code to cut down on code
  duplication. Thanks to Ronan Lamy for the report and taking an initial stab
  at the problem.

- Issue #16398: Optimize deque.rotate() so that it only moves pointers
  and doesn't touch the underlying data with increfs and decrefs.

- Issue #16900: Issue a ResourceWarning when an ssl socket is left unclosed.

- Issue #13899: ``\A``, ``\Z``, and ``\B`` now correctly match the A, Z,
  and B literals when used inside character classes (e.g. ``'[\A]'``).
  Patch by Matthew Barnett.

- Issue #15545: Fix regression in sqlite3's iterdump method where it was
  failing if the connection used a row factory (such as sqlite3.Row) that
  produced unsortable objects. (Regression was introduced by fix for 9750).

- fcntl: add F_DUPFD_CLOEXEC constant, available on Linux 2.6.24+.

- Issue #15972: Fix error messages when os functions expecting a file name or
  file descriptor receive the incorrect type.

- Issue #8109: The ssl module now has support for server-side SNI, thanks
  to a :meth:`SSLContext.set_servername_callback` method.  Patch by Daniel
  Black.

- Issue #16860: In tempfile, use O_CLOEXEC when available to set the
  close-on-exec flag atomically.

- Issue #16674: random.getrandbits() is now 20-40% faster for small integers.

- Issue #16009: JSON error messages now provide more information.

- Issue #16828: Fix error incorrectly raised by bz2.compress(b'') and
  bz2.BZ2Compressor.compress(b''). Initial patch by Martin Packman.

- Issue #16833: In http.client.HTTPConnection, do not concatenate the request
  headers and body when the payload exceeds 16 KB, since it can consume more
  memory for no benefit.  Patch by Benno Leslie.

- Issue #16541: tk_setPalette() now works with keyword arguments.

- Issue #16820: In configparser, `parser.popitem()` no longer raises ValueError.
  This makes `parser.clean()` work correctly.

- Issue #16820: In configparser, ``parser['section'] = {}`` now preserves
  section order within the parser. This makes `parser.update()` preserve section
  order as well.

- Issue #16820: In configparser, ``parser['DEFAULT'] = {}`` now correctly
  clears previous values stored in the default section. Same goes for
  ``parser.update({'DEFAULT': {}})``.

- Issue #9586: Redefine SEM_FAILED on MacOSX to keep compiler happy.

- Issue #16787: Increase asyncore and asynchat default output buffers size, to
  decrease CPU usage and increase throughput.

- Issue #10527: make multiprocessing use poll() instead of select() if available.

- Issue #16688: Now regexes contained backreferences correctly work with
  non-ASCII strings.  Patch by Matthew Barnett.

- Issue #16486: Make aifc files act as context managers.

- Issue #16485: Now file descriptors are closed if file header patching failed
  on closing an aifc file.

- Issue #16640: Run less code under a lock in sched module.

- Issue #16165: sched.scheduler.run() no longer blocks a scheduler for other
  threads.

- Issue #16641: Default values of sched.scheduler.enter() are no longer
  modifiable.

- Issue #16618: Make glob.glob match consistently across strings and bytes
  regarding leading dots.  Patch by Serhiy Storchaka.

- Issue #16788: Add samestat to Lib/ntpath.py

- Issue #16713: Parsing of 'tel' urls using urlparse separates params from
  path.

- Issue #16443: Add docstrings to regular expression match objects.
  Patch by Anton Kasyanov.

- Issue #15701: Fix HTTPError info method call to return the headers information.

- Issue #16752: Add a missing import to modulefinder. Patch by Berker Peksag.

- Issue #16646: ftplib.FTP.makeport() might lose socket error details.
  (patch by Serhiy Storchaka)

- Issue #16626: Fix infinite recursion in glob.glob() on Windows when the
  pattern contains a wildcard in the drive or UNC path.  Patch by Serhiy
  Storchaka.

- Issue #15783: Except for the number methods, the C version of decimal now
  supports all None default values present in decimal.py. These values were
  largely undocumented.

- Issue #11175: argparse.FileType now accepts encoding and errors
  arguments. Patch by Lucas Maystre.

- Issue #16488: epoll() objects now support the `with` statement.  Patch
  by Serhiy Storchaka.

- Issue #16298: In HTTPResponse.read(), close the socket when there is no
  Content-Length and the incoming stream is finished.  Patch by Eran
  Rundstein.

- Issue #16049: Add abc.ABC class to enable the use of inheritance to create
  ABCs, rather than the more cumbersome metaclass=ABCMeta. Patch by Bruno
  Dupuis.

- Expose the TCP_FASTOPEN and MSG_FASTOPEN flags in socket when they're
  available.

- Issue #15701: Add a .headers attribute to urllib.error.HTTPError. Patch
  contributed by Berker Peksag.

- Issue #15872: Fix 3.3 regression introduced by the new fd-based shutil.rmtree
  that caused it to not ignore certain errors when ignore_errors was set.
  Patch by Alessandro Moura and Serhiy Storchaka.

- Issue #16248: Disable code execution from the user's home directory by
  tkinter when the -E flag is passed to Python.  Patch by Zachary Ware.

- Issue #13390: New function :func:`sys.getallocatedblocks()` returns the
  number of memory blocks currently allocated.

- Issue #16628: Fix a memory leak in ctypes.resize().

- Issue #13614: Fix setup.py register failure with invalid rst in description.
  Patch by Julien Courteau and Pierre Paul Lefebvre.

- Issue #13512: Create ~/.pypirc securely (CVE-2011-4944).  Initial patch by
  Philip Jenvey, tested by Mageia and Debian.

- Issue #7719: Make distutils ignore ``.nfs*`` files instead of choking later
  on.  Initial patch by SilentGhost and Jeff Ramnani.

- Issue #13120: Allow calling pdb.set_trace() from thread.
  Patch by Ilya Sandler.

- Issue #16585: Make CJK encoders support error handlers that return bytes per
  PEP 383.

- Issue #10182: The re module doesn't truncate indices to 32 bits anymore.
  Patch by Serhiy Storchaka.

- Issue #16333: use (",", ": ") as default separator in json when indent is
  specified, to avoid trailing whitespace.  Patch by Serhiy Storchaka.

- Issue #16573: In 2to3, treat enumerate() like a consuming call, so superfluous
  list() calls aren't added to filter(), map(), and zip() which are directly
  passed enumerate().

- Issue #16464: Reset the Content-Length header when a urllib Request is reused
  with new data.

- Issue #12848: The pure Python pickle implementation now treats object
  lengths as unsigned 32-bit integers, like the C implementation does.
  Patch by Serhiy Storchaka.

- Issue #16423: urllib.request now has support for ``data:`` URLs.  Patch by
  Mathias Panzenböck.

- Issue #4473: Add a POP3.stls() to switch a clear-text POP3 session into
  an encrypted POP3 session, on supported servers.  Patch by Lorenzo Catucci.

- Issue #4473: Add a POP3.capa() method to query the capabilities advertised
  by the POP3 server.  Patch by Lorenzo Catucci.

- Issue #4473: Ensure the socket is shutdown cleanly in POP3.close().
  Patch by Lorenzo Catucci.

- Issue #16522: added FAIL_FAST flag to doctest.

- Issue #15627: Add the importlib.abc.InspectLoader.source_to_code() method.

- Issue #16408: Fix file descriptors not being closed in error conditions
  in the zipfile module.  Patch by Serhiy Storchaka.

- Issue #14631: Add a new :class:`weakref.WeakMethod` to simulate weak
  references to bound methods.

- Issue #16469: Fix exceptions from float -> Fraction and Decimal -> Fraction
  conversions for special values to be consistent with those for float -> int
  and Decimal -> int.  Patch by Alexey Kachayev.

- Issue #16481: multiprocessing no longer leaks process handles on Windows.

- Issue #12428: Add a pure Python implementation of functools.partial().
  Patch by Brian Thorne.

- Issue #16140: The subprocess module no longer double closes its child
  subprocess.PIPE parent file descriptors on child error prior to exec().

- Remove a bare print to stdout from the subprocess module that could have
  happened if the child process wrote garbage to its pre-exec error pipe.

- The subprocess module now raises its own SubprocessError instead of a
  RuntimeError in various error situations which should not normally happen.

- Issue #16327: The subprocess module no longer leaks file descriptors
  used for stdin/stdout/stderr pipes to the child when fork() fails.

- Issue #14396: Handle the odd rare case of waitpid returning 0 when not
  expected in subprocess.Popen.wait().

- Issue #16411: Fix a bug where zlib.decompressobj().flush() might try to access
  previously-freed memory. Patch by Serhiy Storchaka.

- Issue #16357: fix calling accept() on a SSLSocket created through
  SSLContext.wrap_socket().  Original patch by Jeff McNeil.

- Issue #16409: The reporthook callback made by the legacy
  urllib.request.urlretrieve API now properly supplies a constant non-zero
  block_size as it did in Python 3.2 and 2.7.  This matches the behavior of
  urllib.request.URLopener.retrieve.

- Issue #16431: Use the type information when constructing a Decimal subtype
  from a Decimal argument.

- Issue #15641: Clean up deprecated classes from importlib.
  Patch by Taras Lyapun.

- Issue #16350: zlib.decompressobj().decompress() now accumulates data from
  successive calls after EOF in unused_data, instead of only saving the argument
  to the last call. decompressobj().flush() now correctly sets unused_data and
  unconsumed_tail. A bug in the handling of MemoryError when setting the
  unconsumed_tail attribute has also been fixed. Patch by Serhiy Storchaka.

- Issue #12759: sre_parse now raises a proper error when the name of the group
  is missing.  Initial patch by Serhiy Storchaka.

- Issue #16152: fix tokenize to ignore whitespace at the end of the code when
  no newline is found.  Patch by Ned Batchelder.

- Issue #16284: Prevent keeping unnecessary references to worker functions
  in concurrent.futures ThreadPoolExecutor.

- Issue #16230: Fix a crash in select.select() when one of the lists changes
  size while iterated on.  Patch by Serhiy Storchaka.

- Issue #16228: Fix a crash in the json module where a list changes size
  while it is being encoded.  Patch by Serhiy Storchaka.

- Issue #16351: New function gc.get_stats() returns per-generation collection
  statistics.

- Issue #14897: Enhance error messages of struct.pack and
  struct.pack_into. Patch by Matti Mäki.

- Issue #16316: mimetypes now recognizes the .xz and .txz (.tar.xz) extensions.
  Patch by Serhiy Storchaka.

- Issue #12890: cgitb no longer prints spurious <p> tags in text
  mode when the logdir option is specified.

- Issue #16307: Fix multiprocessing.Pool.map_async not calling its callbacks.
  Patch by Janne Karila.

- Issue #16305: Fix a segmentation fault occurring when interrupting
  math.factorial.

- Issue #16116: Fix include and library paths to be correct when building C
  extensions in venvs.

- Issue #16245: Fix the value of a few entities in html.entities.html5.

- Issue #16301: Fix the localhost verification in urllib/request.py for ``file://``
  urls.

- Issue #16250: Fix the invocations of URLError which had misplaced filename
  attribute for exception.

- Issue #10836: Fix exception raised when file not found in urlretrieve
  Initial patch by Ezio Melotti.

- Issue #14398: Fix size truncation and overflow bugs in the bz2 module.

- Issue #12692: Fix resource leak in urllib.request when talking to an HTTP
  server that does not include a ``Connection: close`` header in its responses.

- Issue #12034: Fix bogus caching of result in check_GetFinalPathNameByHandle.
  Patch by Atsuo Ishimoto.

- Improve performance of `lzma.LZMAFile` (see also issue #16034).

- Issue #16220: wsgiref now always calls close() on an iterable response.
  Patch by Brent Tubbs.

- Issue #16270: urllib may hang when used for retrieving files via FTP by using
  a context manager.  Patch by Giampaolo Rodola'.

- Issue #16461: Wave library should be able to deal with 4GB wav files,
  and sample rate of 44100 Hz.

- Issue #16176: Properly identify Windows 8 via platform.platform()

- Issue #16088: BaseHTTPRequestHandler's send_error method includes a
  Content-Length header in its response now. Patch by Antoine Pitrou.

- Issue #16114: The subprocess module no longer provides a misleading error
  message stating that args[0] did not exist when either the cwd or executable
  keyword arguments specified a path that did not exist.

- Issue #16169: Fix ctypes.WinError()'s confusion between errno and winerror.

- Issue #16110: logging.fileConfig now accepts a pre-initialised ConfigParser
  instance.

- Issue #1492704: shutil.copyfile() raises a distinct SameFileError now if
  source and destination are the same file. Patch by Atsuo Ishimoto.

- Issue #13896: Make shelf instances work with 'with' as context managers.
  Original patch by Filip Gruszczyński.

- Issue #15417: Add support for csh and fish in venv activation scripts.

- Issue #14377: ElementTree.write and some of the module-level functions have
  a new parameter - *short_empty_elements*. It controls how elements with no
  contents are emitted.

- Issue #16089: Allow ElementTree.TreeBuilder to work again with a non-Element
  element_factory (fixes a regression in SimpleTAL).

- Issue #9650: List commonly used format codes in time.strftime and
  time.strptime docsttings.  Original patch by Mike Hoy.

- Issue #15452: logging configuration socket listener now has a verify option
  that allows an application to apply a verification function to the
  received configuration data before it is acted upon.

- Issue #16034: Fix performance regressions in the new `bz2.BZ2File`
  implementation.  Initial patch by Serhiy Storchaka.

- `pty.spawn()` now returns the child process status returned by `os.waitpid()`.

- Issue #15756: `subprocess.poll()` now properly handles `errno.ECHILD` to
  return a returncode of 0 when the child has already exited or cannot be waited
  on.

- Issue #15323: Improve failure message of `Mock.assert_called_once_with()`.

- Issue #16064: ``unittest -m`` claims executable is "python", not "python3".

- Issue #12376: Pass on parameters in `TextTestResult.__init__()` super call.

- Issue #15222: Insert blank line after each message in mbox mailboxes.

- Issue #16013: Fix `csv.Reader` parsing issue with ending quote characters.
  Patch by Serhiy Storchaka.

- Issue #15421: Fix an OverflowError in `Calendar.itermonthdates()` after
  `datetime.MAXYEAR`.  Patch by Cédric Krier.

- Issue #16112: platform.architecture does not correctly escape argument to
  /usr/bin/file.  Patch by David Benjamin.

- Issue #15970: `xml.etree.ElementTree` now serializes correctly the empty HTML
  elements 'meta' and 'param'.

- Issue #15842: The `SocketIO.{readable,writable,seekable}` methods now raise
  ValueError when the file-like object is closed.  Patch by Alessandro Moura.

- Issue #15876: Fix a refleak in the `curses` module: window.encoding.

- Issue #15881: Fix `atexit` hook in `multiprocessing`.  Original patch by Chris
  McDonough.

- Issue #15841: The readable(), writable() and seekable() methods of
  `io.BytesIO` and `io.StringIO` objects now raise ValueError when the object
  has been closed.  Patch by Alessandro Moura.

- Issue #15447: Use `subprocess.DEVNULL` in webbrowser, instead of opening
  `os.devnull` explicitly and leaving it open.

- Issue #15509: `webbrowser.UnixBrowser` no longer passes empty arguments to
  Popen when ``%action`` substitutions produce empty strings.

- Issue #12776, issue #11839: Call `argparse` type function (specified by
  add_argument) only once. Before, the type function was called twice in the
  case where the default was specified and the argument was given as well.  This
  was especially problematic for the FileType type, as a default file would
  always be opened, even if a file argument was specified on the command line.

- Issue #15906: Fix a regression in argparse caused by the preceding change,
  when ``action='append'``, ``type='str'`` and ``default=[]``.

- Issue #16113: Added sha3 module based on the Keccak reference implementation
  3.2. The `hashlib` module has four additional hash algorithms: `sha3_224`,
  `sha3_256`, `sha3_384` and `sha3_512`. As part of the patch some common
  code was moved from _hashopenssl.c to hashlib.h.

- ctypes.call_commethod was removed, since its only usage was in the defunct
  samples directory.

- Issue #16692: Added TLSv1.1 and TLSv1.2 support for the ssl modules.

- Issue #16832: add abc.get_cache_token() to expose cache validity checking
  support in ABCMeta.

IDLE
----

- Issue #18429: Format / Format Paragraph, now works when comment blocks
  are selected. As with text blocks, this works best when the selection
  only includes complete lines.

- Issue #18226: Add docstrings and unittests for FormatParagraph.py.
  Original patches by Todd Rovito and Phil Webster.

- Issue #18279: Format - Strip trailing whitespace no longer marks a file as
  changed when it has not been changed. This fix followed the addition of a
  test file originally written by Phil Webster (the issue's main goal).

- Issue #7136: In the Idle File menu, "New Window" is renamed "New File".
  Patch by Tal Einat, Roget Serwy, and Todd Rovito.

- Remove dead imports of imp.

- Issue #18196: Avoid displaying spurious SystemExit tracebacks.

- Issue #5492: Avoid traceback when exiting IDLE caused by a race condition.

- Issue #17511: Keep IDLE find dialog open after clicking "Find Next".
  Original patch by Sarah K.

- Issue #18055: Move IDLE off of imp and on to importlib.

- Issue #15392: Create a unittest framework for IDLE.
  Initial patch by Rajagopalasarma Jayakrishnan.
  See Lib/idlelib/idle_test/README.txt for how to run Idle tests.

- Issue #14146: Highlight source line while debugging on Windows.

- Issue #17838: Allow sys.stdin to be reassigned.

- Issue #13495: Avoid loading the color delegator twice in IDLE.

- Issue #17798: Allow IDLE to edit new files when specified on command line.

- Issue #14735: Update IDLE docs to omit "Control-z on Windows".

- Issue #17532: Always include Options menu for IDLE on OS X.
  Patch by Guilherme Simões.

- Issue #17585: Fixed IDLE regression. Now closes when using exit() or quit().

- Issue #17657: Show full Tk version in IDLE's about dialog.
  Patch by Todd Rovito.

- Issue #17613: Prevent traceback when removing syntax colorizer in IDLE.

- Issue #1207589: Backwards-compatibility patch for right-click menu in IDLE.

- Issue #16887: IDLE now accepts Cancel in tabify/untabify dialog box.

- Issue #17625: In IDLE, close the replace dialog after it is used.

- Issue #14254: IDLE now handles readline correctly across shell restarts.

- Issue #17614: IDLE no longer raises exception when quickly closing a file.

- Issue #6698: IDLE now opens just an editor window when configured to do so.

- Issue #8900: Using keyboard shortcuts in IDLE to open a file no longer
  raises an exception.

- Issue #6649: Fixed missing exit status in IDLE. Patch by Guilherme Polo.

- Issue #17114: IDLE now uses non-strict config parser.

- Issue #9290: In IDLE the sys.std* streams now implement io.TextIOBase
  interface and support all mandatory methods and properties.

- Issue #5066: Update IDLE docs. Patch by Todd Rovito.

- Issue #16829: IDLE printing no longer fails if there are spaces or other
  special characters in the file path.

- Issue #16491: IDLE now prints chained exception tracebacks.

- Issue #16819: IDLE method completion now correctly works for bytes literals.

- Issue #16504: IDLE now catches SyntaxErrors raised by tokenizer. Patch by
  Roger Serwy.

- Issue #16511: Use default IDLE width and height if config param is not valid.
  Patch Serhiy Storchaka.

- Issue #1207589: Add Cut/Copy/Paste items to IDLE right click Context Menu.
  Patch by Todd Rovito.

- Issue #16123: IDLE - deprecate running without a subprocess.
  Patch by Roger Serwy.

Tests
-----

- Issue #1666318: Add a test that shutil.copytree() retains directory
  permissions.  Patch by Catherine Devlin.

- Issue #18273: move the tests in Lib/test/json_tests to Lib/test/test_json
  and make them discoverable by unittest.  Patch by Zachary Ware.

- Fix a fcntl test case on KFreeBSD, Debian #708653 (Petr Salinger).

- Issue #18396: Fix spurious test failure in test_signal on Windows when
  faulthandler is enabled (Patch by Jeremy Kloth)

- Issue #17046: Fix broken test_executable_without_cwd in test_subprocess.

- Issue #15415: Add new temp_dir() and change_cwd() context managers to
  test.support, and refactor temp_cwd() to use them.  Patch by Chris Jerdonek.

- Issue #15494: test.support is now a package rather than a module (Initial
  patch by Indra Talip)

- Issue #17944: test_zipfile now discoverable and uses subclassing to
  generate tests for different compression types.  Fixed a bug with skipping
  some tests due to use of exhausted iterators.

- Issue #18266: test_largefile now works with unittest test discovery and
  supports running only selected tests.  Patch by Zachary Ware.

- Issue #17767: test_locale now works with unittest test discovery.
  Original patch by Zachary Ware.

- Issue #18375: Assume --randomize when --randseed is used for running the
  testsuite.

- Issue #11185: Fix test_wait4 under AIX.  Patch by Sébastien Sablé.

- Issue #18207: Fix test_ssl for some versions of OpenSSL that ignore seconds
  in ASN1_TIME fields.

- Issue #18094: test_uuid no longer reports skipped tests as passed.

- Issue #17992: Add timeouts to asyncore and asynchat tests so that they won't
  accidentally hang.

- Issue #17833: Fix test_gdb failures seen on machines where debug symbols
  for glibc are available (seen on PPC64 Linux).

- Issue #7855: Add tests for ctypes/winreg for issues found in IronPython.
  Initial patch by Dino Viehland.

- Issue #11078: test___all__ now checks for duplicates in __all__.
  Initial patch by R. David Murray.

- Issue #17712: Fix test_gdb failures on Ubuntu 13.04.

- Issue #17835: Fix test_io when the default OS pipe buffer size is larger
  than one million bytes.

- Issue #17065: Use process-unique key for winreg tests to avoid failures if
  test is run multiple times in parallel (eg: on a buildbot host).

- Issue #12820: add tests for the xml.dom.minicompat module.
  Patch by John Chandler and Phil Connell.

- Issue #17691: test_univnewlines now works with unittest test discovery.
  Patch by Zachary Ware.

- Issue #17790: test_set now works with unittest test discovery.
  Patch by Zachary Ware.

- Issue #17789: test_random now works with unittest test discovery.
  Patch by Zachary Ware.

- Issue #17779: test_osx_env now works with unittest test discovery.
  Patch by Zachary Ware.

- Issue #17766: test_iterlen now works with unittest test discovery.
  Patch by Zachary Ware.

- Issue #17690: test_time now works with unittest test discovery.
  Patch by Zachary Ware.

- Issue #17692: test_sqlite now works with unittest test discovery.
  Patch by Zachary Ware.

- Issue #11995: test_pydoc doesn't import all sys.path modules anymore.

- Issue #17448: test_sax now skips if there are no xml parsers available
  instead of raising an ImportError.

- Issue #11420: make test suite pass with -B/DONTWRITEBYTECODE set.
  Initial patch by Thomas Wouters.

- Issue #10652: make tcl/tk tests run after __all__ test, patch by
  Zachary Ware.

- Issue #11963: remove human verification from test_parser and test_subprocess.

- Issue #11732: add a new suppress_crash_popup() context manager to test.support
  that disables crash popups on Windows and use it in test_faulthandler and
  test_capi.

- Issue #13898: test_ssl no longer prints a spurious stack trace on Ubuntu.

- Issue #17283: Share code between `__main__.py` and `regrtest.py` in
  `Lib/test`.

- Issue #17249: convert a test in test_capi to use unittest and reap threads.

- Issue #17107: Test client-side SNI support in urllib.request thanks to
  the new server-side SNI support in the ssl module.  Initial patch by
  Daniel Black.

- Issue #17041: Fix testing when Python is configured with the
  --without-doc-strings.

- Issue #16923: Fix ResourceWarnings in test_ssl.

- Issue #15539: Added regression tests for Tools/scripts/pindent.py.

- Issue #17479: test_io now works with unittest test discovery.
  Patch by Zachary Ware.

- Issue #17066: test_robotparser now works with unittest test discovery.
  Patch by Zachary Ware.

- Issue #17334: test_index now works with unittest test discovery.
  Patch by Zachary Ware.

- Issue #17333: test_imaplib now works with unittest test discovery.
  Patch by Zachary Ware.

- Issue #17082: test_dbm* now work with unittest test discovery.
  Patch by Zachary Ware.

- Issue #17079: test_ctypes now works with unittest test discovery.
  Patch by Zachary Ware.

- Issue #17304: test_hash now works with unittest test discovery.
  Patch by Zachary Ware.

- Issue #17303: test_future* now work with unittest test discovery.
  Patch by Zachary Ware.

- Issue #17163: test_file now works with unittest test discovery.
  Patch by Zachary Ware.

- Issue #16925: test_configparser now works with unittest test discovery.
  Patch by Zachary Ware.

- Issue #16918: test_codecs now works with unittest test discovery.
  Patch by Zachary Ware.

- Issue #16919: test_crypt now works with unittest test discovery.
  Patch by Zachary Ware.

- Issue #16910: test_bytes, test_unicode, and test_userstring now work with
  unittest test discovery.  Patch by Zachary Ware.

- Issue #16905: test_warnings now works with unittest test discovery.
  Initial patch by Berker Peksag.

- Issue #16898: test_bufio now works with unittest test discovery.
  Patch by Zachary Ware.

- Issue #16888: test_array now works with unittest test discovery.
  Patch by Zachary Ware.

- Issue #16896: test_asyncore now works with unittest test discovery.
  Patch by Zachary Ware.

- Issue #16897: test_bisect now works with unittest test discovery.
  Initial patch by Zachary Ware.

- Issue #16852: test_genericpath, test_posixpath, test_ntpath, and test_macpath
  now work with unittest test discovery.  Patch by Zachary Ware.

- Issue #16748: test_heapq now works with unittest test discovery.

- Issue #10646: Tests rearranged for os.samefile/samestat to check for not
  just symlinks but also hard links.

- Issue #15302: Switch regrtest from using getopt to using argparse.

- Issue #15324: Fix regrtest parsing of --fromfile, --match, and --randomize
  options.

- Issue #16702: test_urllib2_localnet tests now correctly ignores proxies for
  localhost tests.

- Issue #16664: Add regression tests for glob's behaviour concerning entries
  starting with a ".".  Patch by Sebastian Kreft.

- Issue #13390: The ``-R`` option to regrtest now also checks for memory
  allocation leaks, using :func:`sys.getallocatedblocks()`.

- Issue #16559: Add more tests for the json module, including some from the
  official test suite at json.org.  Patch by Serhiy Storchaka.

- Issue #16661: Fix the `os.getgrouplist()` test by not assuming that it gives
  the same output as :command:`id -G`.

- Issue #16115: Add some tests for the executable argument to
  subprocess.Popen().  Initial patch by Kushal Das.

- Issue #16126: PyErr_Format format mismatch in _testcapimodule.c.
  Patch by Serhiy Storchaka.

- Issue #15304: Fix warning message when `os.chdir()` fails inside
  `test.support.temp_cwd()`.  Patch by Chris Jerdonek.

- Issue #15802: Fix test logic in `TestMaildir.test_create_tmp()`. Patch by
  Serhiy Storchaka.

- Issue #15557: Added a test suite for the webbrowser module, thanks to Anton
  Barkovsky.

- Issue #16698: Skip posix test_getgroups when built with OS X
  deployment target prior to 10.6.

Build
-----

- Issue #16067: Add description into MSI file to replace installer's
  temporary name.

- Issue #18257: Fix readlink usage in python-config.  Install the python
  version again on Darwin.

- Issue #18481: Add C coverage reporting with gcov and lcov. A new make target
  "coverage-report" creates an instrumented Python build, runs unit tests
  and creates a HTML. The report can be updated with "make coverage-lcov".

- Issue #17845: Clarified the message printed when some module are not built.

- Issue #18256: Compilation fix for recent AIX releases.  Patch by
  David Edelsohn.

- Issue #17547: In configure, explicitly pass -Wformat for the benefit for GCC
  4.8.

- Issue #15172: Document NASM 2.10+ as requirement for building OpenSSL 1.0.1
  on Windows.

- Issue #17591: Use lowercase filenames when including Windows header files.
  Patch by Roumen Petrov.

- Issue #17550: Fix the --enable-profiling configure switch.

- Issue #17425: Build with openssl 1.0.1d on Windows.

- Issue #16754: Fix the incorrect shared library extension on linux. Introduce
  two makefile macros SHLIB_SUFFIX and EXT_SUFFIX. SO now has the value of
  SHLIB_SUFFIX again (as in 2.x and 3.1). The SO macro is removed in 3.4.

- Issue #5033: Fix building of the sqlite3 extension module when the
  SQLite library version has "beta" in it. Patch by Andreas Pelme.

- Issue #17228: Fix building without pymalloc.

- Issue #3718: Use AC_ARG_VAR to set MACHDEP in configure.ac.

- Issue #16235: Implement python-config as a shell script.

- Issue #16769: Remove outdated Visual Studio projects.

- Issue #17031: Fix running regen in cross builds.

- Issue #3754: fix typo in pthread AC_CACHE_VAL.

- Issue #15484: Fix _PYTHON_PROJECT_BASE for srcdir != builddir builds;
  use _PYTHON_PROJECT_BASE in distutils/sysconfig.py.

- Drop support for Windows 2000 (changeset e52df05b496a).

- Issue #17029: Let h2py search the multiarch system include directory.

- Issue #16953: Fix socket module compilation on platforms with
  HAVE_BROKEN_POLL. Patch by Jeffrey Armstrong.

- Issue #16320: Remove redundant Makefile dependencies for strings and bytes.

- Cross compiling needs host and build settings. configure no longer
  creates a broken PYTHON_FOR_BUILD variable when --build is missing.

- Fix cross compiling issue in setup.py, ensure that lib_dirs and inc_dirs are
  defined in cross compiling mode, too.

- Issue #16836: Enable IPv6 support even if IPv6 is disabled on the build host.

- Issue #16593: Have BSD 'make -s' do the right thing, thanks to Daniel Shahaf

- Issue #16262: fix out-of-src-tree builds, if mercurial is not installed.

- Issue #15298: ensure _sysconfigdata is generated in build directory, not
  source directory.

- Issue #15833: Fix a regression in 3.3 that resulted in exceptions being
  raised if importlib failed to write byte-compiled files.  This affected
  attempts to build Python out-of-tree from a read-only source directory.

- Issue #15923: Fix a mistake in ``asdl_c.py`` that resulted in a TypeError
  after 2801bf875a24 (see #15801).

- Issue #16135: Remove OS/2 support.

- Issue #15819: Make sure we can build Python out-of-tree from a read-only
  source directory.  (Somewhat related to issue #9860.)

- Issue #15587: Enable Tk high-resolution text rendering on Macs with
  Retina displays.  Applies to Tkinter apps, such as IDLE, on OS X
  framework builds linked with Cocoa Tk 8.5.

- Issue #17161: make install now also installs a python3 man page.

C-API
-----

- Issue #18351: Fix various issues in a function in importlib provided to help
  PyImport_ExecCodeModuleWithPathnames() (and thus by extension
  PyImport_ExecCodeModule() and PyImport_ExecCodeModuleEx()).

- Issue #9369: The types of `char*` arguments of PyObject_CallFunction() and
  PyObject_CallMethod() now changed to `const char*`.  Based on patches by
  Jörg Müller and Lars Buitinck.

- Issue #17206: Py_CLEAR(), Py_DECREF(), Py_XINCREF() and Py_XDECREF() now
  expand their arguments once instead of multiple times.  Patch written by Illia
  Polosukhin.

- Issue #17522: Add the PyGILState_Check() API.

- Issue #17327: Add PyDict_SetDefault.

- Issue #16881: Fix Py_ARRAY_LENGTH macro for GCC < 3.1.

- Issue #16505: Remove unused Py_TPFLAGS_INT_SUBCLASS.

- Issue #16086: PyTypeObject.tp_flags and PyType_Spec.flags are now unsigned
  (unsigned long and unsigned int) to avoid an undefined behaviour with
  Py_TPFLAGS_TYPE_SUBCLASS ((1 << 31). PyType_GetFlags() result type is
  now unsigned too (unsigned long, instead of long).

- Issue #16166: Add PY_LITTLE_ENDIAN and PY_BIG_ENDIAN macros and unified
  endianness detection and handling.

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

- Issue #23006: Improve the documentation and indexing of dict.__missing__.
  Add an entry in the language datamodel special methods section.
  Revise and index its discussion in the stdtypes mapping/dict section.

- Issue #17701: Improving strftime documentation.

- Issue #18440: Clarify that `hash()` can truncate the value returned from an
  object's custom `__hash__()` method.

- Issue #17844: Add links to encoders and decoders for bytes-to-bytes codecs.

- Issue #14097: improve the "introduction" page of the tutorial.

- Issue #17977: The documentation for the cadefault argument's default value
  in urllib.request.urlopen() is fixed to match the code.

- Issue #6696: add documentation for the Profile objects, and improve
  profile/cProfile docs.  Patch by Tom Pinckney.

- Issue #15940: Specify effect of locale on time functions.

- Issue #17538: Document XML vulnerabilties

- Issue #16642: sched.scheduler timefunc initial default is time.monotonic.
  Patch by Ramchandra Apte

- Issue #17047: remove doubled words in docs and docstrings
  reported by Serhiy Storchaka and Matthew Barnett.

- Issue #15465: Document the versioning macros in the C API docs rather than
  the standard library docs. Patch by Kushal Das.

- Issue #16406: Combine the pages for uploading and registering to PyPI.

- Issue #16403: Document how distutils uses the maintainer field in
  PKG-INFO. Patch by Jyrki Pulliainen.

- Issue #16695: Document how glob handles filenames starting with a
  dot. Initial patch by Jyrki Pulliainen.

- Issue #8890: Stop advertising an insecure practice by replacing uses
  of the /tmp directory with better alternatives in the documentation.
  Patch by Geoff Wilson.

- Issue #17203: add long option names to unittest discovery docs.

- Issue #13094: add "Why do lambdas defined in a loop with different values
  all return the same result?" programming FAQ.

- Issue #14901: Update portions of the Windows FAQ.
  Patch by Ashish Nitin Patil.

- Issue #16267: Better document the 3.3+ approach to combining
  @abstractmethod with @staticmethod, @classmethod and @property

- Issue #15209: Clarify exception chaining description in exceptions module
  documentation

- Issue #15990: Improve argument/parameter documentation.

- Issue #16209: Move the documentation for the str built-in function to a new
  str class entry in the "Text Sequence Type" section.

- Issue #13538: Improve str() and object.__str__() documentation.

- Issue #16489: Make it clearer that importlib.find_loader() needs parent
  packages to be explicitly imported.

- Issue #16400: Update the description of which versions of a given package
  PyPI displays.

- Issue #15677: Document that zlib and gzip accept a compression level of 0 to
  mean 'no compression'. Patch by Brian Brazil.

- Issue #16197: Update winreg docstrings and documentation to match code.
  Patch by Zachary Ware.

- Issue #8040: added a version switcher to the documentation.  Patch by
  Yury Selivanov.

- Issue #16241: Document -X faulthandler command line option.
  Patch by Marek Šuppa.

- Additional comments and some style changes in the concurrent.futures URL
  retrieval example

- Issue #16115: Improve subprocess.Popen() documentation around args, shell,
  and executable arguments.

- Issue #13498: Clarify docs of os.makedirs()'s exist_ok argument.  Done with
  great native-speaker help from R. David Murray.

- Issue #15533: Clarify docs and add tests for `subprocess.Popen()`'s cwd
  argument.

- Issue #15979: Improve timeit documentation.

- Issue #16036: Improve documentation of built-in `int()`'s signature and
  arguments.

- Issue #15935: Clarification of `argparse` docs, re: add_argument() type and
  default arguments.  Patch contributed by Chris Jerdonek.

- Issue #11964: Document a change in v3.2 to the behavior of the indent
  parameter of json encoding operations.

- Issue #15116: Remove references to appscript as it is no longer being
  supported.

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

- Issue #18817: Fix a resource warning in Lib/aifc.py demo.  Patch by
  Vajrasky Kok.

- Issue #18439: Make patchcheck work on Windows for ACKS, NEWS.

- Issue #18448: Fix a typo in Tools/demo/eiffel.py.

- Issue #18457: Fixed saving of formulas and complex numbers in
  Tools/demo/ss1.py.

- Issue #18449: Make Tools/demo/ss1.py work again on Python 3.  Patch by
  Févry Thibault.

- Issue #12990: The "Python Launcher" on OSX could not launch python scripts
  that have paths that include wide characters.

- Issue #15239: Make mkstringprep.py work again on Python 3.

- Issue #17028: Allowed Python arguments to be supplied to the Windows
  launcher.

- Issue #17156: pygettext.py now detects the encoding of source files and
  correctly writes and escapes non-ascii characters.

- Issue #15539: Fix a number of bugs in Tools/scripts/pindent.py.  Now
  pindent.py works with a "with" statement.  pindent.py no longer produces
  improper indentation.  pindent.py now works with continued lines broken after
  "class" or "def" keywords and with continuations at the start of line.

- Issue #11797: Add a 2to3 fixer that maps reload() to imp.reload().

- Issue #10966: Remove the concept of unexpected skipped tests.

- Issue #9893: Removed the Misc/Vim directory.

- Removed the Misc/TextMate directory.

- Issue #16245: Add the Tools/scripts/parse_html5_entities.py script to parse
  the list of HTML5 entities and update the html.entities.html5 dictionary.

- Issue #15378: Fix Tools/unicode/comparecodecs.py.  Patch by Serhiy Storchaka.

- Issue #16549: Make json.tool work again on Python 3 and add tests.
  Initial patch by Berker Peksag and Serhiy Storchaka.

- Issue #13301: use ast.literal_eval() instead of eval() in Tools/i18n/msgfmt.py.
  Patch by Serhiy Storchaka.

Windows
-------

- Issue #18569: The installer now adds .py to the PATHEXT variable when extensions
  are registered. Patch by Paul Moore.

**(For information about older versions, consult the HISTORY file.)**
