From: Benjamin Peterson Date: Fri, 4 Mar 2016 06:08:01 +0000 (-0800) Subject: merge 3.4 (closes #26478) X-Git-Tag: v3.6.0a1~533^2 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=cfc2a1fc700e1f93a2e1d9a3de02bb936f868a42;p=python merge 3.4 (closes #26478) --- cfc2a1fc700e1f93a2e1d9a3de02bb936f868a42 diff --cc Misc/NEWS index 303daa21f3,8db17d8d21..8044942d1a --- a/Misc/NEWS +++ b/Misc/NEWS @@@ -10,194 -10,168 +10,197 @@@ Release date: tb Core and Builtins ----------------- -- Issue #26478: Fix semantic bugs when using binary operators with dictionary - views and tuples. +- Issue #26464: Fix str.translate() when string is ASCII and first replacements + removes character, but next replacement uses a non-ASCII character or a + string longer than 1 character. Regression introduced in Python 3.5.0. -- Issue #26171: Fix possible integer overflow and heap corruption in - zipimporter.get_data(). +- Issue #22836: Ensure exception reports from PyErr_Display() and + PyErr_WriteUnraisable() are sensible even when formatting them produces + secondary errors. This affects the reports produced by + sys.__excepthook__() and when __del__() raises an exception. -Library -------- +- Issue #26302: Correct behavior to reject comma as a legal character for + cookie names. -- Issue #25939: On Windows open the cert store readonly in ssl.enum_certificates. +- Issue #4806: Avoid masking the original TypeError exception when using star + (*) unpacking in function calls. Based on patch by Hagen Fürstenau and + Daniel Urban. -- Issue #22570: Add 'path' attribute to pathlib.Path objects, - returning the same as str(), to make it more similar to DirEntry. - Library code can now write getattr(p, 'path', p) to get the path as - a string from a Path, a DirEntry, or a plain string. This is - essentially a small one-off protocol. +- Issue #26154: Add a new private _PyThreadState_UncheckedGet() function to get + the current Python thread state, but don't issue a fatal error if it is NULL. + This new function must be used instead of accessing directly the + _PyThreadState_Current variable. The variable is no more exposed since + Python 3.5.1 to hide the exact implementation of atomic C types, to avoid + compiler issues. -- Issue #26012: Don't traverse into symlinks for ** pattern in - pathlib.Path.[r]glob(). +- Issue #26194: Deque.insert() gave odd results for bounded deques that had + reached their maximum size. Now an IndexError will be raised when attempting + to insert into a full deque. -- Issue #24120: Ignore PermissionError when traversing a tree with - pathlib.Path.[r]glob(). Patch by Ulrich Petri. +- Issue #25843: When compiling code, don't merge constants if they are equal + but have a different types. For example, ``f1, f2 = lambda: 1, lambda: 1.0`` + is now correctly compiled to two different functions: ``f1()`` returns ``1`` + (``int``) and ``f2()`` returns ``1.0`` (``int``), even if ``1`` and ``1.0`` + are equal. -- Skip getaddrinfo if host is already resolved. - Patch by A. Jesse Jiryu Davis. +- Issue #25731: Fix set and deleting __new__ on a class. -- Add asyncio.timeout() context manager. +- Issue #22995: [UPDATE] Comment out the one of the pickleability tests in + _PyObject_GetState() due to regressions observed in Cython-based projects. -- Issue #26050: Add asyncio.StreamReader.readuntil() method. - Patch by Марк Коренберг. +- Issue #25961: Disallowed null characters in the type name. -Tests ------ +- Issue #25973: Fix segfault when an invalid nonlocal statement binds a name + starting with two underscores. -- Issue #25940: Changed test_ssl to use self-signed.pythontest.net. This - avoids relying on svn.python.org, which recently changed root certificate. +- Issue #22995: Instances of extension types with a state that aren't + subclasses of list or dict and haven't implemented any pickle-related + methods (__reduce__, __reduce_ex__, __getnewargs__, __getnewargs_ex__, + or __getstate__), can no longer be pickled. Including memoryview. +- Issue #20440: Massive replacing unsafe attribute setting code with special + macro Py_SETREF. -What's New in Python 3.4.4? -=========================== +- Issue #25766: Special method __bytes__() now works in str subclasses. -Release date: 2015/12/20 +- Issue #25421: __sizeof__ methods of builtin types now use dynamic basic size. + This allows sys.getsize() to work correctly with their subclasses with + __slots__ defined. -Windows -------- +- Issue #25709: Fixed problem with in-place string concatenation and utf-8 cache. + +- Issue #24097: Fixed crash in object.__reduce__() if slot name is freed inside + __getattr__. -- Issue #25844: Corrected =/== typo potentially leading to crash in launcher. +- Issue #24731: Fixed crash on converting objects with special methods + __bytes__, __trunc__, and __float__ returning instances of subclasses of + bytes, int, and float to subclasses of bytes, int, and float correspondingly. ++- Issue #26478: Fix semantic bugs when using binary operators with dictionary ++ views and tuples. + -What's New in Python 3.4.4rc1? -============================== +- Issue #26171: Fix possible integer overflow and heap corruption in + zipimporter.get_data(). -Release date: 2015/12/06 +- Issue #25660: Fix TAB key behaviour in REPL with readline. -Core and Builtins ------------------ +- Issue #25887: Raise a RuntimeError when a coroutine object is awaited + more than once. -- Issue #25709: Fixed problem with in-place string concatenation and utf-8 - cache. -- Issue #24097: Fixed crash in object.__reduce__() if slot name is freed inside - __getattr__. +Library +------- -- Issue #24731: Fixed crash on converting objects with special methods - __bytes__, __trunc__, and __float__ returning instances of subclasses of - bytes, int, and float to subclasses of bytes, int, and float correspondingly. +- Issue #26457: Fixed the subnets() methods in IP network classes for the case + when resulting prefix length is equal to maximal prefix length. + Based on patch by Xiang Zhang. -- Issue #25388: Fixed tokenizer crash when processing undecodable source code - with a null byte. +- Issue #26385: Remove the file if the internal open() call in + NamedTemporaryFile() fails. Patch by Silent Ghost. -- Issue #22995: Default implementation of __reduce__ and __reduce_ex__ now - rejects builtin types with not defined __new__. +- Issue #26402: Fix XML-RPC client to retry when the server shuts down a + persistent connection. This was a regression related to the new + http.client.RemoteDisconnected exception in 3.5.0a4. -- Issue #24802: Avoid buffer overreads when int(), float(), compile(), exec() - and eval() are passed bytes-like objects. These objects are not - necessarily terminated by a null byte, but the functions assumed they were. +- Issue #25913: Leading ``<~`` is optional now in base64.a85decode() with + adobe=True. Patch by Swati Jaiswal. -- Issue #24402: Fix input() to prompt to the redirected stdout when - sys.stdout.fileno() fails. +- Issue #26186: Remove an invalid type check in importlib.util.LazyLoader. -- Issue #24806: Prevent builtin types that are not allowed to be subclassed from - being subclassed through multiple inheritance. +- Issue #26367: importlib.__import__() raises SystemError like + builtins.__import__() when ``level`` is specified but without an accompanying + package specified. -- Issue #24848: Fixed a number of bugs in UTF-7 decoding of misformed data. +- Issue #26309: In the "socketserver" module, shut down the request (closing + the connected socket) when verify_request() returns false. Patch by Aviv + Palivoda. -- Issue #25280: Import trace messages emitted in verbose (-v) mode are no - longer formatted twice. +- Issue #25939: On Windows open the cert store readonly in ssl.enum_certificates. -- Issue #25003: os.urandom() doesn't use getentropy() on Solaris because - getentropy() is blocking, whereas os.urandom() should not block. getentropy() - is supported since Solaris 11.3. +- Issue #25995: os.walk() no longer uses FDs proportional to the tree depth. -- Issue #25182: The stdprinter (used as sys.stderr before the io module is - imported at startup) now uses the backslashreplace error handler. +- Issue #26117: The os.scandir() iterator now closes file descriptor not only + when the iteration is finished, but when it was failed with error. -- Issue #24891: Fix a race condition at Python startup if the file descriptor - of stdin (0), stdout (1) or stderr (2) is closed while Python is creating - sys.stdin, sys.stdout and sys.stderr objects. These attributes are now set - to None if the creation of the object failed, instead of raising an OSError - exception. Initial patch written by Marco Paolini. +- Issue #25911: Restored support of bytes paths in os.walk() on Windows. -- Issue #21167: NAN operations are now handled correctly when python is - compiled with ICC even if -fp-model strict is not specified. +- Issue #26045: Add UTF-8 suggestion to error message when posting a + non-Latin-1 string with http.client. -- Issue #4395: Better testing and documentation of binary operators. - Patch by Martin Panter. +- Issue #12923: Reset FancyURLopener's redirect counter even if there is an + exception. Based on patches by Brian Brazil and Daniel Rocco. -- Issue #24467: Fixed possible buffer over-read in bytearray. The bytearray - object now always allocates place for trailing null byte and it's buffer now - is always null-terminated. +- Issue #25945: Fixed a crash when unpickle the functools.partial object with + wrong state. Fixed a leak in failed functools.partial constructor. + "args" and "keywords" attributes of functools.partial have now always types + tuple and dict correspondingly. -- Issue #24115: Update uses of PyObject_IsTrue(), PyObject_Not(), - PyObject_IsInstance(), PyObject_RichCompareBool() and _PyDict_Contains() - to check for and handle errors correctly. +- Issue #26202: copy.deepcopy() now correctly copies range() objects with + non-atomic attributes. -- Issue #24257: Fixed system error in the comparison of faked - types.SimpleNamespace. +- Issue #23076: Path.glob() now raises a ValueError if it's called with an + invalid pattern. Patch by Thomas Nyberg. -- Issue #22939: Fixed integer overflow in iterator object. Patch by - Clement Rouault. +- Issue #19883: Fixed possible integer overflows in zipimport. -- Issue #23985: Fix a possible buffer overrun when deleting a slice from - the front of a bytearray and then appending some other bytes data. +- Issue #26227: On Windows, getnameinfo(), gethostbyaddr() and + gethostbyname_ex() functions of the socket module now decode the hostname + from the ANSI code page rather than UTF-8. -- Issue #24102: Fixed exception type checking in standard error handlers. +- Issue #26147: xmlrpc now works with strings not encodable with used + non-UTF-8 encoding. -- Issue #23757: PySequence_Tuple() incorrectly called the concrete list API - when the data was a list subclass. +- Issue #25935: Garbage collector now breaks reference loops with OrderedDict. -- Issue #24407: Fix crash when dict is mutated while being updated. +- Issue #16620: Fixed AttributeError in msilib.Directory.glob(). -- Issue #24096: Make warnings.warn_explicit more robust against mutation of the - warnings.filters list. +- Issue #26013: Added compatibility with broken protocol 2 pickles created + in old Python 3 versions (3.4.3 and lower). -- Issue #23996: Avoid a crash when a delegated generator raises an - unnormalized StopIteration exception. Patch by Stefan Behnel. +- Issue #25850: Use cross-compilation by default for 64-bit Windows. -- Issue #24022: Fix tokenizer crash when processing undecodable source code. +- Issue #17633: Improve zipimport's support for namespace packages. -- Issue #23309: Avoid a deadlock at shutdown if a daemon thread is aborted - while it is holding a lock to a buffered I/O object, and the main thread - tries to use the same I/O object (typically stdout or stderr). A fatal - error is emitted instead. +- Issue #24705: Fix sysconfig._parse_makefile not expanding ${} vars + appearing before $() vars. -- Issue #22977: Fixed formatting Windows error messages on Wine. - Patch by Martin Panter. +- Issue #22138: Fix mock.patch behavior when patching descriptors. Restore + original values after patching. Patch contributed by Sean McCully. -- Issue #23803: Fixed str.partition() and str.rpartition() when a separator - is wider then partitioned string. +- Issue #25672: In the ssl module, enable the SSL_MODE_RELEASE_BUFFERS mode + option if it is safe to do so. -- Issue #23192: Fixed generator lambdas. Patch by Bruno Cauet. +- Issue #22570: Add 'path' attribute to pathlib.Path objects, + returning the same as str(), to make it more similar to DirEntry. + Library code can now write getattr(p, 'path', p) to get the path as + a string from a Path, a DirEntry, or a plain string. This is + essentially a small one-off protocol. -- Issue #23629: Fix the default __sizeof__ implementation for variable-sized - objects. +- Issue #26012: Don't traverse into symlinks for ** pattern in + pathlib.Path.[r]glob(). -- Issue #24044: Fix possible null pointer dereference in list.sort in out of - memory conditions. +- Issue #24120: Ignore PermissionError when traversing a tree with + pathlib.Path.[r]glob(). Patch by Ulrich Petri. -- Issue #21354: PyCFunction_New function is exposed by python DLL again. +- Issue #25447: fileinput now uses sys.stdin as-is if it does not have a + buffer attribute (restores backward compatibility). -Library -------- +- Issue #25447: Copying the lru_cache() wrapper object now always works, + independedly from the type of the wrapped object (by returning the original + object unchanged). + +- Issue #24103: Fixed possible use after free in ElementTree.XMLPullParser. + +- Issue #25860: os.fwalk() no longer skips remaining directories when error + occurs. Original patch by Samson Lee. + +- Issue #25914: Fixed and simplified OrderedDict.__sizeof__. + +- Issue #25902: Fixed various refcount issues in ElementTree iteration. + +- Issue #25717: Restore the previous behaviour of tolerating most fstat() + errors when opening files. This was a regression in 3.5a1, and stopped + anonymous temporary files from working in special cases. - Issue #24903: Fix regression in number of arguments compileall accepts when '-d' is specified. The check on the number of arguments has been dropped