[Python-Dev] What's New editing

Serhiy Storchaka storchaka at gmail.com
Mon Jul 6 20:45:01 CEST 2015


On 05.07.15 20:52, R. David Murray wrote:
> Just so people aren't caught unawares, it is very unlikely that I will have
> time to be the final editor on "What's New for 3.5" they way I was for 3.3 and
> 3.4.  I've tried to encourage people to keep What's New up to date, but
> *someone* should make a final editing pass.  Ideally they'd do at least the
> research Serhiy did last year on checking that there's a mention for all of the
> versionadded and versionchanged 3.5's in the docs.  Even better would be to
> review the NEWS and/or commit history...but *that* is a really big job these
> days....

Many thanks you David for your invaluable work.

Here is 3.5 NEWS file cleaned from duplicates in 3.4 NEWS file (i.e. 
from entries about merged bug fixes). It is much less than unfiltered 
NEWS file. Hope this will help volunteers.
-------------- next part --------------
+++++++++++
Python News
+++++++++++

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

Release date: XXXX-XX-XX

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

Library
-------

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


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

Release date: 2015-07-26

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

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

Library
-------


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

Release date: 2015-07-05

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

- 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 #24522: Fix possible integer overflow in json accelerator module.

- 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 #8232: webbrowser support incomplete on Windows. Patch by Brandon
  Milam

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

Build
-----


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 #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 #24270: Add math.isclose() and cmath.isclose() functions as per PEP 485.
  Contributed by Chris Barker and Tal Einat.

- 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 #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 #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 #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 #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 #23780: Improved error message in os.path.join() with single argument.

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

- 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 #23887: urllib.error.HTTPError now has a proper repr() representation.
  Patch by Berker Peksag.

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

IDLE
----

Tests
-----

- Issue #9517: Move script_helper into the support package.
  Patch by Christie Wilson.

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

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


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 #23466: %c, %o, %x, and %X in bytes formatting now raise TypeError on
  non-integer input.

Library
-------

- 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 #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 #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 #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 #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 #10590: xml.sax.parseString() now supports string argument.

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

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

- 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 #23836: Fix the faulthandler module to handle reentrant calls to
  its signal handlers.

- 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 #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 #22117: Fix os.utime(), it now rounds the timestamp towards minus
  infinity (-inf) instead of rounding towards zero.


Build
-----

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

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

Tests
-----

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


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

Library
-------

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

- 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 #21717: The zipfile.ZipFile.open function now supports 'x' (exclusive
  creation) mode.

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

- Issue #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 #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 substitutablity 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 #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 #2052: Add charset parameter to HtmlDiff.make_file().

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

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

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 #23563: Optimized utility functions in urllib.parse.

- Issue #7830: Flatten nested functools.partial.

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

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

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

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

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

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

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

Build
-----

- 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 type 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 #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 an
  Unicode object. For PyUnicode_EncodeFSDefault(), it was already the case on
  platforms other than Windows. Patch written by Campbell Barton.

- 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 #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 #17636: Circular imports involving relative imports are now
  supported.

- 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 #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 #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 #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 #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 #20904: Support setting FPU precision on m68k.

- 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 #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 #20480: Add ipaddress.reverse_pointer. Patch by Leon Weber.

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

Library
-------

- 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 #23326: Removed __ne__ implementations.  Since fixing default __ne__
  implementation in issue #21408 they are redundant.

- 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 #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 #23266: Much faster implementation of ipaddress.collapse_addresses()
  when there are many non-consecutive addresses.

- 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 #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 a expanduser() method on Path objects.

- Issue #21793: Added http.HTTPStatus enums (i.e. HTTPStatus.OK,
  HTTPStatus.NOT_FOUND).  Patch by Demian Brecht.

- Issue #22783: Pickling now uses the NEWOBJ opcode instead of the NEWOBJ_EX
  opcode if possible.

- Issue #21740: Support wrapped callables in doctest. Patch by Claudiu Popa.

- Issue #22696: Add function :func:`sys.is_finalizing` to know about
  interpreter shutdown.

- 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 #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 #22389: Add contextlib.redirect_stderr().

- Issue #22940: Add readline.append_history_file.

- Issue #19676: Added the "namereplace" error handler.

- Issue #22796: HTTP cookie parsing is now stricter, in order to protect
  against potential injection attacks.

- Issue #19494: Added urllib.request.HTTPBasicPriorAuthHandler. Patch by
  Matej Cepl.

- Issue #22578: Added attributes to the re.error class.

- 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 #6623: Remove deprecated Netrc class in the ftplib module. Patch by
  Matt Chaput.

- 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 #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 #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 #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 #21965: Add support for in-memory SSL to the ssl module.  Patch
  by Geert Jansen.

- 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 #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 #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 #5309: distutils' build and build_ext commands now accept a ``-j``
  option to enable parallel building of extension modules.

- Issue #22362: Forbidden ambiguous octal escapes out of range 0-0o377 in
  regular expressions.

- Issue #22278: Fix urljoin problem with relative urls, a regression observed
  after changes to issue22118 were submitted.

