summaryrefslogtreecommitdiff
path: root/Misc/NEWS
diff options
context:
space:
mode:
Diffstat (limited to 'Misc/NEWS')
-rw-r--r--Misc/NEWS2382
1 files changed, 1715 insertions, 667 deletions
diff --git a/Misc/NEWS b/Misc/NEWS
index addae1b54c..b98cdca600 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -2,48 +2,56 @@
Python News
+++++++++++
-What's New in Python 3.2.4
-==========================
+What's New in Python 3.3.0 Alpha 3?
+===================================
-*Release date: XX-XX-XXXX*
+*Release date: XXXX-XX-XX*
Core and Builtins
-----------------
+- Issue #14098: New functions PyErr_GetExcInfo and PyErr_SetExcInfo.
+ Patch by Stefan Behnel.
+
+- Issue #14385: It is now possible to use a custom type for the __builtins__
+ namespace, instead of a dict. It can be used for sandboxing for example.
+ Raise also a NameError instead of ImportError if __build_class__ name if not
+ found in __builtins__.
+
+- Issue #12599: Be more strict in accepting None compared to a false-like
+ object for importlib.util.module_for_loader and
+ importlib.machinery.PathFinder.
+
- Issue #14612: Fix jumping around with blocks by setting f_lineno.
+- Issue #14592: Attempting a relative import w/o __package__ or __name__ set in
+ globals raises a KeyError.
+
- Issue #14607: Fix keyword-only arguments which started with ``__``.
+- Issue #10854: The ImportError raised when an extension module on Windows
+ fails to import now uses the new path and name attributes from
+ Issue #1559549.
+
- Issue #13889: Check and (if necessary) set FPU control word before calling
any of the dtoa.c string <-> float conversion functions, on MSVC builds of
Python. This fixes issues when embedding Python in a Delphi app.
+- __import__() now matches PEP 328 and documentation by defaulting 'index' to 0
+ instead of -1 and removing support for negative values.
+
+- Issue #2377: Make importlib the implementation of __import__().
+
+- Issue #1559549: ImportError now has 'name' and 'path' attributes that are set
+ using keyword arguments to its constructor. They are currently not set by
+ import as they are meant for use by importlib.
+
- Issue #14474: Save and restore exception state in thread.start_new_thread()
while writing error message if the thread leaves a unhandled exception.
- Issue #13019: Fix potential reference leaks in bytearray.extend(). Patch
by Suman Saha.
-- Issue #14378: Fix compiling ast.ImportFrom nodes with a "__future__" string as
- the module name that was not interned.
-
-- Issue #14331: Use significantly less stack space when importing modules by
- allocating path buffers on the heap instead of the stack.
-
-- Issue #14334: Prevent in a segfault in type.__getattribute__ when it was not
- passed strings.
-
-- Issue #1469629: Allow cycles through an object's __dict__ slot to be
- collected. (For example if ``x.__dict__ is x``).
-
-- Issue #14172: Fix reference leak when marshalling a buffer-like object
- (other than a bytes object).
-
-- Issue #13521: dict.setdefault() now does only one lookup for the given key,
- making it "atomic" for many purposes. Patch by Filip Gruszczyński.
-
-- Issue #14471: Fix a possible buffer overrun in the winreg module.
-
Library
-------
@@ -53,203 +61,371 @@ Library
- Issue #14308: Fix an exception when a "dummy" thread is in the threading
module's active list after a fork().
+- Issue #11750: The Windows API functions scattered in the _subprocess and
+ _multiprocessing.win32 modules now live in a single module "_winapi".
+ Patch by sbt.
+
+- Issue #14087: multiprocessing: add Condition.wait_for(). Patch by sbt.
+
- Issue #14538: HTMLParser can now parse correctly start tags that contain
a bare '/'.
- Issue #14452: SysLogHandler no longer inserts a UTF-8 BOM into the message.
+- Issue #14386: Expose the dict_proxy internal type as types.MappingProxyType.
+
+- Issue #13959: Make imp.reload() always use a module's __loader__ to perform
+ the reload.
+
+- Issue #13959: Add imp.py and rename the built-in module to _imp, allowing for
+ re-implementing parts of the module in pure Python.
+
- Issue #13496: Fix potential overflow in bisect.bisect algorithm when applied
to a collection of size > sys.maxsize / 2.
+- Have importlib take advantage of ImportError's new 'name' and 'path'
+ attributes.
+
- Issue #14399: zipfile now recognizes that the archive has been modified even
if only the comment is changed. In addition, the TypeError that results from
trying to set a non-binary value as a comment is now now raised at the time
the comment is set rather than at the time the zipfile is written.
+- trace.CoverageResults.is_ignored_filename() now ignores any name that starts
+ with "<" and ends with ">" instead of special-casing "<string>" and
+ "<doctest ".
+
+- Issue #12537: The mailbox module no longer depends on knowledge of internal
+ implementation details of the email package Message object.
+
- Issue #7978: socketserver now restarts the select() call when EINTR is
returned. This avoids crashing the server loop when a signal is received.
Patch by Jerzy Kozera.
+- Issue #14522: Avoid duplicating socket handles in multiprocessing.connection.
+ Patch by sbt.
+
+- Don't Py_DECREF NULL variable in io.IncrementalNewlineDecoder.
+
+- Issue #8515: Set __file__ when run file in IDLE.
+ Initial patch by Bruce Frederiksen.
+
- Issue #14496: Fix wrong name in idlelib/tabbedpages.py.
Patch by Popa Claudiu.
+- Issue #3033: Add displayof parameter to tkinter font. Patch by Guilherme Polo.
+
- Issue #14482: Raise a ValueError, not a NameError, when trying to create
a multiprocessing Client or Listener with an AF_UNIX type address under
Windows. Patch by Popa Claudiu.
+- Issue #802310: Generate always unique tkinter font names if not directly passed.
+
- Issue #14151: Raise a ValueError, not a NameError, when trying to create
a multiprocessing Client or Listener with an AF_PIPE type address under
non-Windows platforms. Patch by Popa Claudiu.
+- Issue #14493: Use gvfs-open or xdg-open in webbrowser.
+
+Tests
+-----
+
+- Issue #14032: Fix incorrect variable name in test_cmd_line_script debugging
+ message (Patch by Jason Yeo)
+
+- Issue #14589: Update certificate chain for sha256.tbs-internet.com, fixing
+ a test failure in test_ssl.
+
+- Issue #14355: Regrtest now supports the standard unittest test loading, and
+ will use it if a test file contains no `test_main` method.
+
+Tools / Demos
+-------------
+
+- Issue #13165: stringbench is now available in the Tools/stringbench folder.
+ It used to live in its own SVN project.
+
+
+What's New in Python 3.3.0 Alpha 2?
+===================================
+
+*Release date: 01-Apr-2012*
+
+Core and Builtins
+-----------------
+
+- Issue #1683368: object.__new__ and object.__init__ raise a TypeError if they
+ are passed arguments and their complementary method is not overridden.
+
+- Issue #14378: Fix compiling ast.ImportFrom nodes with a "__future__" string as
+ the module name that was not interned.
+
+- Issue #14331: Use significantly less stack space when importing modules by
+ allocating path buffers on the heap instead of the stack.
+
+- Issue #14334: Prevent in a segfault in type.__getattribute__ when it was not
+ passed strings.
+
+- Issue #1469629: Allow cycles through an object's __dict__ slot to be
+ collected. (For example if ``x.__dict__ is x``).
+
+- Issue #14205: dict lookup raises a RuntimeError if the dict is modified
+ during a lookup.
+
+- Issue #14220: When a generator is delegating to another iterator with the
+ yield from syntax, it needs to have its ``gi_running`` flag set to True.
+
+- Issue #14435: Remove dedicated block allocator from floatobject.c and rely
+ on the PyObject_Malloc() api like all other objects.
+
+- Issue #14471: Fix a possible buffer overrun in the winreg module.
+
+- Issue #14288: Allow the serialization of builtin iterators
+
+Library
+-------
+
+- Issue #14300: Under Windows, sockets created using socket.dup() now allow
+ overlapped I/O. Patch by sbt.
+
- Issue #13872: socket.detach() now marks the socket closed (as mirrored
in the socket repr()). Patch by Matt Joiner.
- Issue #14406: Fix a race condition when using ``concurrent.futures.wait(
return_when=ALL_COMPLETED)``. Patch by Matt Joiner.
+- Issue #5136: deprecate old, unused functions from tkinter.
+
- Issue #14409: IDLE now properly executes commands in the Shell window
when it cannot read the normal config files on startup and
has to use the built-in default key bindings.
There was previously a bug in one of the defaults.
+- Issue #14416: syslog now defines the LOG_ODELAY and LOG_AUTHPRIV constants
+ if they are defined in <syslog.h>.
+
+- IDLE can be launched as python -m idlelib
+
+- Issue #14295: Add unittest.mock
+
+- Issue #7652: Add --with-system-libmpdec option to configure for linking
+ the _decimal module against an installed libmpdec.
+
+- Issue #14380: MIMEText now defaults to utf-8 when passed non-ASCII unicode
+ with no charset specified.
+
- Issue #10340: asyncore - properly handle EINVAL in dispatcher constructor on
OSX; avoid to call handle_connect in case of a disconnected socket which
was not meant to connect.
+- Issue #14204: The ssl module now has support for the Next Protocol
+ Negotiation extension, if available in the underlying OpenSSL library.
+ Patch by Colin Marc.
+
+- Issue #3035: Unused functions from tkinter are marked as pending deprecated.
+
- Issue #12757: Fix the skipping of doctests when python is run with -OO so
that it works in unittest's verbose mode as well as non-verbose mode.
+- Issue #7652: Integrate the decimal floating point libmpdec library to speed
+ up the decimal module. Performance gains of the new C implementation are
+ between 10x and 100x, depending on the application.
+
- Issue #3573: IDLE hangs when passing invalid command line args
(directory(ies) instead of file(s)) (Patch by Guilherme Polo)
+- Issue #14269: SMTPD now conforms to the RFC and requires a HELO command
+ before MAIL, RCPT, or DATA.
+
- Issue #13694: asynchronous connect in asyncore.dispatcher does not set addr
attribute.
+- Issue #14344: fixed the repr of email.policy objects.
+
- Issue #11686: Added missing entries to email package __all__ lists
(mostly the new Bytes classes).
+- Issue #14335: multiprocessing's custom Pickler subclass now inherits from
+ the C-accelerated implementation. Patch by sbt.
+
- Issue #10484: Fix the CGIHTTPServer's PATH_INFO handling problem.
- Issue #11199: Fix the with urllib which hangs on particular ftp urls.
-- Issue #14062: Header objects now correctly respect the 'linesep' setting
- when processed by BytesParser (which smtplib.SMTP.send_message uses).
+- Improve the memory utilization and speed of functools.lru_cache.
+
+- Issue #14222: Use the new time.steady() function instead of time.time() for
+ timeout in queue and threading modules to not be affected of system time
+ update.
+
+- Issue #13248: Remove lib2to3.pytree.Base.get_prefix/set_prefix.
+
+- Issue #14234: CVE-2012-0876: Randomize hashes of xml attributes in the hash
+ table internal to the pyexpat module's copy of the expat library to avoid a
+ denial of service due to hash collisions. Patch by David Malcolm with some
+ modifications by the expat project.
+
+- Issue #14200: Idle shell crash on printing non-BMP unicode character.
+
+- Issue #12818: format address no longer needlessly \ escapes ()s in names when
+ the name ends up being quoted.
+
+- Issue #14062: BytesGenerator now correctly folds Header objects,
+ including using linesep when folding.
+
+- Issue #13839: When invoked on the command-line, the pstats module now
+ accepts several filenames of profile stat files and merges them all.
+ Patch by Matt Joiner.
- Issue #14291: Email now defaults to utf-8 for non-ASCII unicode headers
instead of raising an error. This fixes a regression relative to 2.7.
+- Issue #989712: Support using Tk without a mainloop.
+
- Issue #5219: Prevent event handler cascade in IDLE.
+- Issue #3835: Refuse to use unthreaded Tcl in threaded Python.
+
+- Issue #2843: Add new Tk API to Tkinter.
+
- Issue #14184: Increase the default stack size for secondary threads on
Mac OS X to avoid interpreter crashes when using threads on 10.7.
-- Issue #10543: Fix unittest test discovery with Jython bytecode files.
+- Issue #14180: datetime.date.fromtimestamp(),
+ datetime.datetime.fromtimestamp() and datetime.datetime.utcfromtimestamp()
+ now raise an OSError instead of ValueError if localtime() or gmtime() failed.
-- Issue #14252: Fix subprocess.Popen.terminate() to not raise an error under
- Windows when the child process has already exited.
+- Issue #14180: time.ctime(), gmtime(), time.localtime(),
+ datetime.date.fromtimestamp(), datetime.datetime.fromtimestamp() and
+ datetime.datetime.utcfromtimestamp() now raises an OverflowError, instead of
+ a ValueError, if the timestamp does not fit in time_t.
-- Issue #14195: An issue that caused weakref.WeakSet instances to incorrectly
- return True for a WeakSet instance 'a' in both 'a < a' and 'a > a' has been
- fixed.
+- Issue #14180: datetime.datetime.fromtimestamp() and
+ datetime.datetime.utcfromtimestamp() now round microseconds towards zero
+ instead of rounding to nearest with ties going away from zero.
-- Issue #14177: marshal.loads() now raises TypeError when given an unicode
- string. Patch by Guilherme Gonçalves.
+- Issue #10543: Fix unittest test discovery with Jython bytecode files.
-- Issue #14159: Fix the len() of weak containers (WeakSet, WeakKeyDictionary,
- WeakValueDictionary) to return a better approximation when some objects
- are dead or dying. Moreover, the implementation is now O(1) rather than
- O(n).
+- Issue #1178863: Separate initialisation from setting when initializing
+ Tkinter.Variables; harmonize exceptions to ValueError; only delete variables
+ that have not been deleted; assert that variable names are strings.
-- Issue #13125: Silence spurious test_lib2to3 output when in non-verbose mode.
- Patch by Mikhail Novikov.
+- Issue #14104: Implement time.monotonic() on Mac OS X, patch written by
+ Nicholas Riley.
-- Issue #13447: Add a test file to host regression tests for bugs in the
- scripts found in the Tools directory.
+- Issue #13394: the aifc module now uses warnings.warn() to signal warnings.
-- Issue #8033: sqlite3: Fix 64-bit integer handling in user functions
- on 32-bit architectures. Initial patch by Philippe Devalkeneer.
+- Issue #14252: Fix subprocess.Popen.terminate() to not raise an error under
+ Windows when the child process has already exited.
-Extension Modules
------------------
+- Issue #14223: curses.addch() is no more limited to the range 0-255 when the
+ Python curses is not linked to libncursesw. It was a regression introduced
+ in Python 3.3a1.
-- Issue #14212: The re module didn't retain a reference to buffers it was
- scanning, resulting in segfaults.
+- Issue #14168: Check for presence of Element._attrs in minidom before
+ accessing it.
-Tests
------
+- Issue #12328: Fix multiprocessing's use of overlapped I/O on Windows.
+ Also, add a multiprocessing.connection.wait(rlist, timeout=None) function
+ for polling multiple objects at once. Patch by sbt.
-- Issue #14032: Fix incorrect variable name in test_cmd_line_script debugging
- message (Patch by Jason Yeo)
+- Issue #14007: Accept incomplete TreeBuilder objects (missing start, end,
+ data or close method) for the Python implementation as well.
+ Drop the no-op TreeBuilder().xml() method from the C implementation.
-- Issue #14589: Update certificate chain for sha256.tbs-internet.com, fixing
- a test failure in test_ssl.
+- Issue #14210: pdb now has tab-completion not only for command names, but
+ also for their arguments, wherever possible.
+
+- Issue #14310: Sockets can now be with other processes on Windows using
+ the api socket.socket.share() and socket.fromshare().
+
+- Issue #10576: The gc module now has a 'callbacks' member that will get
+ called when garbage collection takes place.
Build
-----
- Issue #14557: Fix extensions build on HP-UX. Patch by Adi Roiban.
-- Issue #14437: Fix building the _io module under Cygwin.
-
- Issue #14387: Do not include accu.h from Python.h.
- Issue #14359: Only use O_CLOEXEC in _posixmodule.c if it is defined.
Based on patch from Hervé Coatanhay.
-Documentation
--------------
-
-- Issue #8799: Fix and improve the threading.Condition documentation.
+- Issue #14321: Do not run pgen during the build if files are up to date.
+- Issue #14324: Fix configure tests for cross builds.
-What's New in Python 3.2.3 release candidate 2?
-===============================================
-
-*Release date: XX-Mar-2012*
-
-Library
--------
-
-- Issue #6884: Fix long-standing bugs with MANIFEST.in parsing in distutils
- on Windows.
+- Issue #14327: Call AC_CANONICAL_HOST in configure.ac and check in
+ config.{guess,sub}. Don't use uname calls for cross builds.
Extension Modules
-----------------
-- Issue #14234: CVE-2012-0876: Randomize hashes of xml attributes in the hash
- table internal to the pyexpat module's copy of the expat library to avoid a
- denial of service due to hash collisions. Patch by David Malcolm with some
- modifications by the expat project.
-
-
-What's New in Python 3.2.3?
-===========================
+- Issue #14212: The re module didn't retain a reference to buffers it was
+ scanning, resulting in segfaults.
-*Release date: 10-Apr-2012*
+- Issue #14259: The finditer() method of re objects did not take any
+ keyword arguments, contrary to the documentation.
-Build
+Tests
-----
-- Issue #14387: Work around a problem building extension modules under Windows
- by undefining ``small`` before use in the Python headers.
+- Issue #14442: Add missing errno import in test_smtplib.
+- Issue #8315: (partial fix) python -m unittest test.test_email now works.
-What's New in Python 3.2.3 release candidate 2?
-===============================================
-*Release date: 18-Mar-2012*
-
-Library
--------
+What's New in Python 3.3.0 Alpha 1?
+===================================
-- Issue #6884: Fix long-standing bugs with MANIFEST.in parsing in distutils
- on Windows.
+*Release date: 05-Mar-2012*
-Extension Modules
+Core and Builtins
-----------------
-- Issue #14234: CVE-2012-0876: Randomize hashes of xml attributes in the hash
- table internal to the pyexpat module's copy of the expat library to avoid a
- denial of service due to hash collisions. Patch by David Malcolm with some
- modifications by the expat project.
+- Issue #14172: Fix reference leak when marshalling a buffer-like object
+ (other than a bytes object).
+- Issue #13521: dict.setdefault() now does only one lookup for the given key,
+ making it "atomic" for many purposes. Patch by Filip Gruszczyński.
-What's New in Python 3.2.3 release candidate 1?
-===============================================
+- PEP 409, Issue #6210: "raise X from None" is now supported as a means of
+ suppressing the display of the chained exception context. The chained
+ context still remains available as the __context__ attribute.
-*Release date: 24-Feb-2012*
+- Issue #10181: New memoryview implementation fixes multiple ownership
+ and lifetime issues of dynamically allocated Py_buffer members (#9990)
+ as well as crashes (#8305, #7433). Many new features have been added
+ (See whatsnew/3.3), and the documentation has been updated extensively.
+ The ndarray test object from _testbuffer.c implements all aspects of
+ PEP-3118, so further development towards the complete implementation
+ of the PEP can proceed in a test-driven manner.
-Core and Builtins
------------------
+ Thanks to Nick Coghlan, Antoine Pitrou and Pauli Virtanen for review
+ and many ideas.
-- Issue #13703: oCERT-2011-003: add -R command-line option and PYTHONHASHSEED
- environment variable, to provide an opt-in way to protect against denial of
- service attacks due to hash collisions within the dict and set types. Patch
- by David Malcolm, based on work by Victor Stinner.
+- Issue #12834: Fix incorrect results of memoryview.tobytes() for
+ non-contiguous arrays.
+
+- Issue #5231: Introduce memoryview.cast() method that allows changing
+ format and shape without making a copy of the underlying memory.
- Issue #14084: Fix a file descriptor leak when importing a module with a
bad encoding.
+- Upgrade Unicode data to Unicode 6.1.
+
+- Issue #14040: Remove rarely used file name suffixes for C extensions
+ (under POSIX mainly).
+
+- Issue #14051: Allow arbitrary attributes to be set of classmethod and
+ staticmethod.
+
+- Issue #13703: oCERT-2011-003: Randomize hashes of str and bytes to protect
+ against denial of service attacks due to hash collisions within the dict and
+ set types. Patch by David Malcolm, based on work by Victor Stinner.
+
- Issue #13020: Fix a reference leak when allocating a structsequence object
fails. Patch by Suman Saha.
@@ -258,6 +434,9 @@ Core and Builtins
- Issue #11235: Fix OverflowError when trying to import a source file whose
modification time doesn't fit in a 32-bit timestamp.
+- Issue #12705: A SyntaxError exception is now raised when attempting to
+ compile multiple statements as a single interactive statement.
+
- Fix the builtin module initialization code to store the init function for
future reinitialization.
@@ -269,6 +448,37 @@ Core and Builtins
- Issue #13629: Renumber the tokens in token.h so that they match the indexes
into _PyParser_TokenNames.
+- Issue #13752: Add a casefold() method to str.
+
+- Issue #13761: Add a "flush" keyword argument to the print() function,
+ used to ensure flushing the output stream.
+
+- Issue #13645: pyc files now contain the size of the corresponding source
+ code, to avoid timestamp collisions (especially on filesystems with a low
+ timestamp resolution) when checking for freshness of the bytecode.
+
+- PEP 380, Issue #11682: Add "yield from <x>" to support easy delegation to
+ subgenerators (initial patch by Greg Ewing, integration into 3.3 by
+ Renaud Blanch, Ryan Kelly, Zbigniew Jędrzejewski-Szmek and Nick Coghlan)
+
+- Issue #13748: Raw bytes literals can now be written with the ``rb`` prefix
+ as well as ``br``.
+
+- Issue #12736: Use full unicode case mappings for upper, lower, and title case.
+
+- Issue #12760: Add a create mode to open(). Patch by David Townshend.
+
+- Issue #13738: Simplify implementation of bytes.lower() and bytes.upper().
+
+- Issue #13577: Built-in methods and functions now have a __qualname__.
+ Patch by sbt.
+
+- Issue #6695: Full garbage collection runs now clear the freelist of set
+ objects. Initial patch by Matthias Troffaes.
+
+- Fix OSError.__init__ and OSError.__new__ so that each of them can be
+ overriden and take additional arguments (followup to issue #12555).
+
- Fix the fix for issue #12149: it was incorrect, although it had the side
effect of appearing to resolve the issue. Thanks to Mark Shannon for
noticing.
@@ -279,27 +489,69 @@ Core and Builtins
- Issue #11147: Fix an unused argument in _Py_ANNOTATE_MEMORY_ORDER. (Fix
given by Campbell Barton).
+- Issue #13503: Use a more efficient reduction format for bytearrays with
+ pickle protocol >= 3. The old reduction format is kept with older protocols
+ in order to allow unpickling under Python 2. Patch by Irmen de Jong.
+
- Issue #7111: Python can now be run without a stdin, stdout or stderr
stream. It was already the case with Python 2. However, the corresponding
sys module entries are now set to None (instead of an unusable file object).
+- Issue #11849: Ensure that free()d memory arenas are really released
+ on POSIX systems supporting anonymous memory mappings. Patch by
+ Charles-François Natali.
+
+- Issue #13452: PyUnicode_EncodeDecimal() doesn't support error handlers
+ different than "strict" anymore. The caller was unable to compute the
+ size of the output buffer: it depends on the error handler.
+
+- PEP 3155 / issue #13448: Qualified name for classes and functions.
+
- Issue #13436: Fix a bogus error message when an AST object was passed
an invalid integer value.
+- Issue #13411: memoryview objects are now hashable when the underlying
+ object is hashable.
+
- Issue #13338: Handle all enumerations in _Py_ANNOTATE_MEMORY_ORDER
to allow compiling extension modules with -Wswitch-enum on gcc.
Initial patch by Floris Bruynooghe.
+- Issue #10227: Add an allocation cache for a single slice object. Patch by
+ Stefan Behnel.
+
+- Issue #13393: BufferedReader.read1() now asks the full requested size to
+ the raw stream instead of limiting itself to the buffer size.
+
+- Issue #13392: Writing a pyc file should now be atomic under Windows as well.
+
- Issue #13333: The UTF-7 decoder now accepts lone surrogates (the encoder
already accepts them).
+- Issue #13389: Full garbage collection passes now clear the freelists for
+ list and dict objects. They already cleared other freelists in the
+ interpreter.
+
+- Issue #13327: Remove the need for an explicit None as the second argument
+ to os.utime, os.lutimes, os.futimes, os.futimens, os.futimesat, in
+ order to update to the current time. Also added keyword argument
+ handling to os.utimensat in order to remove the need for explicit None.
+
+- Issue #13350: Simplify some C code by replacing most usages of
+ PyUnicode_Format by PyUnicode_FromFormat.
+
- Issue #13342: input() used to ignore sys.stdin's and sys.stdout's unicode
error handler in interactive mode (when calling into PyOS_Readline()).
+- Issue #9896: Add start, stop, and step attributes to range objects.
+
- Issue #13343: Fix a SystemError when a lambda expression uses a global
variable in the default value of a keyword-only argument:
(lambda *, arg=GLOBAL_NAME: None)
+- Issue #12797: Added custom opener parameter to builtin open() and
+ FileIO.open().
+
- Issue #10519: Avoid unnecessary recursive function calls in
setobject.c.
@@ -308,21 +560,43 @@ Core and Builtins
- Issue #13018: Fix reference leaks in error paths in dictobject.c.
Patch by Suman Saha.
+- Issue #13201: Define '==' and '!=' to compare range objects based on
+ the sequence of values they define (instead of comparing based on
+ object identity).
+
- Issue #1294232: In a few cases involving metaclass inheritance, the
interpreter would sometimes invoke the wrong metaclass when building a new
class object. These cases now behave correctly. Patch by Daniel Urban.
+- Issue #12753: Add support for Unicode name aliases and named sequences.
+ Both :func:`unicodedata.lookup()` and '\N{...}' now resolve aliases,
+ and :func:`unicodedata.lookup()` resolves named sequences too.
+
+- Issue #12170: The count(), find(), rfind(), index() and rindex() methods
+ of bytes and bytearray objects now accept an integer between 0 and 255
+ as their first argument. Patch by Petri Lehtinen.
+
- Issue #12604: VTRACE macro expanded to no-op in _sre.c to avoid compiler
warnings. Patch by Josh Triplett and Petri Lehtinen.
+- Issue #12281: Rewrite the MBCS codec to handle correctly replace and ignore
+ error handlers on all Windows versions. The MBCS codec is now supporting all
+ error handlers, instead of only replace to encode and ignore to decode.
+
- Issue #13188: When called without an explicit traceback argument,
generator.throw() now gets the traceback from the passed exception's
``__traceback__`` attribute. Patch by Petri Lehtinen.
+- Issue #13146: Writing a pyc file is now atomic under POSIX.
+
- Issue #7833: Extension modules built using distutils on Windows will no
longer include a "manifest" to prevent them failing at import time in some
embedded situations.
+- PEP 3151 / issue #12555: reworking the OS and IO exception hierarchy.
+
+- Add internal API for static strings (_Py_identifier et al.).
+
- Issue #13063: the Windows error ERROR_NO_DATA (numbered 232 and described
as "The pipe is being closed") is now mapped to POSIX errno EPIPE
(previously EINVAL).
@@ -330,6 +604,16 @@ Core and Builtins
- Issue #12911: Fix memory consumption when calculating the repr() of huge
tuples or lists.
+- PEP 393: flexible string representation. Thanks to Torsten Becker for the
+ initial implementation, and Victor Stinner for various bug fixes.
+
+- Issue #14081: The 'sep' and 'maxsplit' parameter to str.split, bytes.split,
+ and bytearray.split may now be passed as keyword arguments.
+
+- Issue #13012: The 'keepends' parameter to str.splitlines may now be passed
+ as a keyword argument: "my_string.splitlines(keepends=True)". The same
+ change also applies to bytes.splitlines and bytearray.splitlines.
+
- Issue #7732: Don't open a directory as a file anymore while importing a
module. Ignore the direcotry if its name matchs the module name (e.g.
"__init__.py") and raise a ImportError instead.
@@ -341,6 +625,9 @@ Core and Builtins
list_repeat (listobject.c) and islice_next (itertoolsmodule.c). These bugs
caused test failures with recent versions of Clang.
+- Issue #12904: os.utime, os.futimes, os.lutimes, and os.futimesat now write
+ atime and mtime with nanosecond precision on modern POSIX platforms.
+
- Issue #12802: the Windows error ERROR_DIRECTORY (numbered 267) is now
mapped to POSIX errno ENOTDIR (previously EINVAL).
@@ -350,37 +637,329 @@ Core and Builtins
- Issue #12791: Break reference cycles early when a generator exits with
an exception.
+- Issue #12773: Make __doc__ mutable on user-defined classes.
+
+- Issue #12766: Raise a ValueError when creating a class with a class variable
+ that conflicts with a name in __slots__.
+
- Issue #12266: Fix str.capitalize() to correctly uppercase/lowercase
titlecased and cased non-letter characters.
+- Issue #12732: In narrow unicode builds, allow Unicode identifiers which fall
+ outside the BMP.
+
+- Issue #12575: Validate user-generated AST before it is compiled.
+
+- Make type(None), type(Ellipsis), and type(NotImplemented) callable. They
+ return the respective singleton instances.
+
+- Forbid summing bytes with sum().
+
+- Verify the types of AST strings and identifiers provided by the user before
+ compiling them.
+
+- Issue #12647: The None object now has a __bool__() method that returns False.
+ Formerly, bool(None) returned False only because of special case logic
+ in PyObject_IsTrue().
+
+- Issue #12579: str.format_map() now raises a ValueError if used on a
+ format string that contains positional fields. Initial patch by
+ Julian Berman.
+
+- Issue #10271: Allow warnings.showwarning() be any callable.
+
+- Issue #11627: Fix segfault when __new__ on a exception returns a
+ non-exception class.
+
+- Issue #12149: Update the method cache after a type's dictionary gets
+ cleared by the garbage collector. This fixes a segfault when an instance
+ and its type get caught in a reference cycle, and the instance's
+ deallocator calls one of the methods on the type (e.g. when subclassing
+ IOBase). Diagnosis and patch by Davide Rizzo.
+
+- Issue #9611, #9015: FileIO.read() clamps the length to INT_MAX on Windows.
+
+- Issue #9642: Uniformize the tests on the availability of the mbcs codec, add
+ a new HAVE_MBCS define.
+
+- Issue #9642: Fix filesystem encoding initialization: use the ANSI code page
+ on Windows if the mbcs codec is not available, and fail with a fatal error if
+ we cannot get the locale encoding (if nl_langinfo(CODESET) is not available)
+ instead of using UTF-8.
+
+- When a generator yields, do not retain the caller's exception state on the
+ generator.
+
+- Issue #12475: Prevent generators from leaking their exception state into the
+ caller's frame as they return for the last time.
+
+- Issue #12291: You can now load multiple marshalled objects from a stream,
+ with other data interleaved between marshalled objects.
+
+- Issue #12356: When required positional or keyword-only arguments are not
+ given, produce a informative error message which includes the name(s) of the
+ missing arguments.
+
+- Issue #12370: Fix super with no arguments when __class__ is overriden in the
+ class body.
+
+- Issue #12084: os.stat on Windows now works properly with relative symbolic
+ links when called from any directory.
+
+- Loosen type restrictions on the __dir__ method. __dir__ can now return any
+ sequence, which will be converted to a list and sorted by dir().
+
+- Issue #12265: Make error messages produced by passing an invalid set of
+ arguments to a function more informative.
+
+- Issue #12225: Still allow Python to build if Python is not in its hg repo or
+ mercurial is not installed.
+
+- Issue #1195: my_fgets() now always clears errors before calling fgets(). Fix
+ the following case: sys.stdin.read() stopped with CTRL+d (end of file),
+ raw_input() interrupted by CTRL+c.
+
+- Issue #12216: Allow unexpected EOF errors to happen on any line of the file.
+
+- Issue #12199: The TryExcept and TryFinally and AST nodes have been unified
+ into a Try node.
+
+- Issue #9670: Increase the default stack size for secondary threads on
+ Mac OS X and FreeBSD to reduce the chances of a crash instead of a
+ "maximum recursion depth" RuntimeError exception.
+ (patch by Ronald Oussoren)
+
+- Issue #12106: The use of the multiple-with shorthand syntax is now reflected
+ in the AST.
+
+- Issue #12190: Try to use the same filename object when compiling unmarshalling
+ a code objects in the same file.
+
+- Issue #12166: Move implementations of dir() specialized for various types into
+ the __dir__() methods of those types.
+
+- Issue #5715: In socketserver, close the server socket in the child process.
+
+- Correct lookup of __dir__ on objects. Among other things, this causes errors
+ besides AttributeError found on lookup to be propagated.
+
+- Issue #12060: Use sig_atomic_t type and volatile keyword in the signal
+ module. Patch written by Charles-François Natali.
+
+- Issue #1746656: Added the if_nameindex, if_indextoname, if_nametoindex
+ methods to the socket module.
+
+- Issue #12044: Fixed subprocess.Popen when used as a context manager to
+ wait for the process to end when exiting the context to avoid unintentionally
+ leaving zombie processes around.
+
+- Issue #1195: Fix input() if it is interrupted by CTRL+d and then CTRL+c,
+ clear the end-of-file indicator after CTRL+d.
+
+- Issue #1856: Avoid crashes and lockups when daemon threads run while the
+ interpreter is shutting down; instead, these threads are now killed when
+ they try to take the GIL.
+
+- Issue #9756: When calling a method descriptor or a slot wrapper descriptor,
+ the check of the object type doesn't read the __class__ attribute anymore.
+ Fix a crash if a class override its __class__ attribute (e.g. a proxy of the
+ str type). Patch written by Andreas Stührk.
+
+- Issue #10517: After fork(), reinitialize the TLS used by the PyGILState_*
+ APIs, to avoid a crash with the pthread implementation in RHEL 5. Patch
+ by Charles-François Natali.
+
+- Issue #10914: Initialize correctly the filesystem codec when creating a new
+ subinterpreter to fix a bootstrap issue with codecs implemented in Python, as
+ the ISO-8859-15 codec.
+
+- Issue #11918: OS/2 and VMS are no more supported because of the lack of
+ maintainer.
+
+- Issue #6780: fix starts/endswith error message to mention that tuples are
+ accepted too.
+
+- Issue #5057: fix a bug in the peepholer that led to non-portable pyc files
+ between narrow and wide builds while optimizing BINARY_SUBSCR on non-BMP
+ chars (e.g. "\U00012345"[0]).
+
+- Issue #11845: Fix typo in rangeobject.c that caused a crash in
+ compute_slice_indices. Patch by Daniel Urban.
+
+- Issue #5673: Added a `timeout` keyword argument to subprocess.Popen.wait,
+ subprocess.Popen.communicated, subprocess.call, subprocess.check_call, and
+ subprocess.check_output. If the blocking operation takes more than `timeout`
+ seconds, the `subprocess.TimeoutExpired` exception is raised.
+
+- Issue #11650: PyOS_StdioReadline() retries fgets() if it was interrupted
+ (EINTR), for example if the program is stopped with CTRL+z on Mac OS X. Patch
+ written by Charles-Francois Natali.
+
+- Issue #9319: Include the filename in "Non-UTF8 code ..." syntax error.
+
+- Issue #10785: Store the filename as Unicode in the Python parser.
+
+- Issue #11619: _PyImport_LoadDynamicModule() doesn't encode the path to bytes
+ on Windows.
+
+- Issue #10998: Remove mentions of -Q, sys.flags.division_warning and
+ Py_DivisionWarningFlag left over from Python 2.
+
+- Issue #11244: Remove an unnecessary peepholer check that was preventing
+ negative zeros from being constant-folded properly.
+
+- Issue #11395: io.FileIO().write() clamps the data length to 32,767 bytes on
+ Windows if the file is a TTY to workaround a Windows bug. The Windows console
+ returns an error (12: not enough space error) on writing into stdout if
+ stdout mode is binary and the length is greater than 66,000 bytes (or less,
+ depending on heap usage).
+
+- Issue #11320: fix bogus memory management in Modules/getpath.c, leading to
+ a possible crash when calling Py_SetPath().
+
+- Issue #11432: A bug was introduced in subprocess.Popen on posix systems with
+ 3.2.0 where the stdout or stderr file descriptor being the same as the stdin
+ file descriptor would raise an exception. webbrowser.open would fail. fixed.
+
+- Issue #9856: Change object.__format__ with a non-empty format string
+ to be a DeprecationWarning. In 3.2 it was a PendingDeprecationWarning.
+ In 3.4 it will be a TypeError.
+
+- Issue #11244: The peephole optimizer is now able to constant-fold
+ arbitrarily complex expressions. This also fixes a 3.2 regression where
+ operations involving negative numbers were not constant-folded.
+
+- Issue #11450: Don't truncate hg version info in Py_GetBuildInfo() when
+ there are many tags (e.g. when using mq). Patch by Nadeem Vawda.
+
+- Issue #11335: Fixed a memory leak in list.sort when the key function
+ throws an exception.
+
+- Issue #8923: When a string is encoded to UTF-8 in strict mode, the result is
+ cached into the object. Examples: str.encode(), str.encode('utf-8'),
+ PyUnicode_AsUTF8String() and PyUnicode_AsEncodedString(unicode, "utf-8",
+ NULL).
+
+- Issue #10831: PyUnicode_FromFormat() supports %li, %lli and %zi formats.
+
+- Issue #10829: Refactor PyUnicode_FromFormat(), use the same function to parse
+ the format string in the 3 steps, fix crashs on invalid format strings.
+
+- Issue #13007: whichdb should recognize gdbm 1.9 magic numbers.
+
+- Issue #11246: Fix PyUnicode_FromFormat("%V") to decode the byte string from
+ UTF-8 (with replace error handler) instead of ISO-8859-1 (in strict mode).
+ Patch written by Ray Allen.
+
+- Issue #11286: Raise a ValueError from calling PyMemoryView_FromBuffer with
+ a buffer struct having a NULL data pointer.
+
+- Issue #11272: On Windows, input() strips '\r' (and not only '\n'), and
+ sys.stdin uses universal newline (replace '\r\n' by '\n').
+
+- issue #11828: startswith and endswith don't accept None as slice index.
+ Patch by Torsten Becker.
+
+- Issue #10830: Fix PyUnicode_FromFormatV("%c") for non-BMP characters on
+ narrow build.
+
+- Issue #11168: Remove filename debug variable from PyEval_EvalFrameEx().
+ It encoded the Unicode filename to UTF-8, but the encoding fails on
+ undecodable filename (on surrogate characters) which raises an unexpected
+ UnicodeEncodeError on recursion limit.
+
+- Issue #11187: Remove bootstrap code (use ASCII) of
+ PyUnicode_AsEncodedString(), it was replaced by a better fallback (use the
+ locale encoding) in PyUnicode_EncodeFSDefault().
+
+- Check for NULL result in PyType_FromSpec.
+
+- Issue #10516: New copy() and clear() methods for lists and bytearrays.
+
+- Issue #11386: bytearray.pop() now throws IndexError when the bytearray is
+ empty, instead of OverflowError.
+
+- Issue #12380: The rjust, ljust and center methods of bytes and bytearray
+ now accept a bytearray argument.
+
Library
-------
+- Issue #14195: An issue that caused weakref.WeakSet instances to incorrectly
+ return True for a WeakSet instance 'a' in both 'a < a' and 'a > a' has been
+ fixed.
+
+- Issue #14166: Pickler objects now have an optional ``dispatch_table``
+ attribute which allows to set custom per-pickler reduction functions.
+ Patch by sbt.
+
+- Issue #14177: marshal.loads() now raises TypeError when given an unicode
+ string. Patch by Guilherme Gonçalves.
+
+- Issue #13550: Remove the debug machinery from the threading module: remove
+ verbose arguments from all threading classes and functions.
+
+- Issue #14159: Fix the len() of weak containers (WeakSet, WeakKeyDictionary,
+ WeakValueDictionary) to return a better approximation when some objects
+ are dead or dying. Moreover, the implementation is now O(1) rather than
+ O(n).
+
+- Issue #13125: Silence spurious test_lib2to3 output when in non-verbose mode.
+ Patch by Mikhail Novikov.
+
+- Issue #11841: Fix comparison bug with 'rc' versions in packaging.version.
+ Patch by Filip Gruszczyński.
+
+- Issue #13447: Add a test file to host regression tests for bugs in the
+ scripts found in the Tools directory.
+
+- Issue #6884: Fix long-standing bugs with MANIFEST.in parsing in distutils
+ on Windows. Also fixed in packaging.
+
+- Issue #8033: sqlite3: Fix 64-bit integer handling in user functions
+ on 32-bit architectures. Initial patch by Philippe Devalkeneer.
+
- HTMLParser is now able to handle slashes in the start tag.
+- Issue #13641: Decoding functions in the base64 module now accept ASCII-only
+ unicode strings. Patch by Catalin Iacob.
+
+- Issue #14043: Speed up importlib's _FileFinder by at least 8x, and add a
+ new importlib.invalidate_caches() function.
+
- Issue #14001: CVE-2012-0845: xmlrpc: Fix an endless loop in
SimpleXMLRPCServer upon malformed POST request.
+- Issue #13961: Move importlib over to using os.replace() for atomic renaming.
+
+- Do away with ambiguous level values (as suggested by PEP 328) in
+ importlib.__import__() by raising ValueError when level < 0.
+
- Issue #2489: pty.spawn could consume 100% cpu when it encountered an EOF.
- Issue #13014: Fix a possible reference leak in SSLSocket.getpeercert().
+- Issue #13777: Add PF_SYSTEM sockets on OS X.
+ Patch by Michael Goderbauer.
+
- Issue #13015: Fix a possible reference leak in defaultdict.__repr__.
Patch by Suman Saha.
-- Issue #1326113: distutils' build_ext command --libraries option now
- correctly parses multiple values separated by whitespace or commas.
+- Issue #1326113: distutils' and packaging's build_ext commands option now
+ correctly parses multiple values (separated by whitespace or commas) given
+ to their --libraries option.
- Issue #10287: nntplib now queries the server's CAPABILITIES first before
sending MODE READER, and only sends it if not already in READER mode.
Patch by Hynek Schlawack.
-- Issue #13979: A bug in ctypes.util.find_library that caused
- the wrong library name to be returned has been fixed.
-
- Issue #13993: HTMLParser is now able to handle broken end tags when
strict=False.
+- Issue #13930: lib2to3 now supports writing converted output files to another
+ directory tree as well as copying unchanged files and altering the file
+ suffix.
+
- Issue #9750: Fix sqlite3.Connection.iterdump on tables and fields
with a name that is a keyword or contains quotes. Patch by Marko
Kohtala.
@@ -408,6 +987,28 @@ Library
- Issue #13960: HTMLParser is now able to handle broken comments when
strict=False.
+- Issue #13921: Undocument and clean up sqlite3.OptimizedUnicode,
+ which is obsolete in Python 3.x. It's now aliased to str for
+ backwards compatibility.
+
+- When '' is a path (e.g. in sys.path), make sure __file__ uses the current
+ working directory instead of '' in importlib.
+
+- Issue #13609: Add two functions to query the terminal size:
+ os.get_terminal_size (low level) and shutil.get_terminal_size (high level).
+ Patch by Zbigniew Jędrzejewski-Szmek.
+
+- Issue #13845: On Windows, time.time() now uses GetSystemTimeAsFileTime()
+ instead of ftime() to have a resolution of 100 ns instead of 1 ms (the clock
+ accuracy is between 0.5 ms and 15 ms).
+
+- Issue #13846: Add time.monotonic(), monotonic clock.
+
+- Issue #8184: multiprocessing: On Windows, don't set SO_REUSEADDR on
+ Connection sockets, and set FILE_FLAG_FIRST_PIPE_INSTANCE on named pipes, to
+ make sure two listeners can't bind to the same socket/pipe (or any existing
+ socket/pipe).
+
- Issue #9021: Add an introduction to the copy module documentation.
- Issue #6005: Examples in the socket library documentation use sendall, where
@@ -421,8 +1022,15 @@ Library
- Issue #964437: Make IDLE help window non-modal.
Patch by Guilherme Polo and Roger Serwy.
+- Issue #13734: Add os.fwalk(), a directory walking function yielding file
+ descriptors.
+
- Issue #2945: Make the distutils upload command aware of bdist_rpm products.
+- Issue #13712: pysetup create should not convert package_data to extra_files.
+
+- Issue #11805: package_data in setup.cfg should allow more than one value.
+
- Issue #13933: IDLE auto-complete did not work with some imported
module, like hashlib. (Patch by Roger Serwy)
@@ -433,6 +1041,9 @@ Library
- Issue #13506: Add '' to path for IDLE Shell when started and restarted with Restart Shell.
Original patches by Marco Scataglini and Roger Serwy.
+- Issue #8828: Add new function os.replace(), for cross-platform renaming
+ with overwriting.
+
- Issue #13848: open() and the FileIO constructor now check for NUL
characters in the file name. Patch by Hynek Schlawack.
@@ -445,6 +1056,17 @@ Library
- Issue #13885: CVE-2011-3389: the _ssl module would always disable the CBC
IV attack countermeasure.
+- Issue #13847: time.localtime() and time.gmtime() now raise an OSError instead
+ of ValueError on failure. time.ctime() and time.asctime() now raises an
+ OSError if localtime() failed. time.clock() now raises a RuntimeError if the
+ processor time used is not available or its value cannot be represented
+
+- Issue #13862: Fix spurious failure in test_zlib due to runtime/compile time
+ minor versions not matching.
+
+- Issue #12804: Fix test_socket and test_urllib2net failures when running tests
+ on a system without internet access.
+
- Issue #13772: In os.symlink() under Windows, do not try to guess the link
target's type (file or directory). The detection was buggy and made the
call non-atomic (therefore prone to race conditions).
@@ -460,6 +1082,11 @@ Library
- Issue #13803: Under Solaris, distutils doesn't include bitness
in the directory name.
+- Issue #10278: Add time.wallclock() function, monotonic clock.
+
+- Issue #13809: Fix regression where bz2 module wouldn't work when threads are
+ disabled. Original patch by Amaury Forgeot d'Arc.
+
- Issue #13589: Fix some serialization primitives in the aifc module.
Patch by Oleg Plakhotnyuk.
@@ -476,6 +1103,11 @@ Library
- Issue #13502: threading: Fix a race condition in Event.wait() that made it
return False when the event was set and cleared right after.
+- Issue #9993: When the source and destination are on different filesystems,
+ and the source is a symlink, shutil.move() now recreates a symlink on the
+ destination instead of copying the file contents. Patch by Jonathan Niehof
+ and Hynek Schlawack.
+
- Issue #12926: Fix a bug in tarfile's link extraction.
- Issue #13696: Fix the 302 Relative URL Redirection problem.
@@ -483,15 +1115,44 @@ Library
- Issue #13636: Weak ciphers are now disabled by default in the ssl module
(except when SSLv2 is explicitly asked for).
+- Issue #12715: Add an optional symlinks argument to shutil functions
+ (copyfile, copymode, copystat, copy, copy2). When that parameter is
+ true, symlinks aren't dereferenced and the operation instead acts on the
+ symlink itself (or creates one, if relevant). Patch by Hynek Schlawack.
+
+- Add a flags parameter to select.epoll.
+
- Issue #12798: Updated the mimetypes documentation.
+- Issue #13626: Add support for SSL Diffie-Hellman key exchange, through the
+ SSLContext.load_dh_params() method and the ssl.OP_SINGLE_DH_USE option.
+
- Issue #11006: Don't issue low level warning in subprocess when pipe2() fails.
+- Issue #13620: Support for Chrome browser in webbrowser. Patch contributed
+ by Arnaud Calmettes.
+
- Issue #11829: Fix code execution holes in inspect.getattr_static for
metaclasses with metaclasses. Patch by Andreas Stührk.
+- Issue #12708: Add starmap() and starmap_async() methods (similar to
+ itertools.starmap()) to multiprocessing.Pool. Patch by Hynek Schlawack.
+
- Issue #1785: Fix inspect and pydoc with misbehaving descriptors.
+- Issue #13637: "a2b" functions in the binascii module now accept ASCII-only
+ unicode strings.
+
+- Issue #13634: Add support for querying and disabling SSL compression.
+
+- Issue #13627: Add support for SSL Elliptic Curve-based Diffie-Hellman
+ key exchange, through the SSLContext.set_ecdh_curve() method and the
+ ssl.OP_SINGLE_ECDH_USE option.
+
+- Issue #13635: Add ssl.OP_CIPHER_SERVER_PREFERENCE, so that SSL servers
+ choose the cipher based on their own preferences, rather than on the
+ client's.
+
- Issue #11813: Fix inspect.getattr_static for modules. Patch by Andreas
Stührk.
@@ -504,27 +1165,62 @@ Library
- Issue #8035: urllib: Fix a bug where the client could remain stuck after a
redirection or an error.
+- Issue #13560: os.strerror() now uses the current locale encoding instead of
+ UTF-8.
+
+- Issue #13560: Add PyUnicode_DecodeLocale(), PyUnicode_DecodeLocaleAndSize()
+ and PyUnicode_EncodeLocale() functions to the C API to decode/encode from/to
+ the current locale encoding.
+
+- Issue #8373: The filesystem path of AF_UNIX sockets now uses the filesystem
+ encoding and the surrogateescape error handler, rather than UTF-8. Patch
+ by David Watson.
+
- Issue #10350: Read and save errno before calling a function which might
overwrite it. Original patch by Hallvard B Furuseth.
+- Issue #11610: Introduce a more general way to declare abstract properties.
+
- Issue #13591: A bug in importlib has been fixed that caused import_module
to load a module twice.
- Issue #4625: If IDLE cannot write to its recent file or breakpoint
files, display a message popup and continue rather than crash.
- (original patch by Roger Serwy)
+ (original patch by Roger Serwy)
+
+- Issue #13449 sched.scheduler.run() method has a new "blocking" parameter which
+ when set to False makes run() execute the scheduled events due to expire
+ soonest (if any) and then return. Patch by Giampaolo Rodolà.
-- Issue #5905: time.strftime() is now using the locale encoding, instead of
- UTF-8, if the wcsftime() function is not available.
+- Issue #8684 sched.scheduler class can be safely used in multi-threaded
+ environments. Patch by Josiah Carlson and Giampaolo Rodolà.
+
+- Alias resource.error to OSError ala PEP 3151.
+
+- Issue #5689: Add support for lzma compression to the tarfile module.
+
+- Issue #13248: Turn 3.2's PendingDeprecationWarning into 3.3's
+ DeprecationWarning. It covers 'cgi.escape', 'importlib.abc.PyLoader',
+ 'importlib.abc.PyPycLoader', 'nntplib.NNTP.xgtitle', 'nntplib.NNTP.xpath',
+ and private attributes of 'smtpd.SMTPChannel'.
+
+- Issue #5905, #13560: time.strftime() is now using the current locale
+ encoding, instead of UTF-8, if the wcsftime() function is not available.
- Issue #8641: Update IDLE 3 syntax coloring to recognize b".." and not u"..".
Patch by Tal Einat.
+- Issue #13464: Add a readinto() method to http.client.HTTPResponse. Patch
+ by Jon Kuhn.
+
- tarfile.py: Correctly detect bzip2 compressed streams with blocksizes
other than 900k.
- Issue #13439: Fix many errors in turtle docstrings.
+- Issue #6715: Add a module 'lzma' for compression using the LZMA algorithm.
+ Thanks to Per Øyvind Karlsen for the initial implementation.
+
- Issue #13487: Make inspect.getmodule robust against changes done to
sys.modules while it is iterating over it.
@@ -534,15 +1230,31 @@ Library
- Issue #13444: When stdout has been closed explicitly, we should not attempt
to flush it at shutdown and print an error.
+- Issue #12567: The curses module uses Unicode functions for Unicode arguments
+ when it is linked to the ncurses library. It encodes also Unicode strings to
+ the locale encoding instead of UTF-8.
+
- Issue #12856: Ensure child processes do not inherit the parent's random
seed for filename generation in the tempfile module. Patch by Brian
Harring.
+- Issue #9957: SpooledTemporaryFile.truncate() now accepts an optional size
+ parameter, as other file-like objects. Patch by Ryan Kelly.
+
- Issue #13458: Fix a memory leak in the ssl module when decoding a
certificate with a subjectAltName. Patch by Robert Xiao.
- Issue #13415: os.unsetenv() doesn't ignore errors anymore.
+- Issue #13245: sched.scheduler class constructor's timefunc and
+ delayfunct parameters are now optional.
+ scheduler.enter and scheduler.enterabs methods gained a new kwargs parameter.
+ Patch contributed by Chris Clark.
+
+- Issue #12328: Under Windows, refactor handling of Ctrl-C events and
+ make _multiprocessing.win32.WaitForMultipleObjects interruptible when
+ the wait_flag parameter is false. Patch by sbt.
+
- Issue #13322: Fix BufferedWriter.write() to ensure that BlockingIOError is
raised when the wrapped raw file is non-blocking and the write would block.
Previous code assumed that the raw write() would raise BlockingIOError, but
@@ -555,13 +1267,25 @@ Library
node when it is the only child of an element. Initial patch by Dan
Kenigsberg.
+- Issue #13374: The Windows bytes API has been deprecated in the os module. Use
+ Unicode filenames instead of bytes filenames to not depend on the ANSI code
+ page anymore and to support any filename.
+
+- Issue #13297: Use bytes type to send and receive binary data through XMLRPC.
+
+- Issue #6397: Support "/dev/poll" polling objects in select module,
+ under Solaris & derivatives.
+
- Issues #1745761, #755670, #13357, #12629, #1200313: HTMLParser now correctly
handles non-valid attributes, including adjacent and unquoted attributes.
-- Issue #13193: Fix distutils.filelist.FileList under Windows.
+- Issue #13193: Fix distutils.filelist.FileList and packaging.manifest.Manifest
+ under Windows.
- Issue #13384: Remove unnecessary __future__ import in Lib/random.py
+- Issue #13149: Speed up append-only StringIO objects.
+
- Issue #13373: multiprocessing.Queue.get() could sometimes block indefinitely
when called with a timeout. Patch by Arnaud Ysmal.
@@ -577,11 +1301,20 @@ Library
- Issue #13339: Fix compile error in posixmodule.c due to missing semicolon.
Thanks to Robert Xiao.
+- Byte compilation in packaging is now isolated from the calling Python -B or
+ -O options, instead of being disallowed under -B or buggy under -O.
+
- Issue #10570: curses.putp() and curses.tparm() are now expecting a byte
string, instead of a Unicode string.
+- Issue #13295: http.server now produces valid HTML 4.01 strict.
+
- Issue #2892: preserve iterparse events in case of SyntaxError.
+- Issue #13287: urllib.request and urllib.error now contains an __all__
+ attribute to expose only relevant classes and functions. Patch by Florent
+ Xicluna.
+
- Issue #670664: Fix HTMLParser to correctly handle the content of
``<script>...</script>`` and ``<style>...</style>``.
@@ -591,6 +1324,9 @@ Library
- Issue #13296: Fix IDLE to clear compile __future__ flags on shell restart.
(Patch by Roger Serwy)
+- Fix the xmlrpc.client user agent to return something similar to
+ urllib.request user agent: "Python-xmlrpc/3.3".
+
- Issue #13293: Better error message when trying to marshal bytes using
xmlrpc.client.
@@ -601,51 +1337,81 @@ Library
- Issue #13273: fix a bug that prevented HTMLParser to properly detect some
tags when strict=False.
+- Issue #11183: Add finer-grained exceptions to the ssl module, so that
+ you don't have to inspect the exception's attributes in the common case.
+
+- Issue #13216: Add cp65001 codec, the Windows UTF-8 (CP_UTF8).
+
+- Issue #13226: Add RTLD_xxx constants to the os module. These constants can be
+ used with sys.setdlopenflags().
+
+- Issue #10278: Add clock_getres(), clock_gettime() and CLOCK_xxx constants to
+ the time module. time.clock_gettime(time.CLOCK_MONOTONIC) provides a
+ monotonic clock
+
- Issue #10332: multiprocessing: fix a race condition when a Pool is closed
before all tasks have completed.
- Issue #13255: wrong docstrings in array module.
+- Issue #8540: Remove deprecated Context._clamp attribute in Decimal module.
+
+- Issue #13235: Added PendingDeprecationWarning to warn() method and function.
+
- Issue #9168: now smtpd is able to bind privileged port.
- Issue #12529: fix cgi.parse_header issue on strings with double-quotes and
semicolons together. Patch by Ben Darnell and Petri Lehtinen.
-- Issue #12448: smtplib now flushes stdout while running ``python -m smtplib``
- in order to display the prompt correctly.
+- Issue #13227: functools.lru_cache() now has a option to distinguish
+ calls with different argument types.
- Issue #6090: zipfile raises a ValueError when a document with a timestamp
earlier than 1980 is provided. Patch contributed by Petri Lehtinen.
+- Issue #13150: sysconfig no longer parses the Makefile and config.h files
+ when imported, instead doing it at build time. This makes importing
+ sysconfig faster and reduces Python startup time by 20%.
+
+- Issue #12448: smtplib now flushes stdout while running ``python -m smtplib``
+ in order to display the prompt correctly.
+
+- Issue #12454: The mailbox module is now using ASCII, instead of the locale
+ encoding, to read and write MH mailboxes (.mh_sequences files).
+
- Issue #13194: zlib.compressobj().copy() and zlib.decompressobj().copy() are
now available on Windows.
+- issue #1673007: urllib2 to support HEAD request via new method argument.
+ Patch contributions by David Stanek, Patrick Westerhoff and Ezio Melotti.
+
+- Issue #12386: packaging does not fail anymore when writing the RESOURCES
+ file.
+
- Issue #13158: Fix decoding and encoding of GNU tar specific base-256 number
fields in tarfile.
-- Issue #13177: Functools lru_cache() no longer calls the original function
- inside an exception handler. This makes tracebacks easier to read because
- chained exceptions are avoided.
-
- Issue #13025: mimetypes is now reading MIME types using the UTF-8 encoding,
instead of the locale encoding.
- Issue #10653: On Windows, use strftime() instead of wcsftime() because
wcsftime() doesn't format time zone correctly.
+- Issue #13150: The tokenize module doesn't compile large regular expressions
+ at startup anymore.
+
- Issue #11171: Fix distutils.sysconfig.get_makefile_filename when Python was
configured with different prefix and exec-prefix.
-- Issue #11254: Teach distutils to compile .pyc and .pyo files in
+- Issue #11254: Teach distutils and packaging to compile .pyc and .pyo files in
PEP 3147-compliant __pycache__ directories.
-- Issue #11250: Back port fix from 3.3 branch, so that 2to3 can handle files
- with line feeds. This was ported from the sandbox to the 3.3 branch, but
- didn't make it into 3.2.
-
- Issue #7367: Fix pkgutil.walk_paths to skip directories whose
contents cannot be read.
+- Issue #3163: The struct module gets new format characters 'n' and 'N'
+ supporting C integer types ``ssize_t`` and ``size_t``, respectively.
+
- Issue #13099: Fix sqlite3.Cursor.lastrowid under a Turkish locale.
Reported and diagnosed by Thomas Kluyver.
@@ -666,13 +1432,29 @@ Library
with invalid hex escape sequences, like b'\x0'.
(Original patch by Claudiu Popa.)
-- Issue #8933: distutils' PKG-INFO files will now correctly report
- Metadata-Version: 1.1 instead of 1.0 if a Classifier or Download-URL field is
- present.
+- Issue #12306: Expose the runtime version of the zlib C library as a constant,
+ ZLIB_RUNTIME_VERSION, in the zlib module. Patch by Torsten Landschoff.
+
+- Issue #12959: Add collections.ChainMap to collections.__all__.
+
+- Issue #8933: distutils' PKG-INFO files and packaging's METADATA files will
+ now correctly report Metadata-Version: 1.1 instead of 1.0 if a Classifier or
+ Download-URL field is present.
-- Issue #9561: distutils now reads and writes egg-info files using UTF-8,
+- Issue #12567: Add curses.unget_wch() function. Push a character so the next
+ get_wch() will return it.
+
+- Issue #9561: distutils and packaging now writes egg-info files using UTF-8,
instead of the locale encoding.
+- Issue #8286: The distutils command sdist will print a warning message instead
+ of crashing when an invalid path is given in the manifest template.
+
+- Issue #12841: tarfile unnecessarily checked the existence of numerical user
+ and group ids on extraction. If one of them did not exist the respective id
+ of the current user (i.e. root) was used for the file and ownership
+ information was lost.
+
- Issue #12888: Fix a bug in HTMLParser.unescape that prevented it to escape
more than 128 entities. Patch by Peter Otten.
@@ -680,6 +1462,16 @@ Library
- Issue #12636: IDLE reads the coding cookie when executing a Python script.
+- Issue #12494: On error, call(), check_call(), check_output() and
+ getstatusoutput() functions of the subprocess module now kill the process,
+ read its status (to avoid zombis) and close pipes.
+
+- Issue #12720: Expose low-level Linux extended file attribute functions in os.
+
+- Issue #10946: The distutils commands bdist_dumb, bdist_wininst and bdist_msi
+ now respect a --skip-build option given to bdist. The packaging commands
+ were fixed too.
+
- Issue #12847: Fix a crash with negative PUT and LONG_BINPUT arguments in
the C pickle implementation.
@@ -689,201 +1481,47 @@ Library
- Issue #12287: Fix a stack corruption in ossaudiodev module when the FD is
greater than FD_SETSIZE.
-- Issue #11657: Fix sending file descriptors over 255 over a multiprocessing
- Pipe.
-
-- Issue #13007: whichdb should recognize gdbm 1.9 magic numbers.
-
-- Issue #12213: Fix a buffering bug with interleaved reads and writes that
- could appear on BufferedRandom streams.
-
-- Issue #12650: Fix a race condition where a subprocess.Popen could leak
- resources (FD/zombie) when killed at the wrong time.
-
-- Issue #10860: http.client now correctly handles an empty port after port
- delimiter in URLs.
-
-Build
------
-
-- Issue #6807: Run msisupport.mak earlier.
-
-- Issue #10580: Minor grammar change in Windows installer.
-
-- Issue #13326: Clean __pycache__ directories correctly on OpenBSD.
-
-Tools/Demos
------------
-
-- Issue #14053: patchcheck.py ("make patchcheck") now works with MQ patches.
- Patch by Francisco Martín Brugué.
-
-- Issue #13930: 2to3 is now able to write its converted output files to another
- directory tree as well as copying unchanged files and altering the file
- suffix. See its new -o, -W and --add-suffix options. This makes it more
- useful in many automated code translation workflows.
-
-- Issue #13628: python-gdb.py is now able to retrieve more frames in the Python
- traceback if Python is optimized.
-
-Tests
------
-
-- Issue #11689: Fix a variable scoping error in an sqlite3 test
-
-- Issue #13786: Remove unimplemented 'trace' long option from regrtest.py.
-
-- Issue #13725: Fix regrtest to recognize the documented -d flag.
- Patch by Erno Tukia.
-
-- Issue #13304: Skip test case if user site-packages disabled (-s or
- PYTHONNOUSERSITE). (Patch by Carl Meyer)
-
-- Issue #13218: Fix test_ssl failures on Debian/Ubuntu.
-
-- Issue #12821: Fix test_fcntl failures on OpenBSD 5.
-
-- Re-enable lib2to3's test_parser.py tests, though with an expected failure
- (see issue 13125).
-
-Extension Modules
------------------
-
-- Issue #13840: The error message produced by ctypes.create_string_buffer
- when given a Unicode string has been fixed.
-
-- Issue #9975: socket: Fix incorrect use of flowinfo and scope_id. Patch by
- Vilmos Nebehaj.
-
-- Issue #13159: FileIO and BZ2File now use a linear-time buffer growth
- strategy instead of a quadratic-time one.
-
-- Issue #13070: Fix a crash when a TextIOWrapper caught in a reference cycle
- would be finalized after the reference to its underlying BufferedRWPair's
- writer got cleared by the GC.
-
-- Issue #12881: ctypes: Fix segfault with large structure field names.
-
-- Issue #13058: ossaudiodev: fix a file descriptor leak on error. Patch by
- Thomas Jarosch.
-
-- Issue #13013: ctypes: Fix a reference leak in PyCArrayType_from_ctype.
- Thanks to Suman Saha for finding the bug and providing a patch.
-
-- Issue #13022: Fix: _multiprocessing.recvfd() doesn't check that
- file descriptor was actually received.
-
-- Issue #12483: ctypes: Fix a crash when the destruction of a callback
- object triggers the garbage collector.
-
-- Issue #12950: Fix passing file descriptors in multiprocessing, under
- OpenIndiana/Illumos.
-
-Documentation
--------------
-
-- Issues #13491 and #13995: Fix many errors in sqlite3 documentation.
- Initial patch for #13491 by Johannes Vogel.
-
-- Issue #13402: Document absoluteness of sys.executable.
-
-- Issue #13883: PYTHONCASEOK also used on OS X and OS/2.
-
-- Issue #12949: Document the kwonlyargcount argument for the PyCode_New
- C API function.
-
-- Issue #2134: The tokenize documentation has been clarified to explain why
- all operator and delimiter tokens are treated as token.OP tokens.
-
-- Issue #13513: Fix io.IOBase documentation to correctly link to the
- io.IOBase.readline method instead of the readline module.
-
-- Issue #13237: Reorganise subprocess documentation to emphasise convenience
- functions and the most commonly needed arguments to Popen.
-
-- Issue #13141: Demonstrate recommended style for socketserver examples.
-
-
-What's New in Python 3.2.2?
-===========================
-
-*Release date: 03-Sep-2011*
-
-Core and Builtins
------------------
-
-- Issue #12326: sys.platform is now always 'linux2' on Linux, even if Python
- is compiled on Linux 3.
-
-- Accept bytes for the AST string type. This is temporary until a proper fix in
- 3.3.
-
-Library
--------
-
-- Issue #8286: The distutils command sdist will print a warning message instead
- of crashing when an invalid path is given in the manifest template.
-
-- Issue #12841: tarfile unnecessarily checked the existence of numerical user
- and group ids on extraction. If one of them did not exist the respective id
- of the current user (i.e. root) was used for the file and ownership
- information was lost.
-
-- Issue #10946: The distutils commands bdist_dumb, bdist_wininst and bdist_msi
- now respect a --skip-build option given to bdist.
-
- Issue #12839: Fix crash in zlib module due to version mismatch.
Fix by Richard M. Tew.
-Extension Modules
------------------
-
-- Issue #9651: Fix a crash when ctypes.create_string_buffer(0) was passed to
- some functions like file.write().
-
+- Issue #9923: The mailcap module now correctly uses the platform path
+ separator for the MAILCAP environment variable on non-POSIX platforms.
+- Issue #12835: Follow up to #6560 that unconditionally prevents use of the
+ unencrypted sendmsg/recvmsg APIs on SSL wrapped sockets. Patch by David
+ Watson.
-What's New in Python 3.2.2 release candidate 1?
-===============================================
+- Issue #12803: SSLContext.load_cert_chain() now accepts a password argument
+ to be used if the private key is encrypted. Patch by Adam Simpkins.
-*Release date: 14-Aug-2011*
-
-Core and Builtins
------------------
-
-- Issue #12732: In narrow unicode builds, allow Unicode identifiers which fall
- outside the BMP.
-
-- Issue #11603: Fix a crash when __str__ is rebound as __repr__. Patch by
- Andreas Stührk.
+- Issue #11657: Fix sending file descriptors over 255 over a multiprocessing
+ Pipe.
-- Issue #11321: Fix a crash with multiple imports of the _pickle module when
- embedding Python. Patch by Andreas Stührk.
+- Issue #12811: tabnanny.check() now promptly closes checked files. Patch by
+ Anthony Briggs.
-- Verify the types of AST strings and identifiers provided by the user before
- compiling them.
+- Issue #6560: The sendmsg/recvmsg API is now exposed by the socket module
+ when provided by the underlying platform, supporting processing of
+ ancillary data in pure Python code. Patch by David Watson and Heiko Wundram.
-- Issue #12579: str.format_map() now raises a ValueError if used on a
- format string that contains positional fields. Initial patch by
- Julian Berman.
+- Issue #12326: On Linux, sys.platform doesn't contain the major version
+ anymore. It is now always 'linux', instead of 'linux2' or 'linux3' depending
+ on the Linux version used to build Python.
-- Issue #11627: Fix segfault when __new__ on a exception returns a
- non-exception class.
+- Issue #12213: Fix a buffering bug with interleaved reads and writes that
+ could appear on BufferedRandom streams.
-- Issue #12149: Update the method cache after a type's dictionary gets
- cleared by the garbage collector. This fixes a segfault when an instance
- and its type get caught in a reference cycle, and the instance's
- deallocator calls one of the methods on the type (e.g. when subclassing
- IOBase). Diagnosis and patch by Davide Rizzo.
+- Issue #12778: Reduce memory consumption when JSON-encoding a large
+ container of many small objects.
-- When a generator yields, do not retain the caller's exception state on the
- generator.
+- Issue #12650: Fix a race condition where a subprocess.Popen could leak
+ resources (FD/zombie) when killed at the wrong time.
-- Issue #12475: Prevent generators from leaking their exception state into the
- caller's frame as they return for the last time.
+- Issue #12744: Fix inefficient representation of integers between 2**31 and
+ 2**63 on systems with a 64-bit C "long".
-Library
--------
+- Issue #12646: Add an 'eof' attribute to zlib.Decompress, to make it easier to
+ detect truncated input streams.
- Issue #11513: Fix exception handling ``tarfile.TarFile.gzopen()`` when
the file cannot be opened.
@@ -896,18 +1534,42 @@ Library
- Issue #12540: Prevent zombie IDLE processes on Windows due to changes
in os.kill().
+- Add support for unary plus and unary minus to collections.Counter().
+ Issue #13121: Also add support for inplace math operators.
+
- Issue #12683: urlparse updated to include svn as schemes that uses relative
paths. (svn from 1.5 onwards support relative path).
+- Issue #12655: Expose functions from sched.h in the os module: sched_yield(),
+ sched_setscheduler(), sched_getscheduler(), sched_setparam(),
+ sched_get_min_priority(), sched_get_max_priority(), sched_rr_get_interval(),
+ sched_getaffinity(), sched_setaffinity().
+
+- Add ThreadError to threading.__all__.
+
- Issues #11104, #8688: Fix the behavior of distutils' sdist command with
manually-maintained MANIFEST files.
+- Issue #11281: smtplib.STMP gets source_address parameter, which adds the
+ ability to bind to specific source address on a machine with multiple
+ interfaces. Patch by Paulo Scardine.
+
- Issue #12464: tempfile.TemporaryDirectory.cleanup() should not follow
symlinks: fix it. Patch by Petri Lehtinen.
- Issue #8887: "pydoc somebuiltin.somemethod" (or help('somebuiltin.somemethod')
in Python code) now finds the doc of the method.
+- Issue #10968: Remove indirection in threading. The public names (Thread,
+ Condition, etc.) used to be factory functions returning instances of hidden
+ classes (_Thread, _Condition, etc.), because (if Guido recalls correctly) this
+ code pre-dates the ability to subclass extension types. It is now possible to
+ inherit from Thread and other classes, without having to import the private
+ underscored names like multiprocessing did.
+
+- Issue #9723: Add shlex.quote functions, to escape filenames and command
+ lines.
+
- Issue #12603: Fix pydoc.synopsis() on files with non-negative st_mtime.
- Issue #12514: Use try/finally to assure the timeit module restores garbage
@@ -922,201 +1584,127 @@ Library
- Issue #12576: Fix urlopen behavior on sites which do not send (or obfuscates)
Connection:close header.
+- Issue #12102: Document that buffered files must be flushed before being used
+ with mmap. Patch by Steffen Daode Nurpmeso.
+
+- Issue #12560: Build libpython.so on OpenBSD. Patch by Stefan Sperling.
+
- Issue #1813: Fix codec lookup under Turkish locales.
- Issue #12591: Improve support of "universal newlines" in the subprocess
module: the piped streams can now be properly read from or written to.
- Issue #12591: Allow io.TextIOWrapper to work with raw IO objects (without
- a read1() method), and add an undocumented *write_through* parameter to
- mandate unbuffered writes.
-
-- Issue #9611, #9015: FileIO.read() clamps the length to INT_MAX on Windows.
+ a read1() method), and add a *write_through* parameter to mandate
+ unbuffered writes.
- Issue #10883: Fix socket leaks in urllib.request when using FTP.
-- Issue #12571: Add a plat-linux3 directory mirroring the plat-linux2
- directory, so that "import DLFCN" and other similar imports work on
- Linux 3.0.
-
-- Issue #7484: smtplib no longer puts <> around addresses in VRFY and EXPN
- commands; they aren't required and in fact postfix doesn't support that form.
-
-- Close the call queue in concurrent.futures.ProcessPoolExecutor when
- shutdown() is called, without waiting for the garbage collector to kick in.
-
-- Issue #12502: asyncore: fix polling loop with AF_UNIX sockets.
-
-- Issue #4376: ctypes now supports nested structures with an endianness
- different than that of the parent structure. Patch by Vlad Riscutia.
-
-- Raise ValueError when attempting to set the _CHUNK_SIZE attribute of a
- TextIOWrapper to a huge value, not TypeError.
-
-- Issue #12493: subprocess: Popen.communicate() now also handles EINTR errors
- if the process has only one pipe.
-
-- Issue #12451: pydoc: html_getfile() now uses tokenize.open() to support
- Python modules using a encoding different than UTF-8 (reading the coding
- cookie of the module).
-
-- Issue #12451: pydoc: importfile() now opens the Python module in binary mode,
- instead of text mode using the locale encoding, to avoid encoding issues.
-
-- Issue #12451: runpy: run_path() now opens the Python module in binary mode,
- instead of text mode using the locale encoding, to support other encodings
- than UTF-8 (modules using the coding cookie).
-
-- Issue #12451: xml.dom.pulldom: parse() now opens files in binary mode instead
- of the text mode (using the locale encoding) to avoid encoding issues.
-
-Extension Modules
------------------
-
-- Issue #12764: Fix a crash in ctypes when the name of a Structure field is not
- a string.
-
-- Issue #11241: subclasses of ctypes.Array can now be subclassed.
-
-- Issue #10309: Define _GNU_SOURCE so that mremap() gets the proper
- signature. Without this, architectures where sizeof void* != sizeof int are
- broken. Patch given by Hallvard B Furuseth.
-
-C-API
------
-
-Build
------
-
-- Issue #12560: Build libpython.so on OpenBSD. Patch by Stefan Sperling.
-
- Issue #12592: Make Python build on OpenBSD 5 (and future major releases).
- Issue #12372: POSIX semaphores are broken on AIX: don't use them.
-Tools/Demos
------------
+- Issue #12551: Provide a get_channel_binding() method on SSL sockets so as
+ to get channel binding data for the current SSL session (only the
+ "tls-unique" channel binding is implemented). This allows the implementation
+ of certain authentication mechanisms such as SCRAM-SHA-1-PLUS. Patch by
+ Jacek Konieczny.
-- Issue #10639: reindent.py no longer converts newlines and will raise
- an error if attempting to convert a file with mixed newlines.
+- Issue #665194: email.utils now has format_datetime and parsedate_to_datetime
+ functions, allowing for round tripping of RFC2822 format dates.
-Tests
------
+- Issue #12571: Add a plat-linux3 directory mirroring the plat-linux2
+ directory, so that "import DLFCN" and other similar imports work on
+ Linux 3.0.
-- Issue #12331: The test suite for lib2to3 can now run from an installed
- Python.
+- Issue #7484: smtplib no longer puts <> around addresses in VRFY and EXPN
+ commands; they aren't required and in fact postfix doesn't support that form.
-- Issue #12626: In regrtest, allow to filter tests using a glob filter
- with the ``-m`` (or ``--match``) option. This works with all test cases
- using the unittest module. This is useful with long test suites
- such as test_io or test_subprocess.
+- Issue #12273: Remove ast.__version__. AST changes can be accounted for by
+ checking sys.version_info or sys._mercurial.
-- Issue #12624: It is now possible to fail after the first failure when
- running in verbose mode (``-v`` or ``-W``), by using the ``--failfast``
- (or ``-G``) option to regrtest. This is useful with long test suites
- such as test_io or test_subprocess.
+- Silence spurious "broken pipe" tracebacks when shutting down a
+ ProcessPoolExecutor.
-- Issue #12587: Correct faulty test file and reference in test_tokenize.
- (Patch by Robert Xiao)
+- Fix potential resource leaks in concurrent.futures.ProcessPoolExecutor
+ by joining all queues and processes when shutdown() is called.
-- Try harder to reap dangling threads in test.support.reap_threads().
+- Issue #11603: Fix a crash when __str__ is rebound as __repr__. Patch by
+ Andreas Stührk.
-- Issue #12573: Add resource checks for dangling Thread and Process objects.
+- Issue #11321: Fix a crash with multiple imports of the _pickle module when
+ embedding Python. Patch by Andreas Stührk.
-- Issue #12549: Correct test_platform to not fail when OS X returns 'x86_64'
- as the processor type on some Mac systems.
+- Issue #6755: Add get_wch() method to curses.window class. Patch by Iñigo
+ Serna.
-- Avoid failing in test_robotparser when mueblesmoraleda.com is flaky and
- an overzealous DNS service (e.g. OpenDNS) redirects to a placeholder
- Web site.
+- Add cgi.closelog() function to close the log file.
-- Issue #12440: When testing whether some bits in SSLContext.options can be
- reset, check the version of the OpenSSL headers Python was compiled against,
- rather than the runtime version of the OpenSSL library.
+- Issue #12502: asyncore: fix polling loop with AF_UNIX sockets.
-- Issue #12497: Install test/data to prevent failures of the various codecmaps
- tests.
+- Issue #4376: ctypes now supports nested structures in a endian different than
+ the parent structure. Patch by Vlad Riscutia.
-- Issue #12496: Install test/capath directory to prevent test_connect_capath
- testcase failure in test_ssl.
+- Raise ValueError when attempting to set the _CHUNK_SIZE attribute of a
+ TextIOWrapper to a huge value, not TypeError.
-- Issue #12469: Run "wakeup" signal tests in subprocess to run the test in a
- fresh process with only one thread and to not change signal handling of the
- parent process.
+- Issue #12504: Close file handles in a timely manner in packaging.database.
+ This fixes a bug with the remove (uninstall) feature on Windows.
-- Issue #8716: Avoid crashes caused by Aqua Tk on OSX when attempting to run
- test_tk or test_ttk_guionly under a username that is not currently logged
- in to the console windowserver (as may be the case under buildbot or ssh).
+- Issues #12169 and #10510: Factor out code used by various packaging commands
+ to make HTTP POST requests, and make sure it uses CRLF.
+- Issue #12016: Multibyte CJK decoders now resynchronize faster. They only
+ ignore the first byte of an invalid byte sequence. For example,
+ b'\xff\n'.decode('gb2312', 'replace') gives '\ufffd\n' instead of '\ufffd'.
-What's New in Python 3.2.1?
-===========================
+- Issue #12459: time.sleep() now raises a ValueError if the sleep length is
+ negative, instead of an infinite sleep on Windows or raising an IOError on
+ Linux for example, to have the same behaviour on all platforms.
-*Release date: 10-Jul-2011*
+- Issue #12451: pydoc: html_getfile() now uses tokenize.open() to support
+ Python scripts using a encoding different than UTF-8 (read the coding cookie
+ of the script).
-Library
--------
+- Issue #12493: subprocess: Popen.communicate() now also handles EINTR errors
+ if the process has only one pipe.
- Issue #12467: warnings: fix a race condition if a warning is emitted at
shutdown, if globals()['__file__'] is None.
-Tests
------
-
-- Skip network tests when getaddrinfo() returns EAI_AGAIN, meaning a temporary
- failure in name resolution.
-
-- Issue #11812: Solve transient socket failure to connect to 'localhost'
- in test_telnetlib.py.
-
-- Solved a potential deadlock in test_telnetlib.py. Related to issue #11812.
-
-- Avoid failing in test_urllibnet.test_bad_address when some overzealous
- DNS service (e.g. OpenDNS) resolves a non-existent domain name. The test
- is now skipped instead.
-
-
-What's New in Python 3.2.1 release candidate 2?
-===============================================
-
-*Release date: 03-Jul-2011*
-
-Core and Builtins
------------------
-
-- Issue #12291: You can now load multiple marshalled objects from a stream, with
- other data interleaved between marshalled objects.
-
-- Issue #12084: os.stat on Windows now works properly with relative symbolic
- links when called from any directory.
-
-- Issue #1195: my_fgets() now always clears errors before calling fgets(). Fix
- the following case: sys.stdin.read() stopped with CTRL+d (end of file),
- raw_input() interrupted by CTRL+c.
+- Issue #12451: pydoc: importfile() now opens the Python script in binary mode,
+ instead of text mode using the locale encoding, to avoid encoding issues.
-- Issue #9670: Increase the default stack size for secondary threads on Mac OS X
- and FreeBSD to reduce the chances of a crash instead of a "maximum recursion
- depth" RuntimeError exception (patch by Ronald Oussoren).
+- Issue #12451: runpy: run_path() now opens the Python script in binary mode,
+ instead of text mode using the locale encoding, to support other encodings
+ than UTF-8 (scripts using the coding cookie).
-Library
--------
+- Issue #12451: xml.dom.pulldom: parse() now opens files in binary mode instead
+ of the text mode (using the locale encoding) to avoid encoding issues.
- Issue #12147: Adjust the new-in-3.2 smtplib.send_message method for better
- conformance to the RFCs: correctly handle Sender and Resent headers.
+ conformance to the RFCs: correctly handle Sender and Resent- headers.
- Issue #12352: Fix a deadlock in multiprocessing.Heap when a block is freed by
the garbage collector while the Heap lock is held.
+- Issue #12462: time.sleep() now calls immediatly the (Python) signal handler
+ if it is interrupted by a signal, instead of having to wait until the next
+ instruction.
+
+- Issue #12442: new shutil.disk_usage function, providing total, used and free
+ disk space statistics.
+
- Issue #12451: The XInclude default loader of xml.etree now decodes files from
UTF-8 instead of the locale encoding if the encoding is not specified. It now
- also opens XML files for the parser in binary mode instead of the text mode to
- avoid encoding issues.
-
-- Issue #12451: doctest.debug_script() doesn't create a temporary file anymore
+ also opens XML files for the parser in binary mode instead of the text mode
to avoid encoding issues.
-- Issue #12451: pydoc.synopsis() now reads the encoding cookie if available, to
- read the Python module from the right encoding.
+- Issue #12451: doctest.debug_script() doesn't create a temporary file
+ anymore to avoid encoding issues.
+
+- Issue #12451: pydoc.synopsis() now reads the encoding cookie if available,
+ to read the Python script from the right encoding.
- Issue #12451: distutils now opens the setup script in binary mode to read the
encoding cookie, instead of opening it in UTF-8.
@@ -1130,14 +1718,32 @@ Library
still possible to globally override the default by setting
MACOSX_DEPLOYMENT_TARGET before launching the interpreter; its value must be
greater or equal to the default value, the value with which the interpreter
- was built.
+ was built. Also, implement the same handling in packaging.
+
+- Issue #12422: In the copy module, don't store objects that are their own copy
+ in the memo dict.
+
+- Issue #12303: Add sigwaitinfo() and sigtimedwait() to the signal module.
+
+- Issue #12404: Remove C89 incompatible code from mmap module. Patch by Akira
+ Kitada.
+
+- Issue #1874: email now detects and reports as a defect the presence of
+ any CTE other than 7bit, 8bit, or binary on a multipart.
- Issue #12383: Fix subprocess module with env={}: don't copy the environment
variables, start with an empty environment.
-- Issue #11584: email.header.decode_header no longer fails if the header passed
- to it is a Header object, and Header/make_header no longer fail if given
- binary unknown-8bit input.
+- Issue #11637: Fix support for importing packaging setup hooks from the
+ project directory.
+
+- Issue #6771: Moved the curses.wrapper function from the single-function
+ wrapper module into __init__, eliminating the module. Since __init__ was
+ already importing the function to curses.wrapper, there is no API change.
+
+- Issue #11584: email.header.decode_header no longer fails if the header
+ passed to it is a Header object, and Header/make_header no longer fail
+ if given binary unknown-8bit input.
- Issue #11700: mailbox proxy object close methods can now be called multiple
times without error.
@@ -1148,117 +1754,136 @@ Library
connection if its getresponse() method fails with a socket error. Patch
written by Ezio Melotti.
+- Issue #12240: Allow multiple setup hooks in packaging's setup.cfg files.
+ Original patch by Erik Bray.
+
- Issue #9284: Allow inspect.findsource() to find the source of doctest
functions.
+- Issue #11595: Fix assorted bugs in packaging.util.cfg_to_args, a
+ compatibility helper for the distutils-packaging transition. Original patch
+ by Erik Bray.
+
+- Issue #12287: In ossaudiodev, check that the device isn't closed in several
+ methods.
+
- Issue #12009: Fixed regression in netrc file comment handling.
+- Issue #12246: Warn and fail when trying to install a third-party project from
+ an uninstalled Python (built in a source checkout). Original patch by
+ Tshepang Lekhonkhobe.
+
- Issue #10694: zipfile now ignores garbage at the end of a zipfile.
- Issue #12283: Fixed regression in smtplib quoting of leading dots in DATA.
+- Issue #10424: Argparse now includes the names of the missing required
+ arguments in the missing arguments error message.
+
- Issue #12168: SysLogHandler now allows NUL termination to be controlled using
a new 'append_nul' attribute on the handler.
- Issue #11583: Speed up os.path.isdir on Windows by using GetFileAttributes
instead of os.stat.
-- Named tuples now work correctly with vars().
+- Issue #12021: Make mmap's read() method argument optional. Patch by Petri
+ Lehtinen.
-- Issue #12085: Fix an attribute error in subprocess.Popen destructor if the
- constructor has failed, e.g. because of an undeclared keyword argument. Patch
- written by Oleg Oshmyan.
+- Issue #9205: concurrent.futures.ProcessPoolExecutor now detects killed
+ children and raises BrokenProcessPool in such a situation. Previously it
+ would reliably freeze/deadlock.
-- Issue #985064: Make plistlib more resilient to faulty input plists. Patch by
- Mher Movsisyan.
+- Issue #12040: Expose a new attribute ``sentinel`` on instances of
+ :class:`multiprocessing.Process`. Also, fix Process.join() to not use
+ polling anymore, when given a timeout.
-- Issue #12175: RawIOBase.readall() now returns None if read() returns None.
+- Issue #11893: Remove obsolete internal wrapper class ``SSLFakeFile`` in the
+ smtplib module. Patch by Catalin Iacob.
-- Issue #12175: FileIO.readall() now raises a ValueError instead of an IOError
- if the file is closed.
+- Issue #12080: Fix a Decimal.power() case that took an unreasonably long time
+ to compute.
-- Issue #12070: Fix the Makefile parser of the sysconfig module to handle
- correctly references to "bogus variable" (e.g. "prefix=$/opt/python").
+- Issue #12221: Remove __version__ attributes from pyexpat, pickle, tarfile,
+ pydoc, tkinter, and xml.parsers.expat. This were useless version constants
+ left over from the Mercurial transition
-- Issue #12100: Don't reset incremental encoders of CJK codecs at each call to
- their encode() method anymore, but continue to call the reset() method if the
- final argument is True.
+- Named tuples now work correctly with vars().
-- Issue #5715: In socketserver, close the server socket in the child process.
+- Issue #12085: Fix an attribute error in subprocess.Popen destructor if the
+ constructor has failed, e.g. because of an undeclared keyword argument. Patch
+ written by Oleg Oshmyan.
-- Correct lookup of __dir__ on objects. Among other things, this causes errors
- besides AttributeError found on lookup to be propagated.
+- Issue #12028: Make threading._get_ident() public, rename it to
+ threading.get_ident() and document it. This function was already used using
+ _thread.get_ident().
-- Issue #12124: zipimport doesn't keep a reference to zlib.decompress() anymore
- to be able to unload the module.
+- Issue #12171: IncrementalEncoder.reset() of CJK codecs (multibytecodec) calls
+ encreset() instead of decreset().
-- Issue #12065: connect_ex() on an SSL socket now returns the original errno
- when the socket's timeout expires (it used to return None).
+- Issue #12218: Removed wsgiref.egg-info.
-Extension Modules
------------------
+- Issue #12196: Add pipe2() to the os module.
-- Issue #12404: Remove C89 incompatible code from mmap module. Patch by Akira
- Kitada.
+- Issue #985064: Make plistlib more resilient to faulty input plists.
+ Patch by Mher Movsisyan.
-- Issue #12221: Replace pyexpat.__version__ with the Python version.
+- Issue #1625: BZ2File and bz2.decompress() now support multi-stream files.
+ Initial patch by Nir Aides.
-Build
------
+- Issue #12175: BufferedReader.read(-1) now calls raw.readall() if available.
-- Issue #8746: Correct faulty configure checks so that os.chflags() and
- os.lchflags() are once again built on systems that support these functions
- (*BSD and OS X). Also add new stat file flags for OS X (UF_HIDDEN and
- UF_COMPRESSED).
+- Issue #12175: FileIO.readall() now only reads the file position and size
+ once.
-- Issue #11217: For 64-bit/32-bit Mac OS X universal framework builds, ensure
- "make install" creates symlinks in --prefix bin for the "-32" files in the
- framework bin directory like the installer does.
+- Issue #12175: RawIOBase.readall() now returns None if read() returns None.
+- Issue #12175: FileIO.readall() now raises a ValueError instead of an IOError
+ if the file is closed.
-Tests
------
+- Issue #11109: New service_action method for BaseServer, used by ForkingMixin
+ class for cleanup. Initial Patch by Justin Wark.
-- Issue #12407: Explicitly skip test_capi.EmbeddingTest under Windows.
+- Issue #12045: Avoid duplicate execution of command in
+ ctypes.util._get_soname(). Patch by Sijin Joseph.
-- Issue #12400: regrtest -W doesn't rerun the tests twice anymore, but captures
- the output and displays it on failure instead. regrtest -v doesn't print the
- error twice anymore if there is only one error.
+- Issue #10818: Remove the Tk GUI and the serve() function of the pydoc module,
+ pydoc -g has been deprecated in Python 3.2 and it has a new enhanced web
+ server.
-- Issue #12141: Install a copy of template C module file so that test_build_ext
- of test_distutils is no longer silently skipped when run outside of a build
- directory.
+- Issue #1441530: In imaplib, read the data in one chunk to speed up large
+ reads and simplify code.
-- Issue #8746: Add additional tests for os.chflags() and os.lchflags(). Patch
- by Garrett Cooper.
+- Issue #12070: Fix the Makefile parser of the sysconfig module to handle
+ correctly references to "bogus variable" (e.g. "prefix=$/opt/python").
-- Issue #10736: Fix test_ttk test_widgets failures with Cocoa Tk 8.5.9 on Mac
- OS X. (Patch by Ronald Oussoren)
+- Issue #12100: Don't reset incremental encoders of CJK codecs at each call to
+ their encode() method anymore, but continue to call the reset() method if the
+ final argument is True.
-- Issue #12057: Add tests for ISO 2022 codecs (iso2022_jp, iso2022_jp_2,
- iso2022_kr).
+- Issue #12049: Add RAND_bytes() and RAND_pseudo_bytes() functions to the ssl
+ module.
+- Issue #6501: os.device_encoding() returns None on Windows if the application
+ has no console.
-What's New in Python 3.2.1 release candidate 1?
-===============================================
+- Issue #12105: Add O_CLOEXEC to the os module.
-*Release date: 15-May-2011*
+- Issue #12079: Decimal('Infinity').fma(Decimal('0'), (3.91224318126786e+19+0j))
+ now raises TypeError (reflecting the invalid type of the 3rd argument) rather
+ than Decimal.InvalidOperation.
-Core and Builtins
------------------
+- Issue #12124: zipimport doesn't keep a reference to zlib.decompress() anymore
+ to be able to unload the module.
-- Issue #12060: Use sig_atomic_t type and volatile keyword in the signal
- module. Patch written by Charles-François Natali.
+- Add the packaging module, an improved fork of distutils (also known as
+ distutils2).
-- Issue #12044: Fixed subprocess.Popen when used as a context manager to
- wait for the process to end when exiting the context to avoid unintentionally
- leaving zombie processes around.
-
-- Issue #1195: Fix input() if it is interrupted by CTRL+d and then CTRL+c,
- clear the end-of-file indicator after CTRL+d.
+- Issue #12065: connect_ex() on an SSL socket now returns the original errno
+ when the socket's timeout expires (it used to return None).
-Library
--------
+- Issue #8809: The SMTP_SSL constructor and SMTP.starttls() now support
+ passing a ``context`` argument pointing to an ssl.SSLContext instance.
+ Patch by Kasun Herath.
- Issue #11088: don't crash when using F5 to run a script in IDLE on MacOSX
with Tk 8.5.
@@ -1266,8 +1891,6 @@ Library
- Issue #9516: Issue #9516: avoid errors in sysconfig when MACOSX_DEPLOYMENT_TARGET
is set in shell.
-- Issue #12012: ssl.PROTOCOL_SSLv2 becomes optional.
-
- Issue #8650: Make zlib module 64-bit clean. compress(), decompress() and
their incremental counterparts now raise OverflowError if given an input
larger than 4GB, instead of silently truncating the input and returning
@@ -1281,12 +1904,16 @@ Library
writing, then seeking before the previous write but still within buffered
data, and writing again).
+- Issue #9971: Write an optimized implementation of BufferedReader.readinto().
+ Patch by John O'Connor.
+
- Issue #1028: Tk returns invalid Unicode null in %A: UnicodeDecodeError.
With Tk < 8.5 _tkinter.c:PythonCmd() raised UnicodeDecodeError, caused
IDLE to exit. Converted to valid Unicode null in PythonCmd().
-- Issue #11169: compileall module uses repr() to format filenames and paths to
- escape surrogate characters and show spaces.
+- Issue #11799: urllib.request Authentication Handlers will raise a ValueError
+ when presented with an unsupported Authentication Scheme. Patch contributed
+ by Yuval Greenfield.
- Issue #10419, #6011: build_scripts command of distutils handles correctly
non-ASCII path (path to the Python executable). Open and write the script in
@@ -1296,133 +1923,68 @@ Library
- Issue #8498: In socket.accept(), allow to specify 0 as a backlog value in
order to accept exactly one connection. Patch by Daniel Evers.
-- Issue #11164: Stop trying to use _xmlplus in the xml module.
-
-Build
------
-
-- Issue #11347: Use --no-as-needed when linking libpython3.so.
-
-Tools/Demos
------------
-
-- Issue #11996: libpython (gdb), replace "py-bt" command by "py-bt-full" and
- add a smarter "py-bt" command printing a classic Python traceback.
-
-Tests
------
-
-- Issue #12096: Fix a race condition in test_threading.test_waitfor(). Patch
- written by Charles-François Natali.
-
-- Issue #11614: import __hello__ prints "Hello World!". Patch written by
- Andreas Stührk.
-
-- Issue #5723: Improve json tests to be executed with and without accelerations.
-
-- Issue #11910: Fix test_heapq to skip the C tests when _heapq is missing.
-
-
-What's New in Python 3.2.1 beta 1?
-==================================
-
-*Release date: 08-May-2011*
-
-Core and Builtins
------------------
-
-- Issue #1856: Avoid crashes and lockups when daemon threads run while the
- interpreter is shutting down; instead, these threads are now killed when they
- try to take the GIL.
-
-- Issue #9756: When calling a method descriptor or a slot wrapper descriptor,
- the check of the object type doesn't read the __class__ attribute anymore.
- Fix a crash if a class override its __class__ attribute (e.g. a proxy of the
- str type). Patch written by Andreas Stührk.
-
-- Issue #10914: Initialize correctly the filesystem codec when creating a new
- subinterpreter to fix a bootstrap issue with codecs implemented in Python, as
- the ISO-8859-15 codec.
-
-- Issue #10517: After fork(), reinitialize the TLS used by the PyGILState_*
- APIs, to avoid a crash with the pthread implementation in RHEL 5. Patch by
- Charles-François Natali.
-
-- Issue #6780: fix starts/endswith error message to mention that tuples are
- accepted too.
-
-- Issue #5057: fix a bug in the peepholer that led to non-portable pyc files
- between narrow and wide builds while optimizing BINARY_SUBSCR on non-BMP chars
- (e.g. "\U00012345"[0]).
-
-- Issue #11845: Fix typo in rangeobject.c that caused a crash in
- compute_slice_indices. Patch by Daniel Urban.
-
-- Issue #11650: PyOS_StdioReadline() retries fgets() if it was interrupted
- (EINTR), for example if the program is stopped with CTRL+z on Mac OS X. Patch
- written by Charles-Francois Natali.
-
-- Issue #11395: io.FileIO().write() clamps the data length to 32,767 bytes on
- Windows if the file is a TTY to workaround a Windows bug. The Windows console
- returns an error (12: not enough space error) on writing into stdout if stdout
- mode is binary and the length is greater than 66,000 bytes (or less, depending
- on heap usage).
-
-- Issue #11320: fix bogus memory management in Modules/getpath.c, leading to a
- possible crash when calling Py_SetPath().
-
-- Issue #11510: Fixed optimizer bug which turned "a,b={1,1}" into "a,b=(1,1)".
-
-- Issue #11432: A bug was introduced in subprocess.Popen on posix systems with
- 3.2.0 where the stdout or stderr file descriptor being the same as the stdin
- file descriptor would raise an exception. webbrowser.open would fail. fixed.
-
-- Issue #11450: Don't truncate hg version info in Py_GetBuildInfo() when there
- are many tags (e.g. when using mq). Patch by Nadeem Vawda.
-
-- Issue #11246: Fix PyUnicode_FromFormat("%V") to decode the byte string from
- UTF-8 (with replace error handler) instead of ISO-8859-1 (in strict mode).
- Patch written by Ray Allen.
+- Issue #12011: signal.signal() and signal.siginterrupt() raise an OSError,
+ instead of a RuntimeError: OSError has an errno attribute.
-- Issue #11286: Raise a ValueError from calling PyMemoryView_FromBuffer with a
- buffer struct having a NULL data pointer.
+- Issue #3709: a flush_headers method to BaseHTTPRequestHandler which manages
+ the sending of headers to output stream and flushing the internal headers
+ buffer. Patch contribution by Andrew Schaaf
-- Issue #11272: On Windows, input() strips '\r' (and not only '\n'), and
- sys.stdin uses universal newline (replace '\r\n' by '\n').
+- Issue #11743: Rewrite multiprocessing connection classes in pure Python.
-- issue #11828: startswith and endswith don't accept None as slice index. Patch
- by Torsten Becker.
+- Issue #11164: Stop trying to use _xmlplus in the xml module.
-- Issue #10830: Fix PyUnicode_FromFormatV("%c") for non-BMP characters on
- narrow build.
+- Issue #11888: Add log2 function to math module. Patch written by Mark
+ Dickinson.
-- Check for NULL result in PyType_FromSpec.
+- Issue #12012: ssl.PROTOCOL_SSLv2 becomes optional.
-- Issue #11386: bytearray.pop() now throws IndexError when the bytearray is
- empty, instead of OverflowError.
+- Issue #8407: The signal handler writes the signal number as a single byte
+ instead of a nul byte into the wakeup file descriptor. So it is possible to
+ wait more than one signal and know which signals were raised.
-Library
--------
+- Issue #8407: Add pthread_kill(), sigpending() and sigwait() functions to the
+ signal module.
-- Issue #11927: SMTP_SSL now uses port 465 by default as documented. Patch by
- Kasun Herath.
+- Issue #11927: SMTP_SSL now uses port 465 by default as documented. Patch
+ by Kasun Herath.
- Issue #12002: ftplib's abort() method raises TypeError.
+- Issue #11916: Add a number of MacOSX specific definitions to the errno module.
+ Patch by Pierre Carrier.
+
- Issue #11999: fixed sporadic sync failure mailbox.Maildir due to its trying to
detect mtime changes by comparing to the system clock instead of to the
previous value of the mtime.
+- Issue #11072: added MLSD command (RFC-3659) support to ftplib.
+
+- Issue #8808: The IMAP4_SSL constructor now allows passing an SSLContext
+ parameter to control parameters of the secure channel. Patch by Sijin
+ Joseph.
+
- ntpath.samefile failed to notice that "a.txt" and "A.TXT" refer to the same
file on Windows XP. As noticed in issue #10684.
-- Issue #12000: When a SSL certificate has a subjectAltName without any dNSName
- entry, ssl.match_hostname() should use the subject's commonName. Patch by
- Nicolas Bareil.
+- Issue #12000: When a SSL certificate has a subjectAltName without any
+ dNSName entry, ssl.match_hostname() should use the subject's commonName.
+ Patch by Nicolas Bareil.
-- Issue #11647: objects created using contextlib.contextmanager now support more
- than one call to the function when used as a decorator. Initial patch by Ysj
- Ray.
+- Issue #10775: assertRaises, assertRaisesRegex, assertWarns, and
+ assertWarnsRegex now accept a keyword argument 'msg' when used as context
+ managers. Initial patch by Winston Ewert.
+
+- Issue #10684: shutil.move used to delete a folder on case insensitive
+ filesystems when the source and destination name where the same except
+ for the case.
+
+- Issue #11647: objects created using contextlib.contextmanager now support
+ more than one call to the function when used as a decorator. Initial patch
+ by Ysj Ray.
+
+- Issue #11930: Removed deprecated time.accept2dyear variable.
+ Removed year >= 1000 restriction from datetime.strftime.
- logging: don't define QueueListener if Python has no thread support.
@@ -1431,16 +1993,39 @@ Library
- Issue #11277: mmap.mmap() calls fcntl(fd, F_FULLFSYNC) on Mac OS X to get
around a mmap bug with sparse files. Patch written by Steffen Daode Nurpmeso.
+- Issue #8407: Add signal.pthread_sigmask() function to fetch and/or change the
+ signal mask of the calling thread.
+
- Issue #11858: configparser.ExtendedInterpolation expected lower-case section
names.
- Issue #11324: ConfigParser(interpolation=None) now works correctly.
+- Issue #11811: ssl.get_server_certificate() is now IPv6-compatible. Patch
+ by Charles-François Natali.
+
- Issue #11763: don't use difflib in TestCase.assertMultiLineEqual if the
strings are too long.
- Issue #11236: getpass.getpass responds to ctrl-c or ctrl-z on terminal.
+- Issue #11856: Speed up parsing of JSON numbers.
+
+- Issue #11005: threading.RLock()._release_save() raises a RuntimeError if the
+ lock was not acquired.
+
+- Issue #11258: Speed up ctypes.util.find_library() under Linux by a factor
+ of 5 to 10. Initial patch by Jonas H.
+
+- Issue #11382: Trivial system calls, such as dup() or pipe(), needn't
+ release the GIL. Patch by Charles-François Natali.
+
+- Issue #11223: Add threading._info() function providing informations about
+ the thread implementation.
+
+- Issue #11731: simplify/enhance email parser/generator API by introducing
+ policy objects.
+
- Issue #11768: The signal handler of the signal module only calls
Py_AddPendingCall() for the first signal to fix a deadlock on reentrant or
parallel calls. PyErr_SetInterrupt() writes also into the wake up file.
@@ -1460,6 +2045,10 @@ Library
- Issue #11474: Fix the bug with url2pathname() handling of '/C|/' on Windows.
Patch by Santoso Wijaya.
+- Issue #11684: complete email.parser bytes API by adding BytesHeaderParser.
+
+- The bz2 module now handles 4GiB+ input buffers correctly.
+
- Issue #9233: Fix json.loads('{}') to return a dict (instead of a list), when
_json is not available.
@@ -1471,17 +2060,33 @@ Library
- Issue #10019: Fixed regression in json module where an indent of 0 stopped
adding newlines and acted instead like 'None'.
+- Issue #11186: pydoc ignores a module if its name contains a surrogate
+ character in the index of modules.
+
+- Issue #11815: Use a light-weight SimpleQueue for the result queue in
+ concurrent.futures.ProcessPoolExecutor.
+
- Issue #5162: Treat services like frozen executables to allow child spawning
from multiprocessing.forking on Windows.
+- logging.basicConfig now supports an optional 'handlers' argument taking an
+ iterable of handlers to be added to the root logger. Additional parameter
+ checks were also added to basicConfig.
+
- Issue #11814: Fix likely typo in multiprocessing.Pool._terminate().
- Issue #11747: Fix range formatting in difflib.context_diff() and
difflib.unified_diff().
- Issue #8428: Fix a race condition in multiprocessing.Pool when terminating
- worker processes: new processes would be spawned while the pool is being shut
- down. Patch by Charles-François Natali.
+ worker processes: new processes would be spawned while the pool is being
+ shut down. Patch by Charles-François Natali.
+
+- Issue #2650: re.escape() no longer escapes the '_'.
+
+- Issue #11757: select.select() now raises ValueError when a negative timeout
+ is passed (previously, a select.error with EINVAL would be raised). Patch
+ by Charles-François Natali.
- Issue #7311: fix html.parser to accept non-ASCII attribute values.
@@ -1489,21 +2094,50 @@ Library
multipart subparts with an 8-bit CTE into unicode instead of preserving the
bytes.
+- Issue #1690608: email.util.formataddr is now RFC 2047 aware: it now has a
+ charset parameter that defaults to utf-8 and is used as the charset for RFC
+ 2047 encoding when the realname contains non-ASCII characters.
+
- Issue #10963: Ensure that subprocess.communicate() never raises EPIPE.
+- Issue #10791: Implement missing method GzipFile.read1(), allowing GzipFile
+ to be wrapped in a TextIOWrapper. Patch by Nadeem Vawda.
+
+- Issue #11707: Added a fast C version of functools.cmp_to_key().
+ Patch by Filip Gruszczyński.
+
+- Issue #11688: Add sqlite3.Connection.set_trace_callback(). Patch by
+ Torsten Landschoff.
+
- Issue #11746: Fix SSLContext.load_cert_chain() to accept elliptic curve
private keys.
+- Issue #5863: Rewrite BZ2File in pure Python, and allow it to accept
+ file-like objects using a new ``fileobj`` constructor argument. Patch by
+ Nadeem Vawda.
+
+- unittest.TestCase.assertSameElements has been removed.
+
- sys.getfilesystemencoding() raises a RuntimeError if initfsencoding() was not
called yet: detect bootstrap (startup) issues earlier.
+- Issue #11393: Add the new faulthandler module.
+
- Issue #11618: Fix the timeout logic in threading.Lock.acquire() under Windows.
+- Removed the 'strict' argument to email.parser.Parser, which has been
+ deprecated since Python 2.4.
+
- Issue #11256: Fix inspect.getcallargs on functions that take only keyword
arguments.
- Issue #11696: Fix ID generation in msilib.
+- itertools.accumulate now supports an optional *func* argument for
+ a user-supplied binary function.
+
+- Issue #11692: Remove unnecessary demo functions in subprocess module.
+
- Issue #9696: Fix exception incorrectly raised by xdrlib.Packer.pack_int when
trying to pack a negative (in-range) integer.
@@ -1519,7 +2153,26 @@ Library
- Issue #11635: Don't use polling in worker threads and processes launched by
concurrent.futures.
-- Issue #11628: cmp_to_key generated class should use __slots__
+- Issue #6811: Allow importlib to change a code object's co_filename attribute
+ to match the path to where the source code currently is, not where the code
+ object originally came from.
+
+- Issue #8754: Have importlib use the repr of a module name in error messages.
+
+- Issue #11591: Prevent "import site" from modifying sys.path when python
+ was started with -S.
+
+- collections.namedtuple() now adds a _source attribute to the generated
+ class. This make the source more accessible than the outdated
+ "verbose" option which prints to stdout but doesn't make the source
+ string available.
+
+- Issue #11371: Mark getopt error messages as localizable. Patch by Filip
+ Gruszczyński.
+
+- Issue #11333: Add __slots__ to collections ABCs.
+
+- Issue #11628: cmp_to_key generated class should use __slots__.
- Issue #11666: let help() display named tuple attributes and methods
that start with a leading underscore.
@@ -1530,6 +2183,10 @@ Library
- Issue #5537: Fix time2isoz() and time2netscape() functions of
httplib.cookiejar for expiration year greater than 2038 on 32-bit systems.
+- Issue #4391: Use proper gettext plural forms in optparse.
+
+- Issue #11127: Raise a TypeError when trying to pickle a socket object.
+
- Issue #11563: Connection:close header is sent by requests using URLOpener
class which helps in closing of sockets after connection is over. Patch
contributions by Jeff McNeil and Nadeem Vawda.
@@ -1540,6 +2197,8 @@ Library
- Issue #5421: Fix misleading error message when one of socket.sendto()'s
arguments has the wrong type. Patch by Nikita Vetoshkin.
+- Issue #10812: Add some extra posix functions to the os module.
+
- Issue #10979: unittest stdout buffering now works with class and module
setup and teardown.
@@ -1552,75 +2211,154 @@ Library
relative to Python2 and the result is now the same as it was in Python2.
- Issue #9298: base64 bodies weren't being folded to line lengths less than 78,
- which was a regression relative to Python2. Unlike Python2, the last line of
- the folded body now ends with a carriage return.
+ which was a regression relative to Python2. Unlike Python2, the last line
+ of the folded body now ends with a carriage return.
- Issue #11560: shutil.unpack_archive now correctly handles the format
parameter. Patch by Evan Dandrea.
+- Issue #5870: Add `subprocess.DEVNULL` constant.
+
- Issue #11133: fix two cases where inspect.getattr_static can trigger code
execution. Patch by Andreas Stührk.
- Issue #11569: use absolute path to the sysctl command in multiprocessing to
- ensure that it will be found regardless of the shell PATH. This ensures that
- multiprocessing.cpu_count works on default installs of MacOSX.
+ ensure that it will be found regardless of the shell PATH. This ensures
+ that multiprocessing.cpu_count works on default installs of MacOSX.
- Issue #11501: disutils.archive_utils.make_zipfile no longer fails if zlib is
not installed. Instead, the zipfile.ZIP_STORED compression is used to create
the ZipFile. Patch by Natalia B. Bidart.
+- Issue #11289: `smtp.SMTP` class becomes a context manager so it can be used
+ in a `with` statement. Contributed by Giampaolo Rodola.
+
- Issue #11554: Fixed support for Japanese codecs; previously the body output
encoding was not done if euc-jp or shift-jis was specified as the charset.
-- Issue #11500: Fixed a bug in the os x proxy bypass code for fully qualified IP
- addresses in the proxy exception list.
+- Issue #11509: Significantly increase test coverage of fileinput.
+ Patch by Denver Coneybeare at PyCon 2011 Sprints.
+
+- Issue #11407: `TestCase.run` returns the result object used or created.
+ Contributed by Janathan Hartley.
+
+- Issue #11500: Fixed a bug in the os x proxy bypass code for fully qualified
+ IP addresses in the proxy exception list.
+
+- Issue #11491: dbm.error is no longer raised when dbm.open is called with
+ the "n" as the flag argument and the file exists. The behavior matches
+ the documentation and general logic.
-- Issue #11491: dbm.error is no longer raised when dbm.open is called with the
- "n" as the flag argument and the file exists. The behavior matches the
- documentation and general logic.
+- Issue #1162477: Postel Principle adjustment to email date parsing: handle the
+ fact that some non-compliant MUAs use '.' instead of ':' in time specs.
-- Issue #11131: Fix sign of zero in decimal.Decimal plus and minus operations
- when the rounding mode is ROUND_FLOOR.
+- Issue #11131: Fix sign of zero in decimal.Decimal plus and minus
+ operations when the rounding mode is ROUND_FLOOR.
+
+- Issue #9935: Speed up pickling of instances of user-defined classes.
- Issue #5622: Fix curses.wrapper to raise correct exception if curses
initialization fails.
+- Issue #11408: In threading.Lock.acquire(), only call gettimeofday() when
+ really necessary. Patch by Charles-François Natali.
+
- Issue #11391: Writing to a mmap object created with
``mmap.PROT_READ|mmap.PROT_EXEC`` would segfault instead of raising a
TypeError. Patch by Charles-François Natali.
-- Issue #11306: mailbox in certain cases adapts to an inability to open certain
- files in read-write mode. Previously it detected this by checking for EACCES,
- now it also checks for EROFS.
+- Issue #9795: add context manager protocol support for nntplib.NNTP class.
+
+- Issue #11306: mailbox in certain cases adapts to an inability to open
+ certain files in read-write mode. Previously it detected this by
+ checking for EACCES, now it also checks for EROFS.
+
+- Issue #11265: asyncore now correctly handles EPIPE, EBADF and EAGAIN errors
+ on accept(), send() and recv().
+
+- Issue #11377: Deprecate platform.popen() and reimplement it with os.popen().
-- Issue #11265: asyncore now correctly handles EPIPE, EBADF and EAGAIN errors on
- accept(), send() and recv().
+- Issue #8513: On UNIX, subprocess supports bytes command string.
+
+- Issue #10866: Add socket.sethostname(). Initial patch by Ross Lagerwall.
+
+- Issue #11140: Lock.release() now raises a RuntimeError when attempting
+ to release an unacquired lock, as claimed in the threading documentation.
+ The _thread.error exception is now an alias of RuntimeError. Patch by
+ Filip Gruszczyński. Patch for _dummy_thread by Aymeric Augustin.
+
+- Issue #8594: ftplib now provides a source_address parameter to specify which
+ (address, port) to bind to before connecting.
- Issue #11326: Add the missing connect_ex() implementation for SSL sockets,
and make it work for non-blocking connects.
+- Issue #11297: Add collections.ChainMap().
+
+- Issue #10755: Add the posix.flistdir() function. Patch by Ross Lagerwall.
+
+- Issue #4761: Add the *at() family of functions (openat(), etc.) to the posix
+ module. Patch by Ross Lagerwall.
+
- Issue #7322: Trying to read from a socket's file-like object after a timeout
occurred now raises an error instead of silently losing data.
+- Issue #11291: poplib.POP no longer suppresses errors on quit().
+
+- Issue #11177: asyncore's create_socket() arguments can now be omitted.
+
+- Issue #6064: Add a ``daemon`` keyword argument to the threading.Thread
+ and multiprocessing.Process constructors in order to override the
+ default behaviour of inheriting the daemonic property from the current
+ thread/process.
+
- Issue #10956: Buffered I/O classes retry reading or writing after a signal
has arrived and the handler returned successfully.
+- Issue #10784: New os.getpriority() and os.setpriority() functions.
+
+- Issue #11114: Fix catastrophic performance of tell() on text files (up
+ to 1000x faster in some cases). It is still one to two order of magnitudes
+ slower than binary tell().
+
+- Issue #10882: Add os.sendfile function.
+
+- Issue #10868: Allow usage of the register method of an ABC as a class
+ decorator.
+
- Issue #11224: Fixed a regression in tarfile that affected the file-like
objects returned by TarFile.extractfile() regarding performance, memory
consumption and failures with the stream interface.
+- Issue #10924: Adding salt and Modular Crypt Format to crypt library.
+ Moved old C wrapper to _crypt, and added a Python wrapper with
+ enhanced salt generation and simpler API for password generation.
+
- Issue #11074: Make 'tokenize' so it can be reloaded.
+- Issue #11085: Moved collections abstract base classes into a separate
+ module called collections.abc, following the pattern used by importlib.abc.
+ For backwards compatibility, the names are imported into the collections
+ module.
+
- Issue #4681: Allow mmap() to work on file sizes and offsets larger than
4GB, even on 32-bit builds. Initial patch by Ross Lagerwall, adapted for
32-bit Windows.
+- Issue #11169: compileall module uses repr() to format filenames and paths to
+ escape surrogate characters and show spaces.
+
- Issue #11089: Fix performance issue limiting the use of ConfigParser()
with large config files.
- Issue #10276: Fix the results of zlib.crc32() and zlib.adler32() on buffers
larger than 4GB. Patch by Nadeem Vawda.
+- Issue #11388: Added a clear() method to MutableSequence
+
+- Issue #11174: Add argparse.MetavarTypeHelpFormatter, which uses type names
+ for the names of optional and positional arguments in help messages.
+
- Issue #9348: Raise an early error if argparse nargs and metavar don't match.
- Issue #8982: Improve the documentation for the argparse Namespace object.
@@ -1632,28 +2370,137 @@ Library
- Issue #9347: Fix formatting for tuples in argparse type= error messages.
+- Issue #12191: Added shutil.chown() to change user and/or group owner of a
+ given path also specifying their names.
+
+- Issue #13988: The _elementtree accelerator is used whenever available.
+ Now xml.etree.cElementTree becomes a deprecated alias to ElementTree.
+
Build
-----
+- Issue #6807: Run msisupport.mak earlier.
+
+- Issue #10580: Minor grammar change in Windows installer.
+
+- Issue #13326: Clean __pycache__ directories correctly on OpenBSD.
+
+- PEP 393: the configure option --with-wide-unicode is removed.
+
+- Issue #12852: Set _XOPEN_SOURCE to 700, instead of 600, to get POSIX 2008
+ functions on OpenBSD (e.g. fdopendir).
+
+- Issue #11863: Remove support for legacy systems deprecated in Python 3.2
+ (following PEP 11). These systems are systems using Mach C Threads,
+ SunOS lightweight processes, GNU pth threads and IRIX threads.
+
+- Issue #8746: Correct faulty configure checks so that os.chflags() and
+ os.lchflags() are once again built on systems that support these
+ functions (*BSD and OS X). Also add new stat file flags for OS X
+ (UF_HIDDEN and UF_COMPRESSED).
+
+- Issue #10645: Installing Python does no longer create a
+ Python-X.Y.Z-pyX.Y.egg-info file in the lib-dynload directory.
+
+- Do not accidentally include the directory containing sqlite.h twice when
+ building sqlite3.
+
+- Issue #11217: For 64-bit/32-bit Mac OS X universal framework builds,
+ ensure "make install" creates symlinks in --prefix bin for the "-32"
+ files in the framework bin directory like the installer does.
+
+- Issue #11347: Use --no-as-needed when linking libpython3.so.
+
- Issue #11411: Fix 'make DESTDIR=' with a relative destination.
-- Issue #11268: Prevent Mac OS X Installer failure if Documentation package had
- previously been installed.
+- Issue #11268: Prevent Mac OS X Installer failure if Documentation
+ package had previously been installed.
+
+- Issue #11495: OSF support is eliminated. It was deprecated in Python 3.2.
+
IDLE
----
-- Issue #11718: IDLE's open module dialog couldn't find the __init__.py file in
- a package.
+- Issue #11718: IDLE's open module dialog couldn't find the __init__.py
+ file in a package.
Tools/Demos
-----------
+- Issue #14053: patchcheck.py ("make patchcheck") now works with MQ patches.
+ Patch by Francisco Martín Brugué.
+
+- Issue #13930: 2to3 is now able to write its converted output files to another
+ directory tree as well as copying unchanged files and altering the file
+ suffix. See its new -o, -W and --add-suffix options. This makes it more
+ useful in many automated code translation workflows.
+
+- Issue #13628: python-gdb.py is now able to retrieve more frames in the Python
+ traceback if Python is optimized.
+
+- Issue #11996: libpython (gdb), replace "py-bt" command by "py-bt-full" and
+ add a smarter "py-bt" command printing a classic Python traceback.
+
- Issue #11179: Make ccbench work under Python 3.1 and 2.7 again.
+- Issue #10639: reindent.py no longer converts newlines and will raise
+ an error if attempting to convert a file with mixed newlines.
+ "--newline" option added to specify new line character.
+
Extension Modules
-----------------
+- Issue #13840: The error message produced by ctypes.create_string_buffer
+ when given a Unicode string has been fixed.
+
+- Issue #9975: socket: Fix incorrect use of flowinfo and scope_id. Patch by
+ Vilmos Nebehaj.
+
+- Issue #7777: socket: Add Reliable Datagram Sockets (PF_RDS) support.
+
+- Issue #13159: FileIO and BZ2Compressor/BZ2Decompressor now use a linear-time
+ buffer growth strategy instead of a quadratic-time one.
+
+- Issue #10141: socket: Add SocketCAN (PF_CAN) support. Initial patch by
+ Matthias Fuchs, updated by Tiago Gonçalves.
+
+- Issue #13070: Fix a crash when a TextIOWrapper caught in a reference cycle
+ would be finalized after the reference to its underlying BufferedRWPair's
+ writer got cleared by the GC.
+
+- Issue #12881: ctypes: Fix segfault with large structure field names.
+
+- Issue #13058: ossaudiodev: fix a file descriptor leak on error. Patch by
+ Thomas Jarosch.
+
+- Issue #13013: ctypes: Fix a reference leak in PyCArrayType_from_ctype.
+ Thanks to Suman Saha for finding the bug and providing a patch.
+
+- Issue #13022: Fix: _multiprocessing.recvfd() doesn't check that
+ file descriptor was actually received.
+
+- Issue #1172711: Add 'long long' support to the array module.
+ Initial patch by Oren Tirosh and Hirokazu Yamamoto.
+
+- Issue #12483: ctypes: Fix a crash when the destruction of a callback
+ object triggers the garbage collector.
+
+- Issue #12950: Fix passing file descriptors in multiprocessing, under
+ OpenIndiana/Illumos.
+
+- Issue #12764: Fix a crash in ctypes when the name of a Structure field is not
+ a string.
+
+- Issue #11241: subclasses of ctypes.Array can now be subclassed.
+
+- Issue #9651: Fix a crash when ctypes.create_string_buffer(0) was passed to
+ some functions like file.write().
+
+- Issue #10309: Define _GNU_SOURCE so that mremap() gets the proper
+ signature. Without this, architectures where sizeof void* != sizeof int are
+ broken. Patch given by Hallvard B Furuseth.
+
- Issue #12051: Fix segfault in json.dumps() while encoding highly-nested
objects using the C accelerations.
@@ -1666,35 +2513,184 @@ Extension Modules
Tests
-----
+- Issue #11689: Fix a variable scoping error in an sqlite3 test
+
+- Issue #13786: Remove unimplemented 'trace' long option from regrtest.py.
+
+- Issue #13725: Fix regrtest to recognize the documented -d flag.
+ Patch by Erno Tukia.
+
+- Issue #13304: Skip test case if user site-packages disabled (-s or
+ PYTHONNOUSERSITE). (Patch by Carl Meyer)
+
+- Issue #5661: Add a test for ECONNRESET/EPIPE handling to test_asyncore. Patch
+ by Xavier de Gaye.
+
+- Issue #13218: Fix test_ssl failures on Debian/Ubuntu.
+
+- Re-enable lib2to3's test_parser.py tests, though with an expected failure
+ (see issue 13125).
+
+- Issue #12656: Add tests for IPv6 and Unix sockets to test_asyncore.
+
+- Issue #6484: Add unit tests for mailcap module (patch by Gregory Nofi)
+
+- Issue #11651: Improve the Makefile test targets to run more of the test suite
+ more quickly. The --multiprocess option is now enabled by default, reducing
+ the amount of time needed to run the tests. "make test" and "make quicktest"
+ now include some resource-intensive tests, but no longer run the test suite
+ twice to check for bugs in .pyc generation. Tools/scripts/run_test.py provides
+ an easy platform-independent way to run test suite with sensible defaults.
+
+- Issue #12331: The test suite for the packaging module can now run from an
+ installed Python.
+
+- Issue #12331: The test suite for lib2to3 can now run from an installed
+ Python.
+
+- Issue #12626: In regrtest, allow to filter tests using a glob filter
+ with the ``-m`` (or ``--match``) option. This works with all test cases
+ using the unittest module. This is useful with long test suites
+ such as test_io or test_subprocess.
+
+- Issue #12624: It is now possible to fail after the first failure when
+ running in verbose mode (``-v`` or ``-W``), by using the ``--failfast``
+ (or ``-G``) option to regrtest. This is useful with long test suites
+ such as test_io or test_subprocess.
+
+- Issue #12587: Correct faulty test file and reference in test_tokenize.
+ (Patch by Robert Xiao)
+
+- Issue #12573: Add resource checks for dangling Thread and Process objects.
+
+- Issue #12549: Correct test_platform to not fail when OS X returns 'x86_64'
+ as the processor type on some Mac systems.
+
+- Skip network tests when getaddrinfo() returns EAI_AGAIN, meaning a temporary
+ failure in name resolution.
+
+- Issue #11812: Solve transient socket failure to connect to 'localhost'
+ in test_telnetlib.py.
+
+- Solved a potential deadlock in test_telnetlib.py. Related to issue #11812.
+
+- Avoid failing in test_robotparser when mueblesmoraleda.com is flaky and
+ an overzealous DNS service (e.g. OpenDNS) redirects to a placeholder
+ Web site.
+
+- Avoid failing in test_urllibnet.test_bad_address when some overzealous
+ DNS service (e.g. OpenDNS) resolves a non-existent domain name. The test
+ is now skipped instead.
+
+- Issue #12440: When testing whether some bits in SSLContext.options can be
+ reset, check the version of the OpenSSL headers Python was compiled against,
+ rather than the runtime version of the OpenSSL library.
+
+- Issue #11512: Add a test suite for the cgitb module. Patch by Robbie Clemons.
+
+- Issue #12497: Install test/data to prevent failures of the various codecmaps
+ tests.
+
+- Issue #12496: Install test/capath directory to prevent test_connect_capath
+ testcase failure in test_ssl.
+
+- Issue #12469: Run wakeup and pending signal tests in a subprocess to run the
+ test in a fresh process with only one thread and to not change signal
+ handling of the parent process.
+
+- Issue #8716: Avoid crashes caused by Aqua Tk on OSX when attempting to run
+ test_tk or test_ttk_guionly under a username that is not currently logged
+ in to the console windowserver (as may be the case under buildbot or ssh).
+
+- Issue #12407: Explicitly skip test_capi.EmbeddingTest under Windows.
+
+- Issue #12400: regrtest -W doesn't rerun the tests twice anymore, but captures
+ the output and displays it on failure instead. regrtest -v doesn't print the
+ error twice anymore if there is only one error.
+
+- Issue #12141: Install copies of template C module file so that
+ test_build_ext of test_distutils and test_command_build_ext of
+ test_packaging are no longer silently skipped when
+ run outside of a build directory.
+
+- Issue #8746: Add additional tests for os.chflags() and os.lchflags().
+ Patch by Garrett Cooper.
+
+- Issue #10736: Fix test_ttk test_widgets failures with Cocoa Tk 8.5.9
+ 2.8 + on Mac OS X. (Patch by Ronald Oussoren)
+
+- Issue #12057: Add tests for ISO 2022 codecs (iso2022_jp, iso2022_jp_2,
+ iso2022_kr).
+
+- Issue #12096: Fix a race condition in test_threading.test_waitfor(). Patch
+ written by Charles-François Natali.
+
+- Issue #11614: import __hello__ prints "Hello World!". Patch written by
+ Andreas Stührk.
+
+- Issue #5723: Improve json tests to be executed with and without accelerations.
+
+- Issue #12041: Make test_wait3 more robust.
+
- Issue #11873: Change regex in test_compileall to fix occasional failures when
when the randomly generated temporary path happened to match the regex.
+- Issue #11958: Fix FTP tests for IPv6, bind to "::1" instead of "localhost".
+ Patch written by Charles-Francois Natali.
+
+- Issue #8407, #11859: Fix tests of test_io using threads and an alarm: use
+ pthread_sigmask() to ensure that the SIGALRM signal is received by the main
+ thread.
+
+- Issue #11811: Factor out detection of IPv6 support on the current host
+ and make it available as ``test.support.IPV6_ENABLED``. Patch by
+ Charles-François Natali.
+
- Issue #10914: Add a minimal embedding test to test_capi.
-- Issue #11790: Fix sporadic failures in
- test_multiprocessing.WithProcessesTestCondition.
+- Issue #11223: Skip test_lock_acquire_interruption() and
+ test_rlock_acquire_interruption() of test_threadsignals if a thread lock is
+ implemented using a POSIX mutex and a POSIX condition variable. A POSIX
+ condition variable cannot be interrupted by a signal (e.g. on Linux, the
+ futex system call is restarted).
+
+- Issue #11790: Fix sporadic failures in test_multiprocessing.WithProcessesTestCondition.
- Fix possible "file already exists" error when running the tests in parallel.
- Issue #11719: Fix message about unexpected test_msilib skip on non-Windows
platforms. Patch by Nadeem Vawda.
+- Issue #11727: Add a --timeout option to regrtest: if a test takes more than
+ TIMEOUT seconds, dumps the traceback of all threads and exits.
+
- Issue #11653: fix -W with -j in regrtest.
+- The email test suite now lives in the Lib/test/test_email package. The test
+ harness code has also been modernized to allow use of new unittest features.
+
+- regrtest now discovers test packages as well as test modules.
+
- Issue #11577: improve test coverage of binhex.py. Patch by Arkady Koplyarov.
+- New test_crashers added to exercise the scripts in the Lib/test/crashers
+ directory and confirm they fail as expected
+
- Issue #11578: added test for the timeit module. Patch by Michael Henry.
- Issue #11503: improve test coverage of posixpath.py. Patch by Evan Dandrea.
-- Issue #11505: improves test coverage of string.py. Patch by Alicia
- Arlen.
+- Issue #11505: improves test coverage of string.py, increases granularity of
+ string.Formatter tests. Initial patch by Alicia Arlen.
- Issue #11548: Improve test coverage of the shutil module. Patch by
Evan Dandrea.
- Issue #11554: Reactivated test_email_codecs.
+- Issue #11505: improves test coverage of string.py. Patch by Alicia
+ Arlen
+
- Issue #11490: test_subprocess:test_leaking_fds_on_error no longer gives a
false positive if the last directory in the path is inaccessible.
@@ -1707,12 +2703,61 @@ Tests
- Issue #9931: Fix hangs in GUI tests under Windows in certain conditions.
Patch by Hirokazu Yamamoto.
+- Issue #10512: Properly close sockets under test.test_cgi.
+
+- Issue #10992: Make tests pass under coverage.
+
- Issue #10826: Prevent sporadic failure in test_subprocess on Solaris due
to open door files.
+- Issue #10990: Prevent tests from clobbering a set trace function.
+
+C-API
+-----
+
+- Add PyObject_GenericGetDict and PyObject_GeneriSetDict. They are generic
+ implementations for the getter and setter of a ``__dict__`` descriptor of C
+ types.
+
+- Issue #13727: Add 3 macros to access PyDateTime_Delta members:
+ PyDateTime_DELTA_GET_DAYS, PyDateTime_DELTA_GET_SECONDS,
+ PyDateTime_DELTA_GET_MICROSECONDS.
+
+- Issue #10542: Add 4 macros to work with surrogates: Py_UNICODE_IS_SURROGATE,
+ Py_UNICODE_IS_HIGH_SURROGATE, Py_UNICODE_IS_LOW_SURROGATE,
+ Py_UNICODE_JOIN_SURROGATES.
+
+- Issue #12724: Add Py_RETURN_NOTIMPLEMENTED macro for returning NotImplemented.
+
+- PY_PATCHLEVEL_REVISION has been removed, since it's meaningless with
+ Mercurial.
+
+- Issue #12173: The first argument of PyImport_ImportModuleLevel is now `const
+ char *` instead of `char *`.
+
+- Issue #12380: PyArg_ParseTuple now accepts a bytearray for the 'c' format.
+
Documentation
-------------
+- Issues #13491 and #13995: Fix many errors in sqlite3 documentation.
+ Initial patch for #13491 by Johannes Vogel.
+
+- Issue #13402: Document absoluteness of sys.executable.
+
+- Issue #13883: PYTHONCASEOK also works on OS X.
+
+- Issue #12949: Document the kwonlyargcount argument for the PyCode_New
+ C API function.
+
+- Issue #13513: Fix io.IOBase documentation to correctly link to the
+ io.IOBase.readline method instead of the readline module.
+
+- Issue #13237: Reorganise subprocess documentation to emphasise convenience
+ functions and the most commonly needed arguments to Popen.
+
+- Issue #13141: Demonstrate recommended style for socketserver examples.
+
- Issue #11818: Fix tempfile examples for Python 3.
@@ -1944,10 +2989,6 @@ Library
- Issue #10154, #10090: change the normalization of UTF-8 to "UTF-8" instead
of "UTF8" in the locale module as the latter is not supported MacOSX and OpenBSD.
-- Issue #10684: shutil.move used to delete a folder on case insensitive
- filesystems when the source and destination name where the same except
- for the case.
-
- Issue #10907: Warn OS X 10.6 IDLE users to use ActiveState Tcl/Tk 8.5, rather
than the currently problematic Apple-supplied one, when running with the
64-/32-bit installer variant.
@@ -2104,6 +3145,9 @@ Library
C-API
-----
+- PyObject_CallMethod now passes along any underlying AttributeError from
+ PyObject_GetAttr, instead of replacing it with something less informative
+
- Issue #10913: Deprecate misleading functions PyEval_AcquireLock() and
PyEval_ReleaseLock(). The thread-state aware APIs should be used instead.
@@ -2155,6 +3199,8 @@ Tools/Demos
Tests
-----
+- Issue #11910: Fix test_heapq to skip the C tests when _heapq is missing.
+
- Fix test_startfile to wait for child process to terminate before finishing.
- Issue #10822: Fix test_posix:test_getgroups failure under Solaris. Patch
@@ -2655,6 +3701,8 @@ Core and Builtins
Library
-------
+- Issue #12943: python -m tokenize support has been added to tokenize.
+
- Issue #10465: fix broken delegating of attributes by gzip._PaddedFile.
- Issue #10356: Decimal.__hash__(-1) should return -2.