- Issue #21091: Fix API bug: email.message.EmailMessage.is_attachment is now
  a method.

- 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 #13968: The glob module now supports recursive search in
  subdirectories using the "**" pattern.

- 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 #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 #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 #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 #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 #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 #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 #15381: Optimized line reading in io.BytesIO.

- Issue #21725: Added support for RFC 6531 (SMTPUTF8) in smtpd.

- Issue #5411: Added support for the "xztar" format in the shutil module.

- Issue #20170: Convert posixmodule to use Argument Clinic.

- Issue #21539: Add a *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 #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 #20173: Convert sha1, sha256, sha512 and md5 to ArgumentClinic.
  Patch by Vajrasky Kok.

- 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 #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 #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 #21966: Respect -q command-line option when code module is ran.

- 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 #15014: Added 'auth' method to smtplib to make implementing auth
  mechanisms simpler, and used it internally in the login method.

- Issue #5800: headers parameter of wsgiref.headers.Headers is now optional.
  Initial patch by Pablo Torres Navarrete and SilentGhost.

- 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 #20295: imghdr now recognizes OpenEXR format images.

- Issue #21719: Added the ``st_file_attributes`` field to os.stat_result on
  Windows.

- 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 to send a file 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 #21256: Printout of keyword args should be in deterministic order in
  a mock function call. This will help to write better doctests.

- Issue #21515: tempfile.TemporaryFile now uses os.O_TMPFILE flag is available.

- Issue #20383: Introduce importlib.util.module_from_spec() as the preferred way
  to create a new module.

- Issue #13742:  Added "key" and "reverse" parameters to heapq.merge().
  (First draft of patch contributed by Simon Sapin.)

- Issue #3015: _tkinter.create() now creates tkapp object with wantobject=1 by
  default.

- 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 #21455: Add a default backlog to socket.listen().

- Issue #21525: Most Tkinter methods which accepted tuples now accept lists too.

- 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 #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 #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 #18314: Unlink now removes junctions on Windows. Patch by Kim Gräsman

- 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 #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 #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 #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 #21068: The ssl.PROTOCOL* constants are now enum members.

- 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 #21203: Updated fileConfig and dictConfig to remove inconsistencies.
  Thanks to Jure Koren for the patch.

- Issue #20539: Improved math.factorial error message for large positive inputs
  and changed exception type (OverflowError -> ValueError) for large negative
  inputs.

- 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 #21000: Improve the command-line interface of json.tool.

- 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 #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 #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 #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 #21477: htest.py - Improve framework, complete set of tests.
  Patches by Saimadhav Heblikar

Build
-----

- 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 #22359: Remove incorrect uses of recursive make.  Patch by Jonas
  Wagner.

- 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 #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 #17861: Tools/scripts/generate_opcode_h.py automatically regenerates
  Include/opcode.h from Lib/opcode.py if the later gets any change.

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

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

- 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 #6916: undocument deprecated asynchat.fifo class.

- Issue #21312: Update the thread_foobar.h template file to include newer
  threading APIs.  Patch by Jack McCracken.

Tests
-----

- Issue #22111: Assorted cleanups in test_imaplib.  Patch by Milan Oberkirch.

- Issue #9554: Use modern unittest features in test_argparse. Initial patch by
  Denver Coneybeare and Radu Voicilas.

- Issue #21503: Use test_both() consistently in test_importlib.

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

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

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 #21907: Improved the batch scripts provided for building Python.

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

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


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

Release date: 2014-03-09

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

Library
-------

Build
-----


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

Release date: 2014-02-23

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

Library
-------

Build
-----


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

Release date: 2014-02-10

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

Library
-------

IDLE
----

Tests
-----

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

Build
-----

C-API
-----

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


What's New in Python 3.4.0 Beta 3?
==================================

Release date: 2014-01-26

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

Library
-------

IDLE
----

Tests
-----

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

Build
-----

What's New in Python 3.4.0 Beta 2?
==================================

Release date: 2014-01-05

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

Library
-------

IDLE
----

Tests
-----

Build
-----

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

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

What's New in Python 3.4.0 Beta 1?
==================================

Release date: 2013-11-24

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

Library
-------

Tests
-----

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

Build
-----

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

What's New in Python 3.4.0 Alpha 4?
===================================

Release date: 2013-10-20

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

Library
-------

C API
-----

Tests
-----

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

Build
-----

What's New in Python 3.4.0 Alpha 3?
===================================

Release date: 2013-09-29

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

Library
-------

Tests
-----

IDLE
----

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

Build
-----

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


What's New in Python 3.4.0 Alpha 2?
===================================

Release date: 2013-09-09

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

Library
-------

Tests
-----

IDLE
----

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

Build
-----

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

What's New in Python 3.4.0 Alpha 1?
===================================

Release date: 2013-08-03

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

Library
-------

  Patch by Fraser Tweedale.

IDLE
----

Tests
-----

Build
-----

C-API
-----

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

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

Windows
-------

**(For information about older versions, consult the HISTORY file.)**


More information about the Python-Dev mailing list