| +++++++++++ | |
| Python News | |
| +++++++++++ | |
| What's New in Python 3.11.4 final? | |
| ================================== | |
| *Release date: 2023-06-06* | |
| Security | |
| -------- | |
| - gh-issue-103142: The version of OpenSSL used in our binary builds has been | |
| upgraded to 1.1.1u to address several CVEs. | |
| - gh-issue-99889: Fixed a security in flaw in :func:`uu.decode` that could | |
| allow for directory traversal based on the input if no ``out_file`` was | |
| specified. | |
| - gh-issue-104049: Do not expose the local on-disk location in directory | |
| indexes produced by :class:`http.client.SimpleHTTPRequestHandler`. | |
| - gh-issue-102153: :func:`urllib.parse.urlsplit` now strips leading C0 | |
| control and space characters following the specification for URLs defined | |
| by WHATWG in response to CVE-2023-24329. Patch by Illia Volochii. | |
| Core and Builtins | |
| ----------------- | |
| - gh-issue-105164: Ensure annotations are set up correctly if the only | |
| annotation in a block is within a :keyword:`match` block. Patch by Jelle | |
| Zijlstra. | |
| - gh-issue-104615: Fix wrong ordering of assignments in code like ``a, a = | |
| x, y``. Contributed by Carl Meyer. | |
| - gh-issue-104482: Fix three error handling bugs in ast.c's validation of | |
| pattern matching statements. | |
| - gh-issue-102818: Do not add a frame to the traceback in the | |
| ``sys.setprofile`` and ``sys.settrace`` trampoline functions. This ensures | |
| that frames are not duplicated if an exception is raised in the callback | |
| function, and ensures that frames are not omitted if a C callback is used | |
| and that does not add the frame. | |
| - gh-issue-104405: Fix an issue where some :term:`bytecode` instructions | |
| could ignore :pep:`523` when "inlining" calls. | |
| - gh-issue-104018: Disallow the "z" format specifier in %-format of bytes | |
| objects. | |
| - gh-issue-103971: Fix an issue where incorrect locations numbers could be | |
| assigned to code following ``case`` blocks. | |
| - gh-issue-102310: Change the error range for invalid bytes literals. | |
| - gh-issue-103590: Do not wrap a single exception raised from a | |
| ``try-except*`` construct in an :exc:`ExceptionGroup`. | |
| - gh-issue-101517: Fix bug in line numbers of instructions emitted for | |
| :keyword:`except* <except_star>`. | |
| - gh-issue-103242: Migrate :meth:`~ssl.SSLContext.set_ecdh_curve` method not | |
| to use deprecated OpenSSL APIs. Patch by Dong-hee Na. | |
| - gh-issue-102700: Allow built-in modules to be submodules. This allows | |
| submodules to be statically linked into a CPython binary. | |
| - gh-issue-101857: Fix xattr support detection on Linux systems by widening | |
| the check to linux, not just glibc. This fixes support for musl. | |
| - gh-issue-99184: Bypass instance attribute access of ``__name__`` in | |
| ``repr`` of :class:`weakref.ref`. | |
| - gh-issue-96670: The parser now raises :exc:`SyntaxError` when parsing | |
| source code containing null bytes. Backported from ``aab01e3``. Patch by | |
| Pablo Galindo | |
| - bpo-31821: Fix :func:`!pause_reading` to work when called from | |
| :func:`!connection_made` in :mod:`asyncio`. | |
| Library | |
| ------- | |
| - gh-issue-105080: Fixed inconsistent signature on derived classes for | |
| :func:`inspect.signature` | |
| - gh-issue-104874: Document the ``__name__`` and ``__supertype__`` | |
| attributes of :class:`typing.NewType`. Patch by Jelle Zijlstra. | |
| - gh-issue-104340: When an ``asyncio`` pipe protocol loses its connection | |
| due to an error, and the caller doesn't await ``wait_closed()`` on the | |
| corresponding ``StreamWriter``, don't log a warning about an exception | |
| that was never retrieved. After all, according to the | |
| ``StreamWriter.close()`` docs, the ``wait_closed()`` call is optional | |
| ("not mandatory"). | |
| - gh-issue-104372: Refactored the ``_posixsubprocess`` internals to avoid | |
| Python C API usage between fork and exec when marking ``pass_fds=`` file | |
| descriptors inheritable. | |
| - gh-issue-75367: Fix data descriptor detection in | |
| :func:`inspect.getattr_static`. | |
| - gh-issue-104536: Fix a race condition in the internal | |
| :mod:`multiprocessing.process` cleanup logic that could manifest as an | |
| unintended ``AttributeError`` when calling ``process.close()``. | |
| - gh-issue-104399: Prepare the ``_tkinter`` module for building with Tcl 9.0 | |
| and future libtommath by replacing usage of deprecated functions | |
| :c:func:`mp_to_unsigned_bin_n` and :c:func:`mp_unsigned_bin_size` when | |
| necessary. | |
| - gh-issue-104307: :func:`socket.getnameinfo` now releases the GIL while | |
| contacting the DNS server | |
| - gh-issue-87695: Fix issue where :meth:`pathlib.Path.glob` raised | |
| :exc:`OSError` when it encountered a symlink to an overly long path. | |
| - gh-issue-104265: Prevent possible crash by disallowing instantiation of | |
| the :class:`!_csv.Reader` and :class:`!_csv.Writer` types. The regression | |
| was introduced in 3.10.0a4 with PR 23224 (:issue:`14935`). Patch by | |
| Radislav Chugunov. | |
| - gh-issue-104035: Do not ignore user-defined ``__getstate__`` and | |
| ``__setstate__`` methods for slotted frozen dataclasses. | |
| - gh-issue-103987: In :mod:`mmap`, fix several bugs that could lead to | |
| access to memory-mapped files after they have been invalidated. | |
| - gh-issue-103935: Use :func:`io.open_code` for files to be executed instead | |
| of raw :func:`open` | |
| - gh-issue-100370: Fix potential :exc:`OverflowError` in | |
| :meth:`sqlite3.Connection.blobopen` for 32-bit builds. Patch by Erlend E. | |
| Aasland. | |
| - gh-issue-103848: Add checks to ensure that ``[`` bracketed ``]`` hosts | |
| found by :func:`urllib.parse.urlsplit` are of IPv6 or IPvFuture format. | |
| - gh-issue-103872: Update the bundled copy of pip to version 23.1.2. | |
| - gh-issue-103861: Fix ``zipfile.Zipfile`` creating invalid zip files when | |
| ``force_zip64`` was used to add files to them. Patch by Carey Metcalfe. | |
| - gh-issue-103685: Prepare :meth:`tkinter.Menu.index` for Tk 8.7 so that it | |
| does not raise ``TclError: expected integer but got ""`` when it should | |
| return ``None``. | |
| - gh-issue-81403: :class:`urllib.request.CacheFTPHandler` no longer raises | |
| :class:`URLError` if a cached FTP instance is reused. ftplib's endtransfer | |
| method calls voidresp to drain the connection to handle FTP instance reuse | |
| properly. | |
| - gh-issue-103578: Fixed a bug where :mod:`pdb` crashes when reading source | |
| file with different encoding by replacing :func:`io.open` with | |
| :func:`io.open_code`. The new method would also call into the hook set by | |
| :func:`PyFile_SetOpenCodeHook`. | |
| - gh-issue-103556: Now creating :class:`inspect.Signature` objects with | |
| positional-only parameter with a default followed by a | |
| positional-or-keyword parameter without one is impossible. | |
| - gh-issue-103559: Update the bundled copy of pip to version 23.1.1. | |
| - gh-issue-103365: Set default Flag boundary to ``STRICT`` and fix bitwise | |
| operations. | |
| - gh-issue-103472: Avoid a potential :exc:`ResourceWarning` in | |
| :class:`http.client.HTTPConnection` by closing the proxy / tunnel's | |
| CONNECT response explicitly. | |
| - gh-issue-103449: Fix a bug in doc string generation in | |
| :func:`dataclasses.dataclass`. | |
| - gh-issue-103256: Fixed a bug that caused :mod:`hmac` to raise an exception | |
| when the requested hash algorithm was not available in OpenSSL despite | |
| being available separately as part of ``hashlib`` itself. It now falls | |
| back properly to the built-in. This could happen when, for example, your | |
| OpenSSL does not include SHA3 support and you want to compute | |
| ``hmac.digest(b'K', b'M', 'sha3_256')``. | |
| - gh-issue-103225: Fix a bug in :mod:`pdb` when displaying line numbers of | |
| module-level source code. | |
| - gh-issue-93910: Remove deprecation of enum ``memmber.member`` access. | |
| - gh-issue-102978: Fixes :func:`unittest.mock.patch` not enforcing function | |
| signatures for methods decorated with ``@classmethod`` or | |
| ``@staticmethod`` when patch is called with ``autospec=True``. | |
| - gh-issue-103204: Fixes :mod:`http.server` accepting HTTP requests with | |
| HTTP version numbers preceded by '+', or '-', or with digit-separating '_' | |
| characters. The length of the version numbers is also constrained. | |
| - gh-issue-102953: The extraction methods in :mod:`tarfile`, and | |
| :func:`shutil.unpack_archive`, have a new a *filter* argument that allows | |
| limiting tar features than may be surprising or dangerous, such as | |
| creating files outside the destination directory. See | |
| :ref:`tarfile-extraction-filter` for details. | |
| - gh-issue-101640: :class:`argparse.ArgumentParser` now catches errors when | |
| writing messages, such as when :data:`sys.stderr` is ``None``. Patch by | |
| Oleg Iarygin. | |
| - gh-issue-96522: Fix potential deadlock in pty.spawn() | |
| - gh-issue-87474: Fix potential file descriptor leaks in | |
| :class:`subprocess.Popen`. | |
| Documentation | |
| ------------- | |
| - gh-issue-89455: Add missing documentation for the ``max_group_depth`` and | |
| ``max_group_width`` parameters and the ``exceptions`` attribute of the | |
| :class:`traceback.TracebackException` class. | |
| - gh-issue-89412: Add missing documentation for the ``end_lineno`` and | |
| ``end_offset`` attributes of the :class:`traceback.TracebackException` | |
| class. | |
| - gh-issue-104943: Remove mentions of old Python versions in | |
| :class:`typing.NamedTuple`. | |
| - gh-issue-67056: Document that the effect of registering or unregistering | |
| an :mod:`atexit` cleanup function from within a registered cleanup | |
| function is undefined. | |
| - gh-issue-48241: Clarifying documentation about the url parameter to | |
| urllib.request.urlopen and urllib.request.Requst needing to be encoded | |
| properly. | |
| Tests | |
| ----- | |
| - gh-issue-104494: Update ``test_pack_configure_in`` and | |
| ``test_place_configure_in`` for changes to error message formatting in Tk | |
| 8.7. | |
| - gh-issue-104461: Run test_configure_screen on X11 only, since the | |
| ``DISPLAY`` environment variable and ``-screen`` option for toplevels are | |
| not useful on Tk for Win32 or Aqua. | |
| - gh-issue-103329: Regression tests for the behaviour of | |
| ``unittest.mock.PropertyMock`` were added. | |
| - gh-issue-85984: Utilize new "winsize" functions from termios in pty tests. | |
| - gh-issue-75729: Fix the :func:`os.spawn* <os.spawnl>` tests failing on | |
| Windows when the working directory or interpreter path contains spaces. | |
| Build | |
| ----- | |
| - gh-issue-90005: Fix a regression in :file:`configure` where we could end | |
| up unintentionally linking with ``libbsd``. | |
| - gh-issue-104106: Add gcc fallback of mkfifoat/mknodat for macOS. Patch by | |
| Dong-hee Na. | |
| - gh-issue-99069: Extended workaround defining ``static_assert`` when | |
| missing from the libc headers to all clang and gcc builds. In particular, | |
| this fixes building on macOS <= 10.10. | |
| Windows | |
| ------- | |
| - gh-issue-105146: Updated the links at the end of the installer to point to | |
| Discourse rather than the mailing lists. | |
| - gh-issue-104623: Update Windows installer to use SQLite 3.42.0. | |
| - gh-issue-102997: Update Windows installer to use SQLite 3.41.2. | |
| - gh-issue-88013: Fixed a bug where :exc:`TypeError` was raised when calling | |
| :func:`ntpath.realpath` with a bytes parameter in some cases. | |
| macOS | |
| ----- | |
| - gh-issue-103142: Update macOS installer to use OpenSSL 1.1.1u. | |
| - gh-issue-104623: Update macOS installer to SQLite 3.42.0. | |
| - gh-issue-102997: Update macOS installer to SQLite 3.41.2. | |
| IDLE | |
| ---- | |
| - gh-issue-104719: Remove IDLE's modification of tokenize.tabsize and test | |
| other uses of tokenize data and methods. | |
| - gh-issue-104499: Fix completions for Tk Aqua 8.7 (currently blank). | |
| - gh-issue-104496: About prints both tcl and tk versions if different | |
| (expected someday). | |
| - gh-issue-88496: Fix IDLE test hang on macOS. | |
| What's New in Python 3.11.3 final? | |
| ================================== | |
| *Release date: 2023-04-04* | |
| Security | |
| -------- | |
| - gh-issue-101727: Updated the OpenSSL version used in Windows and macOS | |
| binary release builds to 1.1.1t to address CVE-2023-0286, CVE-2022-4303, | |
| and CVE-2022-4303 per `the OpenSSL 2023-02-07 security advisory | |
| <https://www.openssl.org/news/secadv/20230207.txt>`_. | |
| - gh-issue-101283: :class:`subprocess.Popen` now uses a safer approach to | |
| find ``cmd.exe`` when launching with ``shell=True``. Patch by Eryk Sun, | |
| based on a patch by Oleg Iarygin. | |
| Core and Builtins | |
| ----------------- | |
| - gh-issue-101975: Fixed ``stacktop`` value on tracing entries to avoid | |
| corruption on garbage collection. | |
| - gh-issue-102701: Fix overflow when creating very large dict. | |
| - gh-issue-102416: Do not memoize incorrectly automatically generated loop | |
| rules in the parser. Patch by Pablo Galindo. | |
| - gh-issue-102356: Fix a bug that caused a crash when deallocating deeply | |
| nested filter objects. Patch by Marta Gómez Macías. | |
| - gh-issue-102397: Fix segfault from race condition in signal handling | |
| during garbage collection. Patch by Kumar Aditya. | |
| - gh-issue-102281: Fix potential nullptr dereference and use of | |
| uninitialized memory in fileutils. Patch by Max Bachmann. | |
| - gh-issue-102126: Fix deadlock at shutdown when clearing thread states if | |
| any finalizer tries to acquire the runtime head lock. Patch by Kumar | |
| Aditya. | |
| - gh-issue-102027: Fix SSE2 and SSE3 detection in ``_blake2`` internal | |
| module. Patch by Max Bachmann. | |
| - gh-issue-101967: Fix possible segfault in | |
| ``positional_only_passed_as_keyword`` function, when new list created. | |
| - gh-issue-101765: Fix SystemError / segmentation fault in iter | |
| ``__reduce__`` when internal access of ``builtins.__dict__`` keys mutates | |
| the iter object. | |
| - gh-issue-101696: Invalidate type version tag in ``_PyStaticType_Dealloc`` | |
| for static types, avoiding bug where a false cache hit could crash the | |
| interpreter. Patch by Kumar Aditya. | |
| Library | |
| ------- | |
| - gh-issue-102549: Don't ignore exceptions in member type creation. | |
| - gh-issue-102947: Improve traceback when :func:`dataclasses.fields` is | |
| called on a non-dataclass. Patch by Alex Waygood | |
| - gh-issue-102780: The :class:`asyncio.Timeout` context manager now works | |
| reliably even when performing cleanup due to task cancellation. | |
| Previously it could raise a :exc:`~asyncio.CancelledError` instead of an | |
| :exc:`~asyncio.TimeoutError` in such cases. | |
| - gh-issue-88965: typing: Fix a bug relating to substitution in custom | |
| classes generic over a :class:`~typing.ParamSpec`. Previously, if the | |
| ``ParamSpec`` was substituted with a parameters list that itself contained | |
| a :class:`~typing.TypeVar`, the ``TypeVar`` in the parameters list could | |
| not be subsequently substituted. This is now fixed. | |
| Patch by Nikita Sobolev. | |
| - gh-issue-101979: Fix a bug where parentheses in the ``metavar`` argument | |
| to :meth:`argparse.ArgumentParser.add_argument` were dropped. Patch by | |
| Yeojin Kim. | |
| - gh-issue-102179: Fix :func:`os.dup2` error message for negative fds. | |
| - gh-issue-101961: For the binary mode, :func:`fileinput.hookcompressed` | |
| doesn't set the ``encoding`` value even if the value is ``None``. Patch by | |
| Gihwan Kim. | |
| - gh-issue-101936: The default value of ``fp`` becomes :class:`io.BytesIO` | |
| if :exc:`~urllib.error.HTTPError` is initialized without a designated | |
| ``fp`` parameter. Patch by Long Vo. | |
| - gh-issue-102069: Fix ``__weakref__`` descriptor generation for custom | |
| dataclasses. | |
| - gh-issue-101566: In zipfile, apply fix for extractall on the underlying | |
| zipfile after being wrapped in ``Path``. | |
| - gh-issue-101892: Callable iterators no longer raise :class:`SystemError` | |
| when the callable object exhausts the iterator but forgets to either | |
| return a sentinel value or raise :class:`StopIteration`. | |
| - gh-issue-97786: Fix potential undefined behaviour in corner cases of | |
| floating-point-to-time conversions. | |
| - gh-issue-101517: Fixed bug where :mod:`bdb` looks up the source line with | |
| :mod:`linecache` with a ``lineno=None``, which causes it to fail with an | |
| unhandled exception. | |
| - gh-issue-101673: Fix a :mod:`pdb` bug where ``ll`` clears the changes to | |
| local variables. | |
| - gh-issue-96931: Fix incorrect results from | |
| :meth:`ssl.SSLSocket.shared_ciphers` | |
| - gh-issue-88233: Correctly preserve "extra" fields in ``zipfile`` | |
| regardless of their ordering relative to a zip64 "extra." | |
| - gh-issue-96127: ``inspect.signature`` was raising ``TypeError`` on call | |
| with mock objects. Now it correctly returns ``(*args, **kwargs)`` as | |
| infered signature. | |
| - gh-issue-95495: When built against OpenSSL 3.0, the :mod:`ssl` module had | |
| a bug where it reported unauthenticated EOFs (i.e. without close_notify) | |
| as a clean TLS-level EOF. It now raises :exc:`~ssl.SSLEOFError`, matching | |
| the behavior in previous versions of OpenSSL. The | |
| :attr:`~ssl.SSLContext.options` attribute on :class:`~ssl.SSLContext` also | |
| no longer includes :data:`~ssl.OP_IGNORE_UNEXPECTED_EOF` by default. This | |
| option may be set to specify the previous OpenSSL 3.0 behavior. | |
| - gh-issue-94440: Fix a :mod:`concurrent.futures.process` bug where | |
| ``ProcessPoolExecutor`` shutdown could hang after a future has been | |
| quickly submitted and canceled. | |
| Documentation | |
| ------------- | |
| - gh-issue-103112: Add docstring to :meth:`http.client.HTTPResponse.read` to | |
| fix ``pydoc`` output. | |
| - gh-issue-85417: Update :mod:`cmath` documentation to clarify behaviour on | |
| branch cuts. | |
| - gh-issue-97725: Fix :meth:`asyncio.Task.print_stack` description for | |
| ``file=None``. Patch by Oleg Iarygin. | |
| Tests | |
| ----- | |
| - gh-issue-102980: Improve test coverage on :mod:`pdb`. | |
| - gh-issue-102537: Adjust the error handling strategy in | |
| ``test_zoneinfo.TzPathTest.python_tzpath_context``. Patch by Paul Ganssle. | |
| - gh-issue-89792: ``test_tools`` now copies up to 10x less source data to a | |
| temporary directory during the ``freeze`` test by ignoring git metadata | |
| and other artifacts. It also limits its python build parallelism based on | |
| os.cpu_count instead of hard coding it as 8 cores. | |
| - gh-issue-101377: Improved test_locale_calendar_formatweekday of calendar. | |
| Build | |
| ----- | |
| - gh-issue-102711: Fix ``-Wstrict-prototypes`` compiler warnings. | |
| Windows | |
| ------- | |
| - gh-issue-101849: Ensures installer will correctly upgrade existing | |
| ``py.exe`` launcher installs. | |
| - gh-issue-101763: Updates copy of libffi bundled with Windows installs to | |
| 3.4.4. | |
| - gh-issue-101759: Update Windows installer to SQLite 3.40.1. | |
| - gh-issue-101614: Correctly handle extensions built against debug binaries | |
| that reference ``python3_d.dll``. | |
| macOS | |
| ----- | |
| - gh-issue-103207: Add instructions to the macOS installer welcome display | |
| on how to workaround the macOS 13 Ventura “The installer encountered an | |
| error” failure. | |
| - gh-issue-101759: Update macOS installer to SQLite 3.40.1. | |
| What's New in Python 3.11.2 final? | |
| ================================== | |
| *Release date: 2023-02-07* | |
| Core and Builtins | |
| ----------------- | |
| - gh-issue-92173: Fix the ``defs`` and ``kwdefs`` arguments to | |
| :c:func:`PyEval_EvalCodeEx` and a reference leak in that function. | |
| - gh-issue-101400: Fix wrong lineno in exception message on | |
| :keyword:`continue` or :keyword:`break` which are not in a loop. Patch by | |
| Dong-hee Na. | |
| - gh-issue-101372: Fix :func:`~unicodedata.is_normalized` to properly handle | |
| the UCD 3.2.0 cases. Patch by Dong-hee Na. | |
| - gh-issue-101046: Fix a possible memory leak in the parser when raising | |
| :exc:`MemoryError`. Patch by Pablo Galindo | |
| - gh-issue-101037: Fix potential memory underallocation issue for instances | |
| of :class:`int` subclasses with value zero. | |
| - gh-issue-100942: Fixed segfault in property.getter/setter/deleter that | |
| occurred when a property subclass overrode the ``__new__`` method to | |
| return a non-property instance. | |
| - gh-issue-100892: Fix race while iterating over thread states in clearing | |
| :class:`threading.local`. Patch by Kumar Aditya. | |
| - gh-issue-100776: Fix misleading default value in :func:`input`'s | |
| ``__text_signature__``. | |
| - gh-issue-100637: Fix :func:`int.__sizeof__` calculation to include the 1 | |
| element ob_digit array for 0 and False. | |
| - gh-issue-100649: Update the native_thread_id field of PyThreadState after | |
| fork. | |
| - gh-issue-100374: Fix incorrect result and delay in :func:`socket.getfqdn`. | |
| Patch by Dominic Socular. | |
| - gh-issue-99110: Initialize frame->previous in frameobject.c to fix a | |
| segmentation fault when accessing frames created by :c:func:`PyFrame_New`. | |
| - gh-issue-100050: Honor existing errors obtained when searching for | |
| mismatching parentheses in the tokenizer. Patch by Pablo Galindo | |
| - bpo-32782: ``ctypes`` arrays of length 0 now report a correct itemsize | |
| when a ``memoryview`` is constructed from them, rather than always giving | |
| a value of 0. | |
| Library | |
| ------- | |
| - gh-issue-101541: [Enum] - fix psuedo-flag creation | |
| - gh-issue-101326: Fix regression when passing ``None`` as second or third | |
| argument to ``FutureIter.throw``. | |
| - gh-issue-100795: Avoid potential unexpected ``freeaddrinfo`` call (double | |
| free) in :mod:`socket` when when a libc ``getaddrinfo()`` implementation | |
| leaves garbage in an output pointer when returning an error. Original | |
| patch by Sergey G. Brester. | |
| - gh-issue-101143: Remove unused references to :class:`~asyncio.TimerHandle` | |
| in ``asyncio.base_events.BaseEventLoop._add_callback``. | |
| - gh-issue-101144: Make :func:`zipfile.Path.open` and | |
| :func:`zipfile.Path.read_text` also accept ``encoding`` as a positional | |
| argument. This was the behavior in Python 3.9 and earlier. 3.10 | |
| introduced a regression where supplying it as a positional argument would | |
| lead to a :exc:`TypeError`. | |
| - gh-issue-101015: Fix :func:`typing.get_type_hints` on ``'*tuple[...]'`` | |
| and ``*tuple[...]``. It must not drop the ``Unpack`` part. | |
| - gh-issue-100573: Fix a Windows :mod:`asyncio` bug with named pipes where a | |
| client doing ``os.stat()`` on the pipe would cause an error in the server | |
| that disabled serving future requests. | |
| - gh-issue-100805: Modify :func:`random.choice` implementation to once again | |
| work with NumPy arrays. | |
| - gh-issue-90104: Avoid RecursionError on ``repr`` if a dataclass field | |
| definition has a cyclic reference. | |
| - gh-issue-100750: pass encoding kwarg to subprocess in platform | |
| - gh-issue-100689: Fix crash in :mod:`pyexpat` by statically allocating | |
| ``PyExpat_CAPI`` capsule. | |
| - gh-issue-100740: Fix ``unittest.mock.Mock`` not respecting the spec for | |
| attribute names prefixed with ``assert``. | |
| - gh-issue-86508: Fix :func:`asyncio.open_connection` to skip binding to | |
| local addresses of different family. Patch by Kumar Aditya. | |
| - gh-issue-100287: Fix the interaction of :func:`unittest.mock.seal` with | |
| :class:`unittest.mock.AsyncMock`. | |
| - gh-issue-100474: :mod:`http.server` now checks that an index page is | |
| actually a regular file before trying to serve it. This avoids issues | |
| with directories named ``index.html``. | |
| - gh-issue-100160: Remove any deprecation warnings in | |
| :func:`asyncio.get_event_loop`. They are deferred to Python 3.12. | |
| - gh-issue-96290: Fix handling of partial and invalid UNC drives in | |
| ``ntpath.splitdrive()``, and in ``ntpath.normpath()`` on non-Windows | |
| systems. Paths such as '\\server' and '\\' are now considered by | |
| ``splitdrive()`` to contain only a drive, and consequently are not | |
| modified by ``normpath()`` on non-Windows systems. The behaviour of | |
| ``normpath()`` on Windows systems is unaffected, as native OS APIs are | |
| used. Patch by Eryk Sun, with contributions by Barney Gale. | |
| - gh-issue-78878: Fix crash when creating an instance of | |
| :class:`!_ctypes.CField`. | |
| - gh-issue-99952: Fix a reference undercounting issue in | |
| :class:`ctypes.Structure` with ``from_param()`` results larger than a C | |
| pointer. | |
| - gh-issue-100133: Fix regression in :mod:`asyncio` where a subprocess would | |
| sometimes lose data received from pipe. | |
| - gh-issue-100098: Fix ``tuple`` subclasses being cast to ``tuple`` when | |
| used as enum values. | |
| - gh-issue-98778: Update :exc:`~urllib.error.HTTPError` to be initialized | |
| properly, even if the ``fp`` is ``None``. Patch by Dong-hee Na. | |
| - gh-issue-83035: Fix :func:`inspect.getsource` handling of decorator calls | |
| with nested parentheses. | |
| - gh-issue-99576: Fix ``.save()`` method for ``LWPCookieJar`` and | |
| ``MozillaCookieJar``: saved file was not truncated on repeated save. | |
| - gh-issue-99433: Fix :mod:`doctest` failure on | |
| :class:`types.MethodWrapperType` in modules. | |
| - gh-issue-99240: Fix double-free bug in Argument Clinic ``str_converter`` | |
| by extracting memory clean up to a new ``post_parsing`` section. | |
| - gh-issue-64490: Fix refcount error when arguments are packed to tuple in | |
| Argument Clinic. | |
| - gh-issue-85267: Several improvements to :func:`inspect.signature`'s | |
| handling of ``__text_signature``. - Fixes a case where | |
| :func:`inspect.signature` dropped parameters - Fixes a case where | |
| :func:`inspect.signature` raised :exc:`tokenize.TokenError` - Allows | |
| :func:`inspect.signature` to understand defaults involving binary | |
| operations of constants - :func:`inspect.signature` is documented as only | |
| raising :exc:`TypeError` or :exc:`ValueError`, but sometimes raised | |
| :exc:`RuntimeError`. These cases now raise :exc:`ValueError` - Removed a | |
| dead code path | |
| - gh-issue-95882: Fix a 3.11 regression in | |
| :func:`~contextlib.asynccontextmanager`, which caused it to propagate | |
| exceptions with incorrect tracebacks and fix a 3.11 regression in | |
| :func:`~contextlib.contextmanager`, which caused it to propagate | |
| exceptions with incorrect tracebacks for :exc:`StopIteration`. | |
| - bpo-44817: Ignore WinError 53 (ERROR_BAD_NETPATH), 65 | |
| (ERROR_NETWORK_ACCESS_DENIED) and 161 (ERROR_BAD_PATHNAME) when using | |
| ntpath.realpath(). | |
| - bpo-40447: Accept :class:`os.PathLike` (such as :class:`pathlib.Path`) in | |
| the ``stripdir`` arguments of :meth:`compileall.compile_file` and | |
| :meth:`compileall.compile_dir`. | |
| - bpo-36880: Fix a reference counting issue when a :mod:`ctypes` callback | |
| with return type :class:`~ctypes.py_object` returns ``None``, which could | |
| cause crashes. | |
| Documentation | |
| ------------- | |
| - gh-issue-100616: Document existing ``attr`` parameter to | |
| :func:`curses.window.vline` function in :mod:`curses`. | |
| - gh-issue-100472: Remove claim in documentation that the ``stripdir``, | |
| ``prependdir`` and ``limit_sl_dest`` parameters of | |
| :func:`compileall.compile_dir` and :func:`compileall.compile_file` could | |
| be :class:`bytes`. | |
| - gh-issue-99931: Use `sphinxext-opengraph | |
| <https://sphinxext-opengraph.readthedocs.io/>`__ to generate `OpenGraph | |
| metadata <https://ogp.me/>`__. | |
| Tests | |
| ----- | |
| - gh-issue-101334: ``test_tarfile`` has been updated to pass when run as a | |
| high UID. | |
| - gh-issue-100454: Start running SSL tests with OpenSSL 3.1.0-beta1. | |
| - gh-issue-96002: Add functional test for Argument Clinic. | |
| Build | |
| ----- | |
| - gh-issue-101522: Allow overriding Windows dependencies versions and paths | |
| using MSBuild properties. | |
| Windows | |
| ------- | |
| - gh-issue-101543: Ensure the install path in the registry is only used when | |
| the standard library hasn't been located in any other way. | |
| - gh-issue-101467: The ``py.exe`` launcher now correctly filters when only a | |
| single runtime is installed. It also correctly handles prefix matches on | |
| tags so that ``-3.1`` does not match ``3.11``, but would still match | |
| ``3.1-32``. | |
| - gh-issue-101135: Restore ability to launch older 32-bit versions from the | |
| :file:`py.exe` launcher when both 32-bit and 64-bit installs of the same | |
| version are available. | |
| - gh-issue-82052: Fixed an issue where writing more than 32K of Unicode | |
| output to the console screen in one go can result in mojibake. | |
| - gh-issue-100320: Ensures the ``PythonPath`` registry key from an install | |
| is used when launching from a different copy of Python that relies on an | |
| existing install to provide a copy of its modules and standard library. | |
| - gh-issue-100247: Restores support for the :file:`py.exe` launcher finding | |
| shebang commands in its configuration file using the full command name. | |
| - gh-issue-100180: Update Windows installer to OpenSSL 1.1.1s | |
| - bpo-43984: :meth:`winreg.SetValueEx` now leaves the target value untouched | |
| in the case of conversion errors. Previously, ``-1`` would be written in | |
| case of such errors. | |
| macOS | |
| ----- | |
| - gh-issue-100180: Update macOS installer to OpenSSL 1.1.1s | |
| Tools/Demos | |
| ----------- | |
| - bpo-45256: Fix a bug that caused an :exc:`AttributeError` to be raised in | |
| ``python-gdb.py`` when ``py-locals`` is used without a frame. | |
| - gh-issue-100342: Add missing ``NULL`` check for possible allocation | |
| failure in ``*args`` parsing in Argument Clinic. | |
| - gh-issue-64490: Argument Clinic varargs bugfixes | |
| * Fix out-of-bounds error in :c:func:`!_PyArg_UnpackKeywordsWithVararg`. | |
| * Fix incorrect check which allowed more than one varargs in clinic.py. | |
| * Fix miscalculation of ``noptargs`` in generated code. | |
| * Do not generate ``noptargs`` when there is a vararg argument and no optional argument. | |
| C API | |
| ----- | |
| - gh-issue-99240: In argument parsing, after deallocating newly allocated | |
| memory, reset its pointer to NULL. | |
| What's New in Python 3.11.1 final? | |
| ================================== | |
| *Release date: 2022-12-06* | |
| Security | |
| -------- | |
| - gh-issue-100001: ``python -m http.server`` no longer allows terminal | |
| control characters sent within a garbage request to be printed to the | |
| stderr server log. | |
| This is done by changing the :mod:`http.server` | |
| :class:`BaseHTTPRequestHandler` ``.log_message`` method to replace control | |
| characters with a ``\xHH`` hex escape before printing. | |
| - gh-issue-87604: Avoid publishing list of active per-interpreter audit | |
| hooks via the :mod:`gc` module | |
| - gh-issue-98433: The IDNA codec decoder used on DNS hostnames by | |
| :mod:`socket` or :mod:`asyncio` related name resolution functions no | |
| longer involves a quadratic algorithm. This prevents a potential CPU | |
| denial of service if an out-of-spec excessive length hostname involving | |
| bidirectional characters were decoded. Some protocols such as | |
| :mod:`urllib` http ``3xx`` redirects potentially allow for an attacker to | |
| supply such a name. | |
| - gh-issue-98739: Update bundled libexpat to 2.5.0 | |
| - gh-issue-97612: Fix a shell code injection vulnerability in the | |
| ``get-remote-certificate.py`` example script. The script no longer uses a | |
| shell to run ``openssl`` commands. Issue reported and initial fix by Caleb | |
| Shortt. Patch by Victor Stinner. | |
| Core and Builtins | |
| ----------------- | |
| - gh-issue-99886: Fix a crash when an object which does not have a | |
| dictionary frees its instance values. | |
| - gh-issue-99891: Fix a bug in the tokenizer that could cause infinite | |
| recursion when showing syntax warnings that happen in the first line of | |
| the source. Patch by Pablo Galindo | |
| - gh-issue-99729: Fix an issue that could cause frames to be visible to | |
| Python code as they are being torn down, possibly leading to memory | |
| corruption or hard crashes of the interpreter. | |
| - gh-issue-99578: Fix a reference bug in :func:`_imp.create_builtin()` after | |
| the creation of the first sub-interpreter for modules ``builtins`` and | |
| ``sys``. Patch by Victor Stinner. | |
| - gh-issue-99581: Fixed a bug that was causing a buffer overflow if the | |
| tokenizer copies a line missing the newline caracter from a file that is | |
| as long as the available tokenizer buffer. Patch by Pablo galindo | |
| - gh-issue-99553: Fix bug where an :exc:`ExceptionGroup` subclass can wrap a | |
| :exc:`BaseException`. | |
| - gh-issue-99370: Fix zip path for venv created from a non-installed python | |
| on POSIX platforms. | |
| - gh-issue-99298: Fix an issue that could potentially cause incorrect error | |
| handling for some bytecode instructions. | |
| - gh-issue-99205: Fix an issue that prevented :c:type:`PyThreadState` and | |
| :c:type:`PyInterpreterState` memory from being freed properly. | |
| - gh-issue-99181: Fix failure in :keyword:`except* <except_star>` with | |
| unhashable exceptions. | |
| - gh-issue-99204: Fix calculation of :data:`sys._base_executable` when | |
| inside a POSIX virtual environment using copies of the python binary when | |
| the base installation does not provide the executable name used by the | |
| venv. Calculation will fall back to alternative names ("python<MAJOR>", | |
| "python<MAJOR>.<MINOR>"). | |
| - gh-issue-96055: Update :mod:`faulthandler` to emit an error message with | |
| the proper unexpected signal number. Patch by Dong-hee Na. | |
| - gh-issue-99153: Fix location of :exc:`SyntaxError` for a :keyword:`try` | |
| block with both :keyword:`except` and :keyword:`except* <except_star>`. | |
| - gh-issue-99103: Fix the error reporting positions of specialized traceback | |
| anchors when the source line contains Unicode characters. | |
| - gh-issue-98852: Fix subscription of type aliases containing bare generic | |
| types or types like :class:`~typing.TypeVar`: for example ``tuple[A, | |
| T][int]`` and ``tuple[TypeVar, T][int]``, where ``A`` is a generic type, | |
| and ``T`` is a type variable. | |
| - gh-issue-98925: Lower the recursion depth for marshal on WASI to support | |
| wasmtime 2.0/main. | |
| - gh-issue-98783: Fix multiple crashes in debug mode when ``str`` subclasses | |
| are used instead of ``str`` itself. | |
| - gh-issue-99257: Fix an issue where member descriptors (such as those for | |
| :attr:`~object.__slots__`) could behave incorrectly or crash instead of | |
| raising a :exc:`TypeError` when accessed via an instance of an invalid | |
| type. | |
| - gh-issue-98374: Suppress ImportError for invalid query for help() command. | |
| Patch by Dong-hee Na. | |
| - gh-issue-98415: Fix detection of MAC addresses for :mod:`uuid` on certain | |
| OSs. Patch by Chaim Sanders | |
| - gh-issue-92119: Print exception class name instead of its string | |
| representation when raising errors from :mod:`ctypes` calls. | |
| - gh-issue-96078: :func:`os.sched_yield` now release the GIL while calling | |
| sched_yield(2). Patch by Dong-hee Na. | |
| - gh-issue-93354: Fix an issue that could delay the specialization of | |
| :opcode:`PRECALL` instructions. | |
| - gh-issue-97943: Bugfix: :func:`PyFunction_GetAnnotations` should return a | |
| borrowed reference. It was returning a new reference. | |
| - gh-issue-97779: Ensure that all Python frame objects are backed by | |
| "complete" frames. | |
| - gh-issue-97591: Fixed a missing incref/decref pair in | |
| ``Exception.__setstate__()``. Patch by Ofey Chan. | |
| - gh-issue-94526: Fix the Python path configuration used to initialized | |
| :data:`sys.path` at Python startup. Paths are no longer encoded to | |
| UTF-8/strict to avoid encoding errors if it contains surrogate characters | |
| (bytes paths are decoded with the surrogateescape error handler). Patch by | |
| Victor Stinner. | |
| - gh-issue-95921: Fix overly-broad source position information for chained | |
| comparisons used as branching conditions. | |
| - gh-issue-96387: At Python exit, sometimes a thread holding the GIL can | |
| wait forever for a thread (usually a daemon thread) which requested to | |
| drop the GIL, whereas the thread already exited. To fix the race | |
| condition, the thread which requested the GIL drop now resets its request | |
| before exiting. Issue discovered and analyzed by Mingliang ZHAO. Patch by | |
| Victor Stinner. | |
| - gh-issue-96864: Fix a possible assertion failure, fatal error, or | |
| :exc:`SystemError` if a line tracing event raises an exception while | |
| opcode tracing is enabled. | |
| - gh-issue-96678: Fix undefined behaviour in C code of null pointer | |
| arithmetic. | |
| - gh-issue-96754: Make sure that all frame objects created are created from | |
| valid interpreter frames. Prevents the possibility of invalid frames in | |
| backtraces and signal handlers. | |
| - gh-issue-95196: Disable incorrect pickling of the C implemented | |
| classmethod descriptors. | |
| - gh-issue-96005: On WASI :data:`~errno.ENOTCAPABLE` is now mapped to | |
| :exc:`PermissionError`. The :mod:`errno` modules exposes the new error | |
| number. ``getpath.py`` now ignores :exc:`PermissionError` when it cannot | |
| open landmark files ``pybuilddir.txt`` and ``pyenv.cfg``. | |
| - gh-issue-93696: Allow :mod:`pdb` to locate source for frozen modules in | |
| the standard library. | |
| - bpo-31718: Raise :exc:`ValueError` instead of :exc:`SystemError` when | |
| methods of uninitialized :class:`io.IncrementalNewlineDecoder` objects are | |
| called. Patch by Oren Milman. | |
| - bpo-38031: Fix a possible assertion failure in :class:`io.FileIO` when the | |
| opener returns an invalid file descriptor. | |
| Library | |
| ------- | |
| - gh-issue-100001: Also \ escape \s in the http.server | |
| BaseHTTPRequestHandler.log_message so that it is technically possible to | |
| parse the line and reconstruct what the original data was. Without this a | |
| \xHH is ambiguious as to if it is a hex replacement we put in or the | |
| characters r"\x" came through in the original request line. | |
| - gh-issue-93453: :func:`asyncio.get_event_loop` now only emits a | |
| deprecation warning when a new event loop was created implicitly. It no | |
| longer emits a deprecation warning if the current event loop was set. | |
| - gh-issue-51524: Fix bug when calling trace.CoverageResults with valid | |
| infile. | |
| - gh-issue-99645: Fix a bug in handling class cleanups in | |
| :class:`unittest.TestCase`. Now ``addClassCleanup()`` uses separate lists | |
| for different ``TestCase`` subclasses, and ``doClassCleanups()`` only | |
| cleans up the particular class. | |
| - gh-issue-97001: Release the GIL when calling termios APIs to avoid | |
| blocking threads. | |
| - gh-issue-99341: Fix :func:`ast.increment_lineno` to also cover | |
| :class:`ast.TypeIgnore` when changing line numbers. | |
| - gh-issue-99418: Fix bug in :func:`urllib.parse.urlparse` that causes URL | |
| schemes that begin with a digit, a plus sign, or a minus sign to be parsed | |
| incorrectly. | |
| - gh-issue-99382: Check the number of arguments in substitution in user | |
| generics containing a :class:`~typing.TypeVarTuple` and one or more | |
| :class:`~typing.TypeVar`. | |
| - gh-issue-99379: Fix substitution of :class:`~typing.ParamSpec` followed by | |
| :class:`~typing.TypeVarTuple` in generic aliases. | |
| - gh-issue-99344: Fix substitution of :class:`~typing.TypeVarTuple` and | |
| :class:`~typing.ParamSpec` together in user generics. | |
| - gh-issue-74044: Fixed bug where :func:`inspect.signature` reported | |
| incorrect arguments for decorated methods. | |
| - gh-issue-99275: Fix ``SystemError`` in :mod:`ctypes` when exception was | |
| not set during ``__initsubclass__``. | |
| - gh-issue-99277: Remove older version of | |
| ``_SSLProtocolTransport.get_write_buffer_limits`` in | |
| :mod:`!asyncio.sslproto` | |
| - gh-issue-99248: fix negative numbers failing in verify() | |
| - gh-issue-99155: Fix :class:`statistics.NormalDist` pickle with ``0`` and | |
| ``1`` protocols. | |
| - gh-issue-93464: ``enum.auto()`` is now correctly activated when combined | |
| with other assignment values. E.g. ``ONE = auto(), 'some text'`` will now | |
| evaluate as ``(1, 'some text')``. | |
| - gh-issue-99134: Update the bundled copy of pip to version 22.3.1. | |
| - gh-issue-83004: Clean up refleak on failed module initialisation in | |
| :mod:`_zoneinfo` | |
| - gh-issue-83004: Clean up refleaks on failed module initialisation in in | |
| :mod:`_pickle` | |
| - gh-issue-83004: Clean up refleak on failed module initialisation in | |
| :mod:`_io`. | |
| - gh-issue-98897: Fix memory leak in :func:`math.dist` when both points | |
| don't have the same dimension. Patch by Kumar Aditya. | |
| - gh-issue-98706: [3.11] Applied changes from importlib_metadata `4.11.4 | |
| through 4.13 | |
| <https://importlib-metadata.readthedocs.io/en/latest/history.html#v4-13-0>`_, | |
| including compatibility and robustness fixes for ``Distribution`` objects | |
| without ``_normalized_name``, disallowing invalid inputs to | |
| ``Distribution.from_name``, and refined behaviors in | |
| ``PathDistribution._name_from_stem`` and | |
| ``PathDistribution._normalized_name``. | |
| - gh-issue-98793: Fix argument typechecks in :func:`!_overlapped.WSAConnect` | |
| and :func:`!_overlapped.Overlapped.WSASendTo` functions. | |
| - gh-issue-98744: Prevent crashing in :mod:`traceback` when retrieving the | |
| byte-offset for some source files that contain certain unicode characters. | |
| - gh-issue-98740: Fix internal error in the :mod:`re` module which in very | |
| rare circumstances prevented compilation of a regular expression | |
| containing a :ref:`conditional expression <re-conditional-expression>` | |
| without the "else" branch. | |
| - gh-issue-98703: Fix :meth:`asyncio.StreamWriter.drain` to call | |
| ``protocol.connection_lost`` callback only once on Windows. | |
| - gh-issue-98624: Add a mutex to unittest.mock.NonCallableMock to protect | |
| concurrent access to mock attributes. | |
| - gh-issue-89237: Fix hang on Windows in ``subprocess.wait_closed()`` in | |
| :mod:`asyncio` with :class:`~asyncio.ProactorEventLoop`. Patch by Kumar | |
| Aditya. | |
| - gh-issue-98458: Fix infinite loop in unittest when a self-referencing | |
| chained exception is raised | |
| - gh-issue-97928: :meth:`tkinter.Text.count` raises now an exception for | |
| options starting with "-" instead of silently ignoring them. | |
| - gh-issue-97966: On ``uname_result``, restored expectation that ``_fields`` | |
| and ``_asdict`` would include all six properties including ``processor``. | |
| - gh-issue-98307: A :meth:`~logging.handlers.SysLogHandler.createSocket` | |
| method was added to :class:`~logging.handlers.SysLogHandler`. | |
| - gh-issue-96035: Fix bug in :func:`urllib.parse.urlparse` that causes | |
| certain port numbers containing whitespace, underscores, plus and minus | |
| signs, or non-ASCII digits to be incorrectly accepted. | |
| - gh-issue-98251: Allow :mod:`venv` to pass along :envvar:`PYTHON*` | |
| variables to ``ensurepip`` and ``pip`` when they do not impact path | |
| resolution | |
| - gh-issue-98178: On macOS, fix a crash in :func:`syslog.syslog` in | |
| multi-threaded applications. On macOS, the libc ``syslog()`` function is | |
| not thread-safe, so :func:`syslog.syslog` no longer releases the GIL to | |
| call it. Patch by Victor Stinner. | |
| - gh-issue-96151: Allow ``BUILTINS`` to be a valid field name for frozen | |
| dataclasses. | |
| - gh-issue-87730: Wrap network errors consistently in urllib FTP support, so | |
| the test suite doesn't fail when a network is available but the public | |
| internet is not reachable. | |
| - gh-issue-98086: Make sure ``patch.dict()`` can be applied on async | |
| functions. | |
| - gh-issue-90985: Earlier in 3.11 we deprecated | |
| ``asyncio.Task.cancel("message")``. We realized we were too harsh, and | |
| have undeprecated it. | |
| - gh-issue-97837: Change deprecate warning message in :mod:`unittest` from | |
| ``It is deprecated to return a value!=None`` | |
| to | |
| ``It is deprecated to return a value that is not None from a test case`` | |
| - gh-issue-97825: Fixes :exc:`AttributeError` when | |
| :meth:`subprocess.check_output` is used with argument ``input=None`` and | |
| either of the arguments *encoding* or *errors* are used. | |
| - gh-issue-82836: Fix :attr:`~ipaddress.IPv4Address.is_private` properties | |
| in the :mod:`ipaddress` module. Previously non-private networks | |
| (0.0.0.0/0) would return True from this method; now they correctly return | |
| False. | |
| - gh-issue-96827: Avoid spurious tracebacks from :mod:`asyncio` when default | |
| executor cleanup is delayed until after the event loop is closed (e.g. as | |
| the result of a keyboard interrupt). | |
| - gh-issue-97592: Avoid a crash in the C version of | |
| :meth:`asyncio.Future.remove_done_callback` when an evil argument is | |
| passed. | |
| - gh-issue-97639: Remove ``tokenize.NL`` check from :mod:`tabnanny`. | |
| - gh-issue-73588: Fix generation of the default name of | |
| :class:`tkinter.Checkbutton`. Previously, checkbuttons in different parent | |
| widgets could have the same short name and share the same state if | |
| arguments "name" and "variable" are not specified. Now they are globally | |
| unique. | |
| - gh-issue-97005: Update bundled libexpat to 2.4.9 | |
| - gh-issue-85760: Fix race condition in :mod:`asyncio` where | |
| :meth:`~asyncio.SubprocessProtocol.process_exited` called before the | |
| :meth:`~asyncio.SubprocessProtocol.pipe_data_received` leading to | |
| inconsistent output. Patch by Kumar Aditya. | |
| - gh-issue-96819: Fixed check in :mod:`multiprocessing.resource_tracker` | |
| that guarantees that the length of a write to a pipe is not greater than | |
| ``PIPE_BUF``. | |
| - gh-issue-96741: Corrected type annotation for dataclass attribute | |
| ``pstats.FunctionProfile.ncalls`` to be ``str``. | |
| - gh-issue-95987: Fix ``repr`` of ``Any`` subclasses. | |
| - gh-issue-96388: Work around missing socket functions in | |
| :class:`~socket.socket`'s ``__repr__``. | |
| - gh-issue-96073: In :mod:`inspect`, fix overeager replacement of | |
| "``typing.``" in formatting annotations. | |
| - gh-issue-96192: Fix handling of ``bytes`` :term:`path-like objects | |
| <path-like object>` in :func:`os.ismount()`. | |
| - gh-issue-96052: Fix handling compiler warnings (SyntaxWarning and | |
| DeprecationWarning) in :func:`codeop.compile_command` when checking for | |
| incomplete input. Previously it emitted warnings and raised a SyntaxError. | |
| Now it always returns ``None`` for incomplete input without emitting any | |
| warnings. | |
| - gh-issue-88863: To avoid apparent memory leaks when | |
| :func:`asyncio.open_connection` raises, break reference cycles generated | |
| by local exception and future instances (which has exception instance as | |
| its member var). Patch by Dong Uk, Kang. | |
| - gh-issue-91212: Fixed flickering of the turtle window when the tracer is | |
| turned off. Patch by Shin-myoung-serp. | |
| - gh-issue-88050: Fix :mod:`asyncio` subprocess transport to kill process | |
| cleanly when process is blocked and avoid ``RuntimeError`` when loop is | |
| closed. Patch by Kumar Aditya. | |
| - gh-issue-93858: Prevent error when activating venv in nested fish | |
| instances. | |
| - gh-issue-91078: :meth:`TarFile.next` now returns ``None`` when called on | |
| an empty tarfile. | |
| - bpo-47220: Document the optional *callback* parameter of | |
| :class:`WeakMethod`. Patch by Géry Ogam. | |
| - bpo-46364: Restrict use of sockets instead of pipes for stdin of | |
| subprocesses created by :mod:`asyncio` to AIX platform only. | |
| - bpo-38523: :func:`shutil.copytree` now applies the | |
| *ignore_dangling_symlinks* argument recursively. | |
| - bpo-36267: Fix IndexError in :class:`argparse.ArgumentParser` when a | |
| ``store_true`` action is given an explicit argument. | |
| Documentation | |
| ------------- | |
| - gh-issue-92892: Document that calling variadic functions with ctypes | |
| requires special care on macOS/arm64 (and possibly other platforms). | |
| - gh-issue-85525: Remove extra row | |
| - gh-issue-95588: Clarified the conflicting advice given in the :mod:`ast` | |
| documentation about :func:`ast.literal_eval` being "safe" for use on | |
| untrusted input while at the same time warning that it can crash the | |
| process. The latter statement is true and is deemed unfixable without a | |
| large amount of work unsuitable for a bugfix. So we keep the warning and | |
| no longer claim that ``literal_eval`` is safe. | |
| - bpo-41825: Restructured the documentation for the :func:`os.wait* | |
| <os.wait>` family of functions, and improved the docs for | |
| :func:`os.waitid` with more explanation of the possible argument | |
| constants. | |
| Tests | |
| ----- | |
| - gh-issue-99892: Skip test_normalization() of test_unicodedata if it fails | |
| to download NormalizationTest.txt file from pythontest.net. Patch by | |
| Victor Stinner. | |
| - gh-issue-99934: Correct test_marsh on (32 bit) x86: test_deterministic | |
| sets was failing. | |
| - gh-issue-99659: Optional big memory tests in ``test_sqlite3`` now catch | |
| the correct :exc:`sqlite.DataError` exception type in case of too large | |
| strings and/or blobs passed. | |
| - gh-issue-98713: Fix a bug in the :mod:`typing` tests where a test relying | |
| on CPython-specific implementation details was not decorated with | |
| ``@cpython_only`` and was not skipped on other implementations. | |
| - gh-issue-87390: Add tests for star-unpacking with PEP 646, and some other | |
| miscellaneous PEP 646 tests. | |
| - gh-issue-96853: Added explicit coverage of ``Py_Initialize`` (and hence | |
| ``Py_InitializeEx``) back to the embedding tests (all other embedding | |
| tests migrated to ``Py_InitializeFromConfig`` in Python 3.11) | |
| - bpo-34272: Some C API tests were moved into the new Lib/test/test_capi/ | |
| directory. | |
| Build | |
| ----- | |
| - gh-issue-99086: Fix ``-Wimplicit-int``, ``-Wstrict-prototypes``, and | |
| ``-Wimplicit-function-declaration`` compiler warnings in | |
| :program:`configure` checks. | |
| - gh-issue-99337: Fix a compilation issue with GCC 12 on macOS. | |
| - gh-issue-99086: Fix ``-Wimplicit-int`` compiler warning in | |
| :program:`configure` check for ``PTHREAD_SCOPE_SYSTEM``. | |
| - gh-issue-98872: Fix a possible fd leak in ``Programs/_freeze_module.c`` | |
| introduced in Python 3.11. | |
| - gh-issue-99016: Fix build with ``PYTHON_FOR_REGEN=python3.8``. | |
| - gh-issue-97731: Specify the full path to the source location for ``make | |
| docclean`` (needed for cross-builds). | |
| - gh-issue-98707: Don't use vendored ``libmpdec`` headers if | |
| :option:`--with-system-libmpdec` is passed to :program:`configure`. Don't | |
| use vendored ``libexpat`` headers if :option:`--with-system-expat` is | |
| passed to :program:`!configure`. | |
| - gh-issue-96761: Fix the build process of clang compiler for | |
| :program:`_bootstrap_python` if LTO optimization is applied. Patch by | |
| Matthias Görgens and Dong-hee Na. | |
| - gh-issue-96883: ``wasm32-emscripten`` builds for browsers now include | |
| :mod:`concurrent.futures` for :mod:`asyncio` and :mod:`unittest.mock`. | |
| - gh-issue-84461: ``wasm32-emscripten`` platform no longer builds | |
| :mod:`resource` module, :func:`~os.getresuid`, :func:`~os.getresgid`, and | |
| their setters. The APIs are stubs and not functional. | |
| - gh-issue-94280: Updated pegen regeneration script on Windows to find and | |
| use Python 3.9 or higher. Prior to this, pegen regeneration already | |
| required 3.9 or higher, but the script may have used lower versions of | |
| Python. | |
| Windows | |
| ------- | |
| - gh-issue-99345: Use faster initialization functions to detect install | |
| location for Windows Store package | |
| - gh-issue-98629: Fix initialization of :data:`sys.version` and ``sys._git`` | |
| on Windows | |
| - gh-issue-99442: Fix handling in :ref:`launcher` when ``argv[0]`` does not | |
| include a file extension. | |
| - gh-issue-98689: Update Windows builds to zlib v1.2.13. v1.2.12 has | |
| CVE-2022-37434, but the vulnerable ``inflateGetHeader`` API is not used by | |
| Python. | |
| - gh-issue-98790: Assumes that a missing ``DLLs`` directory means that | |
| standard extension modules are in the executable's directory. | |
| - gh-issue-98745: Update :file:`py.exe` launcher to install 3.11 by default | |
| and 3.12 on request. | |
| - gh-issue-98692: Fix the :ref:`launcher` ignoring unrecognized shebang | |
| lines instead of treating them as local paths | |
| - gh-issue-94328: Update Windows installer to use SQLite 3.39.4. | |
| - gh-issue-97728: Fix possible crashes caused by the use of uninitialized | |
| variables when pass invalid arguments in :func:`os.system` on Windows and | |
| in Windows-specific modules (like ``winreg``). | |
| - gh-issue-96965: Update libffi to 3.4.3 | |
| - gh-issue-94781: Fix :file:`pcbuild.proj` to clean previous instances of | |
| ouput files in ``Python\deepfreeze`` and ``Python\frozen_modules`` | |
| directories on Windows. Patch by Charlie Zhao. | |
| - bpo-40882: Fix a memory leak in | |
| :class:`multiprocessing.shared_memory.SharedMemory` on Windows. | |
| macOS | |
| ----- | |
| - gh-issue-87235: On macOS ``python3 /dev/fd/9 9</path/to/script.py`` failed | |
| for any script longer than a couple of bytes. | |
| - gh-issue-98940: Fix ``Mac/Extras.install.py`` file filter bug. | |
| - gh-issue-94328: Update macOS installer to SQLite 3.39.4. | |
| IDLE | |
| ---- | |
| - gh-issue-97527: Fix a bug in the previous bugfix that caused IDLE to not | |
| start when run with 3.10.8, 3.12.0a1, and at least Microsoft Python | |
| 3.10.2288.0 installed without the Lib/test package. 3.11.0 was never | |
| affected. | |
| Tools/Demos | |
| ----------- | |
| - gh-issue-95853: The ``wasm_build.py`` script now pre-builds Emscripten | |
| ports, checks for broken EMSDK versions, and warns about pkg-config env | |
| vars. | |
| - gh-issue-95853: The new tool ``Tools/wasm/wasm_builder.py`` automates | |
| configure, compile, and test steps for building CPython on WebAssembly | |
| platforms. | |
| - gh-issue-95731: Fix handling of module docstrings in | |
| :file:`Tools/i18n/pygettext.py`. | |
| C API | |
| ----- | |
| - gh-issue-98680: ``PyBUF_*`` constants were marked as part of Limited API | |
| of Python 3.11+. These were available in 3.11.0 with | |
| :c:macro:`Py_LIMITED_API` defined for 3.11, and are necessary to use the | |
| buffer API. | |
| - gh-issue-98978: Fix use-after-free in ``Py_SetPythonHome(NULL)``, | |
| ``Py_SetProgramName(NULL)`` and ``_Py_SetProgramFullPath(NULL)`` function | |
| calls. Issue reported by Benedikt Reinartz. Patch by Victor Stinner. | |
| - gh-issue-96853: ``Py_InitializeEx`` now correctly calls ``PyConfig_Clear`` | |
| after initializing the interpreter (the omission didn't cause a memory | |
| leak only because none of the dynamically allocated config fields are | |
| populated by the wrapper function) | |
| What's New in Python 3.11.0 final? | |
| ================================== | |
| *Release date: 2022-10-24* | |
| Security | |
| -------- | |
| - gh-issue-97616: Fix multiplying a list by an integer (``list *= int``): | |
| detect the integer overflow when the new allocated length is close to the | |
| maximum size. Issue reported by Jordan Limor. Patch by Victor Stinner. | |
| - gh-issue-97514: On Linux the :mod:`multiprocessing` module returns to | |
| using filesystem backed unix domain sockets for communication with the | |
| *forkserver* process instead of the Linux abstract socket namespace. Only | |
| code that chooses to use the :ref:`"forkserver" start method | |
| <multiprocessing-start-methods>` is affected. | |
| Abstract sockets have no permissions and could allow any user on the | |
| system in the same `network namespace | |
| <https://man7.org/linux/man-pages/man7/network_namespaces.7.html>`_ (often | |
| the whole system) to inject code into the multiprocessing *forkserver* | |
| process. This was a potential privilege escalation. Filesystem based | |
| socket permissions restrict this to the *forkserver* process user as was | |
| the default in Python 3.8 and earlier. | |
| This prevents Linux `CVE-2022-42919 | |
| <https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-42919>`_. | |
| Core and Builtins | |
| ----------------- | |
| - gh-issue-97002: Fix an issue where several frame objects could be backed | |
| by the same interpreter frame, possibly leading to corrupted memory and | |
| hard crashes of the interpreter. | |
| - gh-issue-97752: Fix possible data corruption or crashes when accessing the | |
| ``f_back`` member of newly-created generator or coroutine frames. | |
| - gh-issue-96975: Fix a crash occurring when :c:func:`PyEval_GetFrame` is | |
| called while the topmost Python frame is in a partially-initialized state. | |
| - gh-issue-96848: Fix command line parsing: reject :option:`-X | |
| int_max_str_digits <-X>` option with no value (invalid) when the | |
| :envvar:`PYTHONINTMAXSTRDIGITS` environment variable is set to a valid | |
| limit. Patch by Victor Stinner. | |
| - gh-issue-96821: Fix undefined behaviour in ``_testcapimodule.c``. | |
| - gh-issue-95778: When :exc:`ValueError` is raised if an integer is larger | |
| than the limit, mention the :func:`sys.set_int_max_str_digits` function in | |
| the error message. Patch by Victor Stinner. | |
| - gh-issue-96587: Correctly raise ``SyntaxError`` on exception groups | |
| (:pep:`654`) on python versions prior to 3.11 | |
| - bpo-42316: Document some places where an assignment expression needs | |
| parentheses. | |
| Library | |
| ------- | |
| - gh-issue-98331: Update the bundled copies of pip and setuptools to | |
| versions 22.3 and 65.5.0 respectively. | |
| - gh-issue-90985: Earlier in 3.11 we deprecated | |
| ``asyncio.Task.cancel("message")``. We realized we were too harsh, and | |
| have undeprecated it. | |
| - gh-issue-97545: Make Semaphore run faster. | |
| - gh-issue-96865: fix Flag to use boundary CONFORM | |
| This restores previous Flag behavior of allowing flags with non-sequential | |
| values to be combined; e.g. | |
| class Skip(Flag): TWO = 2 EIGHT = 8 | |
| Skip.TWO | Skip.EIGHT -> <Skip.TWO|EIGHT: 10> | |
| - gh-issue-90155: Fix broken :class:`asyncio.Semaphore` when acquire is | |
| cancelled. | |
| Documentation | |
| ------------- | |
| - gh-issue-97741: Fix ``!`` in c domain ref target syntax via a ``conf.py`` | |
| patch, so it works as intended to disable ref target resolution. | |
| - gh-issue-93031: Update tutorial introduction output to use 3.10+ | |
| SyntaxError invalid range. | |
| Tests | |
| ----- | |
| - gh-issue-95027: On Windows, when the Python test suite is run with the | |
| ``-jN`` option, the ANSI code page is now used as the encoding for the | |
| stdout temporary file, rather than using UTF-8 which can lead to decoding | |
| errors. Patch by Victor Stinner. | |
| Build | |
| ----- | |
| - gh-issue-96729: Ensure that Windows releases built with | |
| ``Tools\msi\buildrelease.bat`` are upgradable to and from official Python | |
| releases. | |
| Windows | |
| ------- | |
| - gh-issue-98360: Fixes :mod:`multiprocessing` spawning child processes on | |
| Windows from a virtual environment to ensure that child processes that | |
| also use :mod:`multiprocessing` to spawn more children will recognize that | |
| they are in a virtual environment. | |
| - gh-issue-98414: Fix :file:`py.exe` launcher handling of ``-V:<company>/`` | |
| option when default preferences have been set in environment variables or | |
| configuration files. | |
| - gh-issue-90989: Clarify some text in the Windows installer. | |
| macOS | |
| ----- | |
| - gh-issue-97897: The macOS 13 SDK includes support for the ``mkfifoat`` and | |
| ``mknodat`` system calls. Using the ``dir_fd`` option with either | |
| :func:`os.mkfifo` or :func:`os.mknod` could result in a segfault if | |
| cpython is built with the macOS 13 SDK but run on an earlier version of | |
| macOS. Prevent this by adding runtime support for detection of these | |
| system calls ("weaklinking") as is done for other newer syscalls on macOS. | |
| What's New in Python 3.11.0 release candidate 2? | |
| ================================================ | |
| *Release date: 2022-09-11* | |
| Security | |
| -------- | |
| - gh-issue-95778: Converting between :class:`int` and :class:`str` in bases | |
| other than 2 (binary), 4, 8 (octal), 16 (hexadecimal), or 32 such as base | |
| 10 (decimal) now raises a :exc:`ValueError` if the number of digits in | |
| string form is above a limit to avoid potential denial of service attacks | |
| due to the algorithmic complexity. This is a mitigation for | |
| `CVE-2020-10735 | |
| <https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2020-10735>`_. | |
| This new limit can be configured or disabled by environment variable, | |
| command line flag, or :mod:`sys` APIs. See the :ref:`integer string | |
| conversion length limitation <int_max_str_digits>` documentation. The | |
| default limit is 4300 digits in string form. | |
| Patch by Gregory P. Smith [Google] and Christian Heimes [Red Hat] with | |
| feedback from Victor Stinner, Thomas Wouters, Steve Dower, Ned Deily, and | |
| Mark Dickinson. | |
| Core and Builtins | |
| ----------------- | |
| - gh-issue-96678: Fix case of undefined behavior in ceval.c | |
| - gh-issue-96641: Do not expose ``KeyWrapper`` in :mod:`_functools`. | |
| - gh-issue-96636: Ensure that tracing, ``sys.setrace()``, is turned on | |
| immediately. In pre-release versions of 3.11, some tracing events might | |
| have been lost when turning on tracing in a ``__del__`` method or | |
| interrupt. | |
| - gh-issue-96572: Fix use after free in trace refs build mode. Patch by | |
| Kumar Aditya. | |
| - gh-issue-96611: When loading a file with invalid UTF-8 inside a multi-line | |
| string, a correct SyntaxError is emitted. | |
| - gh-issue-96612: Make sure that incomplete frames do not show up in | |
| tracemalloc traces. | |
| - gh-issue-96569: Remove two cases of undefined behavior, by adding NULL | |
| checks. | |
| - gh-issue-96582: Fix possible ``NULL`` pointer dereference in | |
| ``_PyThread_CurrentFrames``. Patch by Kumar Aditya. | |
| - gh-issue-96352: Fix :exc:`AttributeError` missing ``name`` and ``obj`` | |
| attributes in :meth:`object.__getattribute__`. Patch by Philip Georgi. | |
| - gh-issue-96268: Loading a file with invalid UTF-8 will now report the | |
| broken character at the correct location. | |
| - gh-issue-96187: Fixed a bug that caused ``_PyCode_GetExtra`` to return | |
| garbage for negative indexes. Patch by Pablo Galindo | |
| - gh-issue-96071: Fix a deadlock in :c:func:`PyGILState_Ensure` when | |
| allocating new thread state. Patch by Kumar Aditya. | |
| - gh-issue-96046: :c:func:`PyType_Ready` now initializes ``ht_cached_keys`` | |
| and performs additional checks to ensure that type objects are properly | |
| configured. This avoids crashes in 3rd party packages that don't use | |
| regular API to create new types. | |
| - gh-issue-95818: Skip over incomplete frames in | |
| :c:func:`PyThreadState_GetFrame`. | |
| - gh-issue-95876: Fix format string in | |
| ``_PyPegen_raise_error_known_location`` that can lead to memory corruption | |
| on some 64bit systems. The function was building a tuple with ``i`` (int) | |
| instead of ``n`` (Py_ssize_t) for Py_ssize_t arguments. | |
| - gh-issue-95605: Fix misleading contents of error message when converting | |
| an all-whitespace string to :class:`float`. | |
| - gh-issue-94996: :func:`ast.parse` will no longer parse function | |
| definitions with positional-only params when passed ``feature_version`` | |
| less than ``(3, 8)``. Patch by Shantanu Jain. | |
| Library | |
| ------- | |
| - gh-issue-96700: Fix incorrect error message in the :mod:`io` module. | |
| - gh-issue-96652: Fix the faulthandler implementation of | |
| ``faulthandler.register(signal, chain=True)`` if the ``sigaction()`` | |
| function is not available: don't call the previous signal handler if it's | |
| NULL. Patch by Victor Stinner. | |
| - gh-issue-68163: Correct conversion of :class:`numbers.Rational`'s to | |
| :class:`float`. | |
| - gh-issue-96385: Fix ``TypeVarTuple.__typing_prepare_subst__``. | |
| ``TypeError`` was not raised when using more than one ``TypeVarTuple``, | |
| like ``[*T, *V]`` in type alias substitutions. | |
| - gh-issue-90467: Fix :class:`asyncio.streams.StreamReaderProtocol` to keep | |
| a strong reference to the created task, so that it's not garbage collected | |
| - gh-issue-96159: Fix a performance regression in logging | |
| TimedRotatingFileHandler. Only check for special files when the rollover | |
| time has passed. | |
| - gh-issue-96175: Fix unused ``localName`` parameter in the ``Attr`` class | |
| in :mod:`xml.dom.minidom`. | |
| - gh-issue-96125: Fix incorrect condition that causes | |
| ``sys.thread_info.name`` to be wrong on pthread platforms. | |
| - gh-issue-95463: Remove an incompatible change from :issue:`28080` that | |
| caused a regression that ignored the utf8 in ``ZipInfo.flag_bits``. Patch | |
| by Pablo Galindo. | |
| - gh-issue-95899: Fix :class:`asyncio.Runner` to call | |
| :func:`asyncio.set_event_loop` only once to avoid calling | |
| :meth:`~asyncio.AbstractChildWatcher.attach_loop` multiple times on child | |
| watchers. Patch by Kumar Aditya. | |
| - gh-issue-95736: Fix :class:`unittest.IsolatedAsyncioTestCase` to set event | |
| loop before calling setup functions. Patch by Kumar Aditya. | |
| - gh-issue-95704: When a task catches :exc:`asyncio.CancelledError` and | |
| raises some other error, the other error should generally not silently be | |
| suppressed. | |
| - gh-issue-95231: Fail gracefully if :data:`~errno.EPERM` or | |
| :data:`~errno.ENOSYS` is raised when loading :mod:`crypt` methods. This | |
| may happen when trying to load ``MD5`` on a Linux kernel with :abbr:`FIPS | |
| (Federal Information Processing Standard)` enabled. | |
| - gh-issue-74116: Allow :meth:`asyncio.StreamWriter.drain` to be awaited | |
| concurrently by multiple tasks. Patch by Kumar Aditya. | |
| - gh-issue-92986: Fix :func:`ast.unparse` when ``ImportFrom.level`` is None | |
| Documentation | |
| ------------- | |
| - gh-issue-96098: Improve discoverability of the higher level | |
| concurrent.futures module by providing clearer links from the lower level | |
| threading and multiprocessing modules. | |
| - gh-issue-95957: What's New 3.11 now has instructions for how to provide | |
| compiler and linker flags for Tcl/Tk and OpenSSL on RHEL 7 and CentOS 7. | |
| Tests | |
| ----- | |
| - gh-issue-95243: Mitigate the inherent race condition from using | |
| find_unused_port() in testSockName() by trying to find an unused port a | |
| few times before failing. Patch by Ross Burton. | |
| Build | |
| ----- | |
| - gh-issue-94682: Build and test with OpenSSL 1.1.1q | |
| Windows | |
| ------- | |
| - gh-issue-96577: Fixes a potential buffer overrun in :mod:`msilib`. | |
| - gh-issue-96559: Fixes the Windows launcher not using the compatible | |
| interpretation of default tags found in configuration files when no tag | |
| was passed to the command. | |
| What's New in Python 3.11.0 release candidate 1? | |
| ================================================ | |
| *Release date: 2022-08-05* | |
| Core and Builtins | |
| ----------------- | |
| - gh-issue-95150: Update code object hashing and equality to consider all | |
| debugging and exception handling tables. This fixes an issue where certain | |
| non-identical code objects could be "deduplicated" during compilation. | |
| - gh-issue-95355: ``_PyPegen_Parser_New`` now properly detects token memory | |
| allocation errors. Patch by Honglin Zhu. | |
| - gh-issue-90081: Run Python code in tracer/profiler function at full speed. | |
| Fixes slowdown in earlier versions of 3.11. | |
| - gh-issue-95324: Emit a warning in debug mode if an object does not call | |
| :c:func:`PyObject_GC_UnTrack` before deallocation. Patch by Pablo Galindo. | |
| - gh-issue-95185: Prevented crashes in the AST constructor when compiling | |
| some absurdly long expressions like ``"+0"*1000000``. | |
| :exc:`RecursionError` is now raised instead. Patch by Pablo Galindo | |
| - gh-issue-93351: :class:`ast.AST` node positions are now validated when | |
| provided to :func:`compile` and other related functions. If invalid | |
| positions are detected, a :exc:`ValueError` will be raised. | |
| - gh-issue-94938: Fix error detection in some builtin functions when keyword | |
| argument name is an instance of a str subclass with overloaded ``__eq__`` | |
| and ``__hash__``. Previously it could cause SystemError or other undesired | |
| behavior. | |
| Library | |
| ------- | |
| - gh-issue-95609: Update bundled pip to 22.2.2. | |
| - gh-issue-95289: Fix :class:`asyncio.TaskGroup` to propagate exception when | |
| :exc:`asyncio.CancelledError` was replaced with another exception by a | |
| context manger. Patch by Kumar Aditya and Guido van Rossum. | |
| - gh-issue-95339: Update bundled pip to 22.2.1. | |
| - gh-issue-95045: Fix GC crash when deallocating ``_lsprof.Profiler`` by | |
| untracking it before calling any callbacks. Patch by Kumar Aditya. | |
| - gh-issue-95097: Fix :func:`asyncio.run` for :class:`asyncio.Task` | |
| implementations without :meth:`~asyncio.Task.uncancel` method. Patch by | |
| Kumar Aditya. | |
| - gh-issue-93899: Fix check for existence of :data:`os.EFD_CLOEXEC`, | |
| :data:`os.EFD_NONBLOCK` and :data:`os.EFD_SEMAPHORE` flags on older kernel | |
| versions where these flags are not present. Patch by Kumar Aditya. | |
| - gh-issue-95166: Fix :meth:`concurrent.futures.Executor.map` to cancel the | |
| currently waiting on future on an error - e.g. TimeoutError or | |
| KeyboardInterrupt. | |
| - gh-issue-95109: Ensure that timeouts scheduled with | |
| :class:`asyncio.Timeout` that have already expired are delivered promptly. | |
| - gh-issue-91810: Suppress writing an XML declaration in open files in | |
| ``ElementTree.write()`` with ``encoding='unicode'`` and | |
| ``xml_declaration=None``. | |
| - gh-issue-91447: Fix findtext in the xml module to only give an empty | |
| string when the text attribute is set to None. | |
| Documentation | |
| ------------- | |
| - gh-issue-91207: Fix stylesheet not working in Windows CHM htmlhelp docs | |
| and add warning that they are deprecated. Contributed by C.A.M. Gerlach. | |
| - gh-issue-95451: Update library documentation with :ref:`availability | |
| information <wasm-availability>` on WebAssembly platforms | |
| ``wasm32-emscripten`` and ``wasm32-wasi``. | |
| - gh-issue-95415: Use consistent syntax for platform availability. The | |
| directive now supports a content body and emits a warning when it | |
| encounters an unknown platform. | |
| - gh-issue-86128: Document a limitation in ThreadPoolExecutor where its exit | |
| handler is executed before any handlers in atexit. | |
| Tests | |
| ----- | |
| - gh-issue-95573: :source:`Lib/test/test_asyncio/test_ssl.py` exposed a bug | |
| in the macOS kernel where intense concurrent load on non-blocking sockets | |
| occasionally causes :const:`errno.ENOBUFS` ("No buffer space available") | |
| to be emitted. FB11063974 filed with Apple, in the mean time as a | |
| workaround buffer size used in tests on macOS is decreased to avoid | |
| intermittent failures. Patch by Fantix King. | |
| - gh-issue-95280: Fix problem with ``test_ssl`` ``test_get_ciphers`` on | |
| systems that require perfect forward secrecy (PFS) ciphers. | |
| - gh-issue-94675: Add a regression test for :mod:`re` exponentional slowdown | |
| when using rjsmin. | |
| Build | |
| ----- | |
| - gh-issue-94801: Fix a regression in ``configure`` script that caused some | |
| header checks to ignore custom ``CPPFLAGS``. The regression was introduced | |
| in :gh:`94802`. | |
| - gh-issue-95145: wasm32-wasi builds no longer depend on WASIX's pthread | |
| stubs. Python now has its own stubbed pthread API. | |
| - gh-issue-95174: Python now detects missing ``dup`` function in WASI and | |
| works around some missing :mod:`errno`, :mod:`select`, and :mod:`socket` | |
| constants. | |
| - gh-issue-95174: Python now skips missing :mod:`socket` functions and | |
| methods on WASI. WASI can only create sockets from existing fd / accept | |
| and has no netdb. | |
| - gh-issue-95085: Platforms ``wasm32-unknown-emscripten`` and | |
| ``wasm32-unknown-wasi`` have been promoted to :pep:`11` tier 3 platform | |
| support. | |
| Windows | |
| ------- | |
| - gh-issue-95656: Enable the | |
| :meth:`~sqlite3.Connection.enable_load_extension` :mod:`sqlite3` API. | |
| - gh-issue-95587: Fixes some issues where the Windows installer would | |
| incorrectly detect certain features of an existing install when upgrading. | |
| - gh-issue-94399: Restores the behaviour of :ref:`launcher` for | |
| ``/usr/bin/env`` shebang lines, which will now search :envvar:`PATH` for | |
| an executable matching the given command. If none is found, the usual | |
| search process is used. | |
| - gh-issue-95445: Fixes the unsuccessful removal of the HTML document | |
| directory when uninstalling with Windows msi. | |
| - gh-issue-95359: Fix :ref:`launcher` handling of :file:`py.ini` commands | |
| (it was incorrectly expecting a ``py_`` prefix on keys) and crashes when | |
| reading per-user configuration file. | |
| - gh-issue-95285: Fix :ref:`launcher` handling of command lines where it is | |
| only passed a short executable name. | |
| IDLE | |
| ---- | |
| - gh-issue-65802: Document handling of extensions in Save As dialogs. | |
| - gh-issue-95191: Include prompts when saving Shell (interactive input and | |
| output). | |
| - gh-issue-95511: Fix the Shell context menu copy-with-prompts bug of | |
| copying an extra line when one selects whole lines. | |
| - gh-issue-95471: In the Edit menu, move ``Select All`` and add a new | |
| separator. | |
| - gh-issue-95411: Enable using IDLE's module browser with .pyw files. | |
| - gh-issue-89610: Add .pyi as a recognized extension for IDLE on macOS. | |
| This allows opening stub files by double clicking on them in the Finder. | |
| C API | |
| ----- | |
| - gh-issue-92678: Restore the 3.10 behavior for multiple inheritance of C | |
| extension classes that store their dictionary at the end of the struct. | |
| - gh-issue-94936: Added :c:func:`PyCode_GetVarnames`, | |
| :c:func:`PyCode_GetCellvars` and :c:func:`PyCode_GetFreevars` for | |
| accessing ``co_varnames``, ``co_cellvars`` and ``co_freevars`` | |
| respectively via the C API. | |
| What's New in Python 3.11.0 beta 5? | |
| =================================== | |
| *Release date: 2022-07-25* | |
| Core and Builtins | |
| ----------------- | |
| - gh-issue-93351: :class:`ast.AST` node positions are now validated when | |
| provided to :func:`compile` and other related functions. If invalid | |
| positions are detected, a :exc:`ValueError` will be raised. | |
| - gh-issue-94438: Fix an issue that caused extended opcode arguments and | |
| some conditional pops to be ignored when calculating valid jump targets | |
| for assignments to the ``f_lineno`` attribute of frame objects. In some | |
| cases, this could cause inconsistent internal state, resulting in a hard | |
| crash of the interpreter. | |
| - gh-issue-95060: Undocumented ``PyCode_Addr2Location`` function now | |
| properly returns when ``addrq`` argument is less than zero. | |
| - gh-issue-95113: Replace all ``EXTENDED_ARG_QUICK`` instructions with basic | |
| :opcode:`EXTENDED_ARG` instructions in unquickened code. Consumers of | |
| non-adaptive bytecode should be able to handle extended arguments the same | |
| way they were handled in CPython 3.10 and older. | |
| - gh-issue-91409: Fix incorrect source location info caused by certain | |
| optimizations in the bytecode compiler. | |
| - gh-issue-94036: Fix incorrect source location info for some multi-line | |
| attribute accesses and method calls. | |
| - gh-issue-94739: Allow jumping within, out of, and across exception | |
| handlers in the debugger. | |
| - gh-issue-94949: :func:`ast.parse` will no longer parse parenthesized | |
| context managers when passed ``feature_version`` less than ``(3, 9)``. | |
| Patch by Shantanu Jain. | |
| - gh-issue-94947: :func:`ast.parse` will no longer parse assignment | |
| expressions when passed ``feature_version`` less than ``(3, 8)``. Patch by | |
| Shantanu Jain. | |
| - gh-issue-91256: Ensures the program name is known for help text during | |
| interpreter startup. | |
| - gh-issue-94869: Fix the column offsets for some expressions in multi-line | |
| f-strings :mod:`ast` nodes. Patch by Pablo Galindo. | |
| - gh-issue-94822: Fix an issue where lookups of metaclass descriptors may be | |
| ignored when an identically-named attribute also exists on the class | |
| itself. | |
| - gh-issue-91153: Fix an issue where a :class:`bytearray` item assignment | |
| could crash if it's resized by the new value's :meth:`__index__` method. | |
| - gh-issue-90699: Fix reference counting bug in :meth:`bool.__repr__`. Patch | |
| by Kumar Aditya. | |
| Library | |
| ------- | |
| - gh-issue-95087: Fix IndexError in parsing invalid date in the :mod:`email` | |
| module. | |
| - gh-issue-95199: Upgrade bundled setuptools to 63.2.0. | |
| - gh-issue-95194: Upgrade bundled pip to 22.2. | |
| - gh-issue-95132: Fix a :mod:`sqlite3` regression where ``*args`` and | |
| ``**kwds`` were incorrectly relayed from :py:func:`~sqlite3.connect` to | |
| the :class:`~sqlite3.Connection` factory. The regression was introduced in | |
| 3.11a1 with PR 24421 (:gh:`85128`). Patch by Erlend E. Aasland.` | |
| - gh-issue-93157: Fix :mod:`fileinput` module didn't support ``errors`` | |
| option when ``inplace`` is true. | |
| - gh-issue-95105: :meth:`wsgiref.types.InputStream.__iter__` should return | |
| ``Iterator[bytes]``, not ``Iterable[bytes]``. Patch by Shantanu Jain. | |
| - gh-issue-94857: Fix refleak in ``_io.TextIOWrapper.reconfigure``. Patch by | |
| Kumar Aditya. | |
| - gh-issue-94821: Fix binding of unix socket to empty address on Linux to | |
| use an available address from the abstract namespace, instead of "\0". | |
| - gh-issue-89988: Fix memory leak in :class:`pickle.Pickler` when looking up | |
| :attr:`dispatch_table`. Patch by Kumar Aditya. | |
| - bpo-47025: Drop support for :class:`bytes` on :attr:`sys.path`. | |
| Tests | |
| ----- | |
| - gh-issue-95212: Make multiprocessing test case | |
| ``test_shared_memory_recreate`` parallel-safe. | |
| Build | |
| ----- | |
| - gh-issue-94847: Fixed ``_decimal`` module build issue on GCC when | |
| compiling with LTO and pydebug. Debug builds no longer force inlining of | |
| functions. | |
| - gh-issue-94841: Fix the possible performance regression of | |
| :c:func:`PyObject_Free` compiled with MSVC version 1932. | |
| - gh-issue-94801: ``configure`` now uses custom flags like ``ZLIB_CFLAGS`` | |
| and ``ZLIB_LIBS`` when searching for headers and libraries. | |
| - gh-issue-94773: ``deepfreeze.py`` now supports code object with frozensets | |
| that contain incompatible, unsortable types. | |
| Windows | |
| ------- | |
| - gh-issue-90844: Allow virtual environments to correctly launch when they | |
| have spaces in the path. | |
| - gh-issue-94772: Fix incorrect handling of shebang lines in py.exe launcher | |
| C API | |
| ----- | |
| - gh-issue-92678: Adds unstable C-API functions | |
| ``_PyObject_VisitManagedDict`` and ``_PyObject_ClearManagedDict`` to allow | |
| C extensions to allow the VM to manage their object's dictionaries. | |
| - gh-issue-94930: Fix ``SystemError`` raised when | |
| :c:func:`PyArg_ParseTupleAndKeywords` is used with ``#`` in ``(...)`` but | |
| without ``PY_SSIZE_T_CLEAN`` defined. | |
| - gh-issue-94864: Fix ``PyArg_Parse*`` with deprecated format units "u" and | |
| "Z". It returned 1 (success) when warnings are turned into exceptions. | |
| - gh-issue-94731: Python again uses C-style casts for most casting | |
| operations when compiled with C++. This may trigger compiler warnings, if | |
| they are enabled with e.g. ``-Wold-style-cast `` or | |
| ``-Wzero-as-null-pointer-constant`` options for ``g++``. | |
| What's New in Python 3.11.0 beta 4? | |
| =================================== | |
| *Release date: 2022-07-11* | |
| Security | |
| -------- | |
| - gh-issue-87389: :mod:`http.server`: Fix an open redirection vulnerability | |
| in the HTTP server when an URI path starts with ``//``. Vulnerability | |
| discovered, and initial fix proposed, by Hamza Avvan. | |
| - gh-issue-79096: LWPCookieJar and MozillaCookieJar create files with file | |
| mode 600 instead of 644 (Microsoft Windows is not affected) | |
| - gh-issue-92888: Fix ``memoryview`` use after free when accessing the | |
| backing buffer in certain cases. | |
| - gh-issue-68966: The deprecated mailcap module now refuses to inject unsafe | |
| text (filenames, MIME types, parameters) into shell commands. Instead of | |
| using such text, it will warn and act as if a match was not found (or for | |
| test commands, as if the test failed). | |
| Core and Builtins | |
| ----------------- | |
| - gh-issue-94694: Fix an issue that could cause code with multi-line method | |
| lookups to have misleading or incorrect column offset information. In some | |
| cases (when compiling a hand-built AST) this could have resulted in a hard | |
| crash of the interpreter. | |
| - gh-issue-93252: Fix an issue that caused internal frames to outlive failed | |
| Python function calls, possibly resulting in memory leaks or hard | |
| interpreter crashes. | |
| - gh-issue-94215: Fix an issue where exceptions raised by line-tracing | |
| events would cause frames to be left in an invalid state, possibly | |
| resulting in a hard crash of the interpreter. | |
| - gh-issue-92228: Disable the compiler's inline-small-exit-blocks | |
| optimization for exit blocks that are associated with source code lines. | |
| This fixes a bug where the debugger cannot tell where an exception handler | |
| ends and the following code block begins. | |
| - gh-issue-94485: Line number of a module's ``RESUME`` instruction is set to | |
| 0 as specified in :pep:`626`. | |
| - gh-issue-94438: Account for instructions that can push NULL to the stack | |
| when setting line number in a frame. Prevents some (unlikely) crashes. | |
| - gh-issue-91719: Reload ``opcode`` when raising ``unknown opcode error`` in | |
| the interpreter main loop, for C compilers to generate dispatching code | |
| independently. | |
| - gh-issue-94329: Compile and run code with unpacking of extremely large | |
| sequences (1000s of elements). Such code failed to compile. It now | |
| compiles and runs correctly. | |
| - gh-issue-94360: Fixed a tokenizer crash when reading encoded files with | |
| syntax errors from ``stdin`` with non utf-8 encoded text. Patch by Pablo | |
| Galindo | |
| - gh-issue-88116: Fix an issue when reading line numbers from code objects | |
| if the encoded line numbers are close to ``INT_MIN``. Patch by Pablo | |
| Galindo | |
| - gh-issue-94262: Don't create frame objects for incomplete frames. Prevents | |
| the creation of generators and closures from being observable to Python | |
| and C extensions, restoring the behavior of 3.10 and earlier. | |
| - gh-issue-94192: Fix error for dictionary literals with invalid expression | |
| as value. | |
| - gh-issue-93883: Revise the display strategy of traceback enhanced error | |
| locations. The indicators are only shown when the location doesn't span | |
| the whole line. | |
| - gh-issue-94021: Fix unreachable code warning in ``Python/specialize.c``. | |
| - gh-issue-93516: Store offset of first traceable instruction in code object | |
| to avoid having to recompute it for each instruction when tracing. | |
| - gh-issue-93516: Lazily create a table mapping bytecode offsets to line | |
| numbers to speed up calculation of line numbers when tracing. | |
| - gh-issue-89828: :class:`types.GenericAlias` no longer relays the | |
| ``__class__`` attribute. For example, ``isinstance(list[int], type)`` no | |
| longer returns ``True``. | |
| - gh-issue-93671: Fix some exponential backtrace case happening with deeply | |
| nested sequence patterns in match statements. Patch by Pablo Galindo | |
| - gh-issue-93662: Make sure that the end column offsets are correct in | |
| multi-line method calls. Previously, the end column could precede the | |
| column offset. | |
| - gh-issue-93461: :func:`importlib.invalidate_caches` now drops entries from | |
| :data:`sys.path_importer_cache` with a relative path as name. This solves | |
| a caching issue when a process changes its current working directory. | |
| ``FileFinder`` no longer inserts a dot in the path, e.g. ``/egg/./spam`` | |
| is now ``/egg/spam``. | |
| - gh-issue-93418: Fixed an assert where an f-string has an equal sign '=' | |
| following an expression, but there's no trailing brace. For example, | |
| f"{i=". | |
| - gh-issue-93382: Cache the result of :c:func:`PyCode_GetCode` function to | |
| restore the O(1) lookup of the :attr:`~types.CodeType.co_code` attribute. | |
| - gh-issue-93354: Use exponential backoff for specialization counters in the | |
| interpreter. Can reduce the number of failed specializations significantly | |
| and avoid slowdown for those parts of a program that are not suitable for | |
| specialization. | |
| - gh-issue-93021: Fix the :attr:`__text_signature__` for :meth:`__get__` | |
| methods implemented in C. Patch by Jelle Zijlstra. | |
| - gh-issue-92930: Fixed a crash in ``_pickle.c`` from mutating collections | |
| during ``__reduce__`` or ``persistent_id``. | |
| - gh-issue-92914: Always round the allocated size for lists up to the | |
| nearest even number. | |
| - gh-issue-92858: Improve error message for some suites with syntax error | |
| before ':' | |
| - bpo-46142: Make ``--help`` output shorter by moving some info to the new | |
| ``--help-env`` and ``--help-xoptions`` command-line options. Also add | |
| ``--help-all`` option to print complete usage. | |
| Library | |
| ------- | |
| - gh-issue-94736: Fix crash when deallocating an instance of a subclass of | |
| ``_multiprocessing.SemLock``. Patch by Kumar Aditya. | |
| - gh-issue-94637: :meth:`SSLContext.set_default_verify_paths` now releases | |
| the GIL around ``SSL_CTX_set_default_verify_paths`` call. The function | |
| call performs I/O and CPU intensive work. | |
| - gh-issue-94607: Fix subclassing complex generics with type variables in | |
| :mod:`typing`. Previously an error message saying ``Some type variables | |
| ... are not listed in Generic[...]`` was shown. :mod:`typing` no longer | |
| populates ``__parameters__`` with the ``__parameters__`` of a Python | |
| class. | |
| - gh-issue-93910: The ability to access the other values of an enum on an | |
| enum (e.g. ``Color.RED.BLUE``) has been restored in order to fix a | |
| performance regression. | |
| - gh-issue-93896: Fix :func:`asyncio.run` and | |
| :class:`unittest.IsolatedAsyncioTestCase` to always the set event loop as | |
| it was done in Python 3.10 and earlier. Patch by Kumar Aditya. | |
| - gh-issue-94510: Re-entrant calls to :func:`sys.setprofile` and | |
| :func:`sys.settrace` now raise :exc:`RuntimeError`. Patch by Pablo | |
| Galindo. | |
| - gh-issue-92336: Fix bug where :meth:`linecache.getline` fails on bad files | |
| with :exc:`UnicodeDecodeError` or :exc:`SyntaxError`. It now returns an | |
| empty string as per the documentation. | |
| - gh-issue-94398: Once a :class:`asyncio.TaskGroup` has started shutting | |
| down (i.e., at least one task has failed and the task group has started | |
| cancelling the remaining tasks), it should not be possible to add new | |
| tasks to the task group. | |
| - gh-issue-94254: Fixed types of :mod:`struct` module to be immutable. Patch | |
| by Kumar Aditya. | |
| - gh-issue-94207: Made :class:`_struct.Struct` GC-tracked in order to fix a | |
| reference leak in the :mod:`_struct` module. | |
| - gh-issue-91742: Fix :mod:`pdb` crash after jump caused by a null pointer | |
| dereference. Patch by Kumar Aditya. | |
| - gh-issue-94101: Manual instantiation of :class:`ssl.SSLSession` objects is | |
| no longer allowed as it lead to misconfigured instances that crashed the | |
| interpreter when attributes where accessed on them. | |
| - gh-issue-84753: :func:`inspect.iscoroutinefunction`, | |
| :func:`inspect.isgeneratorfunction`, and | |
| :func:`inspect.isasyncgenfunction` now properly return ``True`` for | |
| duck-typed function-like objects like instances of | |
| :class:`unittest.mock.AsyncMock`. | |
| This makes :func:`inspect.iscoroutinefunction` consistent with the | |
| behavior of :func:`asyncio.iscoroutinefunction`. Patch by Mehdi ABAAKOUK. | |
| - gh-issue-94028: Fix a regression in the :mod:`sqlite3` where statement | |
| objects were not properly cleared and reset after use in cursor iters. The | |
| regression was introduced by PR 27884 in Python 3.11a1. Patch by Erlend E. | |
| Aasland. | |
| - gh-issue-93820: Pickle :class:`enum.Flag` by name. | |
| - gh-issue-93847: Fix repr of enum of generic aliases. | |
| - gh-issue-91404: Revert the :mod:`re` memory leak when a match is | |
| terminated by a signal or memory allocation failure as the implemented fix | |
| caused a major performance regression. | |
| - gh-issue-83499: Fix double closing of file description in :mod:`tempfile`. | |
| - gh-issue-93820: Fixed a regression when :func:`copy.copy`-ing | |
| :class:`enum.Flag` with multiple flag members. | |
| - gh-issue-79512: Fixed names and ``__module__`` value of :mod:`weakref` | |
| classes :class:`~weakref.ReferenceType`, :class:`~weakref.ProxyType`, | |
| :class:`~weakref.CallableProxyType`. It makes them pickleable. | |
| - gh-issue-91389: Fix an issue where :mod:`dis` utilities could report | |
| missing or incorrect position information in the presence of ``CACHE`` | |
| entries. | |
| - gh-issue-93626: Set ``__future__.annotations`` to have a ``None`` | |
| mandatoryRelease to indicate that it is currently 'TBD'. | |
| - gh-issue-90473: Emscripten and WASI have no home directory and cannot | |
| provide :pep:`370` user site directory. | |
| - gh-issue-90494: :func:`copy.copy` and :func:`copy.deepcopy` now always | |
| raise a TypeError if ``__reduce__()`` returns a tuple with length 6 | |
| instead of silently ignore the 6th item or produce incorrect result. | |
| - gh-issue-90549: Fix a multiprocessing bug where a global named resource | |
| (such as a semaphore) could leak when a child process is spawned (as | |
| opposed to forked). | |
| - gh-issue-93521: Fixed a case where dataclasses would try to add | |
| ``__weakref__`` into the ``__slots__`` for a dataclass that specified | |
| ``weakref_slot=True`` when it was already defined in one of its bases. | |
| This resulted in a ``TypeError`` upon the new class being created. | |
| - gh-issue-79579: :mod:`sqlite3` now correctly detects DML queries with | |
| leading comments. Patch by Erlend E. Aasland. | |
| - gh-issue-93421: Update :data:`sqlite3.Cursor.rowcount` when a DML | |
| statement has run to completion. This fixes the row count for SQL queries | |
| like ``UPDATE ... RETURNING``. Patch by Erlend E. Aasland. | |
| - gh-issue-91162: Support splitting of unpacked arbitrary-length tuple over | |
| ``TypeVar`` and ``TypeVarTuple`` parameters. For example: | |
| * ``A[T, *Ts][*tuple[int, ...]]`` -> ``A[int, *tuple[int, ...]]`` | |
| * ``A[*Ts, T][*tuple[int, ...]]`` -> ``A[*tuple[int, ...], int]`` | |
| - gh-issue-93353: Fix the :func:`importlib.resources.as_file` context | |
| manager to remove the temporary file if destroyed late during Python | |
| finalization: keep a local reference to the :func:`os.remove` function. | |
| Patch by Victor Stinner. | |
| - gh-issue-83658: Make :class:`multiprocessing.Pool` raise an exception if | |
| ``maxtasksperchild`` is not ``None`` or a positive int. | |
| - gh-issue-93156: Accessing the :attr:`pathlib.PurePath.parents` sequence of | |
| an absolute path using negative index values produced incorrect results. | |
| - gh-issue-74696: :func:`shutil.make_archive` no longer temporarily changes | |
| the current working directory during creation of standard ``.zip`` or tar | |
| archives. | |
| - gh-issue-89973: Fix :exc:`re.error` raised in :mod:`fnmatch` if the | |
| pattern contains a character range with upper bound lower than lower bound | |
| (e.g. ``[c-a]``). Now such ranges are interpreted as empty ranges. | |
| - gh-issue-92932: Now :func:`~dis.dis` and :func:`~dis.get_instructions` | |
| handle operand values for instructions prefixed by ``EXTENDED_ARG_QUICK``. | |
| Patch by Sam Gross and Dong-hee Na. | |
| - gh-issue-91577: Move imports in :class:`~multiprocessing.SharedMemory` | |
| methods to module level so that they can be executed late in python | |
| finalization. | |
| - gh-issue-91456: Deprecate current default auto() behavior: In 3.13 the | |
| default will be for for auto() to always return the largest member value | |
| incremented by 1, and to raise if incompatible value types are used. | |
| - bpo-47231: Fixed an issue with inconsistent trailing slashes in tarfile | |
| longname directories. | |
| - bpo-46755: In :class:`QueueHandler`, clear ``stack_info`` from | |
| :class:`LogRecord` to prevent stack trace from being written twice. | |
| - bpo-46197: Fix :mod:`ensurepip` environment isolation for subprocess | |
| running ``pip``. | |
| - bpo-45924: Fix :mod:`asyncio` incorrect traceback when future's exception | |
| is raised multiple times. Patch by Kumar Aditya. | |
| - bpo-34828: :meth:`sqlite3.Connection.iterdump` now handles databases that | |
| use ``AUTOINCREMENT`` in one or more tables. | |
| Documentation | |
| ------------- | |
| - gh-issue-94321: Document the :pep:`246` style protocol type | |
| :class:`sqlite3.PrepareProtocol`. | |
| - gh-issue-61162: Clarify :mod:`sqlite3` behavior when | |
| :ref:`sqlite3-connection-context-manager`. | |
| - gh-issue-87260: Align :mod:`sqlite3` argument specs with the actual | |
| implementation. | |
| - gh-issue-86986: The minimum Sphinx version required to build the | |
| documentation is now 3.2. | |
| - gh-issue-88831: Augmented documentation of asyncio.create_task(). | |
| Clarified the need to keep strong references to tasks and added a code | |
| snippet detailing how to to this. | |
| - bpo-47161: Document that :class:`pathlib.PurePath` does not collapse | |
| initial double slashes because they denote UNC paths. | |
| Tests | |
| ----- | |
| - gh-issue-91330: Added more tests for :mod:`dataclasses` to cover behavior | |
| with data descriptor-based fields. | |
| - gh-issue-94208: ``test_ssl`` is now checking for supported TLS version and | |
| protocols in more tests. | |
| - gh-issue-94315: Tests now check for DAC override capability instead of | |
| relying on :func:`os.geteuid`. | |
| - gh-issue-93951: In test_bdb.StateTestCase.test_skip, avoid including | |
| auxiliary importers. | |
| - gh-issue-93957: Provide nicer error reporting from subprocesses in | |
| test_venv.EnsurePipTest.test_with_pip. | |
| - gh-issue-84461: ``run_tests.py`` now handles cross compiling env vars | |
| correctly and pass ``HOSTRUNNER`` to regression tests. | |
| - gh-issue-93616: ``test_modulefinder`` now creates a temporary directory in | |
| ``ModuleFinderTest.setUp()`` instead of module scope. | |
| - gh-issue-93575: Fix issue with test_unicode test_raiseMemError. The test | |
| case now use ``test.support.calcobjsize`` to calculate size of PyUnicode | |
| structs. :func:`sys.getsizeof` may return different size when string has | |
| UTF-8 memory. | |
| - gh-issue-90473: WASI does not have a ``chmod(2)`` syscall. | |
| :func:`os.chmod` is now a dummy function on WASI. Skip all tests that | |
| depend on working :func:`os.chmod`. | |
| - gh-issue-90473: Skip tests on WASI that require symlinks with absolute | |
| paths. | |
| - gh-issue-57539: Increase calendar test coverage for | |
| :meth:`calendar.LocaleTextCalendar.formatweekday`. | |
| - gh-issue-90473: Skip symlink tests on WASI. wasmtime uses ``openat2(2)`` | |
| with ``RESOLVE_BENEATH`` flag, which prevents symlinks with absolute | |
| paths. | |
| - gh-issue-89858: Fix ``test_embed`` for out-of-tree builds. Patch by Kumar | |
| Aditya. | |
| - gh-issue-92886: Fixing tests that fail when running with optimizations | |
| (``-O``) in ``test_imaplib.py``. | |
| - gh-issue-92886: Fixing tests that fail when running with optimizations | |
| (``-O``) in ``test_zipimport.py`` | |
| - bpo-47016: Create a GitHub Actions workflow for verifying bundled pip and | |
| setuptools. Patch by Illia Volochii and Adam Turner. | |
| Build | |
| ----- | |
| - gh-issue-94404: ``makesetup`` now works around an issue with sed on macOS | |
| and uses correct CFLAGS for object files that end up in a shared | |
| extension. Module CFLAGS are used before PY_STDMODULE_CFLAGS to avoid | |
| clashes with system headers. | |
| - gh-issue-93584: Address race condition in ``Makefile`` when installing a | |
| PGO build. All ``test`` and ``install`` targets now depend on ``all`` | |
| target. | |
| - gh-issue-93491: ``configure`` now detects and reports :pep:`11` support | |
| tiers. | |
| Windows | |
| ------- | |
| - gh-issue-93824: Drag and drop of files onto Python files in Windows | |
| Explorer has been enabled for Windows ARM64. | |
| - bpo-42658: Support native Windows case-insensitive path comparisons by | |
| using ``LCMapStringEx`` instead of :func:`str.lower` in | |
| :func:`ntpath.normcase`. Add ``LCMapStringEx`` to the :mod:`_winapi` | |
| module. | |
| Tools/Demos | |
| ----------- | |
| - gh-issue-94538: Fix Argument Clinic output to custom file destinations. | |
| Patch by Erlend E. Aasland. | |
| - gh-issue-94430: Allow parameters named ``module`` and ``self`` with custom | |
| C names in Argument Clinic. Patch by Erlend E. Aasland | |
| C API | |
| ----- | |
| - gh-issue-93937: The following frame functions and type are now directly | |
| available with ``#include <Python.h>``, it's no longer needed to add | |
| ``#include <frameobject.h>``: | |
| * :c:func:`PyFrame_Check` | |
| * :c:func:`PyFrame_GetBack` | |
| * :c:func:`PyFrame_GetBuiltins` | |
| * :c:func:`PyFrame_GetGenerator` | |
| * :c:func:`PyFrame_GetGlobals` | |
| * :c:func:`PyFrame_GetLasti` | |
| * :c:func:`PyFrame_GetLocals` | |
| * :c:type:`PyFrame_Type` | |
| Patch by Victor Stinner. | |
| - gh-issue-91321: Fix the compatibility of the Python C API with C++ older | |
| than C++11. Patch by Victor Stinner. | |
| - gh-issue-91731: Avoid defining the ``static_assert`` when compiling with | |
| C++ 11, where this is a keyword and redefining it can lead to undefined | |
| behavior. Patch by Pablo Galindo | |
| - gh-issue-93442: Add C++ overloads for _Py_CAST_impl() to handle 0/NULL. | |
| This will allow C++ extensions that pass 0 or NULL to macros using | |
| _Py_CAST() to continue to compile. | |
| What's New in Python 3.11.0 beta 3? | |
| =================================== | |
| *Release date: 2022-06-01* | |
| Core and Builtins | |
| ----------------- | |
| - gh-issue-93359: Ensure that custom :mod:`ast` nodes without explicit end | |
| positions can be compiled. Patch by Pablo Galindo. | |
| - gh-issue-93345: Fix a crash in substitution of a ``TypeVar`` in nested | |
| generic alias after ``TypeVarTuple``. | |
| Build | |
| ----- | |
| - gh-issue-69093: Fix ``Modules/Setup.stdlib.in`` rule for ``_sqlite3`` | |
| extension. | |
| What's New in Python 3.11.0 beta 2? | |
| =================================== | |
| *Release date: 2022-05-30* | |
| Core and Builtins | |
| ----------------- | |
| - gh-issue-84694: The ``--experimental-isolated-subinterpreters`` configure | |
| option and ``EXPERIMENTAL_ISOLATED_SUBINTERPRETERS`` macro have been | |
| removed. | |
| - gh-issue-91924: Fix ``__lltrace__`` debug feature if the stdout encoding | |
| is not UTF-8. Patch by Victor Stinner. | |
| - gh-issue-93061: Backward jumps after ``async for`` loops are no longer | |
| given dubious line numbers. | |
| - gh-issue-93065: Fix contextvars HAMT implementation to handle iteration | |
| over deep trees. | |
| The bug was discovered and fixed by Eli Libman. See | |
| `MagicStack/immutables#84 | |
| <https://github.com/MagicStack/immutables/issues/84>`_ for more details. | |
| - gh-issue-90473: Decrease default recursion limit on WASI to address | |
| limited call stack size. | |
| - gh-issue-92804: Fix memory leak in ``memoryview`` iterator as it was not | |
| finalized at exit. Patch by Kumar Aditya. | |
| - gh-issue-92236: Remove spurious "LINE" event when starting a generator or | |
| coroutine, visible tracing functions implemented in C. | |
| - gh-issue-92619: Make the compiler duplicate an exit block only if none of | |
| its instructions have a lineno (previously only the first instruction in | |
| the block was checked, leading to unnecessarily duplicated blocks). | |
| - gh-issue-92261: Fix hang when trying to iterate over a ``typing.Union``. | |
| Library | |
| ------- | |
| - gh-issue-93297: Make asyncio task groups prevent child tasks from being | |
| GCed | |
| - gh-issue-90817: The :func:`locale.resetlocale` function is deprecated and | |
| will be removed in Python 3.13. Use ``locale.setlocale(locale.LC_ALL, | |
| "")`` instead. Patch by Victor Stinner. | |
| - gh-issue-92728: The :func:`re.template` function and the corresponding | |
| :const:`re.TEMPLATE` and :const:`re.T` flags are restored after they were | |
| removed in 3.11.0b1, but they are now deprecated, so they might be removed | |
| from Python 3.13. | |
| - gh-issue-93044: No longer convert the database argument of | |
| :func:`sqlite3.connect` to bytes before passing it to the factory. | |
| - gh-issue-93010: In a very special case, the email package tried to append | |
| the nonexistent ``InvalidHeaderError`` to the defect list. It should have | |
| been ``InvalidHeaderDefect``. | |
| - gh-issue-92675: Fix :func:`venv.ensure_directories` to accept | |
| :class:`pathlib.Path` arguments in addition to :class:`str` paths. Patch | |
| by David Foster. | |
| - gh-issue-87901: Removed the ``encoding`` argument from :func:`os.popen` | |
| that was added in 3.11b1. | |
| - gh-issue-91922: Fix function :func:`sqlite.connect` and the | |
| :class:`sqlite.Connection` constructor on non-UTF-8 locales. Also, they | |
| now support bytes paths non-decodable with the current FS encoding. | |
| - gh-issue-92839: Fixed crash resulting from calling bisect.insort() or | |
| bisect.insort_left() with the key argument not equal to None. | |
| - gh-issue-90473: :mod:`subprocess` now fails early on Emscripten and WASI | |
| platforms to work around missing :func:`os.pipe` on WASI. | |
| - gh-issue-92671: Fixed :func:`ast.unparse` for empty tuples in the | |
| assignment target context. | |
| - gh-issue-91581: :meth:`~datetime.datetime.utcfromtimestamp` no longer | |
| attempts to resolve ``fold`` in the pure Python implementation, since the | |
| fold is never 1 in UTC. In addition to being slightly faster in the common | |
| case, this also prevents some errors when the timestamp is close to | |
| :attr:`datetime.min <datetime.datetime.min>`. Patch by Paul Ganssle. | |
| - gh-issue-92550: Fix :meth:`pathlib.Path.rglob` for empty pattern. | |
| - gh-issue-92530: Fix an issue that occurred after interrupting | |
| :func:`threading.Condition.notify`. | |
| - gh-issue-92531: The statistics.median_grouped() function now always return | |
| a float. Formerly, it did not convert the input type when for sequences of | |
| length one. | |
| - gh-issue-91810: :class:`~xml.etree.ElementTree.ElementTree` method | |
| :meth:`~xml.etree.ElementTree.ElementTree.write` and function | |
| :func:`~xml.etree.ElementTree.tostring` now use the text file's encoding | |
| ("UTF-8" if not available) instead of locale encoding in XML declaration | |
| when ``encoding="unicode"`` is specified. | |
| - gh-issue-90622: Worker processes for | |
| :class:`concurrent.futures.ProcessPoolExecutor` are no longer spawned on | |
| demand (a feature added in 3.9) when the multiprocessing context start | |
| method is ``"fork"`` as that can lead to deadlocks in the child processes | |
| due to a fork happening while threads are running. | |
| - gh-issue-91581: Remove an unhandled error case in the C implementation of | |
| calls to :meth:`datetime.fromtimestamp <datetime.datetime.fromtimestamp>` | |
| with no time zone (i.e. getting a local time from an epoch timestamp). | |
| This should have no user-facing effect other than giving a possibly more | |
| accurate error message when called with timestamps that fall on | |
| 10000-01-01 in the local time. Patch by Paul Ganssle. | |
| - bpo-39064: :class:`zipfile.ZipFile` now raises :exc:`zipfile.BadZipFile` | |
| instead of ``ValueError`` when reading a corrupt zip file in which the | |
| central directory offset is negative. | |
| - bpo-45393: Fix the formatting for ``await x`` and ``not x`` in the | |
| operator precedence table when using the :func:`help` system. | |
| - bpo-28249: Set :attr:`doctest.DocTest.lineno` to ``None`` when object does | |
| not have :attr:`__doc__`. | |
| - bpo-45046: Add support of context managers in :mod:`unittest`: methods | |
| :meth:`~unittest.TestCase.enterContext` and | |
| :meth:`~unittest.TestCase.enterClassContext` of class | |
| :class:`~unittest.TestCase`, method | |
| :meth:`~unittest.IsolatedAsyncioTestCase.enterAsyncContext` of class | |
| :class:`~unittest.IsolatedAsyncioTestCase` and function | |
| :func:`unittest.enterModuleContext`. | |
| - bpo-42627: Fix incorrect parsing of Windows registry proxy settings | |
| Documentation | |
| ------------- | |
| - gh-issue-86438: Clarify that :option:`-W` and :envvar:`PYTHONWARNINGS` are | |
| matched literally and case-insensitively, rather than as regular | |
| expressions, in :mod:`warnings`. | |
| - gh-issue-92240: Added release dates for "What's New in Python 3.X" for | |
| 3.0, 3.1, 3.2, 3.8 and 3.10 | |
| - bpo-40838: Document that :func:`inspect.getdoc`, | |
| :func:`inspect.getmodule`, and :func:`inspect.getsourcefile` might return | |
| ``None``. | |
| - bpo-38056: Overhaul the :ref:`error-handlers` documentation in | |
| :mod:`codecs`. | |
| - bpo-13553: Document tkinter.Tk args. | |
| Tests | |
| ----- | |
| - gh-issue-92670: Skip | |
| ``test_shutil.TestCopy.test_copyfile_nonexistent_dir`` test on AIX as the | |
| test uses a trailing slash to force the OS consider the path as a | |
| directory, but on AIX the trailing slash has no effect and is considered | |
| as a file. | |
| Build | |
| ----- | |
| - gh-issue-90473: Disable pymalloc and increase stack size on | |
| ``wasm32-wasi``. | |
| - bpo-34449: Drop invalid compiler switch ``-fPIC`` for HP aCC on HP-UX. | |
| Patch by Michael Osipov. | |
| Windows | |
| ------- | |
| - gh-issue-92817: Ensures that :file:`py.exe` will prefer an active virtual | |
| environment over default tags specified with environment variables or | |
| through a :file:`py.ini` file. | |
| - gh-issue-92984: Explicitly disable incremental linking for non-Debug | |
| builds | |
| - gh-issue-92841: :mod:`asyncio` no longer throws ``RuntimeError: Event loop | |
| is closed`` on interpreter exit after asynchronous socket activity. Patch | |
| by Oleg Iarygin. | |
| - bpo-46907: Update Windows installer to use SQLite 3.38.4. | |
| C API | |
| ----- | |
| - gh-issue-92898: Fix C++ compiler warnings when casting function arguments | |
| to ``PyObject*``. Patch by Serge Guelton. | |
| - gh-issue-92913: Ensures changes to | |
| :c:member:`PyConfig.module_search_paths` are ignored unless | |
| :c:member:`PyConfig.module_search_paths_set` is set | |
| - gh-issue-92781: Avoid mixing declarations and code in the C API to fix the | |
| compiler warning: "ISO C90 forbids mixed declarations and code" | |
| [-Werror=declaration-after-statement]. Patch by Victor Stinner. | |
| What's New in Python 3.11.0 beta 1? | |
| =================================== | |
| *Release date: 2022-05-06* | |
| Security | |
| -------- | |
| - gh-issue-57684: Add the :option:`-P` command line option and the | |
| :envvar:`PYTHONSAFEPATH` environment variable to not prepend a potentially | |
| unsafe path to :data:`sys.path`. Patch by Victor Stinner. | |
| Core and Builtins | |
| ----------------- | |
| - gh-issue-89519: Chaining classmethod descriptors (introduced in bpo-19072) | |
| is deprecated. It can no longer be used to wrap other descriptors such as | |
| property(). The core design of this feature was flawed, and it caused a | |
| number of downstream problems. | |
| - gh-issue-92345: ``pymain_run_python()`` now imports ``readline`` and | |
| ``rlcompleter`` before sys.path is extended to include the current working | |
| directory of an interactive interpreter. Non-interactive interpreters are | |
| not affected. | |
| - bpo-43857: Improve the :exc:`AttributeError` message when deleting a | |
| missing attribute. Patch by Géry Ogam. | |
| - gh-issue-92245: Make sure that PEP 523 is respected in all cases. In | |
| 3.11a7, specialization may have prevented Python-to-Python calls | |
| respecting PEP 523. | |
| - gh-issue-92203: Add a closure keyword-only parameter to exec(). It can | |
| only be specified when exec-ing a code object that uses free variables. | |
| When specified, it must be a tuple, with exactly the number of cell | |
| variables referenced by the code object. closure has a default value of | |
| None, and it must be None if the code object doesn't refer to any free | |
| variables. | |
| - gh-issue-91173: Disable frozen modules in debug builds. Patch by Kumar | |
| Aditya. | |
| - gh-issue-92114: Improve error message when subscript a type with | |
| ``__class_getitem__`` set to ``None``. | |
| - gh-issue-92112: Fix crash triggered by an evil custom ``mro()`` on a | |
| metaclass. | |
| - gh-issue-92063: The ``PRECALL_METHOD_DESCRIPTOR_FAST_WITH_KEYWORDS`` | |
| instruction now ensures methods are called only on objects of the correct | |
| type. | |
| - gh-issue-92031: Deoptimize statically allocated code objects during | |
| ``Py_FINALIZE()`` so that future ``_PyCode_Quicken`` calls always start | |
| with unquickened code. | |
| - gh-issue-92036: Fix a crash in subinterpreters related to the garbage | |
| collector. When a subinterpreter is deleted, untrack all objects tracked | |
| by its GC. To prevent a crash in deallocator functions expecting objects | |
| to be tracked by the GC, leak a strong reference to these objects on | |
| purpose, so they are never deleted and their deallocator functions are not | |
| called. Patch by Victor Stinner. | |
| - gh-issue-92032: The interpreter can now autocomplete soft keywords, as of | |
| now ``match``, ``case``, and ``_`` (wildcard pattern) from :pep:`634`. | |
| - gh-issue-87999: The warning emitted by the Python parser for a numeric | |
| literal immediately followed by keyword has been changed from deprecation | |
| warning to syntax warning. | |
| - gh-issue-91869: Fix an issue where specialized opcodes with extended | |
| arguments could produce incorrect tracing output or lead to assertion | |
| failures. | |
| - gh-issue-91603: Speed up :class:`types.UnionType` instantiation. Based on | |
| patch provided by Yurii Karabas. | |
| - gh-issue-89373: If Python is built in debug mode, Python now ensures that | |
| deallocator functions leave the current exception unchanged. Patch by | |
| Victor Stinner. | |
| - gh-issue-91632: Fix a minor memory leak at exit: release the memory of the | |
| :class:`generic_alias_iterator` type. Patch by Dong-hee Na. | |
| - gh-issue-81548: Octal escapes with value larger than ``0o377`` now produce | |
| a :exc:`DeprecationWarning`. In a future Python version they will be a | |
| :exc:`SyntaxWarning` and eventually a :exc:`SyntaxError`. | |
| - bpo-43950: Use a single compact table for line starts, ends and column | |
| offsets. Reduces memory consumption for location info by half | |
| - gh-issue-91102: Use Argument Clinic for :class:`EncodingMap`. Patch by | |
| Oleg Iarygin. | |
| - gh-issue-91636: Fixed a crash in a garbage-collection edge-case, in which | |
| a ``PyFunction_Type.tp_clear`` function could leave a python function | |
| object in an inconsistent state. | |
| - gh-issue-91603: Speed up :func:`isinstance` and :func:`issubclass` checks | |
| for :class:`types.UnionType`. Patch by Yurii Karabas. | |
| - gh-issue-91625: Fixed a bug in which adaptive opcodes ignored any | |
| preceding ``EXTENDED_ARG``\ s on specialization failure. | |
| - gh-issue-78607: The LLTRACE special build now looks for the name | |
| ``__lltrace__`` defined in module globals, rather than the name | |
| ``__ltrace__``, which had been introduced as a typo. | |
| - gh-issue-91576: Speed up iteration of ascii strings by 50%. Patch by Kumar | |
| Aditya. | |
| - gh-issue-89279: Improve interpreter performance on Windows by inlining a | |
| few specific macros. | |
| - gh-issue-91502: Add a new :c:func:`_PyFrame_IsEntryFrame` API function, to | |
| check if a :c:type:`PyFrameObject` is an entry frame. Patch by Pablo | |
| Galindo. | |
| - gh-issue-91266: Refactor the ``bytearray`` strip methods ``strip``, | |
| ``lstrip`` and ``rstrip`` to use a common implementation. | |
| - gh-issue-91479: Replaced the ``__note__`` field of :exc:`BaseException` | |
| (added in an earlier version of 3.11) with the final design of :pep:`678`. | |
| Namely, :exc:`BaseException` gets an :meth:`add_note` method, and its | |
| ``__notes__`` field is created when necessary. | |
| - gh-issue-46055: Speed up right shift of negative integers, by removing | |
| unnecessary creation of temporaries. Original patch by Xinhang Xu, | |
| reworked by Mark Dickinson. | |
| - gh-issue-91462: Make the interpreter's low-level tracing (lltrace) feature | |
| output more readable by displaying opcode names (rather than just | |
| numbers), and by displaying stack contents before each opcode. | |
| - gh-issue-89455: Fixed an uninitialized bool value in the traceback | |
| printing code path that was introduced by the initial bpo-45292 exception | |
| groups work. | |
| - gh-issue-91421: Fix a potential integer overflow in _Py_DecodeUTF8Ex. | |
| - gh-issue-91428: Add ``static const char *const _PyOpcode_OpName[256] = | |
| {...};`` to ``opcode.h`` for debug builds to assist in debugging the | |
| Python interpreter. It is now more convenient to make various forms of | |
| debugging output more human-readable by including opcode names rather than | |
| just the corresponding decimal digits. | |
| - bpo-47120: Make :opcode:`POP_JUMP_IF_TRUE`, :opcode:`POP_JUMP_IF_FALSE`, | |
| :opcode:`POP_JUMP_IF_NONE` and :opcode:`POP_JUMP_IF_NOT_NONE` virtual, | |
| mapping to new relative jump opcodes. | |
| - bpo-45317: Add internal documentation explaining design of new (for 3.11) | |
| frame stack. | |
| - bpo-47197: ctypes used to mishandle ``void`` return types, so that for | |
| instance a function declared like ``ctypes.CFUNCTYPE(None, ctypes.c_int)`` | |
| would be called with signature ``int f(int)`` instead of ``void f(int)``. | |
| Wasm targets require function pointers to be called with the correct | |
| signatures so this led to crashes. The problem is now fixed. | |
| - bpo-47120: Make opcodes :opcode:`JUMP_IF_TRUE_OR_POP` and | |
| :opcode:`JUMP_IF_FALSE_OR_POP` relative rather than absolute. | |
| - bpo-47177: Replace the ``f_lasti`` member of the internal | |
| ``_PyInterpreterFrame`` structure with a ``prev_instr`` pointer, which | |
| reduces overhead in the main interpreter loop. The ``f_lasti`` attribute | |
| of Python-layer frame objects is preserved for backward-compatibility. | |
| - bpo-46961: Integer mod/remainder operations, including the three-argument | |
| form of :func:`pow`, now consistently return ints from the global small | |
| integer cache when applicable. | |
| - bpo-46962: Classes and functions that unconditionally declared their | |
| docstrings ignoring the `--without-doc-strings` compilation flag no longer | |
| do so. | |
| The classes affected are :class:`ctypes.UnionType`, | |
| :class:`pickle.PickleBuffer`, :class:`testcapi.RecursingInfinitelyError`, | |
| and :class:`types.GenericAlias`. | |
| The functions affected are 24 methods in :mod:`ctypes`. | |
| Patch by Oleg Iarygin. | |
| - bpo-46942: Use Argument Clinic for the :class:`types.MethodType` | |
| constructor. Patch by Oleg Iarygin. | |
| - bpo-46764: Fix wrapping bound methods with @classmethod | |
| - bpo-43464: Optimize :meth:`set.intersection` for non-set arguments. | |
| - bpo-46721: Optimize :meth:`set.issuperset` for non-set argument. | |
| - bpo-46509: Add type-specialized versions of the ``Py_DECREF()``, and use | |
| them for ``float``, ``int``, ``str``, ``bool``, and ``None`` to avoid | |
| pointer-chasing at runtime where types are known at C compile time. | |
| - bpo-46045: Do not use POSIX semaphores on NetBSD | |
| - bpo-36819: Fix crashes in built-in encoders with error handlers that | |
| return position less or equal than the starting position of non-encodable | |
| characters. | |
| - bpo-34093: ``marshal.dumps()`` uses ``FLAG_REF`` for all interned strings. | |
| This makes output more deterministic and helps reproducible build. | |
| - bpo-26579: Added ``object.__getstate__`` which provides the default | |
| implementation of the ``__getstate__()`` method. | |
| Copying and pickling instances of subclasses of builtin types bytearray, | |
| set, frozenset, collections.OrderedDict, collections.deque, | |
| weakref.WeakSet, and datetime.tzinfo now copies and pickles instance | |
| attributes implemented as slots. | |
| Library | |
| ------- | |
| - gh-issue-87901: Add the *encoding* parameter to :func:`os.popen`. | |
| - gh-issue-90997: Fix an issue where :mod:`dis` utilities may interpret | |
| populated inline cache entries as valid instructions. | |
| - gh-issue-92332: Deprecate :class:`typing.Text` (removal of the class is | |
| currently not planned). Patch by Alex Waygood. | |
| - Deprecate nested classes in enum definitions becoming members -- in 3.13 | |
| they will be normal classes; add `member` and `nonmember` functions to | |
| allow control over results now. | |
| - gh-issue-92356: Fixed a performance regression in ctypes function calls. | |
| - gh-issue-90997: Show the actual named values stored in inline caches when | |
| ``show_caches=True`` is passed to :mod:`dis` utilities. | |
| - gh-issue-92301: Prefer ``close_range()`` to iterating over procfs for file | |
| descriptor closing in :mod:`subprocess` for better performance. | |
| - gh-issue-67248: Sort the miscellaneous topics in Cmd.do_help() | |
| - gh-issue-92210: Port ``socket.__init__`` to Argument Clinic. Patch by | |
| Cinder. | |
| - gh-issue-80010: Add support for generalized ISO 8601 parsing to | |
| :meth:`datetime.datetime.fromisoformat`, | |
| :meth:`datetime.date.fromisoformat` and | |
| :meth:`datetime.time.fromisoformat`. Patch by Paul Ganssle. | |
| - gh-issue-92118: Fix a 3.11 regression in | |
| :func:`~contextlib.contextmanager`, which caused it to propagate | |
| exceptions with incorrect tracebacks. | |
| - gh-issue-90887: Adding ``COPYFILE_STAT``, ``COPYFILE_ACL`` and | |
| ``COPYFILE_XATTR`` constants for :func:`os.fcopyfile` available in macOs. | |
| - gh-issue-91215: For @dataclass, add weakref_slot. Default is False. If | |
| True, and if slots=True, add a slot named "__weakref__", which will allow | |
| instances to be weakref'd. Contributed by Eric V. Smith | |
| - gh-issue-85984: New function os.login_tty() for Unix. | |
| - gh-issue-92128: Add :meth:`~object.__class_getitem__` to | |
| :class:`logging.LoggerAdapter` and :class:`logging.StreamHandler`, | |
| allowing them to be parameterized at runtime. Patch by Alex Waygood. | |
| - gh-issue-92049: Forbid pickling constants ``re._constants.SUCCESS`` etc. | |
| Previously, pickling did not fail, but the result could not be unpickled. | |
| - gh-issue-92062: :class:`inspect.Parameter` now raises :exc:`ValueError` if | |
| ``name`` is a keyword, in addition to the existing check that it is an | |
| identifier. | |
| - gh-issue-87390: Add an ``__unpacked__`` attribute to | |
| :class:`types.GenericAlias`. Patch by Jelle Zijlstra. | |
| - gh-issue-88089: Add support for generic :class:`typing.NamedTuple`. | |
| - gh-issue-91996: New http.HTTPMethod enum to represent all the available | |
| HTTP request methods in a convenient way | |
| - gh-issue-91984: Modified test strings in test_argparse.py to not contain | |
| trailing spaces before end of line. | |
| - gh-issue-91952: Add ``encoding="locale"`` support to | |
| :meth:`TextIOWrapper.reconfigure`. | |
| - gh-issue-91954: Add *encoding* and *errors* arguments to | |
| :func:`subprocess.getoutput` and :func:`subprocess.getstatusoutput`. | |
| - bpo-47029: Always close the read end of the pipe used by | |
| :class:`multiprocessing.Queue` *after* the last write of buffered data to | |
| the write end of the pipe to avoid :exc:`BrokenPipeError` at garbage | |
| collection and at :meth:`multiprocessing.Queue.close` calls. Patch by Géry | |
| Ogam. | |
| - gh-issue-91928: Add `datetime.UTC` alias for `datetime.timezone.utc`. | |
| Patch by Kabir Kwatra. | |
| - gh-issue-68966: The :mod:`mailcap` module is now deprecated and will be | |
| removed in Python 3.13. See :pep:`594` for the rationale and the | |
| :mod:`mimetypes` module for an alternative. Patch by Victor Stinner. | |
| - gh-issue-91401: Provide a way to disable :mod:`subprocess` use of | |
| ``vfork()`` just in case it is ever needed and document the existing | |
| mechanism for ``posix_spawn()``. | |
| - gh-issue-64783: Fix :data:`signal.NSIG` value on FreeBSD to accept signal | |
| numbers greater than 32, like :data:`signal.SIGRTMIN` and | |
| :data:`signal.SIGRTMAX`. Patch by Victor Stinner. | |
| - gh-issue-91910: Add missing f prefix to f-strings in error messages from | |
| the :mod:`multiprocessing` and :mod:`asyncio` modules. | |
| - gh-issue-91860: Add :func:`typing.dataclass_transform`, implementing | |
| :pep:`681`. Patch by Jelle Zijlstra. | |
| - gh-issue-91832: Add ``required`` attribute to :class:`argparse.Action` | |
| repr output. | |
| - gh-issue-91827: In the :mod:`tkinter` module add method | |
| ``info_patchlevel()`` which returns the exact version of the Tcl library | |
| as a named tuple similar to :data:`sys.version_info`. | |
| - gh-issue-84461: Add :option:`--enable-wasm-pthreads` to enable pthreads | |
| support for WASM builds. ``Emscripten/node`` no longer has threading | |
| enabled by default. Include additional file systems. | |
| - gh-issue-91821: Fix unstable ``test_from_tuple`` test in | |
| ``test_decimal.py``. | |
| - gh-issue-91217: Deprecate the xdrlib module. | |
| - gh-issue-91217: Deprecate the uu module. | |
| - gh-issue-91760: More strict rules will be applied for numerical group | |
| references and group names in regular expressions. For now, a deprecation | |
| warning is emitted for group references and group names which will be | |
| errors in future Python versions. | |
| - gh-issue-84461: Add provisional :data:`sys._emscripten_info` named tuple | |
| with build-time and run-time information about Emscripten platform. | |
| - gh-issue-90623: :func:`signal.raise_signal` and :func:`os.kill` now check | |
| immediately for pending signals. Patch by Victor Stinner. | |
| - gh-issue-91734: Fix OSS audio support on Solaris. | |
| - gh-issue-90633: Include the passed value in the exception thrown by | |
| :func:`typing.assert_never`. Patch by Jelle Zijlstra. | |
| - gh-issue-91700: Compilation of regular expression containing a conditional | |
| expression ``(?(group)...)`` now raises an appropriate :exc:`re.error` if | |
| the group number refers to not defined group. Previously an internal | |
| RuntimeError was raised. | |
| - gh-issue-91231: Add an optional keyword *shutdown_timeout* parameter to | |
| the :class:`multiprocessing.BaseManager` constructor. Kill the process if | |
| terminate() takes longer than the timeout. Patch by Victor Stinner. | |
| - gh-issue-91621: Fix :func:`typing.get_type_hints` for | |
| :class:`collections.abc.Callable`. Patch by Shantanu Jain. | |
| - gh-issue-90568: Parsing ``\N`` escapes of Unicode Named Character | |
| Sequences in a :mod:`regular expression <re>` raises now :exc:`re.error` | |
| instead of ``TypeError``. | |
| - gh-issue-91670: Remove deprecated ``SO`` config variable in | |
| :mod:`sysconfig`. | |
| - gh-issue-91217: Deprecate the telnetlib module. | |
| - gh-issue-91217: Deprecate the sunau module. | |
| - gh-issue-91217: Deprecate the spwd module. | |
| - gh-issue-91217: Deprecate the sndhdr module, as well as inline needed | |
| functionality for ``email.mime.MIMEAudio``. | |
| - gh-issue-91616: :mod:`re` module, fix :meth:`~re.Pattern.fullmatch` | |
| mismatch when using Atomic Grouping or Possessive Quantifiers. | |
| - gh-issue-91217: Deprecate the 'pipes' module. | |
| - gh-issue-91217: Deprecate the ossaudiodev module. | |
| - bpo-47256: :mod:`re` module, limit the maximum capturing group to | |
| 1,073,741,823 in 64-bit build, this increases the depth of backtracking. | |
| - gh-issue-91217: Deprecate the nis module. | |
| - gh-issue-91595: Fix the comparison of character and integer inside | |
| :func:`Tools.gdb.libpython.write_repr`. Patch by Yu Liu. | |
| - gh-issue-74166: Add option to raise all errors from | |
| :meth:`~socket.create_connection` in an :exc:`ExceptionGroup` when it | |
| fails to create a connection. The default remains to raise only the last | |
| error that had occurred when multiple addresses were tried. | |
| - gh-issue-91487: Optimize asyncio UDP speed, over 100 times faster when | |
| transferring a large file. | |
| - gh-issue-91575: Update case-insensitive matching in the :mod:`re` module | |
| to the latest Unicode version. | |
| - gh-issue-90622: In ``concurrent.futures.process.ProcessPoolExecutor`` | |
| disallow the "fork" multiprocessing start method when the new | |
| ``max_tasks_per_child`` feature is used as the mix of threads+fork can | |
| hang the child processes. Default to using the safe "spawn" start method | |
| in that circumstance if no ``mp_context`` was supplied. | |
| - gh-issue-89022: In :mod:`sqlite3`, ``SQLITE_MISUSE`` result codes are now | |
| mapped to :exc:`~sqlite3.InterfaceError` instead of | |
| :exc:`~sqlite3.ProgrammingError`. Also, more accurate exceptions are | |
| raised when binding parameters fail. Patch by Erlend E. Aasland. | |
| - gh-issue-91526: Stop calling ``os.device_encoding(file.fileno())`` in | |
| :class:`TextIOWrapper`. It was complex, never documented, and didn't work | |
| for most cases. (Patch by Inada Naoki.) | |
| - gh-issue-88116: Change the frame-related functions in the :mod:`inspect` | |
| module to return a regular object (that is backwards compatible with the | |
| old tuple-like interface) that include the extended :pep:`657` position | |
| information (end line number, column and end column). The affected | |
| functions are: :func:`inspect.getframeinfo`, | |
| :func:`inspect.getouterframes`, :func:`inspect.getinnerframes`, | |
| :func:`inspect.stack` and :func:`inspect.trace`. Patch by Pablo Galindo. | |
| - gh-issue-69093: Add indexing and slicing support to :class:`sqlite3.Blob`. | |
| Patch by Aviv Palivoda and Erlend E. Aasland. | |
| - gh-issue-69093: Add :term:`context manager` support to | |
| :class:`sqlite3.Blob`. Patch by Aviv Palivoda and Erlend E. Aasland. | |
| - gh-issue-91217: Deprecate nntplib. | |
| - gh-issue-91217: Deprecate msilib. | |
| - gh-issue-91404: Improve the performance of :mod:`re` matching by using | |
| computed gotos (or "threaded code") on supported platforms and removing | |
| expensive pointer indirections. | |
| - gh-issue-91217: Deprecate the imghdr module. | |
| - gh-issue-91217: Deprecate the crypt module. | |
| - gh-issue-91276: Make space for longer opcodes in :mod:`dis` output. | |
| - bpo-47000: Make :class:`TextIOWrapper` uses locale encoding when | |
| ``encoding="locale"`` is specified even in UTF-8 mode. | |
| - gh-issue-91230: :func:`warnings.catch_warnings` now accepts arguments for | |
| :func:`warnings.simplefilter`, providing a more concise way to locally | |
| ignore warnings or convert them to errors. | |
| - gh-issue-91217: Deprecate the chunk module. | |
| - Add the ``TCP_CONNECTION_INFO`` option (available on macOS) to | |
| :mod:`socket`. | |
| - bpo-47260: Fix ``os.closerange()`` potentially being a no-op in a Linux | |
| seccomp sandbox. | |
| - bpo-47087: Implement ``typing.Required`` and ``typing.NotRequired`` | |
| (:pep:`655`). Patch by David Foster and Jelle Zijlstra. | |
| - bpo-47061: Deprecate cgi and cgitb. | |
| - bpo-47061: Deprecate audioop. | |
| - bpo-47000: Add :func:`locale.getencoding` to get the current locale | |
| encoding. It is similar to ``locale.getpreferredencoding(False)`` but | |
| ignores the :ref:`Python UTF-8 Mode <utf8-mode>`. | |
| - bpo-42012: Add :mod:`wsgiref.types`, containing WSGI-specific types for | |
| static type checking. | |
| - bpo-47227: Suppress expression chaining for more :mod:`re` parsing errors. | |
| - bpo-47211: Remove undocumented and never working function | |
| ``re.template()`` and flag ``re.TEMPLATE``. This was later reverted in | |
| 3.11.0b2 and deprecated instead. | |
| - bpo-47135: :meth:`decimal.localcontext` now accepts context attributes via | |
| keyword arguments | |
| - bpo-43323: Fix errors in the :mod:`email` module if the charset itself | |
| contains undecodable/unencodable characters. | |
| - bpo-46841: Disassembly of quickened code. | |
| - bpo-46681: Forward gzip.compress() compresslevel to zlib. | |
| - bpo-45100: Add :func:`typing.get_overloads` and | |
| :func:`typing.clear_overloads`. Patch by Jelle Zijlstra. | |
| - bpo-44807: :class:`typing.Protocol` no longer silently replaces | |
| :meth:`__init__` methods defined on subclasses. Patch by Adrian Garcia | |
| Badaracco. | |
| - bpo-46787: Fix :class:`concurrent.futures.ProcessPoolExecutor` exception | |
| memory leak | |
| - bpo-46720: Add support for path-like objects to | |
| :func:`multiprocessing.set_executable` for Windows to be on a par with | |
| Unix-like systems. Patch by Géry Ogam. | |
| - bpo-46696: Add ``SO_INCOMING_CPU`` constant to :mod:`socket`. | |
| - bpo-46053: Fix OSS audio support on NetBSD. | |
| - bpo-45639: ``image/avif`` and ``image/webp`` were added to | |
| :mod:`mimetypes`. | |
| - bpo-46285: Add command-line option ``-p``/``--protocol`` to module | |
| :mod:`http.server` which specifies the HTTP version to which the server is | |
| conformant (HTTP/1.1 conformant servers can now be run from the | |
| command-line interface of module :mod:`http.server`). Patch by Géry Ogam. | |
| - bpo-44791: Accept ellipsis as the last argument of | |
| :data:`typing.Concatenate`. | |
| - bpo-46547: Remove variables leaking into ``pydoc.Helper`` class namespace. | |
| - bpo-46415: Fix ipaddress.ip_{address,interface,network} raising TypeError | |
| instead of ValueError if given invalid tuple as address parameter. | |
| - bpo-46075: ``CookieJar`` with ``DefaultCookiePolicy`` now can process | |
| cookies from localhost with domain=localhost explicitly specified in | |
| Set-Cookie header. | |
| - bpo-45995: Add a "z" option to the string formatting specification that | |
| coerces negative zero floating-point values to positive zero after | |
| rounding to the format precision. Contributed by John Belmonte. | |
| - bpo-26175: Fully implement the :class:`io.BufferedIOBase` or | |
| :class:`io.TextIOBase` interface for | |
| :class:`tempfile.SpooledTemporaryFile` objects. This lets them work | |
| correctly with higher-level layers (like compression modules). Patch by | |
| Carey Metcalfe. | |
| - bpo-45138: Fix a regression in the :mod:`sqlite3` trace callback where | |
| bound parameters were not expanded in the passed statement string. The | |
| regression was introduced in Python 3.10 by :issue:`40318`. Patch by | |
| Erlend E. Aasland. | |
| - bpo-44863: Allow :class:`~typing.TypedDict` subclasses to also include | |
| :class:`~typing.Generic` as a base class in class based syntax. Thereby | |
| allowing the user to define a generic ``TypedDict``, just like a | |
| user-defined generic but with ``TypedDict`` semantics. | |
| - bpo-44587: Fix BooleanOptionalAction to not automatically add a default | |
| string. If a default string is desired, use a formatter to add it. | |
| - bpo-43827: All positional-or-keyword parameters to ``ABCMeta.__new__`` are | |
| now positional-only to avoid conflicts with keyword arguments to be passed | |
| to :meth:`__init_subclass__`. | |
| - bpo-43218: Prevent creation of a venv whose path contains the PATH | |
| separator. This could affect the usage of the activate script. Patch by | |
| Dustin Rodrigues. | |
| - bpo-38435: Add a ``process_group`` parameter to :class:`subprocess.Popen` | |
| to help move more things off of the unsafe ``preexec_fn`` parameter. | |
| - bpo-42066: Fix cookies getting sorted in :func:`CookieJar.__iter__` which | |
| is an extra behavior and not mentioned in RFC 2965 or Netscape cookie | |
| protocol. Now the cookies in ``CookieJar`` follows the order of the | |
| ``Set-Cookie`` header. Patch by Iman Kermani. | |
| - bpo-40617: Add :meth:`~sqlite3.Connection.create_window_function` to | |
| :class:`sqlite3.Connection` for creating aggregate window functions. Patch | |
| by Erlend E. Aasland. | |
| - bpo-40676: Convert :mod:`csv` to use Argument Clinic for | |
| :func:`csv.field_size_limit`, :func:`csv.get_dialect`, | |
| :func:`csv.unregister_dialect` and :func:`csv.list_dialects`. | |
| - bpo-39716: Raise an ArgumentError when the same subparser name is added | |
| twice to an `argparse.ArgumentParser`. This is consistent with the | |
| (default) behavior when the same option string is added twice to an | |
| ArgumentParser. | |
| - bpo-36073: Raise :exc:`~sqlite3.ProgrammingError` instead of segfaulting | |
| on recursive usage of cursors in :mod:`sqlite3` converters. Patch by | |
| Sergey Fedoseev. | |
| - bpo-34975: Adds a ``start_tls()`` method to | |
| :class:`~asyncio.streams.StreamWriter`, which upgrades the connection with | |
| TLS using the given :class:`~ssl.SSLContext`. | |
| - bpo-22276: :class:`~pathlib.Path` methods :meth:`~pathlib.Path.glob` and | |
| :meth:`~pathlib.Path.rglob` return only directories if *pattern* ends with | |
| a pathname components separator (``/`` or :data:`~os.sep`). Patch by | |
| Eisuke Kawashima. | |
| - bpo-24905: Add :meth:`~sqlite3.Connection.blobopen` to | |
| :class:`sqlite3.Connection`. :class:`sqlite3.Blob` allows incremental I/O | |
| operations on blobs. Patch by Aviv Palivoda and Erlend E. Aasland. | |
| Documentation | |
| ------------- | |
| - gh-issue-91888: Add a new `gh` role to the documentation to link to GitHub | |
| issues. | |
| - gh-issue-91783: Document security issues concerning the use of the | |
| function :meth:`shutil.unpack_archive` | |
| - gh-issue-91547: Remove "Undocumented modules" page. | |
| - gh-issue-91298: In ``importlib.resources.abc``, refined the documentation | |
| of the Traversable Protocol, applying changes from importlib_resources | |
| 5.7.1. | |
| - bpo-44347: Clarify the meaning of *dirs_exist_ok*, a kwarg of | |
| :func:`shutil.copytree`. | |
| - bpo-36329: Remove 'make -C Doc serve' in favour of 'make -C Doc htmlview' | |
| - bpo-47189: Add a What's New in Python 3.11 entry for the Faster CPython | |
| project. Documentation by Ken Jin and Kumar Aditya. | |
| - bpo-38668: Update the introduction to documentation for :mod:`os.path` to | |
| remove warnings that became irrelevant after the implementations of | |
| :pep:`383` and :pep:`529`. | |
| - bpo-47115: The documentation now lists which members of C structs are part | |
| of the :ref:`Limited API/Stable ABI <stable>`. | |
| - bpo-46962: All docstrings in code snippets are now wrapped into | |
| :func:`PyDoc_STR` to follow the guideline of `PEP 7's Documentation | |
| Strings paragraph | |
| <https://www.python.org/dev/peps/pep-0007/#documentation-strings>`_. Patch | |
| by Oleg Iarygin. | |
| - bpo-26792: Improve the docstrings of :func:`runpy.run_module` and | |
| :func:`runpy.run_path`. Original patch by Andrew Brezovsky. | |
| Tests | |
| ----- | |
| - gh-issue-92169: Use ``warnings_helper.import_deprecated()`` to import | |
| deprecated modules uniformly in tests. Patch by Hugo van Kemenade. | |
| - gh-issue-84461: When multiprocessing is enabled, libregrtest can now use a | |
| Python executable other than :code:`sys.executable` via the ``--python`` | |
| flag. | |
| - gh-issue-91904: Fix initialization of | |
| :envvar:`PYTHONREGRTEST_UNICODE_GUARD` which prevented running regression | |
| tests on non-UTF-8 locale. | |
| - gh-issue-91752: Added @requires_zlib to | |
| test.test_tools.test_freeze.TestFreeze. | |
| - gh-issue-91607: Fix ``test_concurrent_futures`` to test the correct | |
| multiprocessing start method context in several cases where the test logic | |
| mixed this up. | |
| - bpo-40280: Threading tests are now skipped on WASM targets without pthread | |
| support. | |
| - bpo-47109: Test for :mod:`ctypes.macholib.dyld`, | |
| :mod:`ctypes.macholib.dylib`, and :mod:`ctypes.macholib.framework` are | |
| brought from manual pre-:mod:`unittest` times to :mod:`ctypes.test` | |
| location and structure. Patch by Oleg Iarygin. | |
| - bpo-29890: Add tests for :class:`ipaddress.IPv4Interface` and | |
| :class:`ipaddress.IPv6Interface` construction with tuple arguments. | |
| Original patch and tests by louisom. | |
| Build | |
| ----- | |
| - gh-issue-89452: gdbm-compat is now preferred over ndbm if both are | |
| available on the system. This allows avoiding the problematic ndbm.h on | |
| macOS. | |
| - gh-issue-91731: Python is now built with ``-std=c11`` compiler option, | |
| rather than ``-std=c99``. Patch by Victor Stinner. | |
| - bpo-47152: Add script and make target for generating ``sre_constants.h``. | |
| - bpo-47103: Windows ``PGInstrument`` builds now copy a required DLL into | |
| the output directory, making it easier to run the profile stage of a PGO | |
| build. | |
| Windows | |
| ------- | |
| - bpo-46907: Update Windows installer to use SQLite 3.38.3. | |
| - bpo-47239: Fixed --list and --list-paths output for :ref:`launcher` when | |
| used in an active virtual environment. | |
| - bpo-46907: Update Windows installer to use SQLite 3.38.2. | |
| - bpo-46785: Fix race condition between :func:`os.stat` and unlinking a file | |
| on Windows, by using errors codes returned by ``FindFirstFileW()`` when | |
| appropriate in ``win32_xstat_impl``. | |
| - bpo-40859: Update Windows build to use xz-5.2.5 | |
| macOS | |
| ----- | |
| - bpo-46907: Update macOS installer to SQLite 3.38.4. | |
| Tools/Demos | |
| ----------- | |
| - gh-issue-91583: Fix regression in the code generated by Argument Clinic | |
| for functions with the ``defining_class`` parameter. | |
| - gh-issue-91575: Add script ``Tools/scripts/generate_re_casefix.py`` and | |
| the make target ``regen-re`` for generating additional data for | |
| case-insensitive matching according to the current Unicode version. | |
| - gh-issue-91551: Remove the ancient Pynche color editor. It has moved to | |
| https://gitlab.com/warsaw/pynche | |
| C API | |
| ----- | |
| - gh-issue-88279: Deprecate the C functions: :c:func:`PySys_SetArgv`, | |
| :c:func:`PySys_SetArgvEx`, :c:func:`PySys_SetPath`. Patch by Victor | |
| Stinner. | |
| - gh-issue-92154: Added the :c:func:`PyCode_GetCode` function. This function | |
| does the equivalent of the Python code ``getattr(code_object, | |
| 'co_code')``. | |
| - gh-issue-92173: Fix the ``closure`` argument to | |
| :c:func:`PyEval_EvalCodeEx`. | |
| - gh-issue-91320: Fix C++ compiler warnings about "old-style cast" (``g++ | |
| -Wold-style-cast``) in the Python C API. Use C++ ``reinterpret_cast<>`` | |
| and ``static_cast<>`` casts when the Python C API is used in C++. Patch by | |
| Victor Stinner. | |
| - gh-issue-80527: Mark functions as deprecated by :pep:`623`: | |
| :c:func:`PyUnicode_AS_DATA`, :c:func:`PyUnicode_AS_UNICODE`, | |
| :c:func:`PyUnicode_GET_DATA_SIZE`, :c:func:`PyUnicode_GET_SIZE`. Patch by | |
| Victor Stinner. | |
| - gh-issue-91768: :c:func:`Py_REFCNT`, :c:func:`Py_TYPE`, :c:func:`Py_SIZE` | |
| and :c:func:`Py_IS_TYPE` functions argument type is now ``PyObject*``, | |
| rather than ``const PyObject*``. Patch by Victor Stinner. | |
| - gh-issue-91020: Add ``PyBytes_Type.tp_alloc`` to initialize | |
| ``PyBytesObject.ob_shash`` for bytes subclasses. | |
| - bpo-40421: Add ``PyFrame_GetLasti`` C-API function to access frame | |
| object's ``f_lasti`` attribute safely from C code. | |
| - bpo-35134: Remove the ``Include/code.h`` header file. C extensions should | |
| only include the main ``<Python.h>`` header file. Patch by Victor Stinner. | |
| - bpo-47169: :c:func:`PyOS_CheckStack` is now exported in the Stable ABI on | |
| Windows. | |
| - bpo-47169: :c:func:`PyThread_get_thread_native_id` is excluded from the | |
| stable ABI on platforms where it doesn't exist (like Solaris). | |
| - bpo-46343: Added :c:func:`PyErr_GetHandledException` and | |
| :c:func:`PyErr_SetHandledException` as simpler alternatives to | |
| :c:func:`PyErr_GetExcInfo` and :c:func:`PyErr_SetExcInfo`. | |
| They are included in the stable ABI. | |
| What's New in Python 3.11.0 alpha 7? | |
| ==================================== | |
| *Release date: 2022-04-05* | |
| Core and Builtins | |
| ----------------- | |
| - bpo-47212: Raise :exc:`IndentationError` instead of :exc:`SyntaxError` for | |
| a bare ``except`` with no following indent. Improve :exc:`SyntaxError` | |
| locations for an un-parenthesized generator used as arguments. Patch by | |
| Matthieu Dartiailh. | |
| - bpo-47186: Replace :opcode:`JUMP_IF_NOT_EG_MATCH` by | |
| :opcode:`CHECK_EG_MATCH` + jump. | |
| - bpo-47176: Emscripten builds cannot handle signals in the usual way due to | |
| platform limitations. Python can now handle signals. To use, set | |
| Module.Py_EmscriptenSignalBuffer to be a single byte SharedArrayBuffer and | |
| set Py_EMSCRIPTEN_SIGNAL_HANDLING to 1. Writing a number into the | |
| SharedArrayBuffer will cause the corresponding signal to be raised into | |
| the Python thread. | |
| - bpo-47186: Replace :opcode:`JUMP_IF_NOT_EXC_MATCH` by | |
| :opcode:`CHECK_EXC_MATCH` + jump. | |
| - bpo-47120: Replace the absolute jump opcode :opcode:`JUMP_NO_INTERRUPT` by | |
| the relative :opcode:`JUMP_BACKWARD_NO_INTERRUPT`. | |
| - bpo-46841: Avoid unnecessary allocations when comparing code objects. | |
| - bpo-47182: Fix a crash when using a named unicode character like | |
| ``"\N{digit nine}"`` after the main interpreter has been initialized a | |
| second time. | |
| - bpo-47162: WebAssembly cannot deal with bad function pointer casts | |
| (different count or types of arguments). Python can now use call | |
| trampolines to mitigate the problem. Define :c:macro:`PY_CALL_TRAMPOLINE` | |
| to enable call trampolines. | |
| - bpo-46775: Some Windows system error codes(>= 10000) are now mapped into | |
| the correct errno and may now raise a subclass of :exc:`OSError`. Patch by | |
| Dong-hee Na. | |
| - bpo-47129: Improve error messages in f-string syntax errors concerning | |
| empty expressions. | |
| - bpo-47117: Fix a crash if we fail to decode characters in interactive mode | |
| if the tokenizer buffers are uninitialized. Patch by Pablo Galindo. | |
| - bpo-47127: Speed up calls to c functions with keyword arguments by 25% | |
| with specialization. Patch by Kumar Aditya. | |
| - bpo-47120: Replaced :opcode:`JUMP_ABSOLUTE` by the relative jump | |
| :opcode:`JUMP_BACKWARD`. | |
| - bpo-42197: :c:func:`PyFrame_FastToLocalsWithError` and | |
| :c:func:`PyFrame_LocalsToFast` are no longer called during profiling nor | |
| tracing. C code can access the ``f_locals`` attribute of | |
| :c:type:`PyFrameObject` by calling :c:func:`PyFrame_GetLocals`. | |
| - bpo-47070: Improve performance of ``array_inplace_repeat`` by reducing the | |
| number of invocations of ``memcpy``. Refactor the ``repeat`` and inplace | |
| ``repeat`` methods of ``array``, ``bytes``, ``bytearray`` and | |
| ``unicodeobject`` to use the common ``_PyBytes_Repeat``. | |
| - bpo-47053: Reduce de-optimization in the specialized | |
| ``BINARY_OP_INPLACE_ADD_UNICODE`` opcode. | |
| - bpo-47045: Remove the ``f_state`` field from the _PyInterpreterFrame | |
| struct. Add the ``owner`` field to the _PyInterpreterFrame struct to make | |
| ownership explicit to simplify clearing and deallocing frames and | |
| generators. | |
| - bpo-46968: Check for the existence of the "sys/auxv.h" header in | |
| :mod:`faulthandler` to avoid compilation problems in systems where this | |
| header doesn't exist. Patch by Pablo Galindo | |
| - bpo-46329: Use low bit of ``LOAD_GLOBAL`` to indicate whether to push a | |
| ``NULL`` before the global. Helps streamline the call sequence a bit. | |
| - bpo-46841: Quicken bytecode in-place by storing it as part of the | |
| corresponding ``PyCodeObject``. | |
| - bpo-47012: Speed up iteration of :class:`bytes` and :class:`bytearray` by | |
| 30%. Patch by Kumar Aditya. | |
| - bpo-47009: Improved the performance of :meth:`list.append()` and list | |
| comprehensions by optimizing for the common case, where no resize is | |
| needed. Patch by Dennis Sweeney. | |
| - bpo-47005: Improve performance of ``bytearray_repeat`` and | |
| ``bytearray_irepeat`` by reducing the number of invocations of ``memcpy``. | |
| - bpo-46829: Deprecate passing a message into :meth:`asyncio.Future.cancel` | |
| and :meth:`asyncio.Task.cancel` | |
| - bpo-46993: Speed up :class:`bytearray` creation from :class:`list` and | |
| :class:`tuple` by 40%. Patch by Kumar Aditya. | |
| - bpo-39829: Removed the ``__len__()`` call when initializing a list and | |
| moved initializing to ``list_extend``. Patch by Jeremiah Pascual. | |
| - bpo-46944: Speed up throwing exception in generator with | |
| :const:`METH_FASTCALL` calling convention. Patch by Kumar Aditya. | |
| - bpo-46841: Modify :opcode:`STORE_SUBSCR` to use an inline cache entry | |
| (rather than its oparg) as an adaptive counter. | |
| - bpo-46841: Use inline caching for :opcode:`PRECALL` and :opcode:`CALL`, | |
| and remove the internal machinery for managing the (now unused) non-inline | |
| caches. | |
| - bpo-46881: Statically allocate and initialize the latin1 characters. | |
| - bpo-46838: Improve syntax errors for incorrect function definitions. Patch | |
| by Pablo Galindo | |
| - bpo-43721: Fix docstrings of :attr:`~property.getter`, | |
| :attr:`~property.setter`, and :attr:`~property.deleter` to clarify that | |
| they create a new copy of the property. | |
| - bpo-43224: Make grammar changes required for PEP 646. | |
| Library | |
| ------- | |
| - bpo-47208: Allow vendors to override :const:`CTYPES_MAX_ARGCOUNT`. | |
| - bpo-23689: :mod:`re` module: fix memory leak when a match is terminated by | |
| a signal or memory allocation failure. Patch by Ma Lin. | |
| - bpo-47167: Allow overriding a future compliance check in | |
| :class:`asyncio.Task`. | |
| - bpo-47151: When subprocess tries to use vfork, it now falls back to fork | |
| if vfork returns an error. This allows use in situations where vfork isn't | |
| allowed by the OS kernel. | |
| - bpo-47152: Convert the :mod:`re` module into a package. Deprecate modules | |
| ``sre_compile``, ``sre_constants`` and ``sre_parse``. | |
| - bpo-4833: Add :meth:`ZipFile.mkdir` | |
| - bpo-27929: Fix :meth:`asyncio.loop.sock_connect` to only resolve names for | |
| :const:`socket.AF_INET` or :const:`socket.AF_INET6` families. Resolution | |
| may not make sense for other families, like :const:`socket.AF_BLUETOOTH` | |
| and :const:`socket.AF_UNIX`. | |
| - bpo-14265: Adds the fully qualified test name to unittest output | |
| - bpo-47061: Deprecate the aifc module. | |
| - bpo-39622: Handle Ctrl+C in asyncio programs to interrupt the main task. | |
| - bpo-47101: :const:`hashlib.algorithms_available` now lists only algorithms | |
| that are provided by activated crypto providers on OpenSSL 3.0. Legacy | |
| algorithms are not listed unless the legacy provider has been loaded into | |
| the default OSSL context. | |
| - bpo-47099: All :exc:`URLError` exception messages raised in | |
| :class:`urllib.request.URLopener` now contain a colon between ``ftp | |
| error`` and the rest of the message. Previously, | |
| :func:`~urllib.request.URLopener.open_ftp` missed the colon. Patch by Oleg | |
| Iarygin. | |
| - bpo-47099: Exception chaining is changed from | |
| :func:`Exception.with_traceback`/:func:`sys.exc_info` to :pep:`3134`. | |
| Patch by Oleg Iarygin. | |
| - bpo-47095: :mod:`hashlib`'s internal ``_blake2`` module now prefers | |
| ``libb2`` from https://www.blake2.net/ over Python's vendored copy of | |
| blake2. | |
| - bpo-47098: The Keccak Code Package for :mod:`hashlib`'s internal ``_sha3`` | |
| module has been replaced with tiny_sha3. The module is used as fallback | |
| when Python is built without OpenSSL. | |
| - bpo-47088: Implement :data:`typing.LiteralString`, part of :pep:`675`. | |
| Patch by Jelle Zijlstra. | |
| - bpo-42885: Optimize :func:`re.search`, :func:`re.split`, | |
| :func:`re.findall`, :func:`re.finditer` and :func:`re.sub` for regular | |
| expressions starting with ``\A`` or ``^``. | |
| - bpo-23691: Protect the :func:`re.finditer` iterator from re-entering. | |
| - bpo-47067: Optimize calling ``GenericAlias`` objects by using :pep:`590` | |
| ``vectorcall`` and by replacing ``PyObject_SetAttrString`` with | |
| ``PyObject_SetAttr``. | |
| - bpo-28080: Add the *metadata_encoding* parameter in the | |
| :class:`zipfile.ZipFile` constructor and the ``--metadata-encoding`` | |
| option in the :mod:`zipfile` CLI to allow reading zipfiles using | |
| non-standard codecs to encode the filenames within the archive. | |
| - bpo-47000: Make :func:`io.text_encoding` returns "utf-8" when UTF-8 mode | |
| is enabled. | |
| - bpo-42369: Fix thread safety of :meth:`zipfile._SharedFile.tell` to avoid | |
| a "zipfile.BadZipFile: Bad CRC-32 for file" exception when reading a | |
| :class:`ZipFile` from multiple threads. | |
| - bpo-38256: Fix :func:`binascii.crc32` when it is compiled to use zlib'c | |
| crc32 to work properly on inputs 4+GiB in length instead of returning the | |
| wrong result. The workaround prior to this was to always feed the function | |
| data in increments smaller than 4GiB or to just call the zlib module | |
| function. | |
| We also have :func:`binascii.crc32` release the GIL when computing on | |
| larger inputs as :func:`zlib.crc32` and :mod:`hashlib` do. | |
| This also boosts performance on Windows as it now uses the zlib crc32 | |
| implementation for :func:`binascii.crc32` for a 2-3x speedup. | |
| That the stdlib has a crc32 API in two modules is a known historical | |
| oddity. This moves us closer to a single implementation behind them. | |
| - bpo-47066: Global inline flags (e.g. ``(?i)``) can now only be used at the | |
| start of the regular expressions. Using them not at the start of | |
| expression was deprecated since Python 3.6. | |
| - bpo-39394: A warning about inline flags not at the start of the regular | |
| expression now contains the position of the flag. | |
| - bpo-433030: Add support of atomic grouping (``(?>...)``) and possessive | |
| quantifiers (``*+``, ``++``, ``?+``, ``{m,n}+``) in :mod:`regular | |
| expressions <re>`. | |
| - bpo-47062: Implement :class:`asyncio.Runner` context manager. | |
| - bpo-46382: :func:`~dataclasses.dataclass` ``slots=True`` now correctly | |
| omits slots already defined in base classes. Patch by Arie Bovenberg. | |
| - bpo-47057: Use FASTCALL convention for ``FutureIter.throw()`` | |
| - bpo-47061: Deprecate the various modules listed by :pep:`594`: | |
| aifc, asynchat, asyncore, audioop, cgi, cgitb, chunk, crypt, imghdr, | |
| msilib, nntplib, nis, ossaudiodev, pipes, smtpd, sndhdr, spwd, sunau, | |
| telnetlib, uu, xdrlib | |
| - bpo-34790: Remove passing coroutine objects to :func:`asyncio.wait`. | |
| - bpo-47039: Normalize ``repr()`` of asyncio future and task objects. | |
| - bpo-2604: Fix bug where doctests using globals would fail when run | |
| multiple times. | |
| - bpo-45150: Add :func:`hashlib.file_digest` helper for efficient hashing of | |
| file object. | |
| - bpo-34861: Made cumtime the default sorting key for cProfile | |
| - bpo-45997: Fix :class:`asyncio.Semaphore` re-aquiring FIFO order. | |
| - bpo-47022: The :mod:`asynchat`, :mod:`asyncore` and :mod:`smtpd` modules | |
| have been deprecated since at least Python 3.6. Their documentation and | |
| deprecation warnings and have now been updated to note they will removed | |
| in Python 3.12 (:pep:`594`). | |
| - bpo-43253: Fix a crash when closing transports where the underlying socket | |
| handle is already invalid on the Proactor event loop. | |
| - bpo-40280: :func:`select.select` now passes ``NULL`` to ``select`` for | |
| each empty fdset. | |
| - bpo-47004: Apply bugfixes from importlib_metadata 4.11.3, including bugfix | |
| for EntryPoint.extras, which was returning match objects and not the | |
| extras strings. | |
| - bpo-46998: Allow subclassing of :class:`typing.Any`. Patch by Shantanu | |
| Jain. | |
| - bpo-46995: Deprecate missing :meth:`asyncio.Task.set_name` for third-party | |
| task implementations, schedule making it mandatory in Python 3.13. | |
| - bpo-46994: Accept explicit contextvars.Context in | |
| :func:`asyncio.create_task` and :meth:`asyncio.loop.create_task`. | |
| - bpo-46981: ``typing.get_args(typing.Tuple[()])`` now returns ``()`` | |
| instead of ``((),)``. | |
| - bpo-46968: Add ``os.sysconf_names['SC_MINSIGSTKSZ']``. | |
| - bpo-46985: Upgrade pip wheel bundled with ensurepip (pip 22.0.4) | |
| - bpo-46968: :mod:`faulthandler`: On Linux 5.14 and newer, dynamically | |
| determine size of signal handler stack size CPython allocates using | |
| ``getauxval(AT_MINSIGSTKSZ)``. This changes allows for Python extension's | |
| request to Linux kernel to use AMX_TILE instruction set on Sapphire Rapids | |
| Xeon processor to succeed, unblocking use of the ISA in frameworks. | |
| - bpo-46917: The :data:`math.nan` value is now always available. Patch by | |
| Victor Stinner. | |
| - bpo-46955: Expose :class:`asyncio.base_events.Server` as | |
| :class:`asyncio.Server`. Patch by Stefan Zabka. | |
| - bpo-23325: The :mod:`signal` module no longer assumes that | |
| :const:`~signal.SIG_IGN` and :const:`~signal.SIG_DFL` are small int | |
| singletons. | |
| - bpo-46932: Update bundled libexpat to 2.4.7 | |
| - bpo-46933: The :mod:`pwd` module is now optional. | |
| :func:`os.path.expanduser` returns the path when the :mod:`pwd` module is | |
| not available. | |
| - bpo-40059: :pep:`680`, the :mod:`tomllib` module. Adds support for parsing | |
| TOML. | |
| - bpo-464471: :func:`asyncio.timeout` and :func:`asyncio.timeout_at` context | |
| managers added. Patch by Tin Tvrtković and Andrew Svetlov. | |
| - bpo-46805: Added raw datagram socket functions for asyncio: | |
| :meth:`~asyncio.AbstractEventLoop.sock_sendto`, | |
| :meth:`~asyncio.AbstractEventLoop.sock_recvfrom` and | |
| :meth:`~asyncio.AbstractEventLoop.sock_recvfrom_into`. | |
| - bpo-46644: No longer require valid typeforms to be callable. This allows | |
| :data:`typing.Annotated` to wrap :data:`typing.ParamSpecArgs` and | |
| :data:`dataclasses.InitVar`. Patch by Gregory Beauregard. | |
| - bpo-46581: Brings :class:`ParamSpec` propagation for :class:`GenericAlias` | |
| in line with :class:`Concatenate` (and others). | |
| - bpo-45413: Define *posix_venv* and *nt_venv* :ref:`sysconfig installation | |
| schemes <installation_paths>` to be used for bootstrapping new virtual | |
| environments. Add *venv* sysconfig installation scheme to get the | |
| appropriate one of the above. The schemes are identical to the | |
| pre-existing *posix_prefix* and *nt* install schemes. The :mod:`venv` | |
| module now uses the *venv* scheme to create new virtual environments | |
| instead of hardcoding the paths depending only on the platform. Downstream | |
| Python distributors customizing the *posix_prefix* or *nt* install scheme | |
| in a way that is not compatible with the install scheme used in virtual | |
| environments are encouraged not to customize the *venv* schemes. When | |
| Python itself runs in a virtual environment, | |
| :func:`sysconfig.get_default_scheme` and | |
| :func:`sysconfig.get_preferred_scheme` with ``key="prefix"`` returns | |
| *venv*. | |
| - bpo-43224: Implement support for PEP 646 in typing.py. | |
| - bpo-43224: Allow unpacking types.GenericAlias objects, e.g. ``*tuple[int, | |
| str]``. | |
| - bpo-46557: Warnings captured by the logging module are now logged without | |
| a format string to prevent systems that group logs by the msg argument | |
| from grouping captured warnings together. | |
| - bpo-41370: :func:`typing.get_type_hints` now supports evaluating strings | |
| as forward references in :ref:`PEP 585 generic aliases | |
| <types-genericalias>`. | |
| - bpo-46607: Add :exc:`DeprecationWarning` to :class:`LegacyInterpolation`, | |
| deprecated in the docstring since Python 3.2. Will be removed in Python | |
| 3.13. Use :class:`BasicInterpolation` or :class:`ExtendedInterpolation` | |
| instead. | |
| - bpo-26120: :mod:`pydoc` now excludes __future__ imports from the module's | |
| data items. | |
| - bpo-46480: Add :func:`typing.assert_type`. Patch by Jelle Zijlstra. | |
| - bpo-46421: Fix a unittest issue where if the command was invoked as | |
| ``python -m unittest`` and the filename(s) began with a dot (.), a | |
| ``ValueError`` is returned. | |
| - bpo-46245: Add optional parameter *dir_fd* in :func:`shutil.rmtree`. | |
| - bpo-22859: :meth:`~unittest.TestProgram.usageExit` is marked deprecated, | |
| to be removed in 3.13. | |
| - bpo-46170: Improve the error message when you try to subclass an instance | |
| of :class:`typing.NewType`. | |
| - bpo-40296: Fix supporting generic aliases in :mod:`pydoc`. | |
| - bpo-20392: Fix inconsistency with uppercase file extensions in | |
| :meth:`MimeTypes.guess_type`. Patch by Kumar Aditya. | |
| - bpo-46030: Add ``LOCAL_CREDS``, ``LOCAL_CREDS_PERSISTENT`` and | |
| ``SCM_CREDS2`` FreeBSD constants to the socket module. | |
| - bpo-44439: Fix ``.write()`` method of a member file in ``ZipFile``, when | |
| the input data is an object that supports the buffer protocol, the file | |
| length may be wrong. | |
| - bpo-45171: Fix handling of the ``stacklevel`` argument to logging | |
| functions in the :mod:`logging` module so that it is consistent across all | |
| logging functions and, as advertised, similar to the ``stacklevel`` | |
| argument used in :meth:`~warnings.warn`. | |
| - bpo-24959: Fix bug where :mod:`unittest` sometimes drops frames from | |
| tracebacks of exceptions raised in tests. | |
| - bpo-44859: Raise more accurate and :pep:`249` compatible exceptions in | |
| :mod:`sqlite3`. | |
| * Raise :exc:`~sqlite3.InterfaceError` instead of | |
| :exc:`~sqlite3.ProgrammingError` for ``SQLITE_MISUSE`` errors. | |
| * Don't overwrite :exc:`BufferError` with :exc:`ValueError` when conversion to | |
| BLOB fails. | |
| * Raise :exc:`~sqlite3.ProgrammingError` instead of :exc:`~sqlite3.Warning` if | |
| user tries to :meth:`~sqlite3.Cursor.execute()` more than one SQL statement. | |
| * Raise :exc:`~sqlite3.ProgrammingError` instead of :exc:`ValueError` if an SQL | |
| query contains null characters. | |
| - bpo-44493: Add missing terminated NUL in sockaddr_un's length | |
| This was potentially observable when using non-abstract AF_UNIX datagram | |
| sockets to processes written in another programming language. | |
| - bpo-41930: Add :meth:`~sqlite3.Connection.serialize` and | |
| :meth:`~sqlite3.Connection.deserialize` support to :mod:`sqlite3`. Patch | |
| by Erlend E. Aasland. | |
| - bpo-33178: Added :class:`ctypes.BigEndianUnion` and | |
| :class:`ctypes.LittleEndianUnion` classes, as originally documented in the | |
| library docs but not yet implemented. | |
| - bpo-43352: Add an Barrier object in synchronization primitives of | |
| *asyncio* Lib in order to be consistant with Barrier from *threading* and | |
| *multiprocessing* libs* | |
| - bpo-35859: :mod:`re` module, fix a few bugs about capturing group. In rare | |
| cases, capturing group gets an incorrect string. Patch by Ma Lin. | |
| Documentation | |
| ------------- | |
| - bpo-45099: Document internal :mod:`asyncio` API. | |
| - bpo-47126: Update PEP URLs to :pep:`676`'s new canonical form. | |
| - bpo-47040: Clarified the old Python versions compatiblity note of | |
| :func:`binascii.crc32` / :func:`zlib.adler32` / :func:`zlib.crc32` | |
| functions. | |
| - bpo-46033: Clarify ``for`` statement execution in its doc. | |
| - bpo-45790: Adjust inaccurate phrasing in | |
| :doc:`../extending/newtypes_tutorial` about the ``ob_base`` field and the | |
| macros used to access its contents. | |
| - bpo-42340: Document that in some circumstances :exc:`KeyboardInterrupt` | |
| may cause the code to enter an inconsistent state. Provided a sample | |
| workaround to avoid it if needed. | |
| - bpo-41233: Link the errnos referenced in ``Doc/library/exceptions.rst`` to | |
| their respective section in ``Doc/library/errno.rst``, and vice versa. | |
| Previously this was only done for EINTR and InterruptedError. Patch by Yan | |
| "yyyyyyyan" Orestes. | |
| Tests | |
| ----- | |
| - bpo-47205: Skip test for :func:`~os.sched_getaffinity` and | |
| :func:`~os.sched_setaffinity` error case on FreeBSD. | |
| - bpo-46126: Restore 'descriptions' when running tests internally. | |
| - bpo-47104: Rewrite :func:`asyncio.to_thread` tests to use | |
| :class:`unittest.IsolatedAsyncioTestCase`. | |
| - bpo-40280: The test suite is now passing on the Emscripten platform. All | |
| fork, socket, and subprocess-based tests are skipped. | |
| - bpo-47037: Skip ``strftime("%4Y")`` feature test on Windows. It can cause | |
| an assertion error in debug builds. | |
| - bpo-46587: Skip tests if platform's ``strftime`` does not support | |
| non-portable glibc extensions. | |
| - bpo-47015: A test case for :func:`os.sendfile` is converted from | |
| deprecated :mod:`asyncore` (see :pep:`594`) to :mod:`asyncio`. Patch by | |
| Oleg Iarygin. | |
| Build | |
| ----- | |
| - bpo-40280: Add configure option :option:`--enable-wasm-dynamic-linking` to | |
| enable ``dlopen`` and MAIN_MODULE / SIDE_MODULE on ``wasm32-emscripten``. | |
| - bpo-46023: ``makesetup`` now detects and skips all duplicated module | |
| definitions. The first entry wins. | |
| - bpo-40280: Add SOABI ``wasm32-emscripten`` for Emscripten and | |
| ``wasm32-wasi`` for WASI on 32bit WASM as well as ``wasm64`` counter | |
| parts. | |
| - bpo-47032: Ensure Windows install builds fail correctly with a non-zero | |
| exit code when part of the build fails. | |
| - bpo-47024: Update OpenSSL to 1.1.1n for macOS installers and all Windows | |
| builds. | |
| - bpo-46996: The :mod:`tkinter` package now requires Tcl/Tk version 8.5.12 | |
| or newer. | |
| - bpo-46973: Add ``regen-configure`` make target to regenerate configure | |
| script with Christian's container image | |
| ``quay.io/tiran/cpython_autoconf:269``. | |
| - bpo-46917: Building Python now requires support of IEEE 754 floating point | |
| numbers. Patch by Victor Stinner. | |
| - bpo-45774: ``configure`` now verifies that all SQLite C APIs needed for | |
| the :mod:`sqlite3` extension module are found. | |
| Windows | |
| ------- | |
| - bpo-47194: Update ``zlib`` to v1.2.12 to resolve CVE-2018-25032. | |
| - bpo-47171: Enables installing the :file:`py.exe` launcher on Windows | |
| ARM64. | |
| - bpo-46566: Upgraded :ref:`launcher` to support a new ``-V:company/tag`` | |
| argument for full :pep:`514` support and to detect ARM64 installs. The | |
| ``-64`` suffix on arguments is deprecated, but still selects any | |
| non-32-bit install. Setting :envvar:`PYLAUNCHER_ALLOW_INSTALL` and | |
| specifying a version that is not installed will attempt to install the | |
| requested version from the Microsoft Store. | |
| - bpo-47086: The installer for Windows now includes documentation as loose | |
| HTML files rather than a single compiled :file:`.chm` file. | |
| - bpo-46907: Update Windows installer to use SQLite 3.38.1. | |
| - bpo-44549: Update bzip2 to 1.0.8 in Windows builds to mitigate | |
| CVE-2016-3189 and CVE-2019-12900 | |
| - bpo-46948: Prevent CVE-2022-26488 by ensuring the Add to PATH option in | |
| the Windows installer uses the correct path when being repaired. | |
| macOS | |
| ----- | |
| - bpo-46890: Fix a regression in the setting of ``sys._base_executable`` in | |
| framework builds, and thereby fix a regression in :mod:`venv` virtual | |
| environments with such builds. | |
| - bpo-46907: Update macOS installer to SQLite 3.38.1. | |
| Tools/Demos | |
| ----------- | |
| - bpo-40280: Replace Emscripten's limited shell with Katie Bell's browser-ui | |
| REPL from python-wasm project. | |
| C API | |
| ----- | |
| - bpo-40421: Add ``PyFrame_GetBuiltins``, ``PyFrame_GetGenerator`` and | |
| ``PyFrame_GetGlobals`` C-API functions to access frame object attributes | |
| safely from C code. | |
| - bpo-46850: Move the private ``_PyFrameEvalFunction`` type, and private | |
| ``_PyInterpreterState_GetEvalFrameFunc()`` and | |
| ``_PyInterpreterState_SetEvalFrameFunc()`` functions to the internal C | |
| API. The ``_PyFrameEvalFunction`` callback function type now uses the | |
| ``_PyInterpreterFrame`` type which is part of the internal C API. Patch by | |
| Victor Stinner. | |
| - bpo-46850: Move the private undocumented ``_PyEval_EvalFrameDefault()`` | |
| function to the internal C API. The function now uses the | |
| ``_PyInterpreterFrame`` type which is part of the internal C API. Patch by | |
| Victor Stinner. | |
| - bpo-46850: Remove the private undocumented function | |
| ``_PyEval_CallTracing()`` from the C API. Call the public | |
| :func:`sys.call_tracing` function instead. Patch by Victor Stinner. | |
| - bpo-46850: Remove the private undocumented function | |
| ``_PyEval_GetCoroutineOriginTrackingDepth()`` from the C API. Call the | |
| public :func:`sys.get_coroutine_origin_tracking_depth` function instead. | |
| Patch by Victor Stinner. | |
| - bpo-46850: Remove the following private undocumented functions from the C | |
| API: | |
| * ``_PyEval_GetAsyncGenFirstiter()`` | |
| * ``_PyEval_GetAsyncGenFinalizer()`` | |
| * ``_PyEval_SetAsyncGenFirstiter()`` | |
| * ``_PyEval_SetAsyncGenFinalizer()`` | |
| Call the public :func:`sys.get_asyncgen_hooks` and | |
| :func:`sys.set_asyncgen_hooks` functions instead. Patch by Victor Stinner. | |
| - bpo-46987: Remove private functions ``_PySys_GetObjectId()`` and | |
| ``_PySys_SetObjectId()``. Patch by Dong-hee Na. | |
| - bpo-46906: Add new functions to pack and unpack C double (serialize and | |
| deserialize): :c:func:`PyFloat_Pack2`, :c:func:`PyFloat_Pack4`, | |
| :c:func:`PyFloat_Pack8`, :c:func:`PyFloat_Unpack2`, | |
| :c:func:`PyFloat_Unpack4` and :c:func:`PyFloat_Unpack8`. Patch by Victor | |
| Stinner. | |
| What's New in Python 3.11.0 alpha 6? | |
| ==================================== | |
| *Release date: 2022-03-07* | |
| Core and Builtins | |
| ----------------- | |
| - bpo-46940: Avoid overriding :exc:`AttributeError` metadata information for | |
| nested attribute access calls. Patch by Pablo Galindo. | |
| - bpo-46927: Include the type's name in the error message for subscripting | |
| non-generic types. | |
| - bpo-46921: Support vectorcall for ``super()``. Patch by Ken Jin. | |
| - bpo-46841: Fix incorrect handling of inline cache entries when | |
| specializing :opcode:`BINARY_OP`. | |
| - bpo-46841: Use an oparg to simplify the construction of helpful error | |
| messages in :opcode:`GET_AWAITABLE`. | |
| - bpo-46903: Make sure that str subclasses can be used as attribute names | |
| for instances with virtual dictionaries. Fixes regression in 3.11alpha | |
| - bpo-46841: Add more detailed specialization failure stats for | |
| :opcode:`COMPARE_OP` followed by :opcode:`EXTENDED_ARG`. | |
| - bpo-46891: Fix bug introduced during 3.11alpha where subclasses of | |
| ``types.ModuleType`` with ``__slots__`` were not initialized correctly, | |
| resulting in an interpreter crash. | |
| - bpo-46841: Use inline caching for :opcode:`LOAD_ATTR`, | |
| :opcode:`LOAD_METHOD`, and :opcode:`STORE_ATTR`. | |
| - bpo-46841: Use inline cache for :opcode:`BINARY_SUBSCR`. | |
| - bpo-46841: Use inline caching for :opcode:`COMPARE_OP`. | |
| - bpo-46864: Deprecate ``PyBytesObject.ob_shash``. It will be removed in | |
| Python 3.13. | |
| - bpo-46841: Use inline caching for :opcode:`UNPACK_SEQUENCE`. | |
| - bpo-46845: Reduces dict size by removing hash value from hash table when | |
| all inserted keys are Unicode. For example, | |
| ``sys.getsizeof(dict.fromkeys("abcdefg"))`` becomes 272 bytes from 352 | |
| bytes on 64bit platform. | |
| - bpo-46841: Use inline cache for :opcode:`LOAD_GLOBAL`. | |
| - bpo-46852: Rename the private undocumented ``float.__set_format__()`` | |
| method to ``float.__setformat__()`` to fix a typo introduced in Python | |
| 3.7. The method is only used by test_float. Patch by Victor Stinner. | |
| - bpo-46852: Remove the undocumented private ``float.__set_format__()`` | |
| method, previously known as ``float.__setformat__()`` in Python 3.7. Its | |
| docstring said: "You probably don't want to use this function. It exists | |
| mainly to be used in Python's test suite." Patch by Victor Stinner. | |
| - bpo-40116: Fix regression that dict.update(other) may don't respect | |
| iterate order of other when other is key sharing dict. | |
| - bpo-46712: Share global string identifiers in deep-frozen modules. | |
| - bpo-46430: Fix memory leak in interned strings of deep-frozen modules. | |
| - bpo-46841: Store :opcode:`BINARY_OP` caches inline using a new | |
| :opcode:`CACHE` instruction. | |
| - bpo-45107: Specialize ``LOAD_METHOD`` for instances with a dict. | |
| - bpo-44337: Reduce the memory usage of specialized :opcode:`LOAD_ATTR` and | |
| :opcode:`STORE_ATTR` instructions. | |
| - bpo-46729: Add number of sub-exceptions to :meth:`BaseException.__str__`. | |
| - bpo-45885: Don't un-adapt :opcode:`COMPARE_OP` when collecting | |
| specialization stats. | |
| - bpo-46329: Fix specialization stats gathering for :opcode:`PRECALL` | |
| instructions. | |
| - bpo-46794: Bump up the libexpat version into 2.4.6 | |
| - bpo-46823: Implement a specialized combined opcode | |
| ``LOAD_FAST__LOAD_ATTR_INSTANCE_VALUE``. Patch by Dennis Sweeney. | |
| - bpo-46820: Fix parsing a numeric literal immediately (without spaces) | |
| followed by "not in" keywords, like in ``1not in x``. Now the parser only | |
| emits a warning, not a syntax error. | |
| - bpo-46329: Move ``KW_NAMES`` before ``PRECALL`` instruction in call | |
| sequence. Change ``operand`` of ``CALL`` to match ``PRECALL`` for easier | |
| specialization. | |
| - bpo-46808: Remove the ``NEXT_BLOCK`` macro from compile.c, and make the | |
| compiler automatically generate implicit blocks when they are needed. | |
| - bpo-46329: Add ``PUSH_NULL`` instruction. This is used as a prefix when | |
| evaluating a callable, so that the stack has the same shape for methods | |
| and other calls. ``PRECALL_FUNCTION`` and ``PRECALL_METHOD`` are merged | |
| into a single ``PRECALL`` instruction. | |
| There is no change in semantics. | |
| - bpo-46762: Fix an assert failure in debug builds when a '<', '>', or '=' | |
| is the last character in an f-string that's missing a closing right brace. | |
| - bpo-46730: Message of AttributeError caused by getting, setting or | |
| deleting a property without the corresponding function now mentions that | |
| the attribute is in fact a property and also specifies type of the class | |
| that it belongs to. | |
| - bpo-46724: Make sure that all backwards jumps use the ``JUMP_ABSOLUTE`` | |
| instruction, rather than ``JUMP_FORWARD`` with an argument of | |
| ``(2**32)+offset``. | |
| - bpo-46732: Correct the docstring for the :meth:`__bool__` method. Patch by | |
| Jelle Zijlstra. | |
| - bpo-46072: Add more detailed specialization failure statistics for | |
| :opcode:`BINARY_OP`. | |
| - bpo-46707: Avoid potential exponential backtracking when producing some | |
| syntax errors involving lots of brackets. Patch by Pablo Galindo. | |
| - bpo-46323: :mod:`ctypes` now allocates memory on the stack instead of on | |
| the heap to pass arguments while calling a Python callback function. Patch | |
| by Dong-hee Na. | |
| - bpo-45923: Add a quickened form of :opcode:`RESUME` that skips quickening | |
| checks. | |
| - bpo-46702: Specialize :opcode:`UNPACK_SEQUENCE` for :class:`tuple` and | |
| :class:`list` unpackings. | |
| - bpo-46072: Opcode pair stats are now gathered with ``--enable-pystats``. | |
| Defining ``DYNAMIC_EXECUTION_PROFILE`` or ``DXPAIRS`` no longer has any | |
| effect. | |
| - bpo-46675: Allow more than 16 items in a split dict before it is combined. | |
| The limit is now 254. | |
| - bpo-40479: Add a missing call to ``va_end()`` in | |
| ``Modules/_hashopenssl.c``. | |
| - bpo-46323: Use :c:func:`PyObject_Vectorcall` while calling ctypes callback | |
| function. Patch by Dong-hee Na. | |
| - bpo-46615: When iterating over sets internally in ``setobject.c``, acquire | |
| strong references to the resulting items from the set. This prevents | |
| crashes in corner-cases of various set operations where the set gets | |
| mutated. | |
| - bpo-45828: The bytecode compiler now attempts to apply runtime stack | |
| manipulations at compile-time (whenever it is feasible to do so). | |
| - bpo-30496: Fixed a minor portability issue in the implementation of | |
| :c:func:`PyLong_FromLong`, and added a fast path for single-digit integers | |
| to :c:func:`PyLong_FromLongLong`. | |
| Library | |
| ------- | |
| - bpo-25707: Fixed a file leak in :func:`xml.etree.ElementTree.iterparse` | |
| when the iterator is not exhausted. Patch by Jacob Walls. | |
| - bpo-46877: Export :func:`unittest.doModuleCleanups` in :mod:`unittest`. | |
| Patch by Kumar Aditya. | |
| - bpo-46848: For performance, use the optimized string-searching | |
| implementations from :meth:`~bytes.find` and :meth:`~bytes.rfind` for | |
| :meth:`~mmap.find` and :meth:`~mmap.rfind`. | |
| - bpo-46736: :class:`~http.server.SimpleHTTPRequestHandler` now uses HTML5 | |
| grammar. Patch by Dong-hee Na. | |
| - bpo-44886: Inherit asyncio proactor datagram transport from | |
| :class:`asyncio.DatagramTransport`. | |
| - bpo-46827: Support UDP sockets in :meth:`asyncio.loop.sock_connect` for | |
| selector-based event loops. Patch by Thomas Grainger. | |
| - bpo-46811: Make test suite support Expat >=2.4.5 | |
| - bpo-46252: Raise :exc:`TypeError` if :class:`ssl.SSLSocket` is passed to | |
| transport-based APIs. | |
| - bpo-46784: Fix libexpat symbols collisions with user dynamically loaded or | |
| statically linked libexpat in embedded Python. | |
| - bpo-46786: The HTML serialisation in xml.etree.ElementTree now writes | |
| ``embed``, ``source``, ``track`` and ``wbr`` as empty tags, as defined in | |
| HTML 5. | |
| - bpo-39327: :func:`shutil.rmtree` can now work with VirtualBox shared | |
| folders when running from the guest operating-system. | |
| - bpo-45390: Propagate :exc:`asyncio.CancelledError` message from inner task | |
| to outer awaiter. | |
| - bpo-46756: Fix a bug in | |
| :meth:`urllib.request.HTTPPasswordMgr.find_user_password` and | |
| :meth:`urllib.request.HTTPPasswordMgrWithPriorAuth.is_authenticated` which | |
| allowed to bypass authorization. For example, access to URI | |
| ``example.org/foobar`` was allowed if the user was authorized for URI | |
| ``example.org/foo``. | |
| - bpo-46737: :func:`random.gauss` and :func:`random.normalvariate` now have | |
| default arguments. | |
| - bpo-46752: Add task groups to asyncio (structured concurrency, inspired by | |
| Trio's nurseries). This also introduces a change to task cancellation, | |
| where a cancelled task can't be cancelled again until it calls | |
| .uncancel(). | |
| - bpo-46724: Fix :mod:`dis` behavior on negative jump offsets. | |
| - bpo-46333: The :meth:`__repr__` method of :class:`typing.ForwardRef` now | |
| includes the ``module`` parameter of :class:`typing.ForwardRef` when it is | |
| set. | |
| - bpo-46643: In :func:`typing.get_type_hints`, support evaluating | |
| stringified ``ParamSpecArgs`` and ``ParamSpecKwargs`` annotations. Patch | |
| by Gregory Beauregard. | |
| - bpo-45863: When the :mod:`tarfile` module creates a pax format archive, it | |
| will put an integer representation of timestamps in the ustar header (if | |
| possible) for the benefit of older unarchivers, in addition to the | |
| existing full-precision timestamps in the pax extended header. | |
| - bpo-46066: Deprecate kwargs-based syntax for :class:`typing.TypedDict` | |
| definitions. It had confusing semantics when specifying totality, and was | |
| largely unused. Patch by Jingchen Ye. | |
| - bpo-46676: Make :data:`typing.ParamSpec` args and kwargs equal to | |
| themselves. Patch by Gregory Beauregard. | |
| - bpo-46323: ``ctypes.CFUNCTYPE()`` and ``ctypes.WINFUNCTYPE()`` now fail to | |
| create the type if its ``_argtypes_`` member contains too many arguments. | |
| Previously, the error was only raised when calling a function. Patch by | |
| Victor Stinner. | |
| - bpo-46672: Fix ``NameError`` in :func:`asyncio.gather` when initial type | |
| check fails. | |
| - bpo-46659: The :class:`calendar.LocaleTextCalendar` and | |
| :class:`calendar.LocaleHTMLCalendar` classes now use | |
| :func:`locale.getlocale`, instead of using | |
| :func:`locale.getdefaultlocale`, if no locale is specified. Patch by | |
| Victor Stinner. | |
| - bpo-46659: The :func:`locale.getdefaultlocale` function is deprecated and | |
| will be removed in Python 3.13. Use :func:`locale.setlocale`, | |
| :func:`locale.getpreferredencoding(False) <locale.getpreferredencoding>` | |
| and :func:`locale.getlocale` functions instead. Patch by Victor Stinner. | |
| - bpo-46655: In :func:`typing.get_type_hints`, support evaluating bare | |
| stringified ``TypeAlias`` annotations. Patch by Gregory Beauregard. | |
| - bpo-45948: Fixed a discrepancy in the C implementation of the | |
| :mod:`xml.etree.ElementTree` module. Now, instantiating an | |
| :class:`xml.etree.ElementTree.XMLParser` with a ``target=None`` keyword | |
| provides a default :class:`xml.etree.ElementTree.TreeBuilder` target as | |
| the Python implementation does. | |
| - bpo-46626: Expose Linux's ``IP_BIND_ADDRESS_NO_PORT`` option in | |
| :mod:`socket`. | |
| - bpo-46521: Fix a bug in the :mod:`codeop` module that was incorrectly | |
| identifying invalid code involving string quotes as valid code. | |
| - bpo-46571: Improve :func:`typing.no_type_check`. | |
| Now it does not modify external classes and functions. We also now | |
| correctly mark classmethods as not to be type checked. | |
| - bpo-46400: expat: Update libexpat from 2.4.1 to 2.4.4 | |
| - bpo-46556: Deprecate undocumented support for using a | |
| :class:`pathlib.Path` object as a context manager. | |
| - bpo-46534: Implement :pep:`673` :class:`typing.Self`. Patch by James | |
| Hilton-Balfe. | |
| - bpo-46522: Make various module ``__getattr__`` AttributeErrors more | |
| closely match a typical AttributeError | |
| - bpo-46475: Add :data:`typing.Never` and :func:`typing.assert_never`. Patch | |
| by Jelle Zijlstra. | |
| - bpo-46333: The :meth:`__eq__` and :meth:`__hash__` methods of | |
| :class:`typing.ForwardRef` now honor the ``module`` parameter of | |
| :class:`typing.ForwardRef`. Forward references from different modules are | |
| now differentiated. | |
| - bpo-46246: Add missing ``__slots__`` to | |
| ``importlib.metadata.DeprecatedList``. Patch by Arie Bovenberg. | |
| - bpo-46232: The :mod:`ssl` module now handles certificates with bit strings | |
| in DN correctly. | |
| - bpo-46195: :func:`typing.get_type_hints` no longer adds ``Optional`` to | |
| parameters with ``None`` as a default. This aligns to changes to PEP 484 | |
| in https://github.com/python/peps/pull/689 | |
| - bpo-31369: Add :class:`~re.RegexFlag` to ``re.__all__`` and documented it. | |
| Add :data:`~re.RegexFlag.NOFLAG` to indicate no flags being set. | |
| - bpo-45898: :mod:`ctypes` no longer defines ``ffi_type_*`` symbols in | |
| ``cfield.c``. The symbols have been provided by libffi for over a decade. | |
| - bpo-44953: Calling ``operator.itemgetter`` objects and | |
| ``operator.attrgetter`` objects is now faster due to use of the vectorcall | |
| calling convention. | |
| - bpo-44289: Fix an issue with :meth:`~tarfile.is_tarfile` method when using | |
| *fileobj* argument: position in the *fileobj* was advanced forward which | |
| made it unreadable with :meth:`tarfile.TarFile.open`. | |
| - bpo-44011: Reimplement SSL/TLS support in asyncio, borrow the | |
| implementation from uvloop library. | |
| - bpo-41086: Make the :class:`configparser.ConfigParser` constructor raise | |
| :exc:`TypeError` if the ``interpolation`` parameter is not of type | |
| :class:`configparser.Interpolation` | |
| - bpo-29418: Implement :func:`inspect.ismethodwrapper` and fix | |
| :func:`inspect.isroutine` for cases where methodwrapper is given. Patch by | |
| Hakan Çelik. | |
| - bpo-14156: argparse.FileType now supports an argument of '-' in binary | |
| mode, returning the .buffer attribute of sys.stdin/sys.stdout as | |
| appropriate. Modes including 'x' and 'a' are treated equivalently to 'w' | |
| when argument is '-'. Patch contributed by Josh Rosenberg | |
| Documentation | |
| ------------- | |
| - bpo-42238: ``Doc/tools/rstlint.py`` has moved to its own repository and is | |
| now packaged on PyPI as ``sphinx-lint``. | |
| Tests | |
| ----- | |
| - bpo-46913: Fix test_faulthandler.test_sigfpe() if Python is built with | |
| undefined behavior sanitizer (UBSAN): disable UBSAN on the | |
| faulthandler_sigfpe() function. Patch by Victor Stinner. | |
| - bpo-46760: Remove bytecode offsets from expected values in test.test_dis | |
| module. Reduces the obstacles to modifying the VM or compiler. | |
| - bpo-46708: Prevent default asyncio event loop policy modification warning | |
| after ``test_asyncio`` execution. | |
| - bpo-46678: The function ``make_legacy_pyc`` in | |
| ``Lib/test/support/import_helper.py`` no longer fails when | |
| ``PYTHONPYCACHEPREFIX`` is set to a directory on a different device from | |
| where tempfiles are stored. | |
| - bpo-46623: Skip test_pair() and test_speech128() of test_zlib on s390x | |
| since they fail if zlib uses the s390x hardware accelerator. Patch by | |
| Victor Stinner. | |
| Build | |
| ----- | |
| - bpo-46860: Respect `--with-suffix` when building on case-insensitive file | |
| systems. | |
| - bpo-46656: Building Python now requires a C11 compiler. Optional C11 | |
| features are not required. Patch by Victor Stinner. | |
| - bpo-46656: Building Python now requires support for floating point | |
| Not-a-Number (NaN): remove the ``Py_NO_NAN`` macro. Patch by Victor | |
| Stinner. | |
| - bpo-46640: Building Python now requires a C99 ``<math.h>`` header file | |
| providing a ``NAN`` constant, or the ``__builtin_nan()`` built-in | |
| function. Patch by Victor Stinner. | |
| - bpo-46608: Exclude marshalled-frozen data if deep-freezing to save 300 KB | |
| disk space. This includes adding a new ``is_package`` field to | |
| :c:struct:`_frozen`. Patch by Kumar Aditya. | |
| - bpo-40280: Fix wasm32-emscripten test failures and platform issues. - | |
| Disable syscalls that are not supported or don't work, e.g. wait, | |
| getrusage, prlimit, mkfifo, mknod, setres[gu]id, setgroups. - Use fd_count | |
| to cound open fds. - Add more checks for subprocess and fork. - Add | |
| workarounds for missing _multiprocessing and failing socket.accept(). - | |
| Enable bzip2. - Disable large file support. - Disable signal.alarm. | |
| - bpo-46430: Intern strings in deep-frozen modules. Patch by Kumar Aditya. | |
| Windows | |
| ------- | |
| - bpo-46744: The default all users install directory for ARM64 is now under | |
| the native ``Program Files`` folder, rather than ``Program Files (Arm)`` | |
| which is intended for ARM (32-bit) files. | |
| - bpo-46567: Adds Tcl and Tk support for Windows ARM64. This also adds IDLE | |
| to the installation. | |
| - bpo-46638: Ensures registry virtualization is consistently disabled. For | |
| 3.10 and earlier, it remains enabled (some registry writes are protected), | |
| while for 3.11 and later it is disabled (registry modifications affect all | |
| applications). | |
| IDLE | |
| ---- | |
| - bpo-46630: Make query dialogs on Windows start with a cursor in the entry | |
| box. | |
| - bpo-45447: Apply IDLE syntax highlighting to `.pyi` files. Patch by Alex | |
| Waygood and Terry Jan Reedy. | |
| C API | |
| ----- | |
| - bpo-46748: Python's public headers no longer import ``<stdbool.h>``, | |
| leaving code that embedd/extends Python free to define ``bool``, ``true`` | |
| and ``false``. | |
| - bpo-46836: Move the :c:type:`PyFrameObject` type definition (``struct | |
| _frame``) to the internal C API ``pycore_frame.h`` header file. Patch by | |
| Victor Stinner. | |
| - bpo-45459: Rename ``Include/buffer.h`` header file to | |
| ``Include/pybuffer.h`` to avoid conflits with projects having an existing | |
| ``buffer.h`` header file. Patch by Victor Stinner. | |
| - bpo-45412: Remove the ``HAVE_PY_SET_53BIT_PRECISION`` macro (moved to the | |
| internal C API). Patch by Victor Stinner. | |
| - bpo-46613: Added function :c:func:`PyType_GetModuleByDef`, which allows | |
| accesss to module state when a method's defining class is not available. | |
| What's New in Python 3.11.0 alpha 5? | |
| ==================================== | |
| *Release date: 2022-02-03* | |
| Core and Builtins | |
| ----------------- | |
| - bpo-45773: Remove two invalid "peephole" optimizations from the bytecode | |
| compiler. | |
| - bpo-46564: Do not create frame objects when creating :class:`super` | |
| object. Patch by Kumar Aditya. | |
| - bpo-45885: Added more fined-grained specialization failure stats regarding | |
| the ``COMPARE_OP`` bytecode. | |
| - bpo-44977: The delegation of :func:`int` to :meth:`__trunc__` is now | |
| deprecated. Calling ``int(a)`` when ``type(a)`` implements | |
| :meth:`__trunc__` but not :meth:`__int__` or :meth:`__index__` now raises | |
| a :exc:`DeprecationWarning`. | |
| - bpo-46458: Reorder code emitted by the compiler for a | |
| :keyword:`try`-:keyword:`except` block so that the :keyword:`else` block's | |
| code immediately follows the :keyword:`try` body (without a jump). This is | |
| more optimal for the happy path. | |
| - bpo-46527: Allow passing ``iterable`` as a keyword argument to | |
| :func:`enumerate` again. Patch by Jelle Zijlstra. | |
| - bpo-46528: Replace several stack manipulation instructions (``DUP_TOP``, | |
| ``DUP_TOP_TWO``, ``ROT_TWO``, ``ROT_THREE``, ``ROT_FOUR``, and ``ROT_N``) | |
| with new :opcode:`COPY` and :opcode:`SWAP` instructions. | |
| - bpo-46329: Use two or three bytecodes to implement most calls. | |
| Calls without named arguments are implemented as a sequence of two | |
| instructions: ``PRECALL; CALL``. Calls with named arguments are | |
| implemented as a sequence of three instructions: ``PRECALL; KW_NAMES; | |
| CALL``. There are two different ``PRECALL`` instructions: | |
| ``PRECALL_FUNTION`` and ``PRECALL_METHOD``. The latter pairs with | |
| ``LOAD_METHOD``. | |
| This partition into pre-call and call allows better specialization, and | |
| thus better performance ultimately. | |
| There is no change in semantics. | |
| - bpo-46503: Fix an assert when parsing some invalid \N escape sequences in | |
| f-strings. | |
| - bpo-46431: Improve error message on invalid calls to | |
| :meth:`BaseExceptionGroup.__new__`. | |
| - bpo-46476: Fix memory leak in code objects generated by deepfreeze. Patch | |
| by Kumar Aditya. | |
| - bpo-46481: Speed up calls to :meth:`weakref.ref.__call__` by using the | |
| :pep:`590` ``vectorcall`` calling convention. Patch by Dong-hee Na. | |
| - bpo-46417: Fix a race condition on setting a type ``__bases__`` attribute: | |
| the internal function ``add_subclass()`` now gets the | |
| ``PyTypeObject.tp_subclasses`` member after calling | |
| :c:func:`PyWeakref_NewRef` which can trigger a garbage collection which | |
| can indirectly modify ``PyTypeObject.tp_subclasses``. Patch by Victor | |
| Stinner. | |
| - bpo-46417: ``python -X showrefcount`` now shows the total reference count | |
| after clearing and destroyed the main Python interpreter. Previously, it | |
| was shown before. Patch by Victor Stinner. | |
| - bpo-43683: Add ASYNC_GEN_WRAP opcode to wrap the value to be yielded in | |
| async generators. Removes the need to special case async generators in the | |
| ``YIELD_VALUE`` instruction. | |
| - bpo-46407: Optimize some modulo operations in ``Objects/longobject.c``. | |
| Patch by Jeremiah Vivian. | |
| - bpo-46409: Add new ``RETURN_GENERATOR`` bytecode to make generators. | |
| Simplifies calling Python functions in the VM, as they no longer any need | |
| to special case generator functions. | |
| Also add ``JUMP_NO_INTERRUPT`` bytecode that acts like ``JUMP_ABSOLUTE``, | |
| but does not check for interrupts. | |
| - bpo-46406: The integer division ``//`` implementation has been optimized | |
| to better let the compiler understand its constraints. It can be 20% | |
| faster on the amd64 platform when dividing an int by a value smaller than | |
| ``2**30``. | |
| - bpo-46383: Fix invalid signature of ``_zoneinfo``'s ``module_free`` | |
| function to resolve a crash on wasm32-emscripten platform. | |
| - bpo-46361: Ensure that "small" integers created by :meth:`int.from_bytes` | |
| and :class:`decimal.Decimal` are properly cached. | |
| - bpo-46161: Fix the class building error when the arguments are constants | |
| and CALL_FUNCTION_EX is used. | |
| - bpo-46028: Fixes calculation of :data:`sys._base_executable` when inside a | |
| virtual environment that uses symlinks with different binary names than | |
| the base environment provides. | |
| - bpo-46091: Correctly calculate indentation levels for lines with | |
| whitespace character that are ended by line continuation characters. Patch | |
| by Pablo Galindo | |
| - bpo-30512: Add CAN Socket support for NetBSD. | |
| - bpo-46045: Do not use POSIX semaphores on NetBSD | |
| - bpo-44024: Improve the exc:`TypeError` message for non-string second | |
| arguments passed to the built-in functions :func:`getattr` and | |
| :func:`hasattr`. Patch by Géry Ogam. | |
| Library | |
| ------- | |
| - bpo-46624: Restore support for non-integer arguments of | |
| :func:`random.randrange` and :func:`random.randint`. | |
| - bpo-46591: Make the IDLE doc URL on the About IDLE dialog clickable. | |
| - bpo-46565: Remove loop variables that are leaking into modules' | |
| namespaces. | |
| - bpo-46553: In :func:`typing.get_type_hints`, support evaluating bare | |
| stringified ``ClassVar`` annotations. Patch by Gregory Beauregard. | |
| - bpo-46544: Don't leak ``x`` & ``uspace`` intermediate vars in | |
| :class:`textwrap.TextWrapper`. | |
| - bpo-46487: Add the ``get_write_buffer_limits`` method to | |
| :class:`asyncio.transports.WriteTransport` and to the SSL transport. | |
| - bpo-45173: Note the configparser deprecations will be removed in Python | |
| 3.12. | |
| - bpo-45162: The deprecated :mod:`unittest` APIs removed in 3.11a1 have been | |
| temporarily restored to be removed in 3.12 while cleanups in external | |
| projects go in. | |
| - bpo-46539: In :func:`typing.get_type_hints`, support evaluating | |
| stringified ``ClassVar`` and ``Final`` annotations inside ``Annotated``. | |
| Patch by Gregory Beauregard. | |
| - bpo-46510: Add missing test for :class:`types.TracebackType` and | |
| :class:`types.FrameType`. Calculate them directly from the caught | |
| exception without calling :func:`sys.exc_info`. | |
| - bpo-46491: Allow :data:`typing.Annotated` to wrap :data:`typing.Final` and | |
| :data:`typing.ClassVar`. Patch by Gregory Beauregard. | |
| - bpo-46483: Remove :meth:`~object.__class_getitem__` from | |
| :class:`pathlib.PurePath` as this class was not supposed to be generic. | |
| - bpo-46436: Fix command-line option ``-d``/``--directory`` in module | |
| :mod:`http.server` which is ignored when combined with command-line option | |
| ``--cgi``. Patch by Géry Ogam. | |
| - bpo-41403: Make :meth:`mock.patch` raise a :exc:`TypeError` with a | |
| relevant error message on invalid arg. Previously it allowed a cryptic | |
| :exc:`AttributeError` to escape. | |
| - bpo-46474: In ``importlib.metadata.EntryPoint.pattern``, avoid potential | |
| REDoS by limiting ambiguity in consecutive whitespace. | |
| - bpo-46474: Removed private method from ``importlib.metadata.Path``. Sync | |
| with importlib_metadata 4.10.0. | |
| - bpo-46470: Remove unused branch from ``typing._remove_dups_flatten`` | |
| - bpo-46469: :mod:`asyncio` generic classes now return | |
| :class:`types.GenericAlias` in ``__class_getitem__`` instead of the same | |
| class. | |
| - bpo-41906: Support passing filter instances in the ``filters`` values of | |
| ``handlers`` and ``loggers`` in the dictionary passed to | |
| :func:`logging.config.dictConfig`. | |
| - bpo-46422: Use ``dis.Positions`` in ``dis.Instruction`` instead of a | |
| regular ``tuple``. | |
| - bpo-46434: :mod:`pdb` now gracefully handles ``help`` when :attr:`__doc__` | |
| is missing, for example when run with pregenerated optimized ``.pyc`` | |
| files. | |
| - bpo-43869: Python uses the same time Epoch on all platforms. Add an | |
| explicit unit test to ensure that it's the case. Patch by Victor Stinner. | |
| - bpo-46414: Add :func:`typing.reveal_type`. Patch by Jelle Zijlstra. | |
| - bpo-40280: :mod:`subprocess` now imports Windows-specific imports when | |
| ``msvcrt`` module is available, and POSIX-specific imports on all other | |
| platforms. This gives a clean exception when ``_posixsubprocess`` is not | |
| available (e.g. Emscripten browser target). | |
| - bpo-40066: ``IntEnum``, ``IntFlag``, and ``StrEnum`` use the mixed-in type | |
| for their ``str()`` and ``format()`` output. | |
| - bpo-46316: Optimize :meth:`pathlib.Path.iterdir` by removing an | |
| unnecessary check for special entries. | |
| - bpo-29688: Document :meth:`pathlib.Path.absolute` (which has always | |
| existed). | |
| - bpo-43012: The pathlib module's obsolete and internal ``_Accessor`` class | |
| has been removed to prepare the terrain for upcoming enhancements to the | |
| module. | |
| - bpo-46258: Speed up :func:`math.isqrt` for small positive integers by | |
| replacing two division steps with a lookup table. | |
| - bpo-46242: Improve error message when creating a new :class:`enum.Enum` | |
| type subclassing an existing ``Enum`` with ``_member_names_`` using | |
| :meth:`enum.Enum.__call__`. | |
| - bpo-43118: Fix a bug in :func:`inspect.signature` that was causing it to | |
| fail on some subclasses of classes with a ``__text_signature__`` | |
| referencing module globals. Patch by Weipeng Hong. | |
| - bpo-26552: Fixed case where failing :func:`asyncio.ensure_future` did not | |
| close the coroutine. Patch by Kumar Aditya. | |
| - bpo-21987: Fix an issue with :meth:`tarfile.TarFile.getmember` getting a | |
| directory name with a trailing slash. | |
| - bpo-46124: Update :mod:`zoneinfo` to rely on importlib.resources | |
| traversable API. | |
| - bpo-46103: Now :func:`inspect.getmembers` only gets :attr:`__bases__` | |
| attribute from class type. Patch by Weipeng Hong. | |
| - bpo-46080: Fix exception in argparse help text generation if a | |
| :class:`argparse.BooleanOptionalAction` argument's default is | |
| ``argparse.SUPPRESS`` and it has ``help`` specified. Patch by Felix | |
| Fontein. | |
| - bpo-44791: Fix substitution of :class:`~typing.ParamSpec` in | |
| :data:`~typing.Concatenate` with different parameter expressions. | |
| Substitution with a list of types returns now a tuple of types. | |
| Substitution with ``Concatenate`` returns now a ``Concatenate`` with | |
| concatenated lists of arguments. | |
| Documentation | |
| ------------- | |
| - bpo-46463: Fixes :file:`escape4chm.py` script used when building the CHM | |
| documentation file | |
| Tests | |
| ----- | |
| - bpo-43478: Mocks can no longer be provided as the specs for other Mocks. | |
| As a result, an already-mocked object cannot be passed to `mock.Mock()`. | |
| This can uncover bugs in tests since these Mock-derived Mocks will always | |
| pass certain tests (e.g. isinstance) and builtin assert functions (e.g. | |
| assert_called_once_with) will unconditionally pass. | |
| - bpo-46616: Ensures ``test_importlib.test_windows`` cleans up registry keys | |
| after completion. | |
| - bpo-44359: test_ftplib now silently ignores socket errors to prevent | |
| logging unhandled threading exceptions. Patch by Victor Stinner. | |
| - bpo-46600: Fix test_gdb.test_pycfunction() for Python built with ``clang | |
| -Og``. Tolerate inlined functions in the gdb traceback. Patch by Victor | |
| Stinner. | |
| - bpo-46542: Fix a Python crash in test_lib2to3 when using Python built in | |
| debug mode: limit the recursion limit. Patch by Victor Stinner. | |
| - bpo-46576: test_peg_generator now disables compiler optimization when | |
| testing compilation of its own C extensions to significantly speed up the | |
| testing on non-debug builds of CPython. | |
| - bpo-46542: Fix ``test_json`` tests checking for :exc:`RecursionError`: | |
| modify these tests to use ``support.infinite_recursion()``. Patch by | |
| Victor Stinner. | |
| - bpo-13886: Skip test_builtin PTY tests on non-ASCII characters if the | |
| readline module is loaded. The readline module changes input() behavior, | |
| but test_builtin is not intented to test the readline module. Patch by | |
| Victor Stinner. | |
| - bpo-40280: Add :func:`test.support.requires_fork` decorators to mark tests | |
| that require a working :func:`os.fork`. | |
| - bpo-40280: Add :func:`test.support.requires_subprocess` decorator to mark | |
| tests which require working :mod:`subprocess` module or ``os.spawn*``. The | |
| wasm32-emscripten platform has no support for processes. | |
| - bpo-46126: Disable 'descriptions' when running tests internally. | |
| Build | |
| ----- | |
| - bpo-46602: Tidied up configure.ac so that conftest.c is truncated rather | |
| than appended. This assists in the case where the 'rm' of conftest.c fails | |
| to happen between tests. Downstream issues such as a clobbered SOABI can | |
| result. | |
| - bpo-46600: Fix the test checking if the C compiler supports ``-Og`` option | |
| in the ``./configure`` script to also use ``-Og`` on clang which supports | |
| it. Patch by Victor Stinner. | |
| - bpo-38472: Fix GCC detection in setup.py when cross-compiling. The C | |
| compiler is now run with LC_ALL=C. Previously, the detection failed with a | |
| German locale. | |
| - bpo-46513: :program:`configure` no longer uses ``AC_C_CHAR_UNSIGNED`` | |
| macro and ``pyconfig.h`` no longer defines reserved symbol | |
| ``__CHAR_UNSIGNED__``. | |
| - bpo-46471: Use global singletons for single byte bytes objects in | |
| deepfreeze. | |
| - bpo-46443: Deepfreeze now uses cached small integers as it saves some | |
| space for common small integers. | |
| - bpo-46429: Merge all deep-frozen files into one for space savings. Patch | |
| by Kumar Aditya. | |
| - bpo-45569: The build now defaults to using 30-bit digits for Python | |
| integers. Previously either 15-bit or 30-bit digits would be selected, | |
| depending on the platform. 15-bit digits may still be selected using the | |
| ``--enable-big-digits=15`` option to the ``configure`` script, or by | |
| defining ``PYLONG_BITS_IN_DIGIT`` in ``pyconfig.h``. | |
| - bpo-45925: Update Windows installer to use SQLite 3.37.2. | |
| - bpo-43112: Detect musl libc as a separate SOABI (tagged as | |
| ``linux-musl``). | |
| Windows | |
| ------- | |
| - bpo-33125: The traditional EXE/MSI based installer for Windows is now | |
| available for ARM64 | |
| - bpo-46362: os.path.abspath("C:\CON") is now fixed to return "\\.\CON", not | |
| the same path. The regression was true of all legacy DOS devices such as | |
| COM1, LPT1, or NUL. | |
| - bpo-44934: The installer now offers a command-line only option to add the | |
| installation directory to the end of :envvar:`PATH` instead of at the | |
| start. | |
| macOS | |
| ----- | |
| - bpo-45925: Update macOS installer to SQLite 3.37.2. | |
| IDLE | |
| ---- | |
| - bpo-45296: Clarify close, quit, and exit in IDLE. In the File menu, | |
| 'Close' and 'Exit' are now 'Close Window' (the current one) and 'Exit' is | |
| now 'Exit IDLE' (by closing all windows). In Shell, 'quit()' and 'exit()' | |
| mean 'close Shell'. If there are no other windows, this also exits IDLE. | |
| C API | |
| ----- | |
| - bpo-40170: Remove the ``PyHeapType_GET_MEMBERS()`` macro. It was exposed | |
| in the public C API by mistake, it must only be used by Python internally. | |
| Use the ``PyTypeObject.tp_members`` member instead. Patch by Victor | |
| Stinner. | |
| - bpo-40170: Move _Py_GetAllocatedBlocks() and _PyObject_DebugMallocStats() | |
| private functions to the internal C API. Patch by Victor Stinner. | |
| - bpo-46433: The internal function _PyType_GetModuleByDef now correctly | |
| handles inheritance patterns involving static types. | |
| - bpo-45459: :c:type:`Py_buffer` and various ``Py_buffer`` related functions | |
| are now part of the limited API and stable ABI. | |
| - bpo-14916: Fixed bug in the tokenizer that prevented | |
| ``PyRun_InteractiveOne`` from parsing from the provided FD. | |
| What's New in Python 3.11.0 alpha 4? | |
| ==================================== | |
| *Release date: 2022-01-13* | |
| Core and Builtins | |
| ----------------- | |
| - bpo-46070: :c:func:`Py_EndInterpreter` now explicitly untracks all objects | |
| currently tracked by the GC. Previously, if an object was used later by | |
| another interpreter, calling :c:func:`PyObject_GC_UnTrack` on the object | |
| crashed if the previous or the next object of the :c:type:`PyGC_Head` | |
| structure became a dangling pointer. Patch by Victor Stinner. | |
| - bpo-46347: Fix memory leak in PyEval_EvalCodeEx. | |
| - bpo-46339: Fix a crash in the parser when retrieving the error text for | |
| multi-line f-strings expressions that do not start in the first line of | |
| the string. Patch by Pablo Galindo | |
| - bpo-46331: Do not set line number of instruction storing doc-string. Fixes | |
| regression introduced in 3.11 alpha. | |
| - bpo-46314: Remove spurious "call" event when creating a lambda function | |
| that was accidentally introduced in 3.11a4. | |
| - bpo-46289: ASDL declaration of ``FormattedValue`` has changed to reflect | |
| ``conversion`` field is not optional. | |
| - bpo-46297: Fixed an interpreter crash on bootup with multiple PythonPaths | |
| set in the Windows registry. Patch by Derzsi Dániel. | |
| - bpo-46237: Fix the line number of tokenizer errors inside f-strings. Patch | |
| by Pablo Galindo. | |
| - bpo-46263: We always expect the "use_frozen_modules" config to be set, now | |
| that getpath.c was rewritten in pure Python and the logic improved. | |
| - bpo-46006: Fix a regression when a type method like ``__init__()`` is | |
| modified in a subinterpreter. Fix a regression in | |
| ``_PyUnicode_EqualToASCIIId()`` and type ``update_slot()``. Revert the | |
| change which made the Unicode dictionary of interned strings compatible | |
| with subinterpreters: the internal interned dictionary is shared again by | |
| all interpreters. Patch by Victor Stinner. | |
| - bpo-45923: Add RESUME opcode. This is a logical no-op. It is emitted by | |
| the compiler anywhere a Python function can be entered. It is used by the | |
| interpreter to perform tracing and optimizer checks. | |
| - bpo-46208: Fix the regression of os.path.normpath("A/../../B") not | |
| returning expected "../B" but "B". | |
| - bpo-46240: Correct the error message for unclosed parentheses when the | |
| tokenizer doesn't reach the end of the source when the error is reported. | |
| Patch by Pablo Galindo | |
| - bpo-46009: Remove the ``GEN_START`` opcode. | |
| - bpo-46235: Certain sequence multiplication operations like ``[0] * 1_000`` | |
| are now faster due to reference-counting optimizations. Patch by Dennis | |
| Sweeney. | |
| - bpo-46221: :opcode:`PREP_RERAISE_STAR` no longer pushes ``lasti`` to the | |
| stack. | |
| - bpo-46202: Remove :opcode:`POP_EXCEPT_AND_RERAISE` and replace it by an | |
| equivalent sequence of other opcodes. | |
| - bpo-46085: Fix iterator cache mechanism of :class:`OrderedDict`. | |
| - bpo-46055: Speed up shifting operation involving integers less than | |
| :c:macro:`PyLong_BASE`. Patch by Xinhang Xu. | |
| - bpo-46110: Add a maximum recursion check to the PEG parser to avoid stack | |
| overflow. Patch by Pablo Galindo | |
| - bpo-46107: Fix bug where :meth:`ExceptionGroup.split` and | |
| :meth:`ExceptionGroup.subgroup` did not copy the exception group's | |
| ``__note__`` field to the parts. | |
| - bpo-45711: The interpreter state's representation of handled exceptions | |
| (a.k.a exc_info, or _PyErr_StackItem) now has only the ``exc_value`` | |
| field, ``exc_type`` and ``exc_traceback`` have been removed as their | |
| values can be derived from ``exc_value``. | |
| - bpo-44525: Replace the four call bytecode instructions which one pre-call | |
| instruction and two call instructions. | |
| Removes ``CALL_FUNCTION``, ``CALL_FUNCTION_KW``, ``CALL_METHOD`` and | |
| ``CALL_METHOD_KW``. | |
| Adds ``CALL_NO_KW`` and ``CALL_KW`` call instructions, and | |
| ``PRECALL_METHOD`` prefix for pairing with ``LOAD_METHOD``. | |
| - bpo-46039: Remove the ``YIELD_FROM`` instruction and replace it with the | |
| ``SEND`` instruction which performs the same operation, but without the | |
| loop. | |
| - bpo-45635: The code called from :c:func:`_PyErr_Display` was refactored to | |
| improve error handling. It now exits immediately upon an unrecoverable | |
| error. | |
| - bpo-46054: Fix parser error when parsing non-utf8 characters in source | |
| files. Patch by Pablo Galindo. | |
| - bpo-46042: Improve the location of the caret in :exc:`SyntaxError` | |
| exceptions emitted by the symbol table. Patch by Pablo Galindo. | |
| - bpo-46049: Ensure :file:`._pth` files work as intended on platforms other | |
| than Windows. | |
| - bpo-46048: Fixes parsing of :file:`._pth` files on startup so that | |
| single-character paths are correctly read. | |
| - bpo-37971: Fix a bug where the line numbers given in a traceback when a | |
| decorator application raised an exception were wrong. | |
| - bpo-46031: Add :opcode:`POP_JUMP_IF_NOT_NONE` and | |
| :opcode:`POP_JUMP_IF_NONE` opcodes to speed up conditional jumps. | |
| - bpo-45654: Deepfreeze :mod:`runpy`, patch by Kumar Aditya. | |
| - bpo-46025: Fix a crash in the :mod:`atexit` module involving functions | |
| that unregister themselves before raising exceptions. Patch by Pablo | |
| Galindo. | |
| - bpo-46000: Improve compatibility of the :mod:`curses` module with NetBSD | |
| curses. | |
| - bpo-44525: Specialize the CALL_FUNCTION instruction for calls to builtin | |
| types with a single argument. Speeds up ``range(x)``, ``list(x)``, and | |
| specifically ``type(obj)``. | |
| - bpo-42918: Fix bug where the built-in :func:`compile` function did not | |
| always raise a :exc:`SyntaxError` when passed multiple statements in | |
| 'single' mode. Patch by Weipeng Hong. | |
| - bpo-45953: The main interpreter in _PyRuntimeState.interpreters is now | |
| statically allocated (as part of _PyRuntime). Likewise for the initial | |
| thread state of each interpreter. This means less allocation during | |
| runtime init, as well as better memory locality for these key state | |
| objects. | |
| - bpo-45292: Complete the :pep:`654` implementation: add ``except*``. | |
| - bpo-43413: Revert changes in ``set.__init__``. Subclass of :class:`set` | |
| needs to define a ``__init__()`` method if it defines a ``__new__()`` | |
| method with additional keyword parameters. | |
| - bpo-43931: Added the :c:data:`Py_Version` constant which bears the same | |
| value as :c:macro:`PY_VERSION_HEX`. Patch by Gabriele N. Tornetta. | |
| Library | |
| ------- | |
| - bpo-46342: The ``@typing.final`` decorator now sets the ``__final__`` | |
| attribute on the decorated object to allow runtime introspection. Patch by | |
| Jelle Zijlstra. | |
| - bpo-46328: Added the :meth:`sys.exception` method which returns the active | |
| exception instance. | |
| - bpo-46307: Add :meth:`string.Template.is_valid` and | |
| :meth:`string.Template.get_identifiers` methods. | |
| - bpo-46306: Assume that :class:`types.CodeType` always has | |
| :attr:`types.CodeType.co_firstlineno` in :mod:`doctest`. | |
| - bpo-40479: Fix :mod:`hashlib` *usedforsecurity* option to work correctly | |
| with OpenSSL 3.0.0 in FIPS mode. | |
| - bpo-46070: Fix possible segfault when importing the :mod:`asyncio` module | |
| from different sub-interpreters in parallel. Patch by Erlend E. Aasland. | |
| - bpo-46244: Removed ``__slots__`` from :class:`typing.ParamSpec` and | |
| :class:`typing.TypeVar`. They served no purpose. Patch by Arie Bovenberg. | |
| - bpo-46278: Reflect ``context`` argument in ``AbstractEventLoop.call_*()`` | |
| methods. Loop implementations already support it. | |
| - bpo-46269: Remove special-casing of ``__new__`` in | |
| :meth:`enum.Enum.__dir__`. | |
| - bpo-46266: Improve day constants in :mod:`calendar`. | |
| Now all constants (`MONDAY` ... `SUNDAY`) are documented, tested, and | |
| added to ``__all__``. | |
| - bpo-46257: Optimized the mean, variance, and stdev functions in the | |
| statistics module. If the input is an iterator, it is consumed in a single | |
| pass rather than eating memory by conversion to a list. The single pass | |
| algorithm is about twice as fast as the previous two pass code. | |
| - bpo-41011: Added two new variables to *pyvenv.cfg* which is generated by | |
| :mod:`venv` module: *executable* for the executable and *command* for the | |
| command line used to create the environment. | |
| - bpo-46239: Improve error message when importing | |
| :mod:`asyncio.windows_events` on non-Windows. | |
| - bpo-46238: Reuse ``_winapi`` constants in ``asyncio.windows_events``. | |
| - bpo-46222: Adding ``SF_NOCACHE`` sendfile constant for FreeBSD for the | |
| posixmodule. | |
| - bpo-37295: Add fast path for ``0 <= k <= n <= 67`` for :func:`math.comb`. | |
| - bpo-46176: Adding the ``MAP_STACK`` constant for the mmap module. | |
| - bpo-43424: Deprecate :attr:`webbrowser.MacOSXOSAScript._name` and use | |
| ``name`` instead. | |
| - bpo-45321: Added missing error codes to module | |
| ``xml.parsers.expat.errors``. | |
| - bpo-46125: Refactor tests to test traversable API directly. Includes | |
| changes from importlib 5.4.0. | |
| - bpo-46118: Moved importlib.resources and its related functionality to a | |
| package. | |
| - bpo-37578: Add *include_hidden* parameter to :func:`~glob.glob` and | |
| :func:`~glob.iglob` to match hidden files and directories when using | |
| special characters like ``*``, ``**``, ``?`` and ``[]``. | |
| - bpo-20369: :func:`concurrent.futures.wait` no longer blocks forever when | |
| given duplicate Futures. Patch by Kumar Aditya. | |
| - bpo-46105: Honor spec when generating requirement specs with urls and | |
| extras (importlib_metadata 4.8.3). | |
| - bpo-44893: EntryPoint objects are no longer tuples. Recommended means to | |
| access is by attribute ('.name', '.group') or accessor ('.load()'). Access | |
| by index is deprecated and will raise deprecation warning. | |
| - bpo-22815: Print unexpected successes together with failures and errors in | |
| summary in :class:`unittest.TextTestResult`. | |
| - bpo-22047: Calling :meth:`add_argument_group` on an argument group is | |
| deprecated. Calling :meth:`add_argument_group` or | |
| :meth:`add_mutually_exclusive_group` on a mutually exclusive group is | |
| deprecated. | |
| These features were never supported and do not always work correctly. The | |
| functions exist on the API by accident through inheritance and will be | |
| removed in the future. | |
| - bpo-26952: :mod:`argparse` raises :exc:`ValueError` with clear message | |
| when trying to render usage for an empty mutually exclusive group. | |
| Previously it raised a cryptic :exc:`IndexError`. | |
| - bpo-45615: Functions in the :mod:`traceback` module raise :exc:`TypeError` | |
| rather than :exc:`AttributeError` when an exception argument is not of | |
| type :exc:`BaseException`. | |
| - bpo-16594: Add allow allow_reuse_port flag in socketserver. | |
| - bpo-27718: Fix help for the :mod:`signal` module. Some functions (e.g. | |
| ``signal()`` and ``getsignal()``) were omitted. | |
| - bpo-46032: The ``registry()`` method of :func:`functools.singledispatch` | |
| functions checks now the first argument or the first parameter annotation | |
| and raises a TypeError if it is not supported. Previously unsupported | |
| "types" were ignored (e.g. ``typing.List[int]``) or caused an error at | |
| calling time (e.g. ``list[int]``). | |
| - bpo-46014: Add ability to use ``typing.Union`` and ``types.UnionType`` as | |
| dispatch argument to ``functools.singledispatch``. Patch provided by Yurii | |
| Karabas. | |
| - bpo-27062: Add :attr:`__all__` to :mod:`inspect`, patch by Kumar Aditya. | |
| - bpo-46018: Ensure that :func:`math.expm1` does not raise on underflow. | |
| - bpo-46016: Adding :attr:`F_DUP2FD` and :attr:`F_DUP2FD_CLOEXEC` constants | |
| from FreeBSD into the fcntl module. | |
| - bpo-45755: :mod:`typing` generic aliases now reveal the class attributes | |
| of the original generic class when passed to ``dir()``. This was the | |
| behavior up to Python 3.6, but was changed in 3.7-3.9. | |
| - bpo-45874: The empty query string, consisting of no query arguments, is | |
| now handled correctly in ``urllib.parse.parse_qsl``. This caused problems | |
| before when strict parsing was enabled. | |
| - bpo-44674: Change how dataclasses disallows mutable default values. It | |
| used to use a list of known types (list, dict, set). Now it disallows | |
| unhashable objects to be defaults. It's using unhashability as a proxy | |
| for mutability. Patch by Eric V. Smith, idea by Raymond Hettinger. | |
| - bpo-23882: Remove namespace package (PEP 420) support from unittest | |
| discovery. It was introduced in Python 3.4 but has been broken since | |
| Python 3.7. | |
| - bpo-25066: Added a :meth:`__repr__` method to | |
| :class:`multiprocessing.Event` objects, patch by Kumar Aditya. | |
| - bpo-45643: Added :data:`signal.SIGSTKFLT` on platforms where this signal | |
| is defined. | |
| - bpo-44092: Fetch across rollback no longer raises | |
| :exc:`~sqlite3.InterfaceError`. Instead we leave it to the SQLite library | |
| to handle these cases. Patch by Erlend E. Aasland. | |
| - bpo-42413: Replace ``concurrent.futures.TimeoutError`` and | |
| ``asyncio.TimeoutError`` with builtin :exc:`TimeoutError`, keep these | |
| names as deprecated aliases. | |
| Documentation | |
| ------------- | |
| - bpo-46196: Document method :meth:`cmd.Cmd.columnize`. | |
| - bpo-46120: State that ``|`` is preferred for readability over ``Union`` in | |
| the :mod:`typing` docs. | |
| - bpo-46109: Extracted ``importlib.resources`` and | |
| ``importlib.resources.abc`` documentation into separate files. | |
| - bpo-19737: Update the documentation for the :func:`globals` function. | |
| Tests | |
| ----- | |
| - bpo-46296: Add a test case for :mod:`enum` with ``_use_args_ == True`` and | |
| ``_member_type_ == object``. | |
| - bpo-46205: Fix hang in runtest_mp due to race condition | |
| - bpo-46263: Fix test_capi on FreeBSD 14-dev: instruct jemalloc to not fill | |
| freed memory with junk byte. | |
| - bpo-46262: Cover ``ValueError`` path in tests for | |
| :meth:`enum.Flag._missing_`. | |
| - bpo-46150: Now ``fakename`` in | |
| ``test_pathlib.PosixPathTest.test_expanduser`` is checked to be | |
| non-existent. | |
| - bpo-46129: Rewrite ``asyncio.locks`` tests with | |
| :class:`unittest.IsolatedAsyncioTestCase` usage. | |
| - bpo-23819: Fixed :mod:`asyncio` tests in python optimized mode. Patch by | |
| Kumar Aditya. | |
| - bpo-46114: Fix test case for OpenSSL 3.0.1 version. OpenSSL 3.0 uses | |
| ``0xMNN00PP0L``. | |
| Build | |
| ----- | |
| - bpo-44133: When Python is configured with | |
| :option:`--without-static-libpython`, the Python static library | |
| (libpython.a) is no longer built. Patch by Victor Stinner. | |
| - bpo-44133: When Python is built without :option:`--enable-shared`, the | |
| ``python`` program is now linked to object files, rather than being linked | |
| to the Python static library (libpython.a), to make sure that all symbols | |
| are exported. Previously, the linker omitted some symbols like the | |
| :c:func:`Py_FrozenMain` function. Patch by Victor Stinner. | |
| - bpo-40280: The ``configure`` script has a new option | |
| ``--with-emscripten-target`` to select browser or node as Emscripten build | |
| target. | |
| - bpo-46315: Added and fixed ``#ifdef HAVE_FEATURE`` checks for | |
| functionality that is not available on WASI platform. | |
| - bpo-45723: Fixed a regression in ``configure`` check for | |
| :func:`select.epoll`. | |
| - bpo-46263: ``configure`` no longer sets ``MULTIARCH`` on FreeBSD | |
| platforms. | |
| - bpo-46106: Updated OpenSSL to 1.1.1m in Windows builds, macOS installer | |
| builds, and CI. Patch by Kumar Aditya. | |
| - bpo-46088: Automatically detect or install bootstrap Python runtime when | |
| building from Visual Studio. | |
| - bpo-46072: Add a --with-pystats configure option to turn on internal | |
| statistics gathering. | |
| - bpo-40280: A new directory ``Tools/wasm`` contains WebAssembly-related | |
| helpers like ``config.site`` override for wasm32-emscripten, wasm assets | |
| generator to bundle the stdlib, and a README. | |
| - bpo-46023: :program:`makesetup` no longer builds extensions that have been | |
| marked as *disabled*. This allows users to disable modules in | |
| ``Modules/Setup.local``. | |
| - bpo-45949: Use pure Python ``freeze_module`` for all but importlib | |
| bootstrap files. ``--with-freeze-module`` :program:`configure` option is | |
| no longer needed for cross builds. | |
| Windows | |
| ------- | |
| - bpo-46217: Removed parameter that is unsupported on Windows 8.1 and early | |
| Windows 10 and may have caused build or runtime failures. | |
| macOS | |
| ----- | |
| - bpo-40477: The Python Launcher app for macOS now properly launches scripts | |
| and, if necessary, the Terminal app when running on recent macOS releases. | |
| C API | |
| ----- | |
| - bpo-46236: Fix a bug in :c:func:`PyFunction_GetAnnotations` that caused it | |
| to return a ``tuple`` instead of a ``dict``. | |
| - bpo-46140: :c:func:`PyBuffer_GetPointer`, | |
| :c:func:`PyBuffer_FromContiguous`, :c:func:`PyBuffer_ToContiguous` and | |
| :c:func:`PyMemoryView_FromBuffer` now take buffer info by ``const | |
| Py_buffer *`` instead of ``Py_buffer *``, as they do not need mutability. | |
| :c:func:`PyBuffer_FromContiguous` also now takes the source buffer as | |
| ``const void *``, and similarly :c:func:`PyBuffer_GetPointer` takes the | |
| strides as ``const Py_ssize_t *``. | |
| - bpo-45855: Document that the *no_block* argument to | |
| :c:func:`PyCapsule_Import` is a no-op now. | |
| - bpo-45855: Replaced deprecated usage of | |
| :c:func:`PyImport_ImportModuleNoBlock` with | |
| :c:func:`PyImport_ImportModule` in stdlib modules. Patch by Kumar Aditya. | |
| - bpo-46007: The :c:func:`PyUnicode_CHECK_INTERNED` macro has been excluded | |
| from the limited C API. It was never usable there, because it used | |
| internal structures which are not available in the limited C API. Patch by | |
| Victor Stinner. | |
| What's New in Python 3.11.0 alpha 3? | |
| ==================================== | |
| *Release date: 2021-12-08* | |
| Core and Builtins | |
| ----------------- | |
| - bpo-46009: Restore behavior from 3.9 and earlier when sending non-None to | |
| newly started generator. In 3.9 this did not affect the state of the | |
| generator. In 3.10.0 and 3.10.1 ``gen_func().send(0)`` is equivalent to | |
| ``gen_func().throw(TypeError(...)`` which exhausts the generator. In | |
| 3.10.2 onward, the behavior has been reverted to that of 3.9. | |
| - bpo-46004: Fix the :exc:`SyntaxError` location for errors involving for | |
| loops with invalid targets. Patch by Pablo Galindo | |
| - bpo-45711: :c:func:`_PyErr_ChainStackItem` no longer normalizes | |
| ``exc_info`` (including setting the traceback on the exception instance) | |
| because ``exc_info`` is always normalized. | |
| - bpo-45607: The ``__note__`` field was added to :exc:`BaseException`. It is | |
| ``None`` by default but can be set to a string which is added to the | |
| exception's traceback. | |
| - bpo-45947: Place pointers to dict and values immediately before GC header. | |
| This reduces number of dependent memory loads to access either dict or | |
| values from 3 to 1. | |
| - bpo-45915: ``is_valid_fd`` now uses faster ``fcntl(fd, F_GETFD)`` on | |
| Linux, macOS, and Windows. | |
| - bpo-44530: Reverts a change to the ``code.__new__`` :ref:`audit event | |
| <audit-events>` from an earlier prerelease. | |
| - bpo-42268: Fail the configure step if the selected compiler doesn't | |
| support memory sanitizer. Patch by Pablo Galindo | |
| - bpo-45711: The three values of ``exc_info`` are now always consistent with | |
| each other. In particular, the ``type`` and ``traceback`` fields are now | |
| derived from the exception instance. This impacts the return values of | |
| :func:`sys.exc_info` and :c:func:`PyErr_GetExcInfo()` if the exception | |
| instance is modified while the exception is handled, as well as | |
| :c:func:`PyErr_SetExcInfo()`, which now ignores the ``type`` and | |
| ``traceback`` arguments provided to it. | |
| - bpo-45727: Refine the custom syntax error that suggests that a comma may | |
| be missing to trigger only when the expressions are detected between | |
| parentheses or brackets. Patch by Pablo Galindo | |
| - bpo-45885: Specialized the ``COMPARE_OP`` opcode using the PEP 659 | |
| machinery. | |
| - bpo-45786: Allocate space for the interpreter frame in the frame object, | |
| to avoid an additional allocation when the frame object outlives the frame | |
| activation. | |
| - bpo-45614: Fix :mod:`traceback` display for exceptions with invalid module | |
| name. | |
| - bpo-45813: Fix crash when calling coro.cr_frame.clear() after coroutine | |
| has been freed. | |
| - bpo-45811: Improve the tokenizer errors when encountering invisible | |
| control characters in the parser. Patch by Pablo Galindo | |
| - bpo-45848: Allow the parser to obtain error lines directly from encoded | |
| files. Patch by Pablo Galindo | |
| - bpo-45709: Restore behavior from 3.10 when tracing an exception raised | |
| within a with statement. | |
| - bpo-44525: Adds new :opcode:`COPY_FREE_VARS` opcode, to make copying of | |
| free variables from function to frame explicit. Helps optimization of | |
| calls to Python function. | |
| - bpo-45829: Specialize :opcode:`BINARY_SUBSCR` for classes with a | |
| ``__getitem__`` method implemented in Python | |
| - bpo-45826: Fixed a crash when calling ``.with_traceback(None)`` on | |
| ``NameError``. This occurs internally in | |
| ``unittest.TestCase.assertRaises()``. | |
| - bpo-45822: Fixed a bug in the parser that was causing it to not respect | |
| :pep:`263` coding cookies when no flags are provided. Patch by Pablo | |
| Galindo | |
| - bpo-45820: Fix a segfault when the parser fails without reading any input. | |
| Patch by Pablo Galindo | |
| - bpo-45636: Simplify the implementation of :opcode:`BINARY_OP` by indexing | |
| into an array of function pointers (rather than switching on the oparg). | |
| - bpo-42540: Fix crash when :func:`os.fork` is called with an active | |
| non-default memory allocator. | |
| - bpo-45738: Fix computation of error location for invalid continuation | |
| characters in the parser. Patch by Pablo Galindo. | |
| - bpo-45636: Remove an existing "fast path" for old-style string formatting, | |
| since it no longer appears to have any measurable impact. | |
| - bpo-45753: Make recursion checks a bit more efficient by tracking amount | |
| of calls left before overflow. | |
| - bpo-45773: Fix a compiler hang when attempting to optimize certain jump | |
| patterns. | |
| - bpo-45764: The parser now gives a better error message when leaving out | |
| the opening parenthesis ``(`` after a ``def``-statement:: | |
| >>> def f: | |
| File "<stdin>", line 1 | |
| def f: | |
| ^ | |
| SyntaxError: expected '(' | |
| - bpo-45609: Specialized the ``STORE_SUBSCR`` opcode using the PEP 659 | |
| machinery. | |
| - bpo-45636: Replace all numeric ``BINARY_*`` and ``INPLACE_*`` instructions | |
| with a single :opcode:`BINARY_OP` implementation. | |
| - bpo-45582: Path calculation (known as ``getpath``) has been reimplemented | |
| as a frozen Python module. This should have no visible impact, but may | |
| affect calculation of all paths referenced in :mod:`sys` and | |
| :mod:`sysconfig`. | |
| - bpo-45450: Improve the syntax error message for parenthesized arguments. | |
| Patch by Pablo Galindo. | |
| Library | |
| ------- | |
| - bpo-27946: Fix possible crash when getting an attribute of | |
| class:`xml.etree.ElementTree.Element` simultaneously with replacing the | |
| ``attrib`` dict. | |
| - bpo-45711: Make :mod:`asyncio` normalize exceptions as soon as they are | |
| captured with :c:func:`PyErr_Fetch`, and before they are stored as an | |
| exc_info triplet. This brings :mod:`asyncio` in line with the rest of the | |
| codebase, where an exc_info triplet is always normalized. | |
| - bpo-23819: Replaced asserts with exceptions in asyncio, patch by Kumar | |
| Aditya. | |
| - bpo-13236: :class:`unittest.TextTestResult` and | |
| :class:`unittest.TextTestRunner` flush now the output stream more often. | |
| - bpo-45917: Added :func:`math.exp2`:, which returns 2 raised to the power | |
| of x. | |
| - bpo-37658: Fix issue when on certain conditions ``asyncio.wait_for()`` may | |
| allow a coroutine to complete successfully, but fail to return the result, | |
| potentially causing memory leaks or other issues. | |
| - bpo-45876: Improve the accuracy of stdev() and pstdev() in the statistics | |
| module. When the inputs are floats or fractions, the output is a | |
| correctly rounded float | |
| - bpo-44649: Handle dataclass(slots=True) with a field that has default a | |
| default value, but for which init=False. | |
| - bpo-45803: Added missing kw_only parameter to | |
| dataclasses.make_dataclass(). | |
| - bpo-45837: The :meth:`turtle.RawTurtle.settiltangle` is deprecated since | |
| Python 3.1, it now emits a deprecation warning and will be removed in | |
| Python 3.13. | |
| Use :meth:`turtle.RawTurtle.tiltangle` instead. | |
| :meth:`turtle.RawTurtle.tiltangle` was earlier incorrectly marked as | |
| deprecated, its docstring has been corrected. | |
| Patch by Hugo van Kemenade. | |
| - bpo-45831: :mod:`faulthandler` can now write ASCII-only strings (like | |
| filenames and function names) with a single write() syscall when dumping a | |
| traceback. It reduces the risk of getting an unreadable dump when two | |
| threads or two processes dump a traceback to the same file (like stderr) | |
| at the same time. Patch by Victor Stinner. | |
| - bpo-45828: :mod:`sqlite` C callbacks now use unraisable exceptions if | |
| callback tracebacks are enabled. Patch by Erlend E. Aasland. | |
| - bpo-41735: Fix thread lock in ``zlib.Decompress.flush()`` method before | |
| ``PyObject_GetBuffer``. | |
| - bpo-45235: Reverted an argparse bugfix that caused regression in the | |
| handling of default arguments for subparsers. This prevented leaf level | |
| arguments from taking precedence over root level arguments. | |
| - bpo-45754: Fix a regression in Python 3.11a1 and 3.11a2 where | |
| :mod:`sqlite3` incorrectly would use ``SQLITE_LIMIT_LENGTH`` when checking | |
| SQL statement lengths. Now, ``SQLITE_LIMIT_SQL_LENGTH`` is used. Patch by | |
| Erlend E. Aasland. | |
| - bpo-45766: Added *proportional* option to | |
| :meth:`statistics.linear_regression`. | |
| - bpo-45765: In importlib.metadata, fix distribution discovery for an empty | |
| path. | |
| - bpo-45757: Fix bug where :mod:`dis` produced an incorrect oparg when | |
| :opcode:`EXTENDED_ARG` is followed by an opcode that does not use its | |
| argument. | |
| - bpo-45644: In-place JSON file formatting using ``python3 -m json.tool | |
| infile infile`` now works correctly, previously it left the file empty. | |
| Patch by Chris Wesseling. | |
| - bpo-45703: When a namespace package is imported before another module from | |
| the same namespace is created/installed in a different :data:`sys.path` | |
| location while the program is running, calling the | |
| :func:`importlib.invalidate_caches` function will now also guarantee the | |
| new module is noticed. | |
| - bpo-45535: Improve output of ``dir()`` with Enums. | |
| - bpo-45664: Fix :func:`types.resolve_bases` and :func:`types.new_class` for | |
| :class:`types.GenericAlias` instance as a base. | |
| - bpo-45663: Fix :func:`dataclasses.is_dataclass` for dataclasses which are | |
| subclasses of :class:`types.GenericAlias`. | |
| - bpo-45662: Fix the repr of :data:`dataclasses.InitVar` with a type alias | |
| to the built-in class, e.g. ``InitVar[list[int]]``. | |
| - bpo-43137: Launch GNOME web browsers via gio tool instead of obsolete | |
| gvfs-open | |
| - bpo-45429: On Windows, :func:`time.sleep` now uses a waitable timer which | |
| supports high-resolution timers. Patch by Dong-hee Na and Eryk Sun. | |
| - bpo-37295: Optimize :func:`math.comb` and :func:`math.perm`. | |
| - bpo-45514: Deprecated legacy functions in :mod:`importlib.resources`. | |
| - bpo-45507: Add tests for truncated/missing trailers in gzip.decompress | |
| implementation. | |
| - bpo-45359: Implement :pep:`585` for :class:`graphlib.TopologicalSorter`. | |
| - bpo-44733: Add ``max_tasks_per_child`` to | |
| :class:`concurrent.futures.ProcessPoolExecutor`. This allows users to | |
| specify the maximum number of tasks a single process should execute before | |
| the process needs to be restarted. | |
| - bpo-28806: Improve netrc library. netrc file no longer needs to contain | |
| all tokens. And if the login name is anonymous, security check is no | |
| longer need. | |
| - bpo-43498: Avoid a possible *"RuntimeError: dictionary changed size during | |
| iteration"* when adjusting the process count of | |
| :class:`ProcessPoolExecutor`. | |
| - bpo-42158: Add MIME types for N-quads, N-triples, Notation3 and TriG to | |
| ``mimetypes``. | |
| - bpo-30533: Add :func:`inspect.getmembers_static` , it return all members | |
| without triggering dynamic lookup via the descriptor protocol. Patch by | |
| Weipeng Hong. | |
| Documentation | |
| ------------- | |
| - bpo-42238: ``make -C Doc suspicious`` will be removed soon in favor of | |
| ``make -C Doc check``, mark it as deprecated. | |
| - bpo-45840: Improve cross-references in the documentation for the data | |
| model. | |
| - bpo-45640: Properly marked-up grammar tokens in the documentation are now | |
| clickable and take you to the definition of a given piece of grammar. | |
| Patch by Arthur Milchior. | |
| - bpo-45788: Link doc for sys.prefix to sysconfig doc on installation paths. | |
| - bpo-45772: ``socket.socket`` documentation is corrected to a class from a | |
| function. | |
| - bpo-45392: Update the docstring of the :class:`type` built-in to remove a | |
| redundant line and to mention keyword arguments for the constructor. | |
| - bpo-45250: Update the documentation to note that CPython does not | |
| consistently require iterators to define ``__iter__``. | |
| - bpo-25381: In the extending chapter of the extending doc, update a | |
| paragraph about the global variables containing exception information. | |
| - bpo-43905: Expanded :func:`~dataclasses.astuple` and | |
| :func:`~dataclasses.asdict` docs, warning about deepcopy being applied and | |
| providing a workaround. | |
| Tests | |
| ----- | |
| - bpo-45695: Out-of-tree builds with a read-only source directory are now | |
| tested by CI. | |
| - bpo-19460: Add new Test for | |
| ``Lib/email/mime/nonmultipart.py::MIMENonMultipart``. | |
| - bpo-45835: Fix race condition in test_queue tests with multiple "feeder" | |
| threads. | |
| - bpo-45783: The test for the freeze tool now handles file moves and | |
| deletions. | |
| - bpo-45745: Remove the ``--findleaks`` command line option of regrtest: use | |
| the ``--fail-env-changed`` option instead. Since Python 3.7, it was a | |
| deprecated alias to the ``--fail-env-changed`` option. | |
| - bpo-45701: Add tests with ``tuple`` type with :func:`functools.lru_cache` | |
| to ``test_functools``. | |
| Build | |
| ----- | |
| - bpo-44035: CI now verifies that autoconf files have been regenerated with | |
| a current and unpatched autoconf package. | |
| - bpo-45950: The build system now uses a :program:`_bootstrap_python` | |
| interpreter for freezing and deepfreezing again. To speed up build process | |
| the build tools :program:`_bootstrap_python` and :program:`_freeze_module` | |
| are no longer build with LTO. | |
| - bpo-45881: The :program:`configure` script now accepts | |
| ``--with-build-python`` and ``--with-freeze-module`` options to make cross | |
| compiling easier. | |
| - bpo-40280: Emscripten platform now uses ``.wasm`` suffix by default. | |
| - bpo-40280: Disable unusable core extension modules on WASM/Emscripten | |
| targets. | |
| - bpo-40280: ``configure`` now checks for socket ``shutdown`` function. The | |
| check makes it possible to disable ``SYS_shutdown`` with | |
| ``ac_cv_func_shutdown=no`` in CONFIG_SITE. | |
| - bpo-40280: ``configure`` now checks for functions ``fork1, getegid, | |
| geteuid, getgid, getppid, getuid, opendir, pipe, system, wait, ttyname``. | |
| - bpo-33393: Update ``config.guess`` to 2021-06-03 and ``config.sub`` to | |
| 2021-08-14. ``Makefile`` now has an ``update-config`` target to make | |
| updating more convenient. | |
| - bpo-45866: ``make regen-all`` now produces the same output when run from a | |
| directory other than the source tree: when building Python out of the | |
| source tree. pegen now strips directory of the "generated by pygen from | |
| <FILENAME>" header Patch by Victor Stinner. | |
| - bpo-40280: ``configure`` now accepts machine ``wasm32`` or ``wasm64`` and | |
| OS ``wasi`` or ``emscripten`` for cross building, e.g. | |
| ``wasm32-unknown-emscripten``, ``wasm32-wasi``, or | |
| ``wasm32-unknown-wasi``. | |
| - bpo-41498: Python now compiles on platforms without ``sigset_t``. Several | |
| functions in :mod:`signal` are not available when ``sigset_t`` is missing. | |
| Based on patch by Roman Yurchak for pyodide. | |
| - bpo-45881: ``setup.py`` now uses ``CC`` from environment first to discover | |
| multiarch and cross compile paths. | |
| - bpo-45886: The ``_freeze_module`` program path can now be overridden on | |
| the command line, e.g. ``make | |
| FREEZE_MODULE=../x86_64/Program/_freeze_module``. | |
| - bpo-45873: Get rid of the ``_bootstrap_python`` build step. The | |
| deepfreeze.py script is now run using ``$(PYTHON_FOR_REGEN)`` which can be | |
| Python 3.7 or newer (on Windows, 3.8 or newer). | |
| - bpo-45847: Port builtin hashlib extensions to ``PY_STDLIB_MOD`` macro and | |
| ``addext()``. | |
| - bpo-45723: Add ``autoconf`` helpers for saving and restoring environment | |
| variables: | |
| * ``SAVE_ENV``: Save ``$CFLAGS``, ``$LDFLAGS``, ``$LIBS``, and | |
| ``$CPPFLAGS``. | |
| * ``RESTORE_ENV``: Restore ``$CFLAGS``, ``$LDFLAGS``, ``$LIBS``, and | |
| ``$CPPFLAGS``. | |
| * ``WITH_SAVE_ENV([SCRIPT])``: Run ``SCRIPT`` wrapped with ``SAVE_ENV`` and | |
| ``RESTORE_ENV``. | |
| Patch by Erlend E. Aasland. | |
| - bpo-45573: Mandatory core modules, that are required to bootstrap Python, | |
| are now in ``Modules/Setup.bootstrap``. | |
| - bpo-45573: ``configure`` now creates ``Modules/Setup.stdlib`` with | |
| conditionally enabled/disabled extension module lines. The file is not | |
| used, yet. | |
| - bpo-45573: ``configure`` now uses a unified format to set state, compiler | |
| flags, and linker flags in Makefile. The new macro ``PY_STDLIB_MOD`` sets | |
| three variables that are consumed by ``Modules/Setup`` and ``setup.py``. | |
| - bpo-45816: Python now supports building with Visual Studio 2022 (MSVC | |
| v143, VS Version 17.0). Patch by Jeremiah Vivian. | |
| - bpo-45800: Settings for :mod:`pyexpat` C extension are now detected by | |
| ``configure``. The bundled ``expat`` library is built in ``Makefile``. | |
| - bpo-45798: Settings for :mod:`decimal` internal C extension are now | |
| detected by ``configure``. The bundled ``libmpdec`` library is built in | |
| ``Makefile``. | |
| - bpo-45723: :program:`configure` has a new option ``--with-pkg-config`` to | |
| disable or require pkg-config. | |
| - bpo-45774: The build dependencies for :mod:`sqlite3` are now detected by | |
| ``configure`` and ``pkg-config``. Patch by Erlend E. Aasland. | |
| - bpo-45763: The build dependencies for :mod:`zlib`, :mod:`bz2`, and | |
| :mod:`lzma` are now detected by ``configure``. | |
| - bpo-45747: gdbm and dbm build dependencies are now detected by | |
| ``configure``. | |
| - bpo-45743: On macOS, the build system no longer passes | |
| ``search_paths_first`` to the linker. The flag has been the default since | |
| Xcode 4 / macOS 10.6. | |
| - bpo-45723: ``configure.ac`` is now compatible with autoconf 2.71. | |
| Deprecated checks ``STDC_HEADERS`` and ``AC_HEADER_TIME`` have been | |
| removed. | |
| - bpo-45723: ``configure`` now prints a warning when pkg-config is missing. | |
| - bpo-45731: ``configure --enable-loadable-sqlite-extensions`` is now | |
| handled by new ``PY_SQLITE_ENABLE_LOAD_EXTENSION`` macro instead of logic | |
| in setup.py. | |
| - bpo-45723: configure.ac now uses custom helper macros and | |
| ``AC_CACHE_CHECK`` to simplify and speed up configure runs. | |
| - bpo-45696: Skip the marshal step for frozen modules by generating C code | |
| that produces a set of ready-to-use code objects. This speeds up startup | |
| time by another 10% or more. | |
| - bpo-45561: Run smelly.py tool from $(srcdir). | |
| Windows | |
| ------- | |
| - bpo-46105: Fixed calculation of :data:`sys.path` in a venv on Windows. | |
| - bpo-45901: When installed through the Microsoft Store and set as the | |
| default app for :file:`*.py` files, command line arguments will now be | |
| passed to Python when invoking a script without explicitly launching | |
| Python (that is, ``script.py args`` rather than ``python script.py | |
| args``). | |
| - bpo-45616: Fix Python Launcher's ability to distinguish between versions | |
| 3.1 and 3.10 when either one is explicitly requested. Previously, 3.1 | |
| would be used if 3.10 was requested but not installed, and 3.10 would be | |
| used if 3.1 was requested but 3.10 was installed. | |
| - bpo-45850: Implement changes to build with deep-frozen modules on Windows. | |
| Note that we now require Python 3.10 as the "bootstrap" or "host" Python. | |
| - bpo-45732: Updates bundled Tcl/Tk to 8.6.12. | |
| - bpo-45720: Internal reference to :file:`shlwapi.dll` was dropped to help | |
| improve startup time. This DLL will no longer be loaded at the start of | |
| every Python process. | |
| macOS | |
| ----- | |
| - bpo-45732: Update python.org macOS installer to use Tcl/Tk 8.6.12. | |
| C API | |
| ----- | |
| - bpo-39026: Fix Python.h to build C extensions with Xcode: remove a | |
| relative include from ``Include/cpython/pystate.h``. | |
| What's New in Python 3.11.0 alpha 2? | |
| ==================================== | |
| *Release date: 2021-11-05* | |
| Core and Builtins | |
| ----------------- | |
| - bpo-45716: Improve the :exc:`SyntaxError` message when using ``True``, | |
| ``None`` or ``False`` as keywords in a function call. Patch by Pablo | |
| Galindo. | |
| - bpo-45688: :data:`sys.stdlib_module_names` now contains the macOS-specific | |
| module :mod:`_scproxy`. | |
| - bpo-45379: Clarify :exc:`ImportError` message when we try to explicitly | |
| import a frozen module but frozen modules are disabled. | |
| - bpo-44525: Specialize simple calls to Python functions (no starargs, | |
| keyowrd dict, or closure) | |
| - bpo-45530: Cases of sorting using tuples as keys may now be significantly | |
| faster in some cases. Patch by Tim Peters. | |
| The order of the result may differ from earlier releases if the tuple | |
| elements don't define a total ordering (see | |
| :ref:`expressions-value-comparisons` for information on total ordering). | |
| It's generally true that the result of sorting simply isn't well-defined | |
| in the absence of a total ordering on list elements. | |
| - bpo-45526: In obmalloc, set ADDRESS_BITS to not ignore any bits (ignored | |
| 16 before). That is safer in the case that the kernel gives user-space | |
| virtual addresses that span a range greater than 48 bits. | |
| - bpo-30570: Fixed a crash in ``issubclass()`` from infinite recursion when | |
| searching pathological ``__bases__`` tuples. | |
| - bpo-45521: Fix a bug in the obmalloc radix tree code. On 64-bit machines, | |
| the bug causes the tree to hold 46-bits of virtual addresses, rather than | |
| the intended 48-bits. | |
| - bpo-45494: Fix parser crash when reporting errors involving invalid | |
| continuation characters. Patch by Pablo Galindo. | |
| - bpo-45445: Python now fails to initialize if it finds an invalid | |
| :option:`-X` option in the command line. Patch by Pablo Galindo. | |
| - bpo-45340: Object attributes are held in an array instead of a dictionary. | |
| An object's dictionary are created lazily, only when needed. Reduces the | |
| memory consumption of a typical Python object by about 30%. Patch by Mark | |
| Shannon. | |
| - bpo-45408: Fix a crash in the parser when reporting tokenizer errors that | |
| occur at the same time unclosed parentheses are detected. Patch by Pablo | |
| Galindo. | |
| - bpo-29410: Add SipHash13 for string hash algorithm and use it by default. | |
| - bpo-45385: Fix reference leak from descr_check. Patch by Dong-hee Na. | |
| - bpo-45367: Specialized the ``BINARY_MULTIPLY`` opcode to | |
| ``BINARY_MULTIPLY_INT`` and ``BINARY_MULTIPLY_FLOAT`` using the PEP 659 | |
| machinery. | |
| - bpo-21736: Frozen stdlib modules now have ``__file__`` to the .py file | |
| they would otherwise be loaded from, if possible. For packages, | |
| ``__path__`` now has the correct entry instead of being an empty list, | |
| which allows unfrozen submodules to be imported. These are set only if | |
| the stdlib directory is known when the runtime is initialized. Note that | |
| the file at ``__file__`` is not guaranteed to exist. None of this affects | |
| non-stdlib frozen modules nor, for now, frozen modules imported using | |
| ``PyImport_ImportFrozenModule()``. Also, at the moment ``co_filename`` is | |
| not updated for the module. | |
| - bpo-45020: For frozen stdlib modules, record the original module name as | |
| ``module.__spec__.loader_state.origname``. If the value is different than | |
| ``module.__spec__.name`` then the module was defined as an alias in | |
| Tools/scripts/freeze_modules.py. If it is ``None`` then the module comes | |
| from a source file outside the stdlib. | |
| - bpo-45324: In FrozenImporter.find_spec(), we now preserve the information | |
| needed in exec_module() to load the module. This change mostly impacts | |
| internal details, rather than changing the importer's behavior. | |
| - bpo-45292: Implement :pep:`654`. Add :class:`ExceptionGroup` and | |
| :class:`BaseExceptionGroup`. Update traceback display code. | |
| - bpo-40116: Change to the implementation of split dictionaries. Classes | |
| where the instances differ either in the exact set of attributes, or in | |
| the order in which those attributes are set, can still share keys. This | |
| should have no observable effect on users of Python or the C-API. Patch by | |
| Mark Shannon. | |
| - bpo-44050: Extensions that indicate they use global state (by setting | |
| ``m_size`` to -1) can again be used in multiple interpreters. This reverts | |
| to behavior of Python 3.8. | |
| - bpo-44525: Setup initial specialization infrastructure for the | |
| ``CALL_FUNCTION`` opcode. Implemented initial specializations for C | |
| function calls: | |
| * ``CALL_FUNCTION_BUILTIN_O`` for ``METH_O`` flag. | |
| * ``CALL_FUNCTION_BUILTIN_FAST`` for ``METH_FASTCALL`` flag without keywords. | |
| * ``CALL_FUNCTION_LEN`` for ``len(o)``. | |
| * ``CALL_FUNCTION_ISINSTANCE`` for ``isinstance(o, t)``. | |
| - bpo-44511: Improve the generated bytecode for class and mapping patterns. | |
| - bpo-43706: Speed up calls to ``enumerate()`` by using the :pep:`590` | |
| ``vectorcall`` calling convention. Patch by Dong-hee Na. | |
| Library | |
| ------- | |
| - bpo-45679: Fix caching of multi-value :data:`typing.Literal`. | |
| ``Literal[True, 2]`` is no longer equal to ``Literal[1, 2]``. | |
| - bpo-42064: Convert :mod:`sqlite3` to multi-phase initialisation (PEP 489). | |
| Patches by Erlend E. Aasland. | |
| - bpo-45438: Fix typing.Signature string representation for generic builtin | |
| types. | |
| - bpo-45613: :mod:`sqlite3` now sets :attr:`sqlite3.threadsafety` based on | |
| the default threading mode the underlying SQLite library has been compiled | |
| with. Patch by Erlend E. Aasland. | |
| - bpo-45574: Fix warning about ``print_escape`` being unused. | |
| - bpo-45581: :meth:`sqlite3.connect` now correctly raises :exc:`MemoryError` | |
| if the underlying SQLite API signals memory error. Patch by Erlend E. | |
| Aasland. | |
| - bpo-45557: pprint.pprint() now handles underscore_numbers correctly. | |
| Previously it was always setting it to False. | |
| - bpo-44019: Add :func:`operator.call` to ``operator.__all__``. Patch by | |
| Kreusada. | |
| - bpo-42174: :meth:`shutil.get_terminal_size` now falls back to sane values | |
| if the column or line count are 0. | |
| - bpo-35673: Improve the introspectability of the ``__loader__`` attribute | |
| for namespace packages. :class:`importlib.machinery.NamespaceLoader` is | |
| now public, and implements the :class:`importlib.abc.InspectLoader` | |
| interface. ``_NamespaceLoader`` is kept for backward compatibility. | |
| - bpo-45515: Add references to :mod:`zoneinfo` in the :mod:`datetime` | |
| documentation, mostly replacing outdated references to ``dateutil.tz``. | |
| Change by Paul Ganssle. | |
| - bpo-45475: Reverted optimization of iterating :class:`gzip.GzipFile`, | |
| :class:`bz2.BZ2File`, and :class:`lzma.LZMAFile` (see bpo-43787) because | |
| it caused regression when user iterate them without having reference of | |
| them. Patch by Inada Naoki. | |
| - bpo-45489: Update :class:`~typing.ForwardRef` to support ``|`` operator. | |
| Patch by Dong-hee Na. | |
| - bpo-42222: Removed deprecated support for float arguments in | |
| *randrange()*. | |
| - bpo-45428: Fix a regression in py_compile when reading filenames from | |
| standard input. | |
| - bpo-45467: Fix incremental decoder and stream reader in the | |
| "raw-unicode-escape" codec. Previously they failed if the escape sequence | |
| was split. | |
| - bpo-45461: Fix incremental decoder and stream reader in the | |
| "unicode-escape" codec. Previously they failed if the escape sequence was | |
| split. | |
| - bpo-45239: Fixed :func:`email.utils.parsedate_tz` crashing with | |
| :exc:`UnboundLocalError` on certain invalid input instead of returning | |
| ``None``. Patch by Ben Hoyt. | |
| - bpo-45417: Fix quadratic behaviour in the enum module: Creation of enum | |
| classes with a lot of entries was quadratic. | |
| - bpo-45249: Fix the behaviour of :func:`traceback.print_exc` when | |
| displaying the caret when the ``end_offset`` in the exception is set to 0. | |
| Patch by Pablo Galindo | |
| - bpo-45416: Fix use of :class:`asyncio.Condition` with explicit | |
| :class:`asyncio.Lock` objects, which was a regression due to removal of | |
| explicit loop arguments. Patch by Joongi Kim. | |
| - bpo-20028: Empty escapechar/quotechar is not allowed when initializing | |
| :class:`csv.Dialect`. Patch by Vajrasky Kok and Dong-hee Na. | |
| - bpo-44904: Fix bug in the :mod:`doctest` module that caused it to fail if | |
| a docstring included an example with a ``classmethod`` ``property``. Patch | |
| by Alex Waygood. | |
| - bpo-45406: Make :func:`inspect.getmodule` catch ``FileNotFoundError`` | |
| raised by :'func:`inspect.getabsfile`, and return ``None`` to indicate | |
| that the module could not be determined. | |
| - bpo-45411: Add extensions for files containing subtitles - .srt & .vtt - | |
| to the mimetypes.py module. | |
| - bpo-10716: Migrated pydoc to HTML5 (without changing the look of it). Side | |
| effect is to update xmlrpc's ``ServerHTMLDoc`` which now uses the CSS too. | |
| cgitb now relies less on pydoc (as it can't use the CSS file). | |
| - bpo-27580: Add support of null characters in :mod:`csv`. | |
| - bpo-45262: Prevent use-after-free in asyncio. Make sure the cached running | |
| loop holder gets cleared on dealloc to prevent use-after-free in | |
| get_running_loop | |
| - bpo-45386: Make :mod:`xmlrpc.client` more robust to C runtimes where the | |
| underlying C ``strftime`` function results in a ``ValueError`` when | |
| testing for year formatting options. | |
| - bpo-20028: Improve error message of :class:`csv.Dialect` when | |
| initializing. Patch by Vajrasky Kok and Dong-hee Na. | |
| - bpo-45343: Update bundled pip to 21.2.4 and setuptools to 58.1.0 | |
| - bpo-45328: Fixed :class:`http.client.HTTPConnection` to work properly in | |
| OSs that don't support the ``TCP_NODELAY`` socket option. | |
| - bpo-45243: Add :meth:`~sqlite3.Connection.setlimit` and | |
| :meth:`~sqlite3.Connection.getlimit` to :class:`sqlite3.Connection` for | |
| setting and getting SQLite limits by connection basis. Patch by Erlend E. | |
| Aasland. | |
| - bpo-45320: Removed from the :mod:`inspect` module: | |
| * the ``getargspec`` function, deprecated since Python 3.0; | |
| use :func:`inspect.signature` or :func:`inspect.getfullargspec` instead. | |
| * the ``formatargspec`` function, deprecated since Python 3.5; | |
| use the :func:`inspect.signature` function and :class:`Signature` object | |
| directly. | |
| * the undocumented ``Signature.from_callable`` and ``Signature.from_function`` | |
| functions, deprecated since Python 3.5; use the | |
| :meth:`Signature.from_callable() <inspect.Signature.from_callable>` method | |
| instead. | |
| Patch by Hugo van Kemenade. | |
| - bpo-45192: Fix the ``tempfile._infer_return_type`` function so that the | |
| ``dir`` argument of the :mod:`tempfile` functions accepts an object | |
| implementing the ``os.PathLike`` protocol. | |
| Patch by Kyungmin Lee. | |
| - bpo-45160: When tracing a tkinter variable used by a ttk OptionMenu, | |
| callbacks are no longer made twice. | |
| - bpo-25625: Added non parallel-safe :func:`~contextlib.chdir` context | |
| manager to change the current working directory and then restore it on | |
| exit. Simple wrapper around :func:`~os.chdir`. | |
| - bpo-24139: Add support for SQLite extended result codes in | |
| :exc:`sqlite3.Error`. Patch by Erlend E. Aasland. | |
| - bpo-24444: Fixed an error raised in :mod:`argparse` help display when help | |
| for an option is set to 1+ blank spaces or when *choices* arg is an empty | |
| container. | |
| - bpo-44547: Implement ``Fraction.__int__``, so that a | |
| :class:`fractions.Fraction` instance ``f`` passes an ``isinstance(f, | |
| typing.SupportsInt)`` check. | |
| - bpo-40321: Adds support for HTTP 308 redirects to :mod:`urllib`. See | |
| :rfc:`7538` for details. Patch by Jochem Schulenklopper. | |
| - bpo-41374: Ensure that ``socket.TCP_*`` constants are exposed on Cygwin | |
| 3.1.6 and greater. | |
| - bpo-35970: Add help flag to the base64 module's command line interface. | |
| Patch contributed by Robert Kuska. | |
| Documentation | |
| ------------- | |
| - bpo-45726: Improve documentation for :func:`functools.singledispatch` and | |
| :class:`functools.singledispatchmethod`. | |
| - bpo-45680: Amend the docs on ``GenericAlias`` objects to clarify that | |
| non-container classes can also implement ``__class_getitem__``. Patch | |
| contributed by Alex Waygood. | |
| - bpo-45618: Update Sphinx version used to build the documentation to 4.2.0. | |
| Patch by Maciej Olko. | |
| - bpo-45655: Add a new "relevant PEPs" section to the top of the | |
| documentation for the ``typing`` module. Patch by Alex Waygood. | |
| - bpo-45604: Add ``level`` argument to ``multiprocessing.log_to_stderr`` | |
| function docs. | |
| - bpo-45516: Add protocol description to the | |
| :class:`importlib.abc.TraversableResources` documentation. | |
| - bpo-45464: Mention in the documentation of :ref:`Built-in Exceptions | |
| <bltin-exceptions>` that inheriting from multiple exception types in a | |
| single subclass is not recommended due to possible memory layout | |
| incompatibility. | |
| - bpo-45449: Add note about :pep:`585` in :mod:`collections.abc`. | |
| - bpo-45516: Add protocol description to the | |
| :class:`importlib.abc.Traversable` documentation. | |
| - bpo-20692: Add Programming FAQ entry explaining that int literal attribute | |
| access requires either a space after or parentheses around the literal. | |
| Tests | |
| ----- | |
| - bpo-45678: Add tests for scenarios in which | |
| :class:`functools.singledispatchmethod` is stacked on top of a method that | |
| has already been wrapped by two other decorators. Patch by Alex Waygood. | |
| - bpo-45578: Add tests for :func:`dis.distb` | |
| - bpo-45678: Add tests to ensure that ``functools.singledispatchmethod`` | |
| correctly wraps the attributes of the target function. | |
| - bpo-45668: PGO tests now pass when Python is built without test extension | |
| modules. | |
| - bpo-45577: Add subtests for all ``pickle`` protocols in ``test_zoneinfo``. | |
| - bpo-45566: Fix ``test_frozen_pickle`` in ``test_dataclasses`` to check all | |
| ``pickle`` versions. | |
| - bpo-43592: :mod:`test.libregrtest` now raises the soft resource limit for | |
| the maximum number of file descriptors when the default is too low for our | |
| test suite as was often the case on macOS. | |
| - bpo-39679: Add more test cases for `@functools.singledispatchmethod` when | |
| combined with `@classmethod` or `@staticmethod`. | |
| - bpo-45410: When libregrtest spawns a worker process, stderr is now written | |
| into stdout to keep messages order. Use a single pipe for stdout and | |
| stderr, rather than two pipes. Previously, messages were out of order | |
| which made analysis of buildbot logs harder Patch by Victor Stinner. | |
| - bpo-45402: Fix test_tools.test_sundry() when Python is built out of tree: | |
| fix how the freeze_modules.py tool locates the _freeze_module program. | |
| Patch by Victor Stinner. | |
| - bpo-45403: Fix test_sys.test_stdlib_dir() when Python is built outside the | |
| source tree: compare normalized paths. Patch by Victor Stinner. | |
| - bpo-45400: Fix | |
| test_name_error_suggestions_do_not_trigger_for_too_many_locals() of | |
| test_exceptions if a directory name contains "a1" (like | |
| "Python-3.11.0a1"): use a stricter regular expression. Patch by Victor | |
| Stinner. | |
| - bpo-10572: Rename :mod:`sqlite3` tests from ``test_sqlite`` to | |
| ``test_sqlite3``, and relocate them to ``Lib/test/test_sqlite3``. Patch by | |
| Erlend E. Aasland. | |
| Build | |
| ----- | |
| - bpo-43158: ``setup.py`` now uses values from configure script to build the | |
| ``_uuid`` extension module. Configure now detects util-linux's | |
| ``libuuid``, too. | |
| - bpo-45666: Fix warning of ``swprintf`` and ``%s`` usage in | |
| ``_testembed.c`` | |
| - bpo-45548: ``Modules/Setup`` and ``Modules/makesetup`` have been improved. | |
| The ``Setup`` file now contains working rules for all extensions. Outdated | |
| comments have been removed. Rules defined by ``makesetup`` track | |
| dependencies correctly. | |
| - bpo-45548: The :mod:`math` and :mod:`cmath` implementation now require a | |
| C99 compatible ``libm`` and no longer ship with workarounds for missing | |
| acosh, asinh, atanh, expm1, and log1p functions. | |
| - bpo-45595: ``setup.py`` and ``makesetup`` now track build dependencies on | |
| all Python header files and module specific header files. | |
| - bpo-45571: ``Modules/Setup`` now use ``PY_CFLAGS_NODIST`` instead of | |
| ``PY_CFLAGS`` to compile shared modules. | |
| - bpo-45570: :mod:`pyexpat` and :mod:`_elementtree` no longer define | |
| obsolete macros ``HAVE_EXPAT_CONFIG_H`` and ``USE_PYEXPAT_CAPI``. | |
| ``XML_POOR_ENTROPY`` is now defined in ``expat_config.h``. | |
| - bpo-43974: ``setup.py`` no longer defines ``Py_BUILD_CORE_MODULE``. | |
| Instead every module, that uses the internal API, defines the macro. | |
| - bpo-45548: Fill in missing entries in Modules/Setup. | |
| - bpo-45532: Update :data:`sys.version` to use ``main`` as fallback | |
| information. Patch by Jeong YunWon. | |
| - bpo-45536: The ``configure`` script now checks whether OpenSSL headers and | |
| libraries provide required APIs. Most common APIs are verified. The check | |
| detects outdated or missing OpenSSL. Failures do not stop configure. | |
| - bpo-45221: Fixed regression in handling of ``LDFLAGS`` and ``CPPFLAGS`` | |
| options where :meth:`argparse.parse_known_args` could interpret an option | |
| as one of the built-in command line argument, for example ``-h`` for help. | |
| - bpo-45440: Building Python now requires a C99 ``<math.h>`` header file | |
| providing the following functions: ``copysign()``, ``hypot()``, | |
| ``isfinite()``, ``isinf()``, ``isnan()``, ``round()``. Patch by Victor | |
| Stinner. | |
| - bpo-45405: Prevent ``internal configure error`` when running ``configure`` | |
| with recent versions of non-Apple clang. Patch by David Bohman. | |
| - bpo-45433: Avoid linking libpython with libcrypt. | |
| Windows | |
| ------- | |
| - bpo-43652: Update Tcl/Tk to 8.6.11, actually this time. The previous | |
| update incorrectly included 8.6.10. | |
| - bpo-45337: venv now warns when the created environment may need to be | |
| accessed at a different path, due to redirections, links or junctions. It | |
| also now correctly installs or upgrades components when the alternate path | |
| is required. | |
| - bpo-43851: Build SQLite ``SQLITE_OMIT_AUTOINIT`` on Windows. Patch by | |
| Erlend E. Aasland. | |
| macOS | |
| ----- | |
| - bpo-44828: Avoid tkinter file dialog failure on macOS 12 Monterey when | |
| using the Tk 8.6.11 provided by python.org macOS installers. Patch by Marc | |
| Culler of the Tk project. | |
| IDLE | |
| ---- | |
| - bpo-45495: Add context keywords 'case' and 'match' to completions list. | |
| C API | |
| ----- | |
| - bpo-29103: :c:func:`PyType_FromSpec* <PyType_FromModuleAndSpec>` now | |
| copies the class name from the spec to a buffer owned by the class, so the | |
| original can be safely deallocated. Patch by Petr Viktorin. | |
| - bpo-45522: The internal freelists for frame, float, list, dict, async | |
| generators, and context objects can now be disabled. | |
| - bpo-35134: Exclude :c:func:`PyWeakref_GET_OBJECT` from the limited C API. | |
| It never worked since the :c:type:`PyWeakReference` structure is opaque in | |
| the limited C API. | |
| - bpo-35081: Move the ``interpreteridobject.h`` header file from | |
| ``Include/`` to ``Include/internal/``. It only provides private functions. | |
| Patch by Victor Stinner. | |
| - bpo-35134: The non-limited API files ``cellobject.h``, ``classobject.h``, | |
| ``context.h``, ``funcobject.h``, ``genobject.h`` and ``longintrepr.h`` | |
| have been moved to the ``Include/cpython`` directory. Moreover, the | |
| ``eval.h`` header file was removed. These files must not be included | |
| directly, as they are already included in ``Python.h``: :ref:`Include | |
| Files <api-includes>`. If they have been included directly, consider | |
| including ``Python.h`` instead. Patch by Victor Stinner. | |
| - bpo-45474: The following items are no longer available when | |
| ``Py_LIMITED_API`` is defined: | |
| * :c:func:`PyMarshal_WriteLongToFile` | |
| * :c:func:`PyMarshal_WriteObjectToFile` | |
| * :c:func:`PyMarshal_ReadObjectFromString` | |
| * :c:func:`PyMarshal_WriteObjectToString` | |
| * the ``Py_MARSHAL_VERSION`` macro | |
| These are not part of the :ref:`limited API <stable-abi-list>`. | |
| Patch by Victor Stinner. | |
| - bpo-45434: Remove the ``pystrhex.h`` header file. It only contains private | |
| functions. C extensions should only include the main ``<Python.h>`` header | |
| file. Patch by Victor Stinner. | |
| - bpo-45440: Remove the ``Py_FORCE_DOUBLE()`` macro. It was used by the | |
| ``Py_IS_INFINITY()`` macro. Patch by Victor Stinner. | |
| - bpo-45434: ``<Python.h>`` no longer includes the header files | |
| ``<stdlib.h>``, ``<stdio.h>``, ``<errno.h>`` and ``<string.h>`` when the | |
| ``Py_LIMITED_API`` macro is set to ``0x030b0000`` (Python 3.11) or higher. | |
| C extensions should explicitly include the header files after ``#include | |
| <Python.h>``. Patch by Victor Stinner. | |
| - bpo-41123: Remove ``Py_UNICODE_COPY()`` and ``Py_UNICODE_FILL()`` macros, | |
| deprecated since Python 3.3. Use ``PyUnicode_CopyCharacters()`` or | |
| ``memcpy()`` (``wchar_t*`` string), and ``PyUnicode_Fill()`` functions | |
| instead. Patch by Victor Stinner. | |
| - bpo-45412: Remove the following math macros using the ``errno`` variable: | |
| * ``Py_ADJUST_ERANGE1()`` | |
| * ``Py_ADJUST_ERANGE2()`` | |
| * ``Py_OVERFLOWED()`` | |
| * ``Py_SET_ERANGE_IF_OVERFLOW()`` | |
| * ``Py_SET_ERRNO_ON_MATH_ERROR()`` | |
| Patch by Victor Stinner. | |
| - bpo-45395: Custom frozen modules (the array set to | |
| ``PyImport_FrozenModules``) are now treated as additions, rather than | |
| replacing all the default frozen modules. Frozen stdlib modules can still | |
| be disabled by setting the "code" field of the custom array entry to NULL. | |
| - bpo-43760: Add new :c:func:`PyThreadState_EnterTracing`, and | |
| :c:func:`PyThreadState_LeaveTracing` functions to the limited C API to | |
| suspend and resume tracing and profiling. Patch by Victor Stinner. | |
| - bpo-44220: :c:var:`PyStructSequence_UnnamedField` is added to the Stable | |
| ABI. | |
| What's New in Python 3.11.0 alpha 1? | |
| ==================================== | |
| *Release date: 2021-10-05* | |
| Security | |
| -------- | |
| - bpo-42278: Replaced usage of :func:`tempfile.mktemp` with | |
| :class:`~tempfile.TemporaryDirectory` to avoid a potential race condition. | |
| - bpo-44600: Fix incorrect line numbers while tracing some failed patterns | |
| in :ref:`match <match>` statements. Patch by Charles Burkland. | |
| - bpo-41180: Add auditing events to the :mod:`marshal` module, and stop | |
| raising ``code.__init__`` events for every unmarshalled code object. | |
| Directly instantiated code objects will continue to raise an event, and | |
| audit event handlers should inspect or collect the raw marshal data. This | |
| reduces a significant performance overhead when loading from ``.pyc`` | |
| files. | |
| - bpo-44394: Update the vendored copy of libexpat to 2.4.1 (from 2.2.8) to | |
| get the fix for the CVE-2013-0340 "Billion Laughs" vulnerability. This | |
| copy is most used on Windows and macOS. | |
| - bpo-43124: Made the internal ``putcmd`` function in :mod:`smtplib` | |
| sanitize input for presence of ``\r`` and ``\n`` characters to avoid | |
| (unlikely) command injection. | |
| - bpo-44022: :mod:`http.client` now avoids infinitely reading potential HTTP | |
| headers after a ``100 Continue`` status response from the server. | |
| Core and Builtins | |
| ----------------- | |
| - bpo-43760: The number of hardware branches per instruction dispatch is | |
| reduced from two to one by adding a special instruction for tracing. Patch | |
| by Mark Shannon. | |
| - bpo-45061: Add a deallocator to the bool type to detect refcount bugs in C | |
| extensions which call Py_DECREF(Py_True) or Py_DECREF(Py_False) by | |
| mistake. Detect also refcount bugs when the empty tuple singleton or the | |
| Unicode empty string singleton is destroyed by mistake. Patch by Victor | |
| Stinner. | |
| - bpo-24076: sum() was further optimised for summing up single digit | |
| integers. | |
| - bpo-45190: Update Unicode databases to Unicode 14.0.0. | |
| - bpo-45167: Fix deepcopying of :class:`types.GenericAlias` objects. | |
| - bpo-45155: :meth:`int.to_bytes` and :meth:`int.from_bytes` now take a | |
| default value of ``"big"`` for the ``byteorder`` argument. | |
| :meth:`int.to_bytes` also takes a default value of ``1`` for the | |
| ``length`` argument. | |
| - bpo-44219: Release the GIL while performing ``isatty`` system calls on | |
| arbitrary file descriptors. In particular, this affects :func:`os.isatty`, | |
| :func:`os.device_encoding` and :class:`io.TextIOWrapper`. By extension, | |
| :func:`io.open` in text mode is also affected. This change solves a | |
| deadlock in :func:`os.isatty`. Patch by Vincent Michel in :issue:`44219`. | |
| - bpo-44959: Added fallback to extension modules with '.sl' suffix on HP-UX | |
| - bpo-45121: Fix issue where ``Protocol.__init__`` raises ``RecursionError`` | |
| when it's called directly or via ``super()``. Patch provided by Yurii | |
| Karabas. | |
| - bpo-44348: The deallocator function of the :exc:`BaseException` type now | |
| uses the trashcan mechanism to prevent stack overflow. For example, when a | |
| :exc:`RecursionError` instance is raised, it can be linked to another | |
| RecursionError through the ``__context__`` attribute or the | |
| ``__traceback__`` attribute, and then a chain of exceptions is created. | |
| When the chain is destroyed, nested deallocator function calls can crash | |
| with a stack overflow if the chain is too long compared to the available | |
| stack memory. Patch by Victor Stinner. | |
| - bpo-45123: Fix PyAiter_Check to only check for the __anext__ presence (not | |
| for __aiter__). Rename PyAiter_Check to PyAIter_Check, PyObject_GetAiter | |
| -> PyObject_GetAIter. | |
| - bpo-1514420: Interpreter no longer attempts to open files with names in | |
| angle brackets (like "<string>" or "<stdin>") when formatting an | |
| exception. | |
| - bpo-41031: Match C and Python code formatting of unprintable exceptions | |
| and exceptions in the :mod:`__main__` module. | |
| - bpo-37330: :func:`open`, :func:`io.open`, :func:`codecs.open` and | |
| :class:`fileinput.FileInput` no longer accept ``'U'`` ("universal | |
| newline") in the file mode. This flag was deprecated since Python 3.3. | |
| Patch by Victor Stinner. | |
| - bpo-45083: When the interpreter renders an exception, its name now has a | |
| complete qualname. Previously only the class name was concatenated to the | |
| module name, which sometimes resulted in an incorrect full name being | |
| displayed. | |
| (This issue impacted only the C code exception rendering, the | |
| :mod:`traceback` module was using qualname already). | |
| - bpo-34561: List sorting now uses the merge-ordering strategy from Munro | |
| and Wild's ``powersort()``. Unlike the former strategy, this is provably | |
| near-optimal in the entropy of the distribution of run lengths. Most uses | |
| of ``list.sort()`` probably won't see a significant time difference, but | |
| may see significant improvements in cases where the former strategy was | |
| exceptionally poor. However, as these are all fast linear-time | |
| approximations to a problem that's inherently at best quadratic-time to | |
| solve truly optimally, it's also possible to contrive cases where the | |
| former strategy did better. | |
| - bpo-45056: Compiler now removes trailing unused constants from co_consts. | |
| - bpo-45020: Add a new command line option, "-X frozen_modules=[on|off]" to | |
| opt out of (or into) using optional frozen modules. This defaults to "on" | |
| (or "off" if it's running out of the source tree). | |
| - bpo-45012: In :mod:`posix`, release GIL during ``stat()``, ``lstat()``, | |
| and ``fstatat()`` syscalls made by :func:`os.DirEntry.stat`. Patch by | |
| Stanisław Skonieczny. | |
| - bpo-45018: Fixed pickling of range iterators that iterated for over | |
| ``2**32`` times. | |
| - bpo-45000: A :exc:`SyntaxError` is now raised when trying to delete | |
| :const:`__debug__`. Patch by Dong-hee Na. | |
| - bpo-44963: Implement ``send()`` and ``throw()`` methods for | |
| ``anext_awaitable`` objects. Patch by Pablo Galindo. | |
| - bpo-44962: Fix a race in WeakKeyDictionary, WeakValueDictionary and | |
| WeakSet when two threads attempt to commit the last pending removal. This | |
| fixes asyncio.create_task and fixes a data loss in asyncio.run where | |
| shutdown_asyncgens is not run | |
| - bpo-24234: Implement the :meth:`__bytes__` special method on the | |
| :class:`bytes` type, so a bytes object ``b`` passes an ``isinstance(b, | |
| typing.SupportsBytes)`` check. | |
| - bpo-24234: Implement the :meth:`__complex__` special method on the | |
| :class:`complex` type, so a complex number ``z`` passes an ``isinstance(z, | |
| typing.SupportsComplex)`` check. | |
| - bpo-44954: Fixed a corner case bug where the result of | |
| ``float.fromhex('0x.8p-1074')`` was rounded the wrong way. | |
| - bpo-44947: Refine the syntax error for trailing commas in import | |
| statements. Patch by Pablo Galindo. | |
| - bpo-44945: Specialize the BINARY_ADD instruction using the PEP 659 | |
| machinery. Adds five new instructions: | |
| * BINARY_ADD_ADAPTIVE | |
| * BINARY_ADD_FLOAT | |
| * BINARY_ADD_INT | |
| * BINARY_ADD_UNICODE | |
| * BINARY_ADD_UNICODE_INPLACE_FAST | |
| - bpo-44929: Fix some edge cases of ``enum.Flag`` string representation in | |
| the REPL. Patch by Pablo Galindo. | |
| - bpo-44914: Class version tags are no longer recycled. | |
| This means that a version tag serves as a unique identifier for the state | |
| of a class. We rely on this for effective specialization of the LOAD_ATTR | |
| and other instructions. | |
| - bpo-44698: Restore behaviour of complex exponentiation with integer-valued | |
| exponent of type :class:`float` or :class:`complex`. | |
| - bpo-44895: A debug variable :envvar:`PYTHONDUMPREFSFILE` is added for | |
| creating a dump file which is generated by :option:`--with-trace-refs`. | |
| Patch by Dong-hee Na. | |
| - bpo-44900: Add five superinstructions for PEP 659 quickening: | |
| * LOAD_FAST LOAD_FAST | |
| * STORE_FAST LOAD_FAST | |
| * LOAD_FAST LOAD_CONST | |
| * LOAD_CONST LOAD_FAST | |
| * STORE_FAST STORE_FAST | |
| - bpo-44889: Initial implementation of adaptive specialization of | |
| ``LOAD_METHOD``. The following specialized forms were added: | |
| * ``LOAD_METHOD_CACHED`` | |
| * ``LOAD_METHOD_MODULE`` | |
| * ``LOAD_METHOD_CLASS`` | |
| - bpo-44890: Specialization stats are always collected in debug builds. | |
| - bpo-44885: Correct the ast locations of f-strings with format specs and | |
| repeated expressions. Patch by Pablo Galindo | |
| - bpo-44878: Remove the loop from the bytecode interpreter. All instructions | |
| end with a DISPATCH macro, so the loop is now redundant. | |
| - bpo-44878: Remove switch statement for interpreter loop when using | |
| computed gotos. This makes sure that we only have one dispatch table in | |
| the interpreter. | |
| - bpo-44874: Deprecate the old trashcan macros | |
| (``Py_TRASHCAN_SAFE_BEGIN``/``Py_TRASHCAN_SAFE_END``). They should be | |
| replaced by the new macros ``Py_TRASHCAN_BEGIN`` and ``Py_TRASHCAN_END``. | |
| - bpo-44872: Use new trashcan macros (Py_TRASHCAN_BEGIN/END) in | |
| frameobject.c instead of the old ones (Py_TRASHCAN_SAFE_BEGIN/END). | |
| - bpo-33930: Fix segmentation fault with deep recursion when cleaning method | |
| objects. Patch by Augusto Goulart and Pablo Galindo. | |
| - bpo-25782: Fix bug where ``PyErr_SetObject`` hangs when the current | |
| exception has a cycle in its context chain. | |
| - bpo-44856: Fix reference leaks in the error paths of ``update_bases()`` | |
| and ``__build_class__``. Patch by Pablo Galindo. | |
| - bpo-44826: Initial implementation of adaptive specialization of STORE_ATTR | |
| Three specialized forms of STORE_ATTR are added: | |
| * STORE_ATTR_SLOT | |
| * STORE_ATTR_SPLIT_KEYS | |
| * STORE_ATTR_WITH_HINT | |
| - bpo-44838: Fixed a bug that was causing the parser to raise an incorrect | |
| custom :exc:`SyntaxError` for invalid 'if' expressions. Patch by Pablo | |
| Galindo. | |
| - bpo-44821: Create instance dictionaries (__dict__) eagerly, to improve | |
| regularity of object layout and assist specialization. | |
| - bpo-44792: Improve syntax errors for if expressions. Patch by Miguel Brito | |
| - bpo-34013: Generalize the invalid legacy statement custom error message | |
| (like the one generated when "print" is called without parentheses) to | |
| include more generic expressions. Patch by Pablo Galindo | |
| - bpo-44732: Rename ``types.Union`` to ``types.UnionType``. | |
| - bpo-44725: Expose specialization stats in python via | |
| :func:`_opcode.get_specialization_stats`. | |
| - bpo-44717: Improve AttributeError on circular imports of submodules. | |
| - bpo-44698: Fix undefined behaviour in complex object exponentiation. | |
| - bpo-44653: Support :mod:`typing` types in parameter substitution in the | |
| union type. | |
| - bpo-44676: Add ability to serialise ``types.Union`` objects. Patch | |
| provided by Yurii Karabas. | |
| - bpo-44633: Parameter substitution of the union type with wrong types now | |
| raises ``TypeError`` instead of returning ``NotImplemented``. | |
| - bpo-44661: Update ``property_descr_set`` to use vectorcall if possible. | |
| Patch by Dong-hee Na. | |
| - bpo-44662: Add ``__module__`` to ``types.Union``. This also fixes | |
| ``types.Union`` issues with ``typing.Annotated``. Patch provided by Yurii | |
| Karabas. | |
| - bpo-44655: Include the name of the type in unset __slots__ attribute | |
| errors. Patch by Pablo Galindo | |
| - bpo-44655: Don't include a missing attribute with the same name as the | |
| failing one when offering suggestions for missing attributes. Patch by | |
| Pablo Galindo | |
| - bpo-44646: Fix the hash of the union type: it no longer depends on the | |
| order of arguments. | |
| - bpo-44636: Collapse union of equal types. E.g. the result of ``int | int`` | |
| is now ``int``. Fix comparison of the union type with non-hashable | |
| objects. E.g. ``int | str == {}`` no longer raises a TypeError. | |
| - bpo-44611: On Windows, :func:`os.urandom`: uses BCryptGenRandom API | |
| instead of CryptGenRandom API which is deprecated from Microsoft Windows | |
| API. Patch by Dong-hee Na. | |
| - bpo-44635: Convert ``None`` to ``type(None)`` in the union type | |
| constructor. | |
| - bpo-26280: Implement adaptive specialization for BINARY_SUBSCR | |
| Three specialized forms of BINARY_SUBSCR are added: | |
| * BINARY_SUBSCR_LIST_INT | |
| * BINARY_SUBSCR_TUPLE_INT | |
| * BINARY_SUBSCR_DICT | |
| - bpo-44589: Mapping patterns in ``match`` statements with two or more equal | |
| literal keys will now raise a :exc:`SyntaxError` at compile-time. | |
| - bpo-44606: Fix ``__instancecheck__`` and ``__subclasscheck__`` for the | |
| union type. | |
| - bpo-42073: The ``@classmethod`` decorator can now wrap other | |
| classmethod-like descriptors. | |
| - bpo-41972: Tuned the string-searching algorithm of fastsearch.h to have a | |
| shorter inner loop for most cases. | |
| - bpo-44590: All necessary data for executing a Python function (local | |
| variables, stack, etc) is now kept in a per-thread stack. Frame objects | |
| are lazily allocated on demand. This increases performance by about 7% on | |
| the standard benchmark suite. Introspection and debugging are unaffected | |
| as frame objects are always available when needed. Patch by Mark Shannon. | |
| - bpo-44584: The threading debug (:envvar:`PYTHONTHREADDEBUG` environment | |
| variable) is deprecated in Python 3.10 and will be removed in Python 3.12. | |
| This feature requires a debug build of Python. Patch by Victor Stinner. | |
| - bpo-43895: An obsolete internal cache of shared object file handles added | |
| in 1995 that attempted, but did not guarantee, that a .so would not be | |
| dlopen'ed twice to work around flaws in mid-1990s posix-ish operating | |
| systems has been removed from dynload_shlib.c. | |
| - bpo-44490: :mod:`typing` now searches for type parameters in | |
| ``types.Union`` objects. ``get_type_hints`` will also properly resolve | |
| annotations with nested ``types.Union`` objects. Patch provided by Yurii | |
| Karabas. | |
| - bpo-43950: Code objects can now provide the column information for | |
| instructions when available. This is levaraged during traceback printing | |
| to show the expressions responsible for errors. | |
| Contributed by Pablo Galindo, Batuhan Taskaya and Ammar Askar as part of | |
| :pep:`657`. | |
| - bpo-44562: Remove uses of :c:func:`PyObject_GC_Del` in error path when | |
| initializing :class:`types.GenericAlias`. | |
| - bpo-41486: Fix a memory consumption and copying performance regression in | |
| earlier 3.10 beta releases if someone used an output buffer larger than | |
| 4GiB with zlib.decompress on input data that expands that large. | |
| - bpo-43908: Heap types with the :const:`Py_TPFLAGS_IMMUTABLETYPE` flag can | |
| now inherit the :pep:`590` vectorcall protocol. Previously, this was only | |
| possible for :ref:`static types <static-types>`. Patch by Erlend E. | |
| Aasland. | |
| - bpo-44553: Implement GC methods for ``types.Union`` to break reference | |
| cycles and prevent memory leaks. | |
| - bpo-44490: Add ``__parameters__`` attribute and ``__getitem__`` operator | |
| to ``types.Union``. Patch provided by Yurii Karabas. | |
| - bpo-44523: Remove the pass-through for :func:`hash` of | |
| :class:`weakref.proxy` objects to prevent unintended consequences when the | |
| original referred object dies while the proxy is part of a hashable | |
| object. Patch by Pablo Galindo. | |
| - bpo-44483: Fix a crash in ``types.Union`` objects when creating a union of | |
| an object with bad ``__module__`` field. | |
| - bpo-44486: Modules will always have a dictionary, even when created by | |
| ``types.ModuleType.__new__()`` | |
| - bpo-44472: Fix ltrace functionality when exceptions are raised. Patch by | |
| Pablo Galindo | |
| - bpo-12022: A :exc:`TypeError` is now raised instead of an | |
| :exc:`AttributeError` in :keyword:`with` and :keyword:`async with` | |
| statements for objects which do not support the :term:`context manager` or | |
| :term:`asynchronous context manager` protocols correspondingly. | |
| - bpo-44297: Make sure that the line number is set when entering a | |
| comprehension scope. Ensures that backtraces inclusing generator | |
| expressions show the correct line number. | |
| - bpo-44456: Improve the syntax error when mixing positional and keyword | |
| patterns. Patch by Pablo Galindo. | |
| - bpo-44409: Fix error location information for tokenizer errors raised on | |
| initialization of the tokenizer. Patch by Pablo Galindo. | |
| - bpo-44396: Fix a possible crash in the tokenizer when raising syntax | |
| errors for unclosed strings. Patch by Pablo Galindo. | |
| - bpo-44376: Exact integer exponentiation (like ``i**2`` or ``pow(i, 2)``) | |
| with a small exponent is much faster, due to reducing overhead in such | |
| cases. | |
| - bpo-44313: Directly imported objects and modules (through import and from | |
| import statements) don't generate ``LOAD_METHOD``/``CALL_METHOD`` for | |
| directly accessed objects on their namespace. They now use the regular | |
| ``LOAD_ATTR``/``CALL_FUNCTION``. | |
| - bpo-44338: Implement adaptive specialization for LOAD_GLOBAL | |
| Two specialized forms of LOAD_GLOBAL are added: | |
| * LOAD_GLOBAL_MODULE | |
| * LOAD_GLOBAL_BUILTIN | |
| - bpo-44368: Improve syntax errors for invalid "as" targets. Patch by Pablo | |
| Galindo | |
| - bpo-44349: Fix an edge case when displaying text from files with encoding | |
| in syntax errors. Patch by Pablo Galindo. | |
| - bpo-44337: Initial implementation of adaptive specialization of LOAD_ATTR | |
| Four specialized forms of LOAD_ATTR are added: | |
| * LOAD_ATTR_SLOT | |
| * LOAD_ATTR_SPLIT_KEYS | |
| * LOAD_ATTR_WITH_HINT | |
| * LOAD_ATTR_MODULE | |
| - bpo-44335: Fix a regression when identifying incorrect characters in | |
| syntax errors. Patch by Pablo Galindo | |
| - bpo-43693: Computation of the offsets of cell variables is done in the | |
| compiler instead of at runtime. This reduces the overhead of handling cell | |
| and free variables, especially in the case where a variable is both an | |
| argument and cell variable. | |
| - bpo-44317: Improve tokenizer error with improved locations. Patch by Pablo | |
| Galindo. | |
| - bpo-44304: Fix a crash in the :mod:`sqlite3` module that happened when the | |
| garbage collector clears :class:`sqlite.Statement` objects. Patch by Pablo | |
| Galindo | |
| - bpo-44305: Improve error message for ``try`` blocks without ``except`` or | |
| ``finally`` blocks. Patch by Pablo Galindo. | |
| - bpo-43413: Constructors of subclasses of some builtin classes (e.g. | |
| :class:`tuple`, :class:`list`, :class:`frozenset`) no longer accept | |
| arbitrary keyword arguments. [reverted in 3.11a4] Subclass of :class:`set` | |
| can now define a ``__new__()`` method with additional keyword parameters | |
| without overriding also ``__init__()``. | |
| - bpo-43667: Improve Unicode support in non-UTF locales on Oracle Solaris. | |
| This issue does not affect other Solaris systems. | |
| - bpo-43693: A new opcode MAKE_CELL has been added that effectively moves | |
| some of the work done on function entry into the compiler and into the | |
| eval loop. In addition to creating the required cell objects, the new | |
| opcode converts relevant arguments (and other locals) to cell variables on | |
| function entry. | |
| - bpo-44232: Fix a regression in :func:`type` when a metaclass raises an | |
| exception. The C function :c:func:`type_new` must properly report the | |
| exception when a metaclass constructor raises an exception and the winner | |
| class is not the metaclass. Patch by Victor Stinner. | |
| - bpo-44201: Avoid side effects of checking for specialized syntax errors in | |
| the REPL that was causing it to ask for extra tokens after a syntax error | |
| had been detected. Patch by Pablo Galindo | |
| - bpo-43693: ``PyCodeObject`` gained ``co_fastlocalnames`` and | |
| ``co_fastlocalkinds`` as the authoritative source of fast locals info. | |
| Marshaled code objects have changed accordingly. | |
| - bpo-44184: Fix a crash at Python exit when a deallocator function removes | |
| the last strong reference to a heap type. Patch by Victor Stinner. | |
| - bpo-44187: Implement quickening in the interpreter. This offers no | |
| advantages as yet, but is an enabler of future optimizations. See PEP 659 | |
| for full explanation. | |
| - bpo-44180: The parser doesn't report generic syntax errors that happen in | |
| a position further away that the one it reached in the first pass. Patch | |
| by Pablo Galindo | |
| - bpo-44168: Fix error message in the parser involving keyword arguments | |
| with invalid expressions. Patch by Pablo Galindo | |
| - bpo-44156: String caches in ``compile.c`` are now subinterpreter | |
| compatible. | |
| - bpo-44143: Fixed a crash in the parser that manifest when raising | |
| tokenizer errors when an existing exception was present. Patch by Pablo | |
| Galindo. | |
| - bpo-44032: Move 'fast' locals and other variables from the frame object to | |
| a per-thread datastack. | |
| - bpo-44114: Fix incorrect dictkeys_reversed and dictitems_reversed function | |
| signatures in C code, which broke webassembly builds. | |
| - bpo-44110: Improve :func:`str.__getitem__` error message | |
| - bpo-26110: Add ``CALL_METHOD_KW`` opcode to speed up method calls with | |
| keyword arguments. Idea originated from PyPy. A side effect is executing | |
| ``CALL_METHOD`` is now branchless in the evaluation loop. | |
| - bpo-28307: Compiler now optimizes simple C-style formatting with literal | |
| format containing only format codes %s, %r and %a by converting them to | |
| f-string expressions. | |
| - bpo-43149: Correct the syntax error message regarding multiple exception | |
| types to not refer to "exception groups". Patch by Pablo Galindo | |
| - bpo-43822: The parser will prioritize tokenizer errors over custom syntax | |
| errors when raising exceptions. Patch by Pablo Galindo. | |
| - bpo-40222: "Zero cost" exception handling. | |
| * Uses a lookup table to determine how to handle exceptions. | |
| * Removes SETUP_FINALLY and POP_TOP block instructions, eliminating the runtime overhead of try statements. | |
| * Reduces the size of the frame object by about 60%. | |
| Patch by Mark Shannon | |
| - bpo-43918: Document the signature and ``default`` argument in the | |
| docstring of the new ``anext`` builtin. | |
| - bpo-43833: Emit a deprecation warning if the numeric literal is | |
| immediately followed by one of keywords: and, else, for, if, in, is, or. | |
| Raise a syntax error with more informative message if it is immediately | |
| followed by other keyword or identifier. | |
| - bpo-43879: Add native_thread_id to PyThreadState. Patch by Gabriele N. | |
| Tornetta. | |
| - bpo-43693: Compute cell offsets relative to locals in compiler. Allows the | |
| interpreter to treats locals and cells a single array, which is slightly | |
| more efficient. Also make the LOAD_CLOSURE opcode an alias for LOAD_FAST. | |
| Preserving LOAD_CLOSURE helps keep bytecode a bit more readable. | |
| - bpo-17792: More accurate error messages for access of unbound locals or | |
| free vars. | |
| - bpo-28146: Fix a confusing error message in :func:`str.format`. | |
| - bpo-11105: When compiling :class:`ast.AST` objects with recursive | |
| references through :func:`compile`, the interpreter doesn't crash anymore | |
| instead it raises a :exc:`RecursionError`. | |
| - bpo-39091: Fix crash when using passing a non-exception to a generator's | |
| ``throw()`` method. Patch by Noah Oxer | |
| - bpo-33346: Asynchronous comprehensions are now allowed inside | |
| comprehensions in asynchronous functions. Outer comprehensions implicitly | |
| become asynchronous. | |
| Library | |
| ------- | |
| - bpo-45371: Fix clang rpath issue in :mod:`distutils`. The UnixCCompiler | |
| now uses correct clang option to add a runtime library directory (rpath) | |
| to a shared library. | |
| - bpo-45329: Fix freed memory access in :class:`pyexpat.xmlparser` when | |
| building it with an installed expat library <= 2.2.0. | |
| - bpo-41710: On Unix, if the ``sem_clockwait()`` function is available in | |
| the C library (glibc 2.30 and newer), the :meth:`threading.Lock.acquire` | |
| method now uses the monotonic clock (:data:`time.CLOCK_MONOTONIC`) for the | |
| timeout, rather than using the system clock (:data:`time.CLOCK_REALTIME`), | |
| to not be affected by system clock changes. Patch by Victor Stinner. | |
| - bpo-1596321: Fix the :func:`threading._shutdown` function when the | |
| :mod:`threading` module was imported first from a thread different than | |
| the main thread: no longer log an error at Python exit. | |
| - bpo-45274: Fix a race condition in the :meth:`Thread.join() | |
| <threading.Thread.join>` method of the :mod:`threading` module. If the | |
| function is interrupted by a signal and the signal handler raises an | |
| exception, make sure that the thread remains in a consistent state to | |
| prevent a deadlock. Patch by Victor Stinner. | |
| - bpo-21302: In Unix operating systems, :func:`time.sleep` now uses the | |
| ``nanosleep()`` function, if ``clock_nanosleep()`` is not available but | |
| ``nanosleep()`` is available. ``nanosleep()`` allows to sleep with | |
| nanosecond precision. | |
| - bpo-21302: On Windows, :func:`time.sleep` now uses a waitable timer which | |
| has a resolution of 100 nanoseconds (10\ :sup:`-7` seconds). Previously, | |
| it had a resolution of 1 millisecond (10\ :sup:`-3` seconds). Patch by | |
| Benjamin Szőke and Victor Stinner. | |
| - bpo-45238: Fix :meth:`unittest.IsolatedAsyncioTestCase.debug`: it runs now | |
| asynchronous methods and callbacks. | |
| - bpo-36674: :meth:`unittest.TestCase.debug` raises now a | |
| :class:`unittest.SkipTest` if the class or the test method are decorated | |
| with the skipping decorator. | |
| - bpo-45235: Fix an issue where argparse would not preserve values in a | |
| provided namespace when using a subparser with defaults. | |
| - bpo-45183: Have zipimport.zipimporter.find_spec() not raise an exception | |
| when the underlying zip file has been deleted and the internal cache has | |
| been reset via invalidate_cache(). | |
| - bpo-45234: Fixed a regression in :func:`~shutil.copyfile`, | |
| :func:`~shutil.copy`, :func:`~shutil.copy2` raising | |
| :exc:`FileNotFoundError` when source is a directory, which should raise | |
| :exc:`IsADirectoryError` | |
| - bpo-45228: Fix stack buffer overflow in parsing J1939 network address. | |
| - bpo-45225: use map function instead of genexpr in capwords. | |
| - bpo-42135: Fix typo: ``importlib.find_loader`` is really slated for | |
| removal in Python 3.12 not 3.10, like the others in PR 25169. | |
| Patch by Hugo van Kemenade. | |
| - bpo-20524: Improves error messages on ``.format()`` operation for ``str``, | |
| ``float``, ``int``, and ``complex``. New format now shows the problematic | |
| pattern and the object type. | |
| - bpo-45168: Change :func:`dis.dis` output to omit op arg values that cannot | |
| be resolved due to ``co_consts``, ``co_names`` etc not being provided. | |
| Previously the oparg itself was repeated in the value field, which is not | |
| useful and can be confusing. | |
| - bpo-21302: In Unix operating systems, :func:`time.sleep` now uses the | |
| ``clock_nanosleep()`` function, if available, which allows to sleep for an | |
| interval specified with nanosecond precision. | |
| - bpo-45173: Remove from the :mod:`configparser` module: the | |
| :class:`SafeConfigParser` class, the :attr:`filename` property of the | |
| :class:`ParsingError` class, the :meth:`readfp` method of the | |
| :class:`ConfigParser` class, deprecated since Python 3.2. | |
| Patch by Hugo van Kemenade. | |
| - bpo-44987: Pure ASCII strings are now normalized in constant time by | |
| :func:`unicodedata.normalize`. Patch by Dong-hee Na. | |
| - bpo-35474: Calling :func:`mimetypes.guess_all_extensions` with | |
| ``strict=False`` no longer affects the result of the following call with | |
| ``strict=True``. Also, mutating the returned list no longer affects the | |
| global state. | |
| - bpo-45166: :func:`typing.get_type_hints` now works with | |
| :data:`~typing.Final` wrapped in :class:`~typing.ForwardRef`. | |
| - bpo-45162: Remove many old deprecated :mod:`unittest` features: | |
| * "``fail*``" and "``assert*``" aliases of :class:`~unittest.TestCase` methods. | |
| * Broken from start :class:`~unittest.TestCase` method ``assertDictContainsSubset()``. | |
| * Ignored :meth:`<unittest.TestLoader.loadTestsFromModule> TestLoader.loadTestsFromModule` parameter *use_load_tests*. | |
| * Old alias ``_TextTestResult`` of :class:`~unittest.TextTestResult`. | |
| - bpo-38371: Remove the deprecated ``split()`` method of | |
| :class:`_tkinter.TkappType`. Patch by Erlend E. Aasland. | |
| - bpo-20499: Improve the speed and accuracy of statistics.pvariance(). | |
| - bpo-45132: Remove :meth:`__getitem__` methods of | |
| :class:`xml.dom.pulldom.DOMEventStream`, :class:`wsgiref.util.FileWrapper` | |
| and :class:`fileinput.FileInput`, deprecated since Python 3.9. | |
| Patch by Hugo van Kemenade. | |
| - bpo-45129: Due to significant security concerns, the *reuse_address* | |
| parameter of :meth:`asyncio.loop.create_datagram_endpoint`, disabled in | |
| Python 3.9, is now entirely removed. This is because of the behavior of | |
| the socket option ``SO_REUSEADDR`` in UDP. | |
| Patch by Hugo van Kemenade. | |
| - bpo-45124: The ``bdist_msi`` command, deprecated in Python 3.9, is now | |
| removed. | |
| Use ``bdist_wheel`` (wheel packages) instead. | |
| Patch by Hugo van Kemenade. | |
| - bpo-30856: :class:`unittest.TestResult` methods | |
| :meth:`~unittest.TestResult.addFailure`, | |
| :meth:`~unittest.TestResult.addError`, | |
| :meth:`~unittest.TestResult.addSkip` and | |
| :meth:`~unittest.TestResult.addSubTest` are now called immediately after | |
| raising an exception in test or finishing a subtest. Previously they were | |
| called only after finishing the test clean up. | |
| - bpo-45034: Changes how error is formatted for ``struct.pack`` with ``'H'`` | |
| and ``'h'`` modes and too large / small numbers. Now it shows the actual | |
| numeric limits, while previously it was showing arithmetic expressions. | |
| - bpo-25894: :mod:`unittest` now always reports skipped and failed subtests | |
| separately: separate characters in default mode and separate lines in | |
| verbose mode. Also the test description is now output for errors in test | |
| method, class and module cleanups. | |
| - bpo-45081: Fix issue when dataclasses that inherit from | |
| ``typing.Protocol`` subclasses have wrong ``__init__``. Patch provided by | |
| Yurii Karabas. | |
| - bpo-45085: The ``binhex`` module, deprecated in Python 3.9, is now | |
| removed. The following :mod:`binascii` functions, deprecated in Python | |
| 3.9, are now also removed: | |
| * ``a2b_hqx()``, ``b2a_hqx()``; | |
| * ``rlecode_hqx()``, ``rledecode_hqx()``. | |
| The :func:`binascii.crc_hqx` function remains available. | |
| Patch by Victor Stinner. | |
| - bpo-40360: The :mod:`lib2to3` package is now deprecated and may not be | |
| able to parse Python 3.10 or newer. See the :pep:`617` (New PEG parser for | |
| CPython). Patch by Victor Stinner. | |
| - bpo-45075: Rename :meth:`traceback.StackSummary.format_frame` to | |
| :meth:`traceback.StackSummary.format_frame_summary`. This method was added | |
| for 3.11 so it was not released yet. | |
| Updated code and docs to better distinguish frame and FrameSummary. | |
| - bpo-31299: Add option to completely drop frames from a traceback by | |
| returning ``None`` from a :meth:`~traceback.StackSummary.format_frame` | |
| override. | |
| - bpo-41620: :meth:`~unittest.TestCase.run` now always return a | |
| :class:`~unittest.TestResult` instance. Previously it returned ``None`` if | |
| the test class or method was decorated with a skipping decorator. | |
| - bpo-45021: Fix a potential deadlock at shutdown of forked children when | |
| using :mod:`concurrent.futures` module | |
| - bpo-43913: Fix bugs in cleaning up classes and modules in :mod:`unittest`: | |
| * Functions registered with :func:`~unittest.addModuleCleanup` were not called unless the user defines ``tearDownModule()`` in their test module. | |
| * Functions registered with :meth:`~unittest.TestCase.addClassCleanup` were not called if ``tearDownClass`` is set to ``None``. | |
| * Buffering in :class:`~unittest.TestResult` did not work with functions registered with ``addClassCleanup()`` and ``addModuleCleanup()``. | |
| * Errors in functions registered with ``addClassCleanup()`` and ``addModuleCleanup()`` were not handled correctly in buffered and debug modes. | |
| * Errors in ``setUpModule()`` and functions registered with ``addModuleCleanup()`` were reported in wrong order. | |
| * And several lesser bugs. | |
| - bpo-45030: Fix integer overflow in pickling and copying the range | |
| iterator. | |
| - bpo-45001: Made email date parsing more robust against malformed input, | |
| namely a whitespace-only ``Date:`` header. Patch by Wouter Bolsterlee. | |
| - bpo-45010: Remove support of special method ``__div__`` in | |
| :mod:`unittest.mock`. It is not used in Python 3. | |
| - bpo-39218: Improve accuracy of variance calculations by using ``x*x`` | |
| instead of ``x**2``. | |
| - bpo-43613: Improve the speed of :func:`gzip.compress` and | |
| :func:`gzip.decompress` by compressing and decompressing at once in memory | |
| instead of in a streamed fashion. | |
| - bpo-37596: Ensure that :class:`set` and :class:`frozenset` objects are | |
| always :mod:`marshalled <marshal>` reproducibly. | |
| - bpo-44019: A new function ``operator.call`` has been added, such that | |
| ``operator.call(obj, *args, **kwargs) == obj(*args, **kwargs)``. | |
| - bpo-42255: :class:`webbrowser.MacOSX` is deprecated and will be removed in | |
| Python 3.13. It is untested and undocumented and also not used by | |
| webbrowser itself. Patch by Dong-hee Na. | |
| - bpo-44955: Method :meth:`~unittest.TestResult.stopTestRun` is now always | |
| called in pair with method :meth:`~unittest.TestResult.startTestRun` for | |
| :class:`~unittest.TestResult` objects implicitly created in | |
| :meth:`~unittest.TestCase.run`. Previously it was not called for test | |
| methods and classes decorated with a skipping decorator. | |
| - bpo-39039: tarfile.open raises :exc:`~tarfile.ReadError` when a zlib error | |
| occurs during file extraction. | |
| - bpo-44935: :mod:`subprocess` on Solaris now also uses | |
| :func:`os.posix_spawn()` for better performance. | |
| - bpo-44911: :class:`~unittest.IsolatedAsyncioTestCase` will no longer throw | |
| an exception while cancelling leaked tasks. Patch by Bar Harel. | |
| - bpo-41322: Added ``DeprecationWarning`` for tests and async tests that | |
| return a value!=None (as this may indicate an improperly written test, for | |
| example a test written as a generator function). | |
| - bpo-44524: Make exception message more useful when subclass from typing | |
| special form alias. Patch provided by Yurii Karabas. | |
| - bpo-38956: :class:`argparse.BooleanOptionalAction`'s default value is no | |
| longer printed twice when used with | |
| :class:`argparse.ArgumentDefaultsHelpFormatter`. | |
| - bpo-44860: Fix the ``posix_user`` scheme in :mod:`sysconfig` to not depend | |
| on :data:`sys.platlibdir`. | |
| - bpo-44859: Improve error handling in :mod:`sqlite3` and raise more | |
| accurate exceptions. | |
| * :exc:`MemoryError` is now raised instead of :exc:`sqlite3.Warning` when memory is not enough for encoding a statement to UTF-8 in ``Connection.__call__()`` and ``Cursor.execute()``. | |
| * :exc:`UnicodEncodeError` is now raised instead of :exc:`sqlite3.Warning` when the statement contains surrogate characters in ``Connection.__call__()`` and ``Cursor.execute()``. | |
| * :exc:`TypeError` is now raised instead of :exc:`ValueError` for non-string script argument in ``Cursor.executescript()``. | |
| * :exc:`ValueError` is now raised for script containing the null character instead of truncating it in ``Cursor.executescript()``. | |
| * Correctly handle exceptions raised when getting boolean value of the result of the progress handler. | |
| * Add many tests covering different corner cases. | |
| - bpo-44581: Upgrade bundled pip to 21.2.3 and setuptools to 57.4.0 | |
| - bpo-44849: Fix the :func:`os.set_inheritable` function on FreeBSD 14 for | |
| file descriptor opened with the :data:`~os.O_PATH` flag: ignore the | |
| :data:`~errno.EBADF` error on ``ioctl()``, fallback on the ``fcntl()`` | |
| implementation. Patch by Victor Stinner. | |
| - bpo-44605: The @functools.total_ordering() decorator now works with | |
| metaclasses. | |
| - bpo-44524: Fixed an issue wherein the ``__name__`` and ``__qualname__`` | |
| attributes of subscribed specialforms could be ``None``. | |
| - bpo-44839: :class:`MemoryError` raised in user-defined functions will now | |
| produce a ``MemoryError`` in :mod:`sqlite3`. :class:`OverflowError` will | |
| now be converted to :class:`~sqlite3.DataError`. Previously | |
| :class:`~sqlite3.OperationalError` was produced in these cases. | |
| - bpo-44822: :mod:`sqlite3` user-defined functions and aggregators returning | |
| :class:`strings <str>` with embedded NUL characters are no longer | |
| truncated. Patch by Erlend E. Aasland. | |
| - bpo-44801: Ensure that the :class:`~typing.ParamSpec` variable in Callable | |
| can only be substituted with a parameters expression (a list of types, an | |
| ellipsis, ParamSpec or Concatenate). | |
| - bpo-44806: Non-protocol subclasses of :class:`typing.Protocol` ignore now | |
| the ``__init__`` method inherited from protocol base classes. | |
| - bpo-27275: :meth:`collections.OrderedDict.popitem` and | |
| :meth:`collections.OrderedDict.pop` no longer call ``__getitem__`` and | |
| ``__delitem__`` methods of the OrderedDict subclasses. | |
| - bpo-44793: Fix checking the number of arguments when subscribe a generic | |
| type with ``ParamSpec`` parameter. | |
| - bpo-44784: In importlib.metadata tests, override warnings behavior under | |
| expected DeprecationWarnings (importlib_metadata 4.6.3). | |
| - bpo-44667: The :func:`tokenize.tokenize` doesn't incorrectly generate a | |
| ``NEWLINE`` token if the source doesn't end with a new line character but | |
| the last line is a comment, as the function is already generating a ``NL`` | |
| token. Patch by Pablo Galindo | |
| - bpo-44771: Added ``importlib.simple`` module implementing adapters from a | |
| low-level resources reader interface to a ``TraversableResources`` | |
| interface. Legacy API (``path``, ``contents``, ...) is now supported | |
| entirely by the ``.files()`` API with a compatibility shim supplied for | |
| resource loaders without that functionality. Feature parity with | |
| ``importlib_resources`` 5.2. | |
| - bpo-44752: :mod:`rcompleter` does not call :func:`getattr` on | |
| :class:`property` objects to avoid the side-effect of evaluating the | |
| corresponding method. | |
| - bpo-44747: Refactor usage of ``sys._getframe`` in ``typing`` module. Patch | |
| provided by Yurii Karabas. | |
| - bpo-42378: Fixes the issue with log file being overwritten when | |
| :class:`logging.FileHandler` is used in :mod:`atexit` with *filemode* set | |
| to ``'w'``. Note this will cause the message in *atexit* not being logged | |
| if the log stream is already closed due to shutdown of logging. | |
| - bpo-44720: ``weakref.proxy`` objects referencing non-iterators now raise | |
| ``TypeError`` rather than dereferencing the null ``tp_iternext`` slot and | |
| crashing. | |
| - bpo-44704: The implementation of ``collections.abc.Set._hash()`` now | |
| matches that of ``frozenset.__hash__()``. | |
| - bpo-44666: Fixed issue in :func:`compileall.compile_file` when | |
| ``sys.stdout`` is redirected. Patch by Stefan Hölzl. | |
| - bpo-44688: :meth:`sqlite3.Connection.create_collation` now accepts | |
| non-ASCII collation names. Patch by Erlend E. Aasland. | |
| - bpo-44690: Adopt *binacii.a2b_base64*'s strict mode in *base64.b64decode*. | |
| - bpo-42854: Fixed a bug in the :mod:`_ssl` module that was throwing | |
| :exc:`OverflowError` when using :meth:`_ssl._SSLSocket.write` and | |
| :meth:`_ssl._SSLSocket.read` for a big value of the ``len`` parameter. | |
| Patch by Pablo Galindo | |
| - bpo-44686: Replace ``unittest.mock._importer`` with | |
| ``pkgutil.resolve_name``. | |
| - bpo-44353: Make ``NewType.__call__`` faster by implementing it in C. Patch | |
| provided by Yurii Karabas. | |
| - bpo-44682: Change the :mod:`pdb` *commands* directive to disallow setting | |
| commands for an invalid breakpoint and to display an appropriate error. | |
| - bpo-44353: Refactor ``typing.NewType`` from function into callable class. | |
| Patch provided by Yurii Karabas. | |
| - bpo-44678: Added a separate error message for discontinuous padding in | |
| *binascii.a2b_base64* strict mode. | |
| - bpo-44524: Add missing ``__name__`` and ``__qualname__`` attributes to | |
| ``typing`` module classes. Patch provided by Yurii Karabas. | |
| - bpo-40897: Give priority to using the current class constructor in | |
| :func:`inspect.signature`. Patch by Weipeng Hong. | |
| - bpo-44638: Add a reference to the zipp project and hint as to how to use | |
| it. | |
| - bpo-44648: Fixed wrong error being thrown by :func:`inspect.getsource` | |
| when examining a class in the interactive session. Instead of | |
| :exc:`TypeError`, it should be :exc:`OSError` with appropriate error | |
| message. | |
| - bpo-44608: Fix memory leak in :func:`_tkinter._flatten` if it is called | |
| with a sequence or set, but not list or tuple. | |
| - bpo-44594: Fix an edge case of :class:`ExitStack` and | |
| :class:`AsyncExitStack` exception chaining. They will now match ``with`` | |
| block behavior when ``__context__`` is explicitly set to ``None`` when the | |
| exception is in flight. | |
| - bpo-42799: In :mod:`fnmatch`, the cache size for compiled regex patterns | |
| (:func:`functools.lru_cache`) was bumped up from 256 to 32768, affecting | |
| functions: :func:`fnmatch.fnmatch`, :func:`fnmatch.fnmatchcase`, | |
| :func:`fnmatch.filter`. | |
| - bpo-41928: Update :func:`shutil.copyfile` to raise | |
| :exc:`FileNotFoundError` instead of confusing :exc:`IsADirectoryError` | |
| when a path ending with a :const:`os.path.sep` does not exist; | |
| :func:`shutil.copy` and :func:`shutil.copy2` are also affected. | |
| - bpo-44569: Added the :func:`StackSummary.format_frame` function in | |
| :mod:`traceback`. This allows users to customize the way individual lines | |
| are formatted in tracebacks without re-implementing logic to handle | |
| recursive tracebacks. | |
| - bpo-44566: handle StopIteration subclass raised from | |
| @contextlib.contextmanager generator | |
| - bpo-44558: Make the implementation consistency of | |
| :func:`~operator.indexOf` between C and Python versions. Patch by Dong-hee | |
| Na. | |
| - bpo-41249: Fixes ``TypedDict`` to work with ``typing.get_type_hints()`` | |
| and postponed evaluation of annotations across modules. | |
| - bpo-44554: Refactor argument processing in :func:`pdb.main` to simplify | |
| detection of errors in input loading and clarify behavior around module or | |
| script invocation. | |
| - bpo-34798: Break up paragraph about :class:`pprint.PrettyPrinter` | |
| construction parameters to make it easier to read. | |
| - bpo-44539: Added support for recognizing JPEG files without JFIF or Exif | |
| markers. | |
| - bpo-44461: Fix bug with :mod:`pdb`'s handling of import error due to a | |
| package which does not have a ``__main__`` module | |
| - bpo-43625: Fix a bug in the detection of CSV file headers by | |
| :meth:`csv.Sniffer.has_header` and improve documentation of same. | |
| - bpo-44516: Update vendored pip to 21.1.3 | |
| - bpo-42892: Fixed an exception thrown while parsing a malformed multipart | |
| email by :class:`email.message.EmailMessage`. | |
| - bpo-44468: :func:`typing.get_type_hints` now finds annotations in classes | |
| and base classes with unexpected ``__module__``. Previously, it skipped | |
| those MRO elements. | |
| - bpo-44491: Allow clearing the :mod:`sqlite3` authorizer callback by | |
| passing :const:`None` to :meth:`~sqlite3.Connection.set_authorizer`. Patch | |
| by Erlend E. Aasland. | |
| - bpo-43977: Set the proper :const:`Py_TPFLAGS_MAPPING` and | |
| :const:`Py_TPFLAGS_SEQUENCE` flags for subclasses created before a parent | |
| has been registered as a :class:`collections.abc.Mapping` or | |
| :class:`collections.abc.Sequence`. | |
| - bpo-44482: Fix very unlikely resource leak in :mod:`glob` in alternate | |
| Python implementations. | |
| - bpo-44466: The :mod:`faulthandler` module now detects if a fatal error | |
| occurs during a garbage collector collection. Patch by Victor Stinner. | |
| - bpo-44471: A :exc:`TypeError` is now raised instead of an | |
| :exc:`AttributeError` in :meth:`contextlib.ExitStack.enter_context` and | |
| :meth:`contextlib.AsyncExitStack.enter_async_context` for objects which do | |
| not support the :term:`context manager` or :term:`asynchronous context | |
| manager` protocols correspondingly. | |
| - bpo-44404: :mod:`tkinter`'s ``after()`` method now supports callables | |
| without the ``__name__`` attribute. | |
| - bpo-41546: Make :mod:`pprint` (like the builtin ``print``) not attempt to | |
| write to ``stdout`` when it is ``None``. | |
| - bpo-44458: ``BUFFER_BLOCK_SIZE`` is now declared static, to avoid linking | |
| collisions when bz2, lmza or zlib are statically linked. | |
| - bpo-44464: Remove exception for flake8 in deprecated importlib.metadata | |
| interfaces. Sync with importlib_metadata 4.6. | |
| - bpo-44446: Take into account that ``lineno`` might be ``None`` in | |
| :class:`traceback.FrameSummary`. | |
| - bpo-44439: Fix in :meth:`bz2.BZ2File.write` / :meth:`lzma.LZMAFile.write` | |
| methods, when the input data is an object that supports the buffer | |
| protocol, the file length may be wrong. | |
| - bpo-44434: _thread.start_new_thread() no longer calls | |
| PyThread_exit_thread() explicitly at the thread exit, the call was | |
| redundant. On Linux with the glibc, pthread_exit() aborts the whole | |
| process if dlopen() fails to open libgcc_s.so file (ex: EMFILE error). | |
| Patch by Victor Stinner. | |
| - bpo-42972: The _thread.RLock type now fully implement the GC protocol: add | |
| a traverse function and the :const:`Py_TPFLAGS_HAVE_GC` flag. Patch by | |
| Victor Stinner. | |
| - bpo-44422: The :func:`threading.enumerate` function now uses a reentrant | |
| lock to prevent a hang on reentrant call. Patch by Victor Stinner. | |
| - bpo-38291: Importing typing.io or typing.re now prints a | |
| ``DeprecationWarning``. | |
| - bpo-37880: argparse actions store_const and append_const each receive a | |
| default value of None when the ``const`` kwarg is not provided. | |
| Previously, this raised a :exc:`TypeError`. | |
| - bpo-44389: Fix deprecation of :data:`ssl.OP_NO_TLSv1_3` | |
| - bpo-27827: :meth:`pathlib.PureWindowsPath.is_reserved` now identifies a | |
| greater range of reserved filenames, including those with trailing spaces | |
| or colons. | |
| - bpo-44395: Fix :meth:`~email.message.MIMEPart.as_string` to pass unixfrom | |
| properly. Patch by Dong-hee Na. | |
| - bpo-34266: Handle exceptions from parsing the arg of :mod:`pdb`'s | |
| run/restart command. | |
| - bpo-44362: Improve :mod:`ssl` module's deprecation messages, error | |
| reporting, and documentation for deprecations. | |
| - bpo-44342: [Enum] Change pickling from by-value to by-name. | |
| - bpo-44356: [Enum] Allow multiple data-type mixins if they are all the | |
| same. | |
| - bpo-44351: Restore back :func:`parse_makefile` in | |
| :mod:`distutils.sysconfig` because it behaves differently than the similar | |
| implementation in :mod:`sysconfig`. | |
| - bpo-35800: :class:`smtpd.MailmanProxy` is now removed as it is unusable | |
| without an external module, ``mailman``. Patch by Dong-hee Na. | |
| - bpo-44357: Added a function that returns cube root of the given number | |
| :func:`math.cbrt` | |
| - bpo-44339: Change ``math.pow(±0.0, -math.inf)`` to return ``inf`` instead | |
| of raising ``ValueError``. This brings the special-case handling of | |
| ``math.pow`` into compliance with the IEEE 754 standard. | |
| - bpo-44242: Remove missing flag check from Enum creation and move into a | |
| ``verify`` decorator. | |
| - bpo-44246: In ``importlib.metadata``, restore compatibility in the result | |
| from ``Distribution.entry_points`` (``EntryPoints``) to honor expectations | |
| in older implementations and issuing deprecation warnings for these cases: | |
| A. ``EntryPoints`` objects are once again mutable, allowing for | |
| ``sort()`` and other list-based mutation operations. Avoid deprecation | |
| warnings by casting to a mutable sequence (e.g. | |
| ``list(dist.entry_points).sort()``). B. ``EntryPoints`` results once again | |
| allow for access by index. To avoid deprecation warnings, cast the | |
| result to a Sequence first (e.g. ``tuple(dist.entry_points)[0]``). | |
| - bpo-44246: In importlib.metadata.entry_points, de-duplication of | |
| distributions no longer requires loading the full metadata for | |
| PathDistribution objects, improving entry point loading performance by | |
| ~10x. | |
| - bpo-43858: Added a function that returns a copy of a dict of logging | |
| levels: :func:`logging.getLevelNamesMapping` | |
| - bpo-44260: The :class:`random.Random` constructor no longer reads system | |
| entropy without need. | |
| - bpo-44254: On Mac, give turtledemo button text a color that works on both | |
| light or dark background. Programmers cannot control the latter. | |
| - bpo-44258: Support PEP 515 for Fraction's initialization from string. | |
| - bpo-44235: Remove deprecated functions in the :mod:`gettext`. Patch by | |
| Dong-hee Na. | |
| - bpo-38693: Prefer f-strings to ``.format`` in importlib.resources. | |
| - bpo-33693: Importlib.metadata now prefers f-strings to .format. | |
| - bpo-44241: Incorporate minor tweaks from importlib_metadata 4.1: | |
| SimplePath protocol, support for Metadata 2.2. | |
| - bpo-43216: Remove the :func:`@asyncio.coroutine <asyncio.coroutine>` | |
| :term:`decorator` enabling legacy generator-based coroutines to be | |
| compatible with async/await code; remove | |
| :class:`asyncio.coroutines.CoroWrapper` used for wrapping legacy coroutine | |
| objects in the debug mode. The decorator has been deprecated since Python | |
| 3.8 and the removal was initially scheduled for Python 3.10. Patch by | |
| Illia Volochii. | |
| - bpo-44210: Make importlib.metadata._meta.PackageMetadata public. | |
| - bpo-43643: Declare readers.MultiplexedPath.name as a property per the | |
| spec. | |
| - bpo-27334: The :mod:`sqlite3` context manager now performs a rollback | |
| (thus releasing the database lock) if commit failed. Patch by Luca Citi | |
| and Erlend E. Aasland. | |
| - bpo-4928: Documented existing behavior on POSIX: NamedTemporaryFiles are | |
| not deleted when creating process is killed with SIGKILL | |
| - bpo-44154: Optimize :class:`fractions.Fraction` pickling for large | |
| components. | |
| - bpo-33433: For IPv4 mapped IPv6 addresses (:rfc:`4291` Section 2.5.5.2), | |
| the :mod:`ipaddress.IPv6Address.is_private` check is deferred to the | |
| mapped IPv4 address. This solves a bug where public mapped IPv4 addresses | |
| were considered private by the IPv6 check. | |
| - bpo-44150: Add optional *weights* argument to statistics.fmean(). | |
| - bpo-44142: :func:`ast.unparse` will now drop the redundant parentheses | |
| when tuples used as assignment targets (e.g in for loops). | |
| - bpo-44145: :mod:`hmac` computations were not releasing the GIL while | |
| calling the OpenSSL ``HMAC_Update`` C API (a new feature in 3.9). This | |
| unintentionally prevented parallel computation as other :mod:`hashlib` | |
| algorithms support. | |
| - bpo-44095: :class:`zipfile.Path` now supports :attr:`zipfile.Path.stem`, | |
| :attr:`zipfile.Path.suffixes`, and :attr:`zipfile.Path.suffix` attributes. | |
| - bpo-44077: It's now possible to receive the type of service (ToS), a.k.a. | |
| differentiated services (DS), a.k.a. differentiated services code point | |
| (DSCP) and explicit congestion notification (ECN) IP header fields with | |
| ``socket.IP_RECVTOS``. | |
| - bpo-37788: Fix a reference leak when a Thread object is never joined. | |
| - bpo-38908: Subclasses of ``typing.Protocol`` which only have data | |
| variables declared will now raise a ``TypeError`` when checked with | |
| ``isinstance`` unless they are decorated with :func:`runtime_checkable`. | |
| Previously, these checks passed silently. Patch provided by Yurii Karabas. | |
| - bpo-44098: ``typing.ParamSpec`` will no longer be found in the | |
| ``__parameters__`` of most :mod:`typing` generics except in valid use | |
| locations specified by :pep:`612`. This prevents incorrect usage like | |
| ``typing.List[P][int]``. This change means incorrect usage which may have | |
| passed silently in 3.10 beta 1 and earlier will now error. | |
| - bpo-44089: Allow subclassing ``csv.Error`` in 3.10 (it was allowed in 3.9 | |
| and earlier but was disallowed in early versions of 3.10). | |
| - bpo-44081: :func:`ast.unparse` now doesn't use redundant spaces to | |
| separate ``lambda`` and the ``:`` if there are no parameters. | |
| - bpo-44061: Fix regression in previous release when calling | |
| :func:`pkgutil.iter_modules` with a list of :class:`pathlib.Path` objects | |
| - bpo-44059: Register the SerenityOS Browser in the :mod:`webbrowser` | |
| module. | |
| - bpo-36515: The :mod:`hashlib` module no longer does unaligned memory | |
| accesses when compiled for ARM platforms. | |
| - bpo-40465: Remove random module features deprecated in Python 3.9. | |
| - bpo-44018: random.seed() no longer mutates bytearray inputs. | |
| - bpo-38352: Add ``IO``, ``BinaryIO``, ``TextIO``, ``Match``, and | |
| ``Pattern`` to ``typing.__all__``. Patch by Jelle Zijlstra. | |
| - bpo-44002: :mod:`urllib.parse` now uses :func:`functool.lru_cache` for its | |
| internal URL splitting and quoting caches instead of rolling its own like | |
| its the '90s. | |
| The undocumented internal :mod:`urllib.parse` ``Quoted`` class API is now | |
| deprecated, for removal in 3.14. | |
| - bpo-43972: When :class:`http.server.SimpleHTTPRequestHandler` sends a | |
| ``301 (Moved Permanently)`` for a directory path not ending with `/`, add | |
| a ``Content-Length: 0`` header. This improves the behavior for certain | |
| clients. | |
| - bpo-28528: Fix a bug in :mod:`pdb` where :meth:`~pdb.Pdb.checkline` raises | |
| :exc:`AttributeError` if it is called after :meth:`~pdb.Pdb.reset`. | |
| - bpo-43853: Improved string handling for :mod:`sqlite3` user-defined | |
| functions and aggregates: | |
| * It is now possible to pass strings with embedded null characters to UDFs | |
| * Conversion failures now correctly raise :exc:`MemoryError` | |
| Patch by Erlend E. Aasland. | |
| - bpo-43666: AIX: `Lib/_aix_support.get_platform()` may fail in an AIX WPAR. | |
| The fileset bos.rte appears to have a builddate in both LPAR and WPAR so | |
| this fileset is queried rather than bos.mp64. To prevent a similar | |
| situation (no builddate in ODM) a value (9988) sufficient for completing a | |
| build is provided. Patch by M Felt. | |
| - bpo-43650: Fix :exc:`MemoryError` in :func:`shutil.unpack_archive` which | |
| fails inside :func:`shutil._unpack_zipfile` on large files. Patch by Igor | |
| Bolshakov. | |
| - bpo-43612: :func:`zlib.compress` now accepts a wbits parameter which | |
| allows users to compress data as a raw deflate block without zlib headers | |
| and trailers in one go. Previously this required instantiating a | |
| ``zlib.compressobj``. It also provides a faster alternative to | |
| ``gzip.compress`` when wbits=31 is used. | |
| - bpo-43392: :func:`importlib._bootstrap._find_and_load` now implements a | |
| two-step check to avoid locking when modules have been already imported | |
| and are ready. This improves performance of repeated calls to | |
| :func:`importlib.import_module` and :func:`importlib.__import__`. | |
| - bpo-43318: Fix a bug where :mod:`pdb` does not always echo cleared | |
| breakpoints. | |
| - bpo-43234: Prohibit passing | |
| non-:class:`concurrent.futures.ThreadPoolExecutor` executors to | |
| :meth:`loop.set_default_executor` following a deprecation in Python 3.8. | |
| Patch by Illia Volochii. | |
| - bpo-43232: Prohibit previously deprecated potentially disruptive | |
| operations on :class:`asyncio.trsock.TransportSocket`. Patch by Illia | |
| Volochii. | |
| - bpo-30077: Added support for Apple's aifc/sowt pseudo-compression | |
| - bpo-42971: Add definition of ``errno.EQFULL`` for platforms that define | |
| this constant (such as macOS). | |
| - bpo-43086: Added a new optional :code:`strict_mode` parameter to | |
| *binascii.a2b_base64*. When :code:`scrict_mode` is set to :code:`True`, | |
| the *a2b_base64* function will accept only valid base64 content. More | |
| details about what "valid base64 content" is, can be found in the | |
| function's documentation. | |
| - bpo-43024: Improve the help signature of | |
| :func:`traceback.print_exception`, :func:`traceback.format_exception` and | |
| :func:`traceback.format_exception_only`. | |
| - bpo-33809: Add the :meth:`traceback.TracebackException.print` method which | |
| prints the formatted exception information. | |
| - bpo-42862: :mod:`sqlite3` now utilizes :meth:`functools.lru_cache` to | |
| implement the connection statement cache. As a small optimisation, the | |
| default statement cache size has been increased from 100 to 128. Patch by | |
| Erlend E. Aasland. | |
| - bpo-41818: Soumendra Ganguly: add termios.tcgetwinsize(), | |
| termios.tcsetwinsize(). | |
| - bpo-40497: :meth:`subprocess.check_output` now raises :exc:`ValueError` | |
| when the invalid keyword argument *check* is passed by user code. | |
| Previously such use would fail later with a :exc:`TypeError`. Patch by | |
| Rémi Lapeyre. | |
| - bpo-37449: ``ensurepip`` now uses ``importlib.resources.files()`` | |
| traversable APIs | |
| - bpo-40956: Use Argument Clinic in :mod:`sqlite3`. Patches by Erlend E. | |
| Aasland. | |
| - bpo-41730: ``DeprecationWarning`` is now raised when importing | |
| :mod:`tkinter.tix`, which has been deprecated in documentation since | |
| Python 3.6. | |
| - bpo-20684: Remove unused ``_signature_get_bound_param`` function from | |
| :mod:`inspect` - by Anthony Sottile. | |
| - bpo-41402: Fix :meth:`email.message.EmailMessage.set_content` when called | |
| with binary data and ``7bit`` content transfer encoding. | |
| - bpo-32695: The *compresslevel* and *preset* keyword arguments of | |
| :func:`tarfile.open` are now both documented and tested. | |
| - bpo-41137: Use utf-8 encoding while reading .pdbrc files. Patch by | |
| Srinivas Reddy Thatiparthy | |
| - bpo-24391: Improved reprs of :mod:`threading` synchronization objects: | |
| :class:`~threading.Semaphore`, :class:`~threading.BoundedSemaphore`, | |
| :class:`~threading.Event` and :class:`~threading.Barrier`. | |
| - bpo-5846: Deprecated the following :mod:`unittest` functions, scheduled | |
| for removal in Python 3.13: | |
| * :func:`~unittest.findTestCases` | |
| * :func:`~unittest.makeSuite` | |
| * :func:`~unittest.getTestCaseNames` | |
| Use :class:`~unittest.TestLoader` methods instead: | |
| * :meth:`unittest.TestLoader.loadTestsFromModule` | |
| * :meth:`unittest.TestLoader.loadTestsFromTestCase` | |
| * :meth:`unittest.TestLoader.getTestCaseNames` | |
| Patch by Erlend E. Aasland. | |
| - bpo-40563: Support pathlike objects on dbm/shelve. Patch by Hakan Çelik | |
| and Henry-Joseph Audéoud. | |
| - bpo-34990: Fixed a Y2k38 bug in the compileall module where it would fail | |
| to compile files with a modification time after the year 2038. | |
| - bpo-39549: Whereas the code for reprlib.Repr had previously used a | |
| hardcoded string value of '...', this PR updates it to use of a | |
| “fillvalue” attribute, whose value defaults to '...' and can be reset in | |
| either individual reprlib.Repr instances or in subclasses thereof. | |
| - bpo-37022: :mod:`pdb` now displays exceptions from ``repr()`` with its | |
| ``p`` and ``pp`` commands. | |
| - bpo-38840: Fix ``test___all__`` on platforms lacking a shared memory | |
| implementation. | |
| - bpo-39359: Add one missing check that the password is a bytes object for | |
| an encrypted zipfile. | |
| - bpo-38741: :mod:`configparser`: using ']' inside a section header will no | |
| longer cut the section name short at the ']' | |
| - bpo-38415: Added missing behavior to | |
| :func:`contextlib.asynccontextmanager` to match | |
| :func:`contextlib.contextmanager` so decorated functions can themselves be | |
| decorators. | |
| - bpo-30256: Pass multiprocessing BaseProxy argument ``manager_owned`` | |
| through AutoProxy. | |
| - bpo-27513: :func:`email.utils.getaddresses` now accepts | |
| :class:`email.header.Header` objects along with string values. Patch by | |
| Zackery Spytz. | |
| - bpo-16379: Add SQLite error code and name to :mod:`sqlite3` exceptions. | |
| Patch by Aviv Palivoda, Daniel Shahaf, and Erlend E. Aasland. | |
| - bpo-26228: pty.spawn no longer hangs on FreeBSD, macOS, and Solaris. | |
| - bpo-33349: lib2to3 now recognizes async generators everywhere. | |
| - bpo-29298: Fix ``TypeError`` when required subparsers without ``dest`` do | |
| not receive arguments. Patch by Anthony Sottile. | |
| Documentation | |
| ------------- | |
| - bpo-45216: Remove extra documentation listing methods in ``difflib``. It | |
| was rendering twice in pydoc and was outdated in some places. | |
| - bpo-45024: :mod:`collections.abc` documentation has been expanded to | |
| explicitly cover how instance and subclass checks work, with additional | |
| doctest examples and an exhaustive list of ABCs which test membership | |
| purely by presence of the right :term:`special method`\s. Patch by Raymond | |
| Hettinger. | |
| - bpo-44957: Promote PEP 604 union syntax by using it where possible. Also, | |
| mention ``X | Y`` more prominently in section about ``Union`` and mention | |
| ``X | None`` at all in section about ``Optional``. | |
| - bpo-16580: Added code equivalents for the :meth:`int.to_bytes` and | |
| :meth:`int.from_bytes` methods, as well as tests ensuring that these code | |
| equivalents are valid. | |
| - bpo-44903: Removed the othergui.rst file, any references to it, and the | |
| list of GUI frameworks in the FAQ. In their place I've added links to the | |
| Python Wiki `page on GUI frameworks | |
| <https://wiki.python.org/moin/GuiProgramming>`. | |
| - bpo-33479: Tkinter documentation has been greatly expanded with new | |
| "Architecture" and "Threading model" sections. | |
| - bpo-36700: :mod:`base64` RFC references were updated to point to | |
| :rfc:`4648`; a section was added to point users to the new "security | |
| considerations" section of the RFC. | |
| - bpo-44740: Replaced occurrences of uppercase "Web" and "Internet" with | |
| lowercase versions per the 2016 revised Associated Press Style Book. | |
| - bpo-44693: Update the definition of __future__ in the glossary by | |
| replacing the confusing word "pseudo-module" with a more accurate | |
| description. | |
| - bpo-35183: Add typical examples to os.path.splitext docs | |
| - bpo-30511: Clarify that :func:`shutil.make_archive` is not thread-safe due | |
| to reliance on changing the current working directory. | |
| - bpo-44561: Update of three expired hyperlinks in | |
| Doc/distributing/index.rst: "Project structure", "Building and packaging | |
| the project", and "Uploading the project to the Python Packaging Index". | |
| - bpo-44651: Delete entry "coercion" in Doc/glossary.rst for its outdated | |
| definition. | |
| - bpo-42958: Updated the docstring and docs of :func:`filecmp.cmp` to be | |
| more accurate and less confusing especially in respect to *shallow* arg. | |
| - bpo-44631: Refactored the ``repr()`` code of the ``_Environ`` (os module). | |
| - bpo-44613: importlib.metadata is no longer provisional. | |
| - bpo-44558: Match the docstring and python implementation of | |
| :func:`~operator.countOf` to the behavior of its c implementation. | |
| - bpo-44544: List all kwargs for :func:`textwrap.wrap`, | |
| :func:`textwrap.fill`, and :func:`textwrap.shorten`. Now, there are nav | |
| links to attributes of :class:`TextWrap`, which makes navigation much | |
| easier while minimizing duplication in the documentation. | |
| - bpo-38062: Clarify that atexit uses equality comparisons internally. | |
| - bpo-40620: Convert examples in tutorial controlflow.rst section 4.3 to be | |
| interpreter-demo style. | |
| - bpo-43066: Added a warning to :mod:`zipfile` docs: filename arg with a | |
| leading slash may cause archive to be un-openable on Windows systems. | |
| - bpo-39452: Rewrote ``Doc/library/__main__.rst``. Broadened scope of the | |
| document to explicitly discuss and differentiate between ``__main__.py`` | |
| in packages versus the ``__name__ == '__main__'`` expression (and the | |
| idioms that surround it). | |
| - bpo-13814: In the Design FAQ, answer "Why don't generators support the | |
| with statement?" | |
| - bpo-27752: Documentation of csv.Dialect is more descriptive. | |
| - bpo-44453: Fix documentation for the return type of | |
| :func:`sysconfig.get_path`. | |
| - bpo-44392: Added a new section in the C API documentation for types used | |
| in type hinting. Documented ``Py_GenericAlias`` and | |
| ``Py_GenericAliasType``. | |
| - bpo-38291: Mark ``typing.io`` and ``typing.re`` as deprecated since Python | |
| 3.8 in the documentation. They were never properly supported by type | |
| checkers. | |
| - bpo-44322: Document that SyntaxError args have a details tuple and that | |
| details are adjusted for errors in f-string field replacement expressions. | |
| - bpo-42392: Document the deprecation and removal of the ``loop`` parameter | |
| for many functions and classes in :mod:`asyncio`. | |
| - bpo-44195: Corrected references to ``TraversableResources`` in docs. There | |
| is no ``TraversableReader``. | |
| - bpo-41963: Document that ``ConfigParser`` strips off comments when reading | |
| configuration files. | |
| - bpo-44072: Correct where in the numeric ABC hierarchy ``**`` support is | |
| added, i.e., in numbers.Complex, not numbers.Integral. | |
| - bpo-43558: Add the remark to :mod:`dataclasses` documentation that the | |
| :meth:`__init__` of any base class has to be called in | |
| :meth:`__post_init__`, along with a code example. | |
| - bpo-44025: Clarify when '_' in match statements is a keyword, and when | |
| not. | |
| - bpo-41706: Fix docs about how methods like ``__add__`` are invoked when | |
| evaluating operator expressions. | |
| - bpo-41621: Document that :class:`collections.defaultdict` parameter | |
| ``default_factory`` defaults to None and is positional-only. | |
| - bpo-41576: document BaseException in favor of bare except | |
| - bpo-21760: The description for __file__ fixed. Patch by Furkan Onder | |
| - bpo-39498: Add a "Security Considerations" index which links to standard | |
| library modules that have explicitly documented security considerations. | |
| - bpo-33479: Remove the unqualified claim that tkinter is threadsafe. It has | |
| not been true for several years and likely never was. An explanation of | |
| what is true may be added later, after more discussion, and possibly after | |
| patching _tkinter.c, | |
| Tests | |
| ----- | |
| - bpo-40173: Fix :func:`test.support.import_helper.import_fresh_module`. | |
| - bpo-45280: Add a test case for empty :class:`typing.NamedTuple`. | |
| - bpo-45269: Cover case when invalid ``markers`` type is supplied to | |
| ``c_make_encoder``. | |
| - bpo-45128: Fix ``test_multiprocessing_fork`` failure due to | |
| ``test_logging`` and ``sys.modules`` manipulation. | |
| - bpo-45209: Fix ``UserWarning: resource_tracker`` warning in | |
| ``_test_multiprocessing._TestSharedMemory.test_shared_memory_cleaned_after_process_termination`` | |
| - bpo-45185: Enables ``TestEnumerations`` test cases in ``test_ssl`` suite. | |
| - bpo-45195: Fix test_readline.test_nonascii(): sometimes, the newline | |
| character is not written at the end, so don't expect it in the output. | |
| Patch by Victor Stinner. | |
| - bpo-45156: Fixes infinite loop on :func:`unittest.mock.seal` of mocks | |
| created by :func:`~unittest.create_autospec`. | |
| - bpo-45125: Improves pickling tests and docs of ``SharedMemory`` and | |
| ``SharableList`` objects. | |
| - bpo-44860: Update ``test_sysconfig.test_user_similar()`` for the | |
| posix_user scheme: ``platlib`` doesn't use :data:`sys.platlibdir`. Patch | |
| by Victor Stinner. | |
| - bpo-45052: ``WithProcessesTestSharedMemory.test_shared_memory_basics`` | |
| test was ignored, because ``self.assertEqual(sms.size, sms2.size)`` line | |
| was failing. It is now removed and test is unskipped. | |
| The main motivation for this line to be removed from the test is that the | |
| ``size`` of ``SharedMemory`` is not ever guaranteed to be the same. It is | |
| decided by the platform. | |
| - bpo-44895: libregrtest now clears the type cache later to reduce the risk | |
| of false alarm when checking for reference leaks. Previously, the type | |
| cache was cleared too early and libregrtest raised a false alarm about | |
| reference leaks under very specific conditions. Patch by Irit Katriel and | |
| Victor Stinner. | |
| - bpo-45042: Fixes that test classes decorated with | |
| ``@hashlib_helper.requires_hashdigest`` were skipped all the time. | |
| - bpo-25130: Add calls of :func:`gc.collect` in tests to support PyPy. | |
| - bpo-45011: Made tests relying on the :mod:`_asyncio` C extension module | |
| optional to allow running on alternative Python implementations. Patch by | |
| Serhiy Storchaka. | |
| - bpo-44949: Fix auto history tests of test_readline: sometimes, the newline | |
| character is not written at the end, so don't expect it in the output. | |
| - bpo-44891: Tests were added to clarify :func:`id` is preserved when ``obj | |
| * 1`` is used on :class:`str` and :class:`bytes` objects. Patch by Nikita | |
| Sobolev. | |
| - bpo-44852: Add ability to wholesale silence DeprecationWarnings while | |
| running the regression test suite. | |
| - bpo-40928: Notify users running test_decimal regression tests on macOS of | |
| potential harmless "malloc can't allocate region" messages spewed by | |
| test_decimal. | |
| - bpo-44734: Fixed floating point precision issue in turtle tests. | |
| - bpo-44708: Regression tests, when run with -w, are now re-running only the | |
| affected test methods instead of re-running the entire test file. | |
| - bpo-42095: Added interop tests for Apple plists: generate plist files with | |
| Python plistlib and parse with Apple plutil; and the other way round. | |
| - bpo-44647: Added a permanent Unicode-valued environment variable to | |
| regression tests to ensure they handle this use case in the future. If | |
| your test environment breaks because of that, report a bug to us, and | |
| temporarily set PYTHONREGRTEST_UNICODE_GUARD=0 in your test environment. | |
| - bpo-44515: Adjust recently added contextlib tests to avoid assuming the | |
| use of a refcounted GC | |
| - bpo-44287: Fix asyncio test_popen() of test_windows_utils by using a | |
| longer timeout. Use military grade battle-tested | |
| :data:`test.support.SHORT_TIMEOUT` timeout rather than a hardcoded timeout | |
| of 10 seconds: it's 30 seconds by default, but it is made longer on slow | |
| buildbots. Patch by Victor Stinner. | |
| - bpo-44451: Reset ``DeprecationWarning`` filters in | |
| ``test.test_importlib.test_metadata_api.APITests.test_entry_points_by_index`` | |
| to avoid ``StopIteration`` error if ``DeprecationWarnings`` are ignored. | |
| - bpo-44363: Account for address sanitizer in test_capi. test_capi now | |
| passes when run GCC address sanitizer. | |
| - bpo-44364: Add non integral tests for :func:`math.sqrt` function. | |
| - bpo-43921: Fix test_ssl.test_wrong_cert_tls13(): use | |
| ``suppress_ragged_eofs=False``, since ``read()`` can raise | |
| :exc:`ssl.SSLEOFError` on Windows. Patch by Victor Stinner. | |
| - bpo-43921: Fix test_pha_required_nocert() of test_ssl: catch two more EOF | |
| cases (when the ``recv()`` method returns an empty string). Patch by | |
| Victor Stinner. | |
| - bpo-44131: Add test_frozenmain to test_embed to test the | |
| :c:func:`Py_FrozenMain` C function. Patch by Victor Stinner. | |
| - bpo-31904: Ignore error string case in test_file_not_exists(). | |
| - bpo-42083: Add test to check that ``PyStructSequence_NewType`` accepts a | |
| ``PyStructSequence_Desc`` with ``doc`` field set to ``NULL``. | |
| - bpo-35753: Fix crash in doctest when doctest parses modules that include | |
| unwrappable functions by skipping those functions. | |
| - bpo-30256: Add test for nested queues when using ``multiprocessing`` | |
| shared objects ``AutoProxy[Queue]`` inside ``ListProxy`` and ``DictProxy`` | |
| Build | |
| ----- | |
| - bpo-45220: Avoid building with the Windows 11 SDK previews automatically. | |
| This may be overridden by setting the ``DefaultWindowsSDKVersion`` | |
| environment variable before building. | |
| - bpo-45020: Freeze stdlib modules that are imported during startup. This | |
| provides significant performance improvements to startup. If necessary, | |
| use the previously added "-X frozen_modules=off" commandline option to | |
| force importing the source modules. | |
| - bpo-45188: Windows builds now regenerate frozen modules as the first part | |
| of the build. Previously the regeneration was later in the build, which | |
| would require it to be restarted if any modules had changed. | |
| - bpo-45163: Fixes Haiku platform build. | |
| - bpo-45067: The ncurses function extended_color_content was introduced in | |
| 2017 | |
| (https://invisible-island.net/ncurses/NEWS.html#index-t20170401). The | |
| ncurses-devel package in CentOS 7 had a older version ncurses resulted in | |
| compilation error. For compiling ncurses with extended color support, we | |
| verify the version of the ncurses library >= 20170401. | |
| - bpo-45019: Generate lines in relevant files for frozen modules. Up until | |
| now each of the files had to be edited manually. This change makes it | |
| easier to add to and modify the frozen modules. | |
| - bpo-44340: Add support for building with clang thin lto via | |
| --with-lto=thin/full. Patch by Dong-hee Na and Brett Holman. | |
| - bpo-44535: Enable building using a Visual Studio 2022 install on Windows. | |
| - bpo-43298: Improved error message when building without a Windows SDK | |
| installed. | |
| - bpo-44381: The Windows build now accepts :envvar:`EnableControlFlowGuard` | |
| set to ``guard`` to enable CFG. | |
| - bpo-41282: Fix broken ``make install`` that caused standard library | |
| extension modules to be unnecessarily and incorrectly rebuilt during the | |
| install phase of cpython. | |
| Windows | |
| ------- | |
| - bpo-45375: Fixes an assertion failure due to searching for the standard | |
| library in unnormalised paths. | |
| - bpo-45022: Update Windows release to include libffi 3.4.2 | |
| - bpo-45007: Update to OpenSSL 1.1.1l in Windows build | |
| - bpo-44848: Upgrade Windows installer to use SQLite 3.36.0. | |
| - bpo-44572: Avoid consuming standard input in the :mod:`platform` module | |
| - bpo-44582: Accelerate speed of :mod:`mimetypes` initialization using a | |
| native implementation of the registry scan. | |
| - bpo-41299: Fix 16 milliseconds jitter when using timeouts in | |
| :mod:`threading`, such as with :meth:`threading.Lock.acquire` or | |
| :meth:`threading.Condition.wait`. | |
| - bpo-42686: Build :mod:`sqlite3` with math functions enabled. Patch by | |
| Erlend E. Aasland. | |
| - bpo-40263: This is a follow-on bug from | |
| https://bugs.python.org/issue26903. Once that is applied we run into an | |
| off-by-one assertion problem. The assert was not correct. | |
| macOS | |
| ----- | |
| - bpo-45007: Update macOS installer builds to use OpenSSL 1.1.1l. | |
| - bpo-34602: When building CPython on macOS with ``./configure | |
| --with-undefined-behavior-sanitizer --with-pydebug``, the stack size is | |
| now quadrupled to allow for the entire test suite to pass. | |
| - bpo-44848: Update macOS installer to use SQLite 3.36.0. | |
| - bpo-44689: :meth:`ctypes.util.find_library` now works correctly on macOS | |
| 11 Big Sur even if Python is built on an older version of macOS. | |
| Previously, when built on older macOS systems, ``find_library`` was not | |
| able to find macOS system libraries when running on Big Sur due to | |
| changes in how system libraries are stored. | |
| - bpo-41972: The framework build's user header path in sysconfig is changed | |
| to add a 'pythonX.Y' component to match distutils's behavior. | |
| - bpo-43109: Allow --with-lto configure option to work with Apple-supplied | |
| Xcode or Command Line Tools. | |
| - bpo-34932: Add socket.TCP_KEEPALIVE support for macOS. Patch by Shane | |
| Harvey. | |
| IDLE | |
| ---- | |
| - bpo-45296: On Windows, change exit/quit message to suggest Ctrl-D, which | |
| works, instead of <Ctrl-Z Return>, which does not work in IDLE. | |
| - bpo-45193: Make completion boxes appear on Ubuntu again. | |
| - bpo-40128: Mostly fix completions on macOS when not using tcl/tk 8.6.11 | |
| (as with 3.9). The added update_idletask call should be harmless and | |
| possibly helpful otherwise. | |
| - bpo-33962: Move the indent space setting from the Font tab to the new | |
| Windows tab. Patch by Mark Roseman and Terry Jan Reedy. | |
| - bpo-40468: Split the settings dialog General tab into Windows and Shell/ED | |
| tabs. Move help sources, which extend the Help menu, to the Extensions | |
| tab. Make space for new options and shorten the dialog. The latter makes | |
| the dialog better fit small screens. | |
| - bpo-41611: Avoid uncaught exceptions in | |
| ``AutoCompleteWindow.winconfig_event()``. | |
| - bpo-41611: Fix IDLE sometimes freezing upon tab-completion on macOS. | |
| - bpo-44010: Highlight the new :ref:`match <match>` statement's :ref:`soft | |
| keywords <soft-keywords>`: :keyword:`match`, :keyword:`case <match>`, and | |
| :keyword:`_ <wildcard-patterns>`. However, this highlighting is not | |
| perfect and will be incorrect in some rare cases, including some ``_``-s | |
| in ``case`` patterns. | |
| - bpo-44026: Include interpreter's typo fix suggestions in message line for | |
| NameErrors and AttributeErrors. Patch by E. Paine. | |
| Tools/Demos | |
| ----------- | |
| - bpo-44786: Fix a warning in regular expression in the c-analyzer script. | |
| - bpo-44967: pydoc now returns a non-zero status code when a module cannot | |
| be found. | |
| - bpo-44978: Allow the Argument Clinic tool to handle ``__complex__`` | |
| special methods. | |
| - bpo-43425: Removed the 'test2to3' demo project that demonstrated using | |
| lib2to3 to support Python 2.x and Python 3.x from a single source in a | |
| distutils package. Patch by Dong-hee Na | |
| - bpo-44074: Make patchcheck automatically detect the correct base branch | |
| name (previously it was hardcoded to 'master') | |
| - bpo-20291: Added support for variadic positional parameters in Argument | |
| Clinic. | |
| C API | |
| ----- | |
| - bpo-41710: The PyThread_acquire_lock_timed() function now clamps the | |
| timeout if it is too large, rather than aborting the process. Patch by | |
| Victor Stinner. | |
| - bpo-44687: :meth:`BufferedReader.peek` no longer raises :exc:`ValueError` | |
| when the entire file has already been buffered. | |
| - bpo-45116: Add the :c:macro:`Py_ALWAYS_INLINE` macro to ask the compiler | |
| to always inline a static inline function. The compiler can ignore it and | |
| decides to not inline the function. Patch by Victor Stinner. | |
| - bpo-45094: Add the :c:macro:`Py_NO_INLINE` macro to disable inlining on a | |
| function. Patch by Victor Stinner. | |
| - bpo-45061: Add a deallocator to the :class:`bool` type to detect refcount | |
| bugs in C extensions which call ``Py_DECREF(Py_True);`` or | |
| ``Py_DECREF(Py_False);`` by mistake. Patch by Victor Stinner. | |
| - bpo-42035: Add a new :c:func:`PyType_GetQualName` function to get type's | |
| qualified name. | |
| - bpo-41103: Reverts removal of the old buffer protocol because they are | |
| part of stable ABI. | |
| - bpo-44751: Remove ``crypt.h`` include from the public ``Python.h`` header. | |
| - bpo-42747: The ``Py_TPFLAGS_HAVE_VERSION_TAG`` type flag now does nothing. | |
| The ``Py_TPFLAGS_HAVE_AM_SEND`` flag (which was added in 3.10) is removed. | |
| Both were unnecessary because it is not possible to have type objects with | |
| the relevant fields missing. | |
| - bpo-44530: Added the ``co_qualname`` to the ``PyCodeObject`` structure to | |
| propagate the qualified name from the compiler to code objects. | |
| Patch by Gabriele N. Tornetta | |
| - bpo-44441: :c:func:`Py_RunMain` now resets :c:data:`PyImport_Inittab` to | |
| its initial value at exit. It must be possible to call | |
| :c:func:`PyImport_AppendInittab` or :c:func:`PyImport_ExtendInittab` at | |
| each Python initialization. Patch by Victor Stinner. | |
| - bpo-39947: Remove 4 private trashcan C API functions which were only kept | |
| for the backward compatibility of the stable ABI with Python 3.8 and | |
| older, since the trashcan API was not usable with the limited C API on | |
| Python 3.8 and older. The trashcan API was excluded from the limited C API | |
| in Python 3.9. | |
| Removed functions: | |
| * _PyTrash_deposit_object() | |
| * _PyTrash_destroy_chain() | |
| * _PyTrash_thread_deposit_object() | |
| * _PyTrash_thread_destroy_chain() | |
| The trashcan C API was never usable with the limited C API, since old | |
| trashcan macros accessed directly :c:type:`PyThreadState` members like | |
| ``_tstate->trash_delete_nesting``, whereas the :c:type:`PyThreadState` | |
| structure is opaque in the limited C API. | |
| Exclude also the ``PyTrash_UNWIND_LEVEL`` constant from the C API. | |
| Patch by Victor Stinner. | |
| - bpo-40939: Removed documentation for the removed ``PyParser_*`` C API. | |
| - bpo-43795: The list in :ref:`stable-abi-list` now shows the public name | |
| :c:struct:`PyFrameObject` rather than ``_frame``. The non-existing entry | |
| ``_node`` no longer appears in the list. | |
| - bpo-44378: :c:func:`Py_IS_TYPE` no longer uses :c:func:`Py_TYPE` to avoid | |
| a compiler warning: no longer cast ``const PyObject*`` to ``PyObject*``. | |
| Patch by Victor Stinner. | |
| - bpo-39573: Convert the :c:func:`Py_TYPE` and :c:func:`Py_SIZE` macros to | |
| static inline functions. The :c:func:`Py_SET_TYPE` and | |
| :c:func:`Py_SET_SIZE` functions must now be used to set an object type and | |
| size. Patch by Victor Stinner. | |
| - bpo-44263: The :c:func:`PyType_Ready` function now raises an error if a | |
| type is defined with the :const:`Py_TPFLAGS_HAVE_GC` flag set but has no | |
| traverse function (:c:member:`PyTypeObject.tp_traverse`). Patch by Victor | |
| Stinner. | |
| - bpo-43795: The undocumented function :c:func:`Py_FrozenMain` is removed | |
| from the Limited API. | |
| - bpo-44113: Deprecate the following functions to configure the Python | |
| initialization: | |
| * :c:func:`PySys_AddWarnOptionUnicode` | |
| * :c:func:`PySys_AddWarnOption` | |
| * :c:func:`PySys_AddXOption` | |
| * :c:func:`PySys_HasWarnOptions` | |
| * :c:func:`Py_SetPath` | |
| * :c:func:`Py_SetProgramName` | |
| * :c:func:`Py_SetPythonHome` | |
| * :c:func:`Py_SetStandardStreamEncoding` | |
| * :c:func:`_Py_SetProgramFullPath` | |
| Use the new :c:type:`PyConfig` API of the :ref:`Python Initialization | |
| Configuration <init-config>` instead (:pep:`587`). | |
| - bpo-44094: Remove ``PyErr_SetFromErrnoWithUnicodeFilename()``, | |
| ``PyErr_SetFromWindowsErrWithUnicodeFilename()``, and | |
| ``PyErr_SetExcFromWindowsErrWithUnicodeFilename()``. They are not | |
| documented and have been deprecated since Python 3.3. | |
| - bpo-43795: :c:func:`PyCodec_Unregister` is now properly exported as a | |
| function in the Windows Stable ABI DLL. | |
| - bpo-44029: Remove deprecated ``Py_UNICODE`` APIs: ``PyUnicode_Encode``, | |
| ``PyUnicode_EncodeUTF7``, ``PyUnicode_EncodeUTF8``, | |
| ``PyUnicode_EncodeUTF16``, ``PyUnicode_EncodeUTF32``, | |
| ``PyUnicode_EncodeLatin1``, ``PyUnicode_EncodeMBCS``, | |
| ``PyUnicode_EncodeDecimal``, ``PyUnicode_EncodeRawUnicodeEscape``, | |
| ``PyUnicode_EncodeCharmap``, ``PyUnicode_EncodeUnicodeEscape``, | |
| ``PyUnicode_TransformDecimalToASCII``, ``PyUnicode_TranslateCharmap``, | |
| ``PyUnicodeEncodeError_Create``, ``PyUnicodeTranslateError_Create``. See | |
| :pep:`393` and :pep:`624` for reference. | |
| - bpo-42035: Add a new :c:func:`PyType_GetName` function to get type's short | |
| name. | |
| What's New in Python 3.10.0 beta 1? | |
| =================================== | |
| *Release date: 2021-05-03* | |
| Security | |
| -------- | |
| - bpo-43434: Creating :class:`sqlite3.Connection` objects now also produces | |
| ``sqlite3.connect`` and ``sqlite3.connect/handle`` :ref:`auditing events | |
| <auditing>`. Previously these events were only produced by | |
| :func:`sqlite3.connect` calls. Patch by Erlend E. Aasland. | |
| - bpo-43998: The :mod:`ssl` module sets more secure cipher suites defaults. | |
| Ciphers without forward secrecy and with SHA-1 MAC are disabled by | |
| default. Security level 2 prohibits weak RSA, DH, and ECC keys with less | |
| than 112 bits of security. :class:`~ssl.SSLContext` defaults to minimum | |
| protocol version TLS 1.2. Settings are based on Hynek Schlawack's | |
| research. | |
| - bpo-43882: The presence of newline or tab characters in parts of a URL | |
| could allow some forms of attacks. | |
| Following the controlling specification for URLs defined by WHATWG | |
| :func:`urllib.parse` now removes ASCII newlines and tabs from URLs, | |
| preventing such attacks. | |
| - bpo-43472: Ensures interpreter-level audit hooks receive the | |
| ``cpython.PyInterpreterState_New`` event when called through the | |
| ``_xxsubinterpreters`` module. | |
| - bpo-43362: Fix invalid free in _sha3 module. The issue was introduced in | |
| 3.10.0a1. Python 3.9 and earlier are not affected. | |
| - bpo-43762: Add audit events for :func:`sqlite3.connect/handle`, | |
| :meth:`sqlite3.Connection.enable_load_extension`, and | |
| :meth:`sqlite3.Connection.load_extension`. Patch by Erlend E. Aasland. | |
| - bpo-43756: Add new audit event ``glob.glob/2`` to incorporate the new | |
| *root_dir* and *dir_fd* arguments added to :func:`glob.glob` and | |
| :func:`glob.iglob`. | |
| - bpo-36384: :mod:`ipaddress` module no longer accepts any leading zeros in | |
| IPv4 address strings. Leading zeros are ambiguous and interpreted as octal | |
| notation by some libraries. For example the legacy function | |
| :func:`socket.inet_aton` treats leading zeros as octal notation. glibc | |
| implementation of modern :func:`~socket.inet_pton` does not accept any | |
| leading zeros. For a while the :mod:`ipaddress` module used to accept | |
| ambiguous leading zeros. | |
| - bpo-43075: Fix Regular Expression Denial of Service (ReDoS) vulnerability | |
| in :class:`urllib.request.AbstractBasicAuthHandler`. The ReDoS-vulnerable | |
| regex has quadratic worst-case complexity and it allows cause a denial of | |
| service when identifying crafted invalid RFCs. This ReDoS issue is on the | |
| client side and needs remote attackers to control the HTTP server. | |
| - bpo-42800: Audit hooks are now fired for frame.f_code, traceback.tb_frame, | |
| and generator code/frame attribute access. | |
| - bpo-37363: Add audit events to the :mod:`http.client` module. | |
| Core and Builtins | |
| ----------------- | |
| - bpo-43977: Prevent classes being both a sequence and a mapping when | |
| pattern matching. | |
| - bpo-43977: Use :c:member:`~PyTypeObject.tp_flags` on the class object to | |
| determine if the subject is a sequence or mapping when pattern matching. | |
| Avoids the need to import :mod:`collections.abc` when pattern matching. | |
| - bpo-43892: Restore proper validation of complex literal value patterns | |
| when parsing :keyword:`!match` blocks. | |
| - bpo-43933: Set frame.f_lineno to the line number of the 'with' kweyword | |
| when executing the call to ``__exit__``. | |
| - bpo-43933: If the current position in a frame has no line number then set | |
| the f_lineno attribute to None, instead of -1, to conform to PEP 626. This | |
| should not normally be possible, but might occur in some unusual | |
| circumstances. | |
| - bpo-43963: Importing the :mod:`_signal` module in a subinterpreter has no | |
| longer side effects. | |
| - bpo-42739: The internal representation of line number tables is changed to | |
| not use sentinels, and an explicit length parameter is added to the out of | |
| process API function ``PyLineTable_InitAddressRange``. This makes the | |
| handling of line number tables more robust in some circumstances. | |
| - bpo-43908: Make :mod:`re` types immutable. Patch by Erlend E. Aasland. | |
| - bpo-43908: Make the :class:`array.array` type immutable. Patch by Erlend | |
| E. Aasland. | |
| - bpo-43901: Change class and module objects to lazy-create empty | |
| annotations dicts on demand. The annotations dicts are stored in the | |
| object's __dict__ for backwards compatibility. | |
| - bpo-43892: Match patterns now use new dedicated AST nodes (``MatchValue``, | |
| ``MatchSingleton``, ``MatchSequence``, ``MatchStar``, ``MatchMapping``, | |
| ``MatchClass``) rather than reusing expression AST nodes. ``MatchAs`` and | |
| ``MatchOr`` are now defined as pattern nodes rather than as expression | |
| nodes. Patch by Nick Coghlan. | |
| - bpo-42725: Usage of ``await``/``yield``/``yield from`` and named | |
| expressions within an annotation is now forbidden when PEP 563 is | |
| activated. | |
| - bpo-43754: When performing structural pattern matching (:pep:`634`), | |
| captured names are now left unbound until the *entire* pattern has matched | |
| successfully. | |
| - bpo-42737: Annotations for complex targets (everything beside simple | |
| names) no longer cause any runtime effects with ``from __future__ import | |
| annotations``. | |
| - bpo-43914: :exc:`SyntaxError` exceptions raised by the interpreter will | |
| highlight the full error range of the expression that consistutes the | |
| syntax error itself, instead of just where the problem is detected. Patch | |
| by Pablo Galindo. | |
| - bpo-38605: Revert making ``from __future__ import annotations`` the | |
| default. This follows the Steering Council decision to postpone PEP 563 | |
| changes to at least Python 3.11. See the original email for more | |
| information regarding the decision: | |
| https://mail.python.org/archives/list/python-dev@python.org/thread/CLVXXPQ2T2LQ5MP2Y53VVQFCXYWQJHKZ/. | |
| Patch by Pablo Galindo. | |
| - bpo-43475: Hashes of NaN values now depend on object identity. Formerly, | |
| they always hashed to 0 even though NaN values are not equal to one | |
| another. Having the same hash for unequal values caused pile-ups in hash | |
| tables. | |
| - bpo-43859: Improve the error message for :exc:`IndentationError` | |
| exceptions. Patch by Pablo Galindo | |
| - bpo-41323: Constant tuple folding in bytecode optimizer now reuses tuple | |
| in constant table. | |
| - bpo-43846: Data stack usage is much reduced for large literal and call | |
| expressions. | |
| - bpo-38530: When printing :exc:`NameError` raised by the interpreter, | |
| :c:func:`PyErr_Display` will offer suggestions of similar variable names | |
| in the function that the exception was raised from. Patch by Pablo Galindo | |
| - bpo-43823: Improve syntax errors for invalid dictionary literals. Patch by | |
| Pablo Galindo. | |
| - bpo-43822: Improve syntax errors in the parser for missing commas between | |
| expressions. Patch by Pablo Galindo. | |
| - bpo-43798: :class:`ast.alias` nodes now include source location metadata | |
| attributes e.g. lineno, col_offset. | |
| - bpo-43797: Improve ``SyntaxError`` error messages for invalid comparisons. | |
| Patch by Pablo Galindo. | |
| - bpo-43760: Move the flag for checking whether tracing is enabled to the C | |
| stack, from the heap. Should speed up dispatch in the interpreter. | |
| - bpo-43682: Static methods (:func:`@staticmethod <staticmethod>`) and class | |
| methods (:func:`@classmethod <classmethod>`) now inherit the method | |
| attributes (``__module__``, ``__name__``, ``__qualname__``, ``__doc__``, | |
| ``__annotations__``) and have a new ``__wrapped__`` attribute. Patch by | |
| Victor Stinner. | |
| - bpo-43751: Fixed a bug where ``anext(ait, default)`` would erroneously | |
| return None. | |
| - bpo-42128: :data:`~object.__match_args__` is no longer allowed to be a | |
| list. | |
| - bpo-43683: Add GEN_START opcode. Marks start of generator, including | |
| async, or coroutine and handles sending values to a newly created | |
| generator or coroutine. | |
| - bpo-43105: Importlib now resolves relative paths when creating module spec | |
| objects from file locations. | |
| - bpo-43682: Static methods (:func:`@staticmethod <staticmethod>`) are now | |
| callable as regular functions. Patch by Victor Stinner. | |
| - bpo-42609: Prevented crashes in the AST validator and optimizer when | |
| compiling some absurdly long expressions like ``"+0"*1000000``. | |
| :exc:`RecursionError` is now raised instead. | |
| - bpo-38530: When printing :exc:`AttributeError`, :c:func:`PyErr_Display` | |
| will offer suggestions of similar attribute names in the object that the | |
| exception was raised from. Patch by Pablo Galindo | |
| Library | |
| ------- | |
| - bpo-44015: In @dataclass(), raise a TypeError if KW_ONLY is specified more | |
| than once. | |
| - bpo-25478: Added a *total()* method to collections.Counter() to compute | |
| the sum of the counts. | |
| - bpo-43733: Change :class:`netrc.netrc` to use UTF-8 encoding before using | |
| locale encoding. | |
| - bpo-43979: Removed an unnecessary list comprehension before looping from | |
| :func:`urllib.parse.parse_qsl`. Patch by Christoph Zwerschke and Dong-hee | |
| Na. | |
| - bpo-43993: Update bundled pip to 21.1.1. | |
| - bpo-43957: [Enum] Deprecate ``TypeError`` when non-member is used in a | |
| containment check; In 3.12 ``True`` or ``False`` will be returned instead, | |
| and containment will return ``True`` if the value is either a member of | |
| that enum or one of its members' value. | |
| - bpo-42904: For backwards compatibility with previous minor versions of | |
| Python, if :func:`typing.get_type_hints` receives no namespace dictionary | |
| arguments, :func:`typing.get_type_hints` will search through the global | |
| then local namespaces during evaluation of stringized type annotations | |
| (string forward references) inside a class. | |
| - bpo-43945: [Enum] Deprecate non-standard mixin format() behavior: in 3.12 | |
| the enum member, not the member's value, will be used for format() calls. | |
| - bpo-41139: Deprecate undocumented ``cgi.log()`` API. | |
| - bpo-43937: Fixed the :mod:`turtle` module working with non-default root | |
| window. | |
| - bpo-43930: Update bundled pip to 21.1 and setuptools to 56.0.0 | |
| - bpo-43907: Fix a bug in the pure-Python pickle implementation when using | |
| protocol 5, where bytearray instances that occur several time in the | |
| pickled object graph would incorrectly unpickle into repeated copies of | |
| the bytearray object. | |
| - bpo-43926: In ``importlib.metadata``, provide a uniform interface to | |
| ``Description``, allow for any field to be encoded with multiline values, | |
| remove continuation lines from multiline values, and add a ``.json`` | |
| property for easy access to the PEP 566 JSON-compatible form. Sync with | |
| ``importlib_metadata 4.0``. | |
| - bpo-43920: OpenSSL 3.0.0: :meth:`~ssl.SSLContext.load_verify_locations` | |
| now returns a consistent error message when cadata contains no valid | |
| certificate. | |
| - bpo-43607: :mod:`urllib` can now convert Windows paths with ``\\?\`` | |
| prefixes into URL paths. | |
| - bpo-43817: Add :func:`inspect.get_annotations`, which safely computes the | |
| annotations defined on an object. It works around the quirks of accessing | |
| the annotations from various types of objects, and makes very few | |
| assumptions about the object passed in. :func:`inspect.get_annotations` | |
| can also correctly un-stringize stringized annotations. | |
| :func:`inspect.signature`, :func:`inspect.from_callable`, and | |
| :func:`inspect.from_function` now call :func:`inspect.get_annotations` to | |
| retrieve annotations. This means :func:`inspect.signature` and | |
| :func:`inspect.from_callable` can now un-stringize stringized annotations, | |
| too. | |
| - bpo-43284: platform.win32_ver derives the windows version from | |
| sys.getwindowsversion().platform_version which in turn derives the version | |
| from kernel32.dll (which can be of a different version than Windows | |
| itself). Therefore change the platform.win32_ver to determine the version | |
| using the platform module's _syscmd_ver private function to return an | |
| accurate version. | |
| - bpo-42854: The :mod:`ssl` module now uses ``SSL_read_ex`` and | |
| ``SSL_write_ex`` internally. The functions support reading and writing of | |
| data larger than 2 GB. Writing zero-length data no longer fails with a | |
| protocol violation error. | |
| - bpo-42333: Port ``_ssl`` extension module to multiphase initialization. | |
| - bpo-43880: :mod:`ssl` now raises DeprecationWarning for OP_NO_SSL/TLS* | |
| options, old TLS versions, old protocols, and other features that have | |
| been deprecated since Python 3.6, 3.7, or OpenSSL 1.1.0. | |
| - bpo-41559: :pep:`612` is now implemented purely in Python; builtin | |
| ``types.GenericAlias`` objects no longer include ``typing.ParamSpec`` in | |
| ``__parameters__`` (with the exception of ``collections.abc.Callable``\ 's | |
| ``GenericAlias``). This means previously invalid uses of ``ParamSpec`` | |
| (such as ``list[P]``) which worked in earlier versions of Python 3.10 | |
| alpha, will now raise ``TypeError`` during substitution. | |
| - bpo-43867: The :mod:`multiprocessing` ``Server`` class now explicitly | |
| catches :exc:`SystemExit` and closes the client connection in this case. | |
| It happens when the ``Server.serve_client()`` method reaches the end of | |
| file (EOF). | |
| - bpo-40443: Remove unused imports: pyclbr no longer uses copy, and typing | |
| no longer uses ast. Patch by Victor Stinner. | |
| - bpo-43820: Remove an unneeded copy of the namespace passed to | |
| dataclasses.make_dataclass(). | |
| - bpo-43787: Add ``__iter__()`` method to :class:`bz2.BZ2File`, | |
| :class:`gzip.GzipFile`, and :class:`lzma.LZMAFile`. It makes iterating | |
| them about 2x faster. Patch by Inada Naoki. | |
| - bpo-43680: Deprecate io.OpenWrapper and _pyio.OpenWrapper: use io.open and | |
| _pyio.open instead. Until Python 3.9, _pyio.open was not a static method | |
| and builtins.open was set to OpenWrapper to not become a bound method when | |
| set to a class variable. _io.open is a built-in function whereas | |
| _pyio.open is a Python function. In Python 3.10, _pyio.open() is now a | |
| static method, and builtins.open() is now io.open(). | |
| - bpo-43680: The Python :func:`_pyio.open` function becomes a static method | |
| to behave as :func:`io.open` built-in function: don't become a bound | |
| method when stored as a class variable. It becomes possible since static | |
| methods are now callable in Python 3.10. Moreover, | |
| :func:`_pyio.OpenWrapper` becomes a simple alias to :func:`_pyio.open`. | |
| Patch by Victor Stinner. | |
| - bpo-41515: Fix :exc:`KeyError` raised in :func:`typing.get_type_hints` due | |
| to synthetic modules that don't appear in ``sys.modules``. | |
| - bpo-43776: When :class:`subprocess.Popen` args are provided as a string or | |
| as :class:`pathlib.Path`, the Popen instance repr now shows the right | |
| thing. | |
| - bpo-42248: [Enum] ensure exceptions raised in ``_missing__`` are released | |
| - bpo-43744: fix issue with enum member name matching the start of a private | |
| variable name | |
| - bpo-43772: Fixed the return value of ``TypeVar.__ror__``. Patch by Jelle | |
| Zijlstra. | |
| - bpo-43764: Add match_args parameter to @dataclass decorator to allow | |
| suppression of __match_args__ generation. | |
| - bpo-43799: OpenSSL 3.0.0: define ``OPENSSL_API_COMPAT`` 1.1.1 to suppress | |
| deprecation warnings. Python requires OpenSSL 1.1.1 APIs. | |
| - bpo-43478: Mocks can no longer be used as the specs for other Mocks. As a | |
| result, an already-mocked object cannot have an attribute mocked using | |
| ``autospec=True`` or be the subject of a ``create_autospec(...)`` call. | |
| This can uncover bugs in tests since these Mock-derived Mocks will always | |
| pass certain tests (e.g. :func:`isinstance`) and builtin assert functions | |
| (e.g. assert_called_once_with) will unconditionally pass. | |
| - bpo-43794: Add :data:`ssl.OP_IGNORE_UNEXPECTED_EOF` constants (OpenSSL | |
| 3.0.0) | |
| - bpo-43785: Improve ``bz2.BZ2File`` performance by removing the RLock from | |
| BZ2File. This makes BZ2File thread unsafe in the face of multiple | |
| simultaneous readers or writers, just like its equivalent classes in | |
| :mod:`gzip` and :mod:`lzma` have always been. Patch by Inada Naoki. | |
| - bpo-43789: OpenSSL 3.0.0: Don't call the password callback function a | |
| second time when first call has signaled an error condition. | |
| - bpo-43788: The header files for :mod:`ssl` error codes are now OpenSSL | |
| version-specific. Exceptions will now show correct reason and library | |
| codes. The ``make_ssl_data.py`` script has been rewritten to use OpenSSL's | |
| text file with error codes. | |
| - bpo-43766: Implement :pep:`647` in the :mod:`typing` module by adding | |
| :data:`TypeGuard`. | |
| - bpo-25264: :func:`os.path.realpath` now accepts a *strict* keyword-only | |
| argument. When set to ``True``, :exc:`OSError` is raised if a path doesn't | |
| exist or a symlink loop is encountered. | |
| - bpo-43780: In ``importlib.metadata``, incorporate changes from | |
| importlib_metadata 3.10: Add mtime-based caching during distribution | |
| discovery. Flagged use of dict result from ``entry_points()`` as | |
| deprecated. | |
| - The ``P.args`` and ``P.kwargs`` attributes of :class:`typing.ParamSpec` | |
| are now instances of the new classes :class:`typing.ParamSpecArgs` and | |
| :class:`typing.ParamSpecKwargs`, which enables a more useful ``repr()``. | |
| Patch by Jelle Zijlstra. | |
| - bpo-43731: Add an ``encoding`` parameter :func:`logging.fileConfig()`. | |
| - bpo-43712: Add ``encoding`` and ``errors`` parameters to | |
| :func:`fileinput.input` and :class:`fileinput.FileInput`. | |
| - bpo-38659: A ``simple_enum`` decorator is added to the ``enum`` module to | |
| convert a normal class into an Enum. ``test_simple_enum`` added to test | |
| simple enums against a corresponding normal Enum. Standard library | |
| modules updated to use ``simple_enum``. | |
| - bpo-43764: Fix an issue where :data:`~object.__match_args__` generation | |
| could fail for some :mod:`dataclasses`. | |
| - bpo-43752: Fix :mod:`sqlite3` regression for zero-sized blobs with | |
| converters, where ``b""`` was returned instead of ``None``. The regression | |
| was introduced by PR 24723. Patch by Erlend E. Aasland. | |
| - bpo-43655: :mod:`tkinter` dialog windows are now recognized as dialogs by | |
| window managers on macOS and X Window. | |
| - bpo-43723: The following ``threading`` methods are now deprecated and | |
| should be replaced: | |
| - ``currentThread`` => :func:`threading.current_thread` | |
| - ``activeCount`` => :func:`threading.active_count` | |
| - ``Condition.notifyAll`` => :meth:`threading.Condition.notify_all` | |
| - ``Event.isSet`` => :meth:`threading.Event.is_set` | |
| - ``Thread.setName`` => :attr:`threading.Thread.name` | |
| - ``thread.getName`` => :attr:`threading.Thread.name` | |
| - ``Thread.isDaemon`` => :attr:`threading.Thread.daemon` | |
| - ``Thread.setDaemon`` => :attr:`threading.Thread.daemon` | |
| Patch by Jelle Zijlstra. | |
| - bpo-2135: Deprecate find_module() and find_loader() implementations in | |
| importlib and zipimport. | |
| - bpo-43534: :func:`turtle.textinput` and :func:`turtle.numinput` create now | |
| a transient window working on behalf of the canvas window. | |
| - bpo-43532: Add the ability to specify keyword-only fields to dataclasses. | |
| These fields will become keyword-only arguments to the generated __init__. | |
| - bpo-43522: Fix problem with | |
| :attr:`~ssl.SSLContext.hostname_checks_common_name`. OpenSSL does not copy | |
| hostflags from *struct SSL_CTX* to *struct SSL*. | |
| - bpo-8978: Improve error message for :func:`tarfile.open` when :mod:`lzma` | |
| / :mod:`bz2` are unavailable. Patch by Anthony Sottile. | |
| - bpo-42967: Allow :class:`bytes` ``separator`` argument in | |
| ``urllib.parse.parse_qs`` and ``urllib.parse.parse_qsl`` when parsing | |
| :class:`str` query strings. Previously, this raised a ``TypeError``. | |
| - bpo-43296: Improve :mod:`sqlite3` error handling: ``sqlite3_value_blob()`` | |
| errors that set ``SQLITE_NOMEM`` now raise :exc:`MemoryError`. Patch by | |
| Erlend E. Aasland. | |
| - bpo-43312: New functions :func:`sysconfig.get_preferred_scheme` and | |
| :func:`sysconfig.get_default_scheme` are added to query a platform for its | |
| preferred "user", "home", and "prefix" (default) scheme names. | |
| - bpo-43265: Improve :meth:`sqlite3.Connection.backup` error handling. The | |
| error message for non-existent target database names is now ``unknown | |
| database <database name>`` instead of ``SQL logic error``. Patch by Erlend | |
| E. Aasland. | |
| - bpo-41282: Install schemes in :mod:`distutils.command.install` are now | |
| loaded from :mod:`sysconfig`. | |
| - bpo-41282: :mod:`distutils.sysconfig` has been merged to :mod:`sysconfig`. | |
| - bpo-43176: Fixed processing of a dataclass that inherits from a frozen | |
| dataclass with no fields. It is now correctly detected as an error. | |
| - bpo-43080: :mod:`pprint` now has support for | |
| :class:`dataclasses.dataclass`. Patch by Lewis Gaul. | |
| - bpo-39950: Add `pathlib.Path.hardlink_to()` method that supersedes | |
| `link_to()`. The new method has the same argument order as `symlink_to()`. | |
| - bpo-42904: :func:`typing.get_type_hints` now checks the local namespace of | |
| a class when evaluating :pep:`563` annotations inside said class. | |
| - bpo-42269: Add ``slots`` parameter to ``dataclasses.dataclass`` decorator | |
| to automatically generate ``__slots__`` for class. Patch provided by Yurii | |
| Karabas. | |
| - bpo-39529: Deprecated use of :func:`asyncio.get_event_loop` without | |
| running event loop. Emit deprecation warning for :mod:`asyncio` functions | |
| which implicitly create a :class:`~asyncio.Future` or | |
| :class:`~asyncio.Task` objects if there is no running event loop and no | |
| explicit *loop* argument is passed: :func:`~asyncio.ensure_future`, | |
| :func:`~asyncio.wrap_future`, :func:`~asyncio.gather`, | |
| :func:`~asyncio.shield`, :func:`~asyncio.as_completed` and constructors of | |
| :class:`~asyncio.Future`, :class:`~asyncio.Task`, | |
| :class:`~asyncio.StreamReader`, :class:`~asyncio.StreamReaderProtocol`. | |
| - bpo-18369: Certificate and PrivateKey classes were added to the ssl | |
| module. Certificates and keys can now be loaded from memory buffer, too. | |
| - bpo-41486: Use a new output buffer management code for :mod:`bz2` / | |
| :mod:`lzma` / :mod:`zlib` modules, and add ``.readall()`` function to | |
| ``_compression.DecompressReader`` class. These bring some performance | |
| improvements. Patch by Ma Lin. | |
| - bpo-31870: The :func:`ssl.get_server_certificate` function now has a | |
| *timeout* parameter. | |
| - bpo-41735: Fix thread locks in zlib module may go wrong in rare case. | |
| Patch by Ma Lin. | |
| - bpo-36470: Fix dataclasses with ``InitVar``\s and | |
| :func:`~dataclasses.replace()`. Patch by Claudiu Popa. | |
| - bpo-40849: Expose X509_V_FLAG_PARTIAL_CHAIN ssl flag | |
| - bpo-35114: :func:`ssl.RAND_status` now returns a boolean value (as | |
| documented) instead of ``1`` or ``0``. | |
| - bpo-39906: :meth:`pathlib.Path.stat` and :meth:`~pathlib.Path.chmod` now | |
| accept a *follow_symlinks* keyword-only argument for consistency with | |
| corresponding functions in the :mod:`os` module. | |
| - bpo-39899: :func:`os.path.expanduser()` now refuses to guess Windows home | |
| directories if the basename of current user's home directory does not | |
| match their username. | |
| :meth:`pathlib.Path.expanduser()` and :meth:`~pathlib.Path.home()` now | |
| consistently raise :exc:`RuntimeError` exception when a home directory | |
| cannot be resolved. Previously a :exc:`KeyError` exception could be raised | |
| on Windows when the ``"USERNAME"`` environment variable was unset. | |
| - bpo-36076: Added SNI support to :func:`ssl.get_server_certificate`. | |
| - bpo-38490: Covariance, Pearson's correlation, and simple linear regression | |
| functionality was added to statistics module. Patch by Tymoteusz Wołodźko. | |
| - bpo-33731: Provide a locale.localize() function, which converts a | |
| normalized number string into a locale format. | |
| - bpo-32745: Fix a regression in the handling of ctypes' | |
| :data:`ctypes.c_wchar_p` type: embedded null characters would cause a | |
| :exc:`ValueError` to be raised. Patch by Zackery Spytz. | |
| Documentation | |
| ------------- | |
| - bpo-43987: Add "Annotations Best Practices" document as a new HOWTO. | |
| - bpo-43977: Document the new :const:`Py_TPFLAGS_MAPPING` and | |
| :const:`Py_TPFLAGS_SEQUENCE` type flags. | |
| - bpo-43959: The documentation on the PyContextVar C-API was clarified. | |
| - bpo-43938: Update dataclasses documentation to express that | |
| FrozenInstanceError is derived from AttributeError. | |
| - bpo-43778: Fix the Sphinx glossary_search extension: create the _static/ | |
| sub-directory if it doesn't exist. | |
| - bpo-43755: Update documentation to reflect that unparenthesized lambda | |
| expressions can no longer be the expression part in an ``if`` clause in | |
| comprehensions and generator expressions since Python 3.9. | |
| - bpo-43739: Fixing the example code in Doc/extending/extending.rst to | |
| declare and initialize the pmodule variable to be of the right type. | |
| Tests | |
| ----- | |
| - bpo-43961: Fix test_logging.test_namer_rotator_inheritance() on Windows: | |
| use :func:`os.replace` rather than :func:`os.rename`. Patch by Victor | |
| Stinner. | |
| - bpo-43842: Fix a race condition in the SMTP test of test_logging. Don't | |
| close a file descriptor (socket) from a different thread while | |
| asyncore.loop() is polling the file descriptor. Patch by Victor Stinner. | |
| - bpo-43843: :mod:`test.libregrtest` now marks a test as ENV_CHANGED | |
| (altered the execution environment) if a thread raises an exception but | |
| does not catch it. It sets a hook on :func:`threading.excepthook`. Use | |
| ``--fail-env-changed`` option to mark the test as failed. Patch by Victor | |
| Stinner. | |
| - bpo-43811: Tests multiple OpenSSL versions on GitHub Actions. Use ccache | |
| to speed up testing. | |
| - bpo-43791: OpenSSL 3.0.0: Disable testing of legacy protocols TLS 1.0 and | |
| 1.1. Tests are failing with TLSV1_ALERT_INTERNAL_ERROR. | |
| Build | |
| ----- | |
| - bpo-43567: Improved generated code refresh (AST/tokens/opcodes/keywords) | |
| on Windows. | |
| - bpo-43669: Implement :pep:`644`. Python now requires OpenSSL 1.1.1 or | |
| newer. | |
| Windows | |
| ------- | |
| - bpo-35306: Adds additional arguments to :func:`os.startfile` function. | |
| - bpo-43538: Avoid raising errors from :meth:`pathlib.Path.exists()` when | |
| passed an invalid filename. | |
| - bpo-38822: Fixed :func:`os.stat` failing on inaccessible directories with | |
| a trailing slash, rather than falling back to the parent directory's | |
| metadata. This implicitly affected :func:`os.path.exists` and | |
| :func:`os.path.isdir`. | |
| - bpo-26227: Fixed decoding of host names in :func:`socket.gethostbyaddr` | |
| and :func:`socket.gethostbyname_ex`. | |
| - bpo-40432: Updated pegen regeneration script on Windows to find and use | |
| Python 3.8 or higher. Prior to this, pegen regeneration already required | |
| 3.8 or higher, but the script may have used lower versions of Python. | |
| - bpo-43745: Actually updates Windows release to OpenSSL 1.1.1k. Earlier | |
| releases were mislabelled and actually included 1.1.1i again. | |
| - bpo-43652: Update Tcl and Tk to 8.6.11 in Windows installer. | |
| - bpo-43492: Upgrade Windows installer to use SQLite 3.35.5. | |
| - bpo-30555: Fix ``WindowsConsoleIO`` errors in the presence of fd | |
| redirection. Patch by Segev Finer. | |
| macOS | |
| ----- | |
| - bpo-42119: Fix check for macOS SDK paths when building Python. Narrow | |
| search to match contents of SDKs, namely only files in | |
| ``/System/Library``, ``/System/IOSSupport``, and ``/usr`` other than | |
| ``/usr/local``. Previously, anything under ``/System`` was assumed to be | |
| in an SDK which causes problems with the new file system layout in 10.15+ | |
| where user file systems may appear to be mounted under ``/System``. Paths | |
| in ``/Library`` were also incorrectly treated as SDK locations. | |
| - bpo-43568: Drop support for MACOSX_DEPLOYMENT_TARGET < 10.3 | |
| - bpo-44009: Provide "python3.x-intel64" executable to allow reliably | |
| forcing macOS universal2 framework builds to run under Rosetta 2 Intel-64 | |
| emulation on Apple Silicon Macs. This can be useful for testing or when | |
| universal2 wheels are not yet available. | |
| - bpo-43851: Build SQLite with ``SQLITE_OMIT_AUTOINIT`` on macOS. Patch by | |
| Erlend E. Aasland. | |
| - bpo-43492: Update macOS installer to use SQLite 3.35.4. | |
| - bpo-42235: ``Mac/BuildScript/build-installer.py`` will now use | |
| "--enable-optimizations" and ``--with-lto`` when building on macOS 10.15 | |
| or later. | |
| IDLE | |
| ---- | |
| - bpo-37903: Add mouse actions to the shell sidebar. Left click and | |
| optional drag selects one or more lines, as with the editor line number | |
| sidebar. Right click after selecting raises a context menu with 'copy | |
| with prompts'. This zips together prompts from the sidebar with lines | |
| from the selected text. | |
| - bpo-43981: Fix reference leak in test_sidebar and test_squeezer. Patches | |
| by Terry Jan Reedy and Pablo Galindo | |
| - bpo-37892: Indent IDLE Shell input with spaces instead of tabs | |
| - bpo-43655: IDLE dialog windows are now recognized as dialogs by window | |
| managers on macOS and X Window. | |
| - bpo-37903: IDLE's shell now shows prompts in a separate side-bar. | |
| C API | |
| ----- | |
| - bpo-43916: Add a new :c:data:`Py_TPFLAGS_DISALLOW_INSTANTIATION` type flag | |
| to disallow creating type instances. Patch by Victor Stinner. | |
| - bpo-43774: Remove the now unused ``PYMALLOC_DEBUG`` macro. Debug hooks on | |
| memory allocators are now installed by default if Python is built in debug | |
| mode (if ``Py_DEBUG`` macro is defined). Moreover, they can now be used on | |
| Python build in release mode (ex: using ``PYTHONMALLOC=debug`` environment | |
| variable). | |
| - bpo-43962: _PyInterpreterState_IDIncref() now calls | |
| _PyInterpreterState_IDInitref() and always increments id_refcount. | |
| Previously, calling _xxsubinterpreters.get_current() could create an | |
| id_refcount inconsistency when a _xxsubinterpreters.InterpreterID object | |
| was deallocated. Patch by Victor Stinner. | |
| - bpo-28254: Add new C-API functions to control the state of the garbage | |
| collector: :c:func:`PyGC_Enable()`, :c:func:`PyGC_Disable()`, | |
| :c:func:`PyGC_IsEnabled()`, corresponding to the functions in the | |
| :mod:`gc` module. | |
| - bpo-43908: Introduce :const:`Py_TPFLAGS_IMMUTABLETYPE` flag for immutable | |
| type objects, and modify :c:func:`PyType_Ready` to set it for static | |
| types. Patch by Erlend E. Aasland. | |
| - bpo-43795: :c:func:`PyMem_Calloc` is now available in the limited C API | |
| (``Py_LIMITED_API``). | |
| - bpo-43868: :c:func:`PyOS_ReadlineFunctionPointer` is no longer exported by | |
| limited C API headers and by ``python3.dll`` on Windows. Like any function | |
| that takes ``FILE*``, it is not part of the stable ABI. | |
| - bpo-43795: Stable ABI and limited API definitions are generated from a | |
| central manifest (:pep:`652`). | |
| - bpo-43753: Add the :c:func:`Py_Is(x, y) <Py_Is>` function to test if the | |
| *x* object is the *y* object, the same as ``x is y`` in Python. Add also | |
| the :c:func:`Py_IsNone`, :c:func:`Py_IsTrue`, :c:func:`Py_IsFalse` | |
| functions to test if an object is, respectively, the ``None`` singleton, | |
| the ``True`` singleton or the ``False`` singleton. Patch by Victor | |
| Stinner. | |
| What's New in Python 3.10.0 alpha 7? | |
| ==================================== | |
| *Release date: 2021-04-05* | |
| Security | |
| -------- | |
| - bpo-42988: CVE-2021-3426: Remove the ``getfile`` feature of the | |
| :mod:`pydoc` module which could be abused to read arbitrary files on the | |
| disk (directory traversal vulnerability). Moreover, even source code of | |
| Python modules can contain sensitive data like passwords. Vulnerability | |
| reported by David Schwörer. | |
| - bpo-43285: :mod:`ftplib` no longer trusts the IP address value returned | |
| from the server in response to the PASV command by default. This prevents | |
| a malicious FTP server from using the response to probe IPv4 address and | |
| port combinations on the client network. | |
| Code that requires the former vulnerable behavior may set a | |
| ``trust_server_pasv_ipv4_address`` attribute on their :class:`ftplib.FTP` | |
| instances to ``True`` to re-enable it. | |
| - bpo-43439: Add audit hooks for :func:`gc.get_objects`, | |
| :func:`gc.get_referrers` and :func:`gc.get_referents`. Patch by Pablo | |
| Galindo. | |
| Core and Builtins | |
| ----------------- | |
| - bpo-27129: Update CPython bytecode magic number. | |
| - bpo-43672: Raise ImportWarning when calling find_loader(). | |
| - bpo-43660: Fix crash that happens when replacing ``sys.stderr`` with a | |
| callable that can remove the object while an exception is being printed. | |
| Patch by Pablo Galindo. | |
| - bpo-27129: The bytecode interpreter uses instruction, rather byte, offsets | |
| internally. This reduces the number of EXTENDED_ARG instructions needed | |
| and streamlines instruction dispatch a bit. | |
| - bpo-40645: Fix reference leak in the :mod:`_hashopenssl` extension. Patch | |
| by Pablo Galindo. | |
| - bpo-42134: Calls to find_module() by the import system now raise | |
| ImportWarning. | |
| - bpo-41064: Improve the syntax error for invalid usage of double starred | |
| elements ('**') in f-strings. Patch by Pablo Galindo. | |
| - bpo-43575: Speed up calls to ``map()`` by using the :pep:`590` | |
| ``vectorcall`` calling convention. Patch by Dong-hee Na. | |
| - bpo-42137: The import system now prefers using ``__spec__`` for | |
| ``ModuleType.__repr__`` over ``module_repr()``. | |
| - bpo-43452: Added micro-optimizations to ``_PyType_Lookup()`` to improve | |
| cache lookup performance in the common case of cache hits. | |
| - bpo-43555: Report the column offset for :exc:`SyntaxError` for invalid | |
| line continuation characters. Patch by Pablo Galindo. | |
| - bpo-43517: Fix misdetection of circular imports when using ``from pkg.mod | |
| import attr``, which caused false positives in non-trivial multi-threaded | |
| code. | |
| - bpo-43497: Emit SyntaxWarnings for assertions with tuple constants, this | |
| is a regression introduced in python3.7 | |
| - bpo-39316: Tracing now has correct line numbers for attribute accesses | |
| when the attribute is on a different line from the object. Improves | |
| debugging and profiling for multi-line method chains. | |
| - bpo-35883: Python no longer fails at startup with a fatal error if a | |
| command line argument contains an invalid Unicode character. The | |
| :c:func:`Py_DecodeLocale` function now escapes byte sequences which would | |
| be decoded as Unicode characters outside the [U+0000; U+10ffff] range. | |
| - bpo-43410: Fix a bug that was causing the parser to crash when emitting | |
| syntax errors when reading input from stdin. Patch by Pablo Galindo | |
| - bpo-43406: Fix a possible race condition where ``PyErr_CheckSignals`` | |
| tries to execute a non-Python signal handler. | |
| - bpo-42128: Add ``__match_args__`` to :c:type:`structsequence` based | |
| classes. Patch by Pablo Galindo. | |
| - bpo-43390: CPython now sets the ``SA_ONSTACK`` flag in ``PyOS_setsig`` for | |
| the VM's default signal handlers. This is friendlier to other in-process | |
| code that an extension module or embedding use could pull in (such as | |
| Golang's cgo) where tiny thread stacks are the norm and ``sigaltstack()`` | |
| has been used to provide for signal handlers. This is a no-op change for | |
| the vast majority of processes that don't use sigaltstack. | |
| - bpo-43287: Speed up calls to ``filter()`` by using the :pep:`590` | |
| ``vectorcall`` calling convention. Patch by Dong-hee Na. | |
| - bpo-37448: Add a radix tree based memory map to track in-use obmalloc | |
| arenas. Use to replace the old implementation of address_in_range(). The | |
| radix tree approach makes it easy to increase pool sizes beyond the OS | |
| page size. Boosting the pool and arena size allows obmalloc to handle a | |
| significantly higher percentage of requests from its ultra-fast paths. | |
| It also has the advantage of eliminating the memory unsanitary behavior of | |
| the previous address_in_range(). The old address_in_range() was marked | |
| with the annotations _Py_NO_SANITIZE_ADDRESS, _Py_NO_SANITIZE_THREAD, and | |
| _Py_NO_SANITIZE_MEMORY. Those annotations are no longer needed. | |
| To disable the radix tree map, set a preprocessor flag as follows: | |
| `-DWITH_PYMALLOC_RADIX_TREE=0`. | |
| Co-authored-by: Tim Peters <tim.peters@gmail.com> | |
| - bpo-29988: Only handle asynchronous exceptions and requests to drop the | |
| GIL when returning from a call or on the back edges of loops. Makes sure | |
| that :meth:`__exit__` is always called in with statements, even for | |
| interrupts. | |
| Library | |
| ------- | |
| - bpo-43720: Document various stdlib deprecations in imp, pkgutil, and | |
| importlib.util for removal in Python 3.12. | |
| - bpo-43433: :class:`xmlrpc.client.ServerProxy` no longer ignores query and | |
| fragment in the URL of the server. | |
| - bpo-31956: The :meth:`~array.array.index` method of :class:`array.array` | |
| now has optional *start* and *stop* parameters. | |
| - bpo-40066: Enum: adjust ``repr()`` to show only enum and member name (not | |
| value, nor angle brackets) and ``str()`` to show only member name. Update | |
| and improve documentation to match. | |
| - bpo-42136: Deprecate all module_repr() methods found in importlib as their | |
| use is being phased out by Python 3.12. | |
| - bpo-35930: Raising an exception raised in a "future" instance will create | |
| reference cycles. | |
| - bpo-41369: Finish updating the vendored libmpdec to version 2.5.1. Patch | |
| by Stefan Krah. | |
| - bpo-43422: Revert the _decimal C API which was added in bpo-41324. | |
| - bpo-43577: Fix deadlock when using :class:`ssl.SSLContext` debug callback | |
| with :meth:`ssl.SSLContext.sni_callback`. | |
| - bpo-43571: It's now possible to create MPTCP sockets with IPPROTO_MPTCP | |
| - bpo-43542: ``image/heic`` and ``image/heif`` were added to | |
| :mod:`mimetypes`. | |
| - bpo-40645: The :mod:`hmac` module now uses OpenSSL's HMAC implementation | |
| when digestmod argument is a hash name or builtin hash function. | |
| - bpo-43510: Implement :pep:`597`: Add ``EncodingWarning`` warning, ``-X | |
| warn_default_encoding`` option, :envvar:`PYTHONWARNDEFAULTENCODING` | |
| environment variable and ``encoding="locale"`` argument value. | |
| - bpo-43521: ``ast.unparse`` can now render NaNs and empty sets. | |
| - bpo-42914: :func:`pprint.pprint` gains a new boolean | |
| ``underscore_numbers`` optional argument to emit integers with thousands | |
| separated by an underscore character for improved readability (for example | |
| ``1_000_000`` instead of ``1000000``). | |
| - bpo-41361: :meth:`~collections.deque.rotate` calls are now slightly faster | |
| due to faster argument parsing. | |
| - bpo-43423: :func:`subprocess.communicate` no longer raises an IndexError | |
| when there is an empty stdout or stderr IO buffer during a timeout on | |
| Windows. | |
| - bpo-27820: Fixed long-standing bug of smtplib.SMTP where doing AUTH LOGIN | |
| with initial_response_ok=False will fail. | |
| The cause is that SMTP.auth_login _always_ returns a password if provided | |
| with a challenge string, thus non-compliant with the standard for AUTH | |
| LOGIN. | |
| Also fixes bug with the test for smtpd. | |
| - bpo-43445: Add frozen modules to :data:`sys.stdlib_module_names`. For | |
| example, add ``"_frozen_importlib"`` and ``"_frozen_importlib_external"`` | |
| names. | |
| - bpo-43245: Add keyword arguments support to ``ChainMap.new_child()``. | |
| - bpo-29982: Add optional parameter *ignore_cleanup_errors* to | |
| :func:`tempfile.TemporaryDirectory` and allow multiple :func:`cleanup` | |
| attempts. Contributed by C.A.M. Gerlach. | |
| - bpo-43428: Include changes from `importlib_metadata 3.7 | |
| <https://importlib-metadata.readthedocs.io/en/latest/history.html#v3-7-0>`_: | |
| Performance enhancements to distribution discovery. | |
| ``entry_points`` only returns unique distributions. | |
| Introduces new ``EntryPoints`` object for containing a set of entry points | |
| with convenience methods for selecting entry points by group or name. | |
| ``entry_points`` now returns this object if selection parameters are | |
| supplied but continues to return a dict object for compatibility. Users | |
| are encouraged to rely on the selection interface. The dict object result | |
| is likely to be deprecated in the future. | |
| Added packages_distributions function to return a mapping of packages to | |
| the distributions that provide them. | |
| - bpo-43332: Improves the networking efficiency of :mod:`http.client` when | |
| using a proxy via :meth:`~HTTPConnection.set_tunnel`. Fewer small send | |
| calls are made during connection setup. | |
| - bpo-43420: Improve performance of :class:`fractions.Fraction` arithmetics | |
| for large components. Contributed by Sergey B. Kirpichev. | |
| - bpo-43356: Allow passing a signal number to ``_thread.interrupt_main()``. | |
| - bpo-43399: Fix ``ElementTree.extend`` not working on iterators when using | |
| the Python implementation | |
| - bpo-43369: Improve :mod:`sqlite3` error handling: If | |
| ``sqlite3_column_text()`` and ``sqlite3_column_blob()`` set | |
| ``SQLITE_NOMEM``, :exc:`MemoryError` is now raised. Patch by Erlend E. | |
| Aasland. | |
| - bpo-43368: Fix a regression introduced in PR 24562, where an empty | |
| bytestring was fetched as ``None`` instead of ``b''`` in :mod:`sqlite3`. | |
| Patch by Mariusz Felisiak. | |
| - bpo-41282: Fixed stacklevel of ``DeprecationWarning`` emitted from | |
| ``import distutils``. | |
| - bpo-42129: ``importlib.resources`` now honors namespace packages, merging | |
| resources from each location in the namespace as introduced in | |
| ``importlib_resources`` 3.2 and including incidental changes through | |
| 5.0.3. | |
| - bpo-43295: :meth:`datetime.datetime.strptime` now raises ``ValueError`` | |
| instead of ``IndexError`` when matching ``'z'`` with the ``%z`` format | |
| specifier. | |
| - bpo-43125: Return empty string if base64mime.body_encode receive empty | |
| bytes | |
| - bpo-43084: :func:`curses.window.enclose` returns now ``True`` or ``False`` | |
| (as was documented) instead of ``1`` or ``0``. | |
| - bpo-42994: Add MIME types for opus, AAC, 3gpp and 3gpp2 | |
| - bpo-14678: Add an invalidate_caches() method to the zipimport.zipimporter | |
| class to support importlib.invalidate_caches(). Patch by Desmond Cheong. | |
| - bpo-42782: Fail fast in :func:`shutil.move()` to avoid creating | |
| destination directories on failure. | |
| - bpo-40066: Enum's `repr()` and `str()` have changed: `repr()` is now | |
| *EnumClass.MemberName* and `str()` is *MemberName*. Additionally, stdlib | |
| Enum's whose contents are available as module attributes, such as | |
| `RegexFlag.IGNORECASE`, have their `repr()` as *module.name*, e.g. | |
| `re.IGNORECASE`. | |
| - bpo-26053: Fixed bug where the :mod:`pdb` interactive run command echoed | |
| the args from the shell command line, even if those have been overridden | |
| at the pdb prompt. | |
| - bpo-24160: Fixed bug where breakpoints did not persist across multiple | |
| debugger sessions in :mod:`pdb`'s interactive mode. | |
| - bpo-40701: When the :data:`tempfile.tempdir` global variable is set to a | |
| value of type bytes, it is now handled consistently. Previously | |
| exceptions could be raised from some tempfile APIs when the directory did | |
| not already exist in this situation. Also ensures that the | |
| :func:`tempfile.gettempdir()` and :func:`tempfile.gettempdirb()` functions | |
| *always* return ``str`` and ``bytes`` respectively. | |
| - bpo-39342: Expose ``X509_V_FLAG_ALLOW_PROXY_CERTS`` as | |
| :data:`~ssl.VERIFY_ALLOW_PROXY_CERTS` to allow proxy certificate | |
| validation as explained in | |
| https://www.openssl.org/docs/man1.1.1/man7/proxy-certificates.html. | |
| - bpo-31861: Add builtins.aiter and builtins.anext. Patch by Joshua Bronson | |
| (@jab), Daniel Pope (@lordmauve), and Justin Wang (@justin39). | |
| Documentation | |
| ------------- | |
| - bpo-43199: Answer "Why is there no goto?" in the Design and History FAQ. | |
| - bpo-43407: Clarified that a result from :func:`time.monotonic`, | |
| :func:`time.perf_counter`, :func:`time.process_time`, or | |
| :func:`time.thread_time` can be compared with the result from any | |
| following call to the same function - not just the next immediate call. | |
| - bpo-43354: Fix type documentation for ``Fault.faultCode``; the type has to | |
| be ``int`` instead of ``str``. | |
| - bpo-41933: Clarified wording of s * n in the Common Sequence Operations | |
| Tests | |
| ----- | |
| - bpo-37945: Fix test_getsetlocale_issue1813() of test_locale: skip the test | |
| if ``setlocale()`` fails. Patch by Victor Stinner. | |
| - bpo-41561: Add workaround for Ubuntu's custom OpenSSL security level | |
| policy. | |
| Build | |
| ----- | |
| - bpo-43179: Introduce and correctly use ALIGNOF_X in place of SIZEOF_X for | |
| alignment-related code in optimized string routines. Patch by Jessica | |
| Clarke. | |
| - bpo-43631: Update macOS, Windows, and CI to OpenSSL 1.1.1k. | |
| - bpo-43617: Improve configure.ac: Check for presence of autoconf-archive | |
| package and remove our copies of M4 macros. | |
| - bpo-43466: The ``configure`` script now supports ``--with-openssl-rpath`` | |
| option. | |
| - bpo-43372: Use ``_freeze_importlib`` to generate code for the | |
| ``__hello__`` module. This approach ensures the code matches the | |
| interpreter version. Previously, PYTHON_FOR_REGEN was used to generate | |
| the code, which might be wrong. The marshal format for code objects has | |
| changed with bpo-42246, commit 877df851. Update the code and the expected | |
| code sizes in ctypes test_frozentable. | |
| Windows | |
| ------- | |
| - bpo-43440: Build :mod:`sqlite3` with the ``R*Tree`` module enabled. Patch | |
| by Erlend E. Aasland. | |
| IDLE | |
| ---- | |
| - bpo-42225: Document that IDLE can fail on Unix either from misconfigured | |
| IP masquerade rules or failure displaying complex colored (non-ascii) | |
| characters. | |
| C API | |
| ----- | |
| - bpo-43688: The limited C API is now supported if Python is built in debug | |
| mode (if the ``Py_DEBUG`` macro is defined). In the limited C API, the | |
| :c:func:`Py_INCREF` and :c:func:`Py_DECREF` functions are now implemented | |
| as opaque function calls, rather than accessing directly the | |
| :c:member:`PyObject.ob_refcnt` member, if Python is built in debug mode | |
| and the ``Py_LIMITED_API`` macro targets Python 3.10 or newer. It became | |
| possible to support the limited C API in debug mode because the | |
| :c:type:`PyObject` structure is the same in release and debug mode since | |
| Python 3.8 (see :issue:`36465`). | |
| The limited C API is still not supported in the ``--with-trace-refs`` | |
| special build (``Py_TRACE_REFS`` macro). | |
| Patch by Victor Stinner. | |
| - bpo-43244: Remove the ``pyarena.h`` header file with functions: | |
| * ``PyArena_New()`` | |
| * ``PyArena_Free()`` | |
| * ``PyArena_Malloc()`` | |
| * ``PyArena_AddPyObject()`` | |
| These functions were undocumented, excluded from the limited C API, and | |
| were only used internally by the compiler. Patch by Victor Stinner. | |
| - bpo-43244: Remove the compiler and parser functions using ``struct _mod`` | |
| type, because the public AST C API was removed: | |
| * ``PyAST_Compile()`` | |
| * ``PyAST_CompileEx()`` | |
| * ``PyAST_CompileObject()`` | |
| * ``PyFuture_FromAST()`` | |
| * ``PyFuture_FromASTObject()`` | |
| * ``PyParser_ASTFromFile()`` | |
| * ``PyParser_ASTFromFileObject()`` | |
| * ``PyParser_ASTFromFilename()`` | |
| * ``PyParser_ASTFromString()`` | |
| * ``PyParser_ASTFromStringObject()`` | |
| These functions were undocumented and excluded from the limited C API. | |
| Patch by Victor Stinner. | |
| - bpo-43244: Remove ``ast.h``, ``asdl.h``, and ``Python-ast.h`` header | |
| files. These functions were undocumented and excluded from the limited C | |
| API. Most names defined by these header files were not prefixed by ``Py`` | |
| and so could create names conflicts. For example, ``Python-ast.h`` defined | |
| a ``Yield`` macro which was conflict with the ``Yield`` name used by the | |
| Windows ``<winbase.h>`` header. Use the Python :mod:`ast` module instead. | |
| Patch by Victor Stinner. | |
| - bpo-43541: Fix a ``PyEval_EvalCodeEx()`` regression: fix reference | |
| counting on builtins. Patch by Victor Stinner. | |
| - bpo-43244: Remove the ``symtable.h`` header file and the undocumented | |
| functions: | |
| * ``PyST_GetScope()`` | |
| * ``PySymtable_Build()`` | |
| * ``PySymtable_BuildObject()`` | |
| * ``PySymtable_Free()`` | |
| * ``Py_SymtableString()`` | |
| * ``Py_SymtableStringObject()`` | |
| The ``Py_SymtableString()`` function was part the stable ABI by mistake | |
| but it could not be used, because the ``symtable.h`` header file was | |
| excluded from the limited C API. | |
| The Python :mod:`symtable` module remains available and is unchanged. | |
| Patch by Victor Stinner. | |
| - bpo-43244: Remove the ``PyAST_Validate()`` function. It is no longer | |
| possible to build a AST object (``mod_ty`` type) with the public C API. | |
| The function was already excluded from the limited C API (:pep:`384`). | |
| Patch by Victor Stinner. | |
| What's New in Python 3.10.0 alpha 6? | |
| ==================================== | |
| *Release date: 2021-03-01* | |
| Security | |
| -------- | |
| - bpo-42967: Fix web cache poisoning vulnerability by defaulting the query | |
| args separator to ``&``, and allowing the user to choose a custom | |
| separator. | |
| Core and Builtins | |
| ----------------- | |
| - bpo-43321: Fix ``SystemError`` raised when ``PyArg_Parse*()`` is used with | |
| ``#`` but without ``PY_SSIZE_T_CLEAN`` defined. | |
| - bpo-36346: ``PyArg_Parse*()`` functions now emits ``DeprecationWarning`` | |
| when ``u`` or ``Z`` format is used. See :pep:`623` for detail. | |
| - bpo-43277: Add a new :c:func:`PySet_CheckExact` function to the C-API to | |
| check if an object is an instance of :class:`set` but not an instance of a | |
| subtype. Patch by Pablo Galindo. | |
| - bpo-42990: The :data:`types.FunctionType` constructor now inherits the | |
| current builtins if the *globals* dictionary has no ``"__builtins__"`` | |
| key, rather than using ``{"None": None}`` as builtins: same behavior as | |
| :func:`eval` and :func:`exec` functions. Defining a function with ``def | |
| function(...): ...`` in Python is not affected, globals cannot be | |
| overridden with this syntax: it also inherits the current builtins. Patch | |
| by Victor Stinner. | |
| - bpo-42990: Functions have a new ``__builtins__`` attribute which is used | |
| to look for builtin symbols when a function is executed, instead of | |
| looking into ``__globals__['__builtins__']``. Patch by Mark Shannon and | |
| Victor Stinner. | |
| - bpo-43149: Improve the error message in the parser for exception groups | |
| without parentheses. Patch by Pablo Galindo. | |
| - bpo-43121: Fixed an incorrect :exc:`SyntaxError` message for missing comma | |
| in literals. Patch by Pablo Galindo. | |
| - bpo-42819: :mod:`readline`: Explicitly disable bracketed paste in the | |
| interactive interpreter, even if it's set in the inputrc, is enabled by | |
| default (eg GNU Readline 8.1), or a user calls | |
| ``readline.read_init_file()``. The Python REPL has not implemented | |
| bracketed paste support. Also, bracketed mode writes the ``"\x1b[?2004h"`` | |
| escape sequence into stdout which causes test failures in applications | |
| that don't support it. It can still be explicitly enabled by calling | |
| ``readline.parse_and_bind("set enable-bracketed-paste on")``. Patch by | |
| Dustin Rodrigues. | |
| - bpo-42808: Simple calls to ``type(object)`` are now faster due to the | |
| ``vectorcall`` calling convention. Patch by Dennis Sweeney. | |
| - bpo-42217: Make the compiler merges same co_code and co_linetable objects | |
| in a module like already did for co_consts. | |
| - bpo-41972: Substring search functions such as ``str1 in str2`` and | |
| ``str2.find(str1)`` now sometimes use the "Two-Way" string comparison | |
| algorithm to avoid quadratic behavior on long strings. | |
| - bpo-42128: Implement :pep:`634` (structural pattern matching). Patch by | |
| Brandt Bucher. | |
| - bpo-40692: In the :class:`concurrent.futures.ProcessPoolExecutor`, | |
| validate that :func:`multiprocess.synchronize` is available on a given | |
| platform and rely on that check in the :mod:`concurrent.futures` test | |
| suite so we can run tests that are unrelated to | |
| :class:`ProcessPoolExecutor` on those platforms. | |
| - bpo-38302: If :func:`object.__ipow__` returns :const:`NotImplemented`, the | |
| operator will correctly fall back to :func:`object.__pow__` and | |
| :func:`object.__rpow__` as expected. | |
| Library | |
| ------- | |
| - bpo-43316: The ``python -m gzip`` command line application now properly | |
| fails when detecting an unsupported extension. It exits with a non-zero | |
| exit code and prints an error message to stderr. | |
| - bpo-43317: Set the chunk size for the ``gzip`` module main function to | |
| io.DEFAULT_BUFFER_SIZE. This is slightly faster than the 1024 bytes | |
| constant that was used previously. | |
| - bpo-43146: Handle None in single-arg versions of | |
| :func:`~traceback.print_exception` and | |
| :func:`~traceback.format_exception`. | |
| - bpo-43260: Fix TextIOWrapper can not flush internal buffer forever after | |
| very large text is written. | |
| - bpo-43258: Prevent needless allocation of :mod:`sqlite3` aggregate | |
| function context when no rows match an aggregate query. Patch by Erlend E. | |
| Aasland. | |
| - bpo-43251: Improve :mod:`sqlite3` error handling: | |
| ``sqlite3_column_name()`` failures now result in :exc:`MemoryError`. Patch | |
| by Erlend E. Aasland. | |
| - bpo-40956: Fix segfault in :meth:`sqlite3.Connection.backup` if no | |
| argument was provided. The regression was introduced by PR 23838. Patch by | |
| Erlend E. Aasland. | |
| - bpo-43172: The readline module now passes its tests when built directly | |
| against libedit. Existing irreconcilable API differences remain in | |
| :func:`readline.get_begidx` and :func:`readline.get_endidx` behavior based | |
| on libreadline vs libedit use. | |
| - bpo-43163: Fix a bug in :mod:`codeop` that was causing it to not ask for | |
| more input when multi-line snippets have unclosed parentheses. Patch by | |
| Pablo Galindo | |
| - bpo-43162: deprecate unsupported ability to access enum members as | |
| attributes of other enum members | |
| - bpo-43146: Fix recent regression in None argument handling in | |
| :mod:`~traceback` module functions. | |
| - bpo-43102: The namedtuple __new__ method had its __builtins__ set to None | |
| instead of an actual dictionary. This created problems for introspection | |
| tools. | |
| - bpo-43106: Added :data:`~os.O_EVTONLY`, :data:`~os.O_FSYNC`, | |
| :data:`~os.O_SYMLINK` and :data:`~os.O_NOFOLLOW_ANY` for macOS. Patch by | |
| Dong-hee Na. | |
| - bpo-42960: Adds :data:`resource.RLIMIT_KQUEUES` constant from FreeBSD to | |
| the :mod:`resource` module. | |
| - bpo-42151: Make the pure Python implementation of | |
| :mod:`xml.etree.ElementTree` behave the same as the C implementation | |
| (:mod:`_elementree`) regarding default attribute values (by not setting | |
| ``specified_attributes=1``). | |
| - bpo-29753: In ctypes, now packed bitfields are calculated properly and the | |
| first item of packed bitfields is now shrank correctly. | |
| Documentation | |
| ------------- | |
| - bpo-27646: Clarify that 'yield from <expr>' works with any iterable, not | |
| just iterators. | |
| - bpo-36346: Update some deprecated unicode APIs which are documented as | |
| "will be removed in 4.0" to "3.12". See :pep:`623` for detail. | |
| Tests | |
| ----- | |
| - bpo-43288: Fix test_importlib to correctly skip Unicode file tests if the | |
| filesystem does not support them. | |
| Build | |
| ----- | |
| - bpo-43174: Windows build now uses ``/utf-8`` compiler option. | |
| - bpo-43103: Add a new configure ``--without-static-libpython`` option to | |
| not build the ``libpythonMAJOR.MINOR.a`` static library and not install | |
| the ``python.o`` object file. | |
| - bpo-13501: The configure script can now use *libedit* instead of | |
| *readline* with the command line option ``--with-readline=editline``. | |
| - bpo-42603: Make configure script use pkg-config to detect the location of | |
| Tcl/Tk headers and libraries, used to build tkinter. | |
| On macOS, a Tcl/Tk configuration provided by pkg-config will be preferred | |
| over Tcl/Tk frameworks installed in ``/{System/,}Library/Frameworks``. If | |
| both exist and the latter is preferred, the appropriate ``--with-tcltk-*`` | |
| configuration options need to be explicitly set. | |
| - bpo-39448: Add the "regen-frozen" makefile target that regenerates the | |
| code for the frozen ``__hello__`` module. | |
| Windows | |
| ------- | |
| - bpo-43155: :c:func:`PyCMethod_New` is now present in ``python3.lib``. | |
| macOS | |
| ----- | |
| - bpo-41837: Update macOS installer build to use OpenSSL 1.1.1j. | |
| IDLE | |
| ---- | |
| - bpo-43283: Document why printing to IDLE's Shell is often slower than | |
| printing to a system terminal and that it can be made faster by | |
| pre-formatting a single string before printing. | |
| C API | |
| ----- | |
| - bpo-43278: Always put compiler and system information on the first line of | |
| the REPL welcome message. | |
| - bpo-43270: Remove the private ``_PyErr_OCCURRED()`` macro: use the public | |
| :c:func:`PyErr_Occurred` function instead. | |
| - bpo-35134: Move odictobject.h, parser_interface.h, picklebufobject.h, | |
| pydebug.h, and pyfpe.h into the cpython/ directory. They must not be | |
| included directly, as they are already included by Python.h: :ref:`Include | |
| Files <api-includes>`. | |
| - bpo-35134: Move pyarena.h, pyctype.h, and pytime.h into the cpython/ | |
| directory. They must not be included directly, as they are already | |
| included by Python.h: :ref:`Include Files <api-includes>`. | |
| - bpo-40170: :c:func:`PyExceptionClass_Name` is now always declared as a | |
| function, in order to hide implementation details. The macro accessed | |
| :c:member:`PyTypeObject.tp_name` directly. Patch by Erlend E. Aasland. | |
| - bpo-43239: The :c:func:`PyCFunction_New` function is now exported in the | |
| ABI when compiled with ``-fvisibility=hidden``. | |
| - bpo-40170: :c:func:`PyIter_Check` is now always declared as a function, in | |
| order to hide implementation details. The macro accessed | |
| :c:member:`PyTypeObject.tp_iternext` directly. Patch by Erlend E. Aasland. | |
| - bpo-40170: Convert :c:func:`PyDescr_IsData` macro to a function to hide | |
| implementation details: The macro accessed | |
| :c:member:`PyTypeObject.tp_descr_set` directly. Patch by Erlend E. | |
| Aasland. | |
| - bpo-43181: Convert :c:func:`PyObject_TypeCheck` macro to a static inline | |
| function. Patch by Erlend E. Aasland. | |
| What's New in Python 3.10.0 alpha 5? | |
| ==================================== | |
| *Release date: 2021-02-02* | |
| Security | |
| -------- | |
| - bpo-42938: Avoid static buffers when computing the repr of | |
| :class:`ctypes.c_double` and :class:`ctypes.c_longdouble` values. | |
| Core and Builtins | |
| ----------------- | |
| - bpo-42990: Refactor the ``PyEval_`` family of functions. | |
| * An new function ``_PyEval_Vector`` is added to simplify calls to Python from C. | |
| * ``_PyEval_EvalCodeWithName`` is removed | |
| * ``PyEval_EvalCodeEx`` is retained as part of the API, but is not used internally | |
| - bpo-38631: Replace :c:func:`Py_FatalError` calls in the compiler with | |
| regular :exc:`SystemError` exceptions. Patch by Victor Stinner. | |
| - bpo-42997: Improve error message for missing ":" before blocks. Patch by | |
| Pablo Galindo. | |
| - bpo-43017: Improve error message in the parser when using un-parenthesised | |
| tuples in comprehensions. Patch by Pablo Galindo. | |
| - bpo-42986: Fix parser crash when reporting syntax errors in f-string with | |
| newlines. Patch by Pablo Galindo. | |
| - bpo-40176: Syntax errors for unterminated string literals now point to the | |
| start of the string instead of reporting EOF/EOL. | |
| - bpo-42927: The inline cache for ``LOAD_ATTR`` now also optimizes access to | |
| attributes defined by ``__slots__``. This makes reading such attribute up | |
| to 30% faster. | |
| - bpo-42864: Improve error messages in the parser when parentheses are not | |
| closed. Patch by Pablo Galindo. | |
| - bpo-42924: Fix ``bytearray`` repetition incorrectly copying data from the | |
| start of the buffer, even if the data is offset within the buffer (e.g. | |
| after reassigning a slice at the start of the ``bytearray`` to a shorter | |
| byte string). | |
| - bpo-42882: Fix the :c:func:`_PyUnicode_FromId` function | |
| (_Py_IDENTIFIER(var) API) when :c:func:`Py_Initialize` / | |
| :c:func:`Py_Finalize` is called multiple times: preserve | |
| ``_PyRuntime.unicode_ids.next_index`` value. | |
| - bpo-42827: Fix a crash when working out the error line of a | |
| :exc:`SyntaxError` in some multi-line expressions. | |
| - bpo-42823: frame.f_lineno is correct even if frame.f_trace is set to True | |
| - bpo-37324: Remove deprecated aliases to | |
| :ref:`collections-abstract-base-classes` from the :mod:`collections` | |
| module. | |
| - bpo-41994: Fixed possible leak in ``import`` when ``sys.modules`` is not a | |
| ``dict``. | |
| - bpo-27772: In string formatting, preceding the *width* field by ``'0'`` no | |
| longer affects the default alignment for strings. | |
| Library | |
| ------- | |
| - bpo-43108: Fixed a reference leak in the :mod:`curses` module. Patch by | |
| Pablo Galindo | |
| - bpo-43077: Update the bundled pip to 21.0.1 and setuptools to 52.0.0. | |
| - bpo-41282: Deprecate ``distutils`` in documentation and add warning on | |
| import. | |
| - bpo-43014: Improve performance of :mod:`tokenize` by 20-30%. Patch by | |
| Anthony Sottile. | |
| - bpo-42323: Fix :func:`math.nextafter` for NaN on AIX. | |
| - bpo-42955: Add :data:`sys.stdlib_module_names`, containing the list of the | |
| standard library module names. Patch by Victor Stinner. | |
| - bpo-42944: Fix ``random.Random.sample`` when ``counts`` argument is not | |
| ``None``. | |
| - bpo-42934: Use :class:`~traceback.TracebackException`'s new ``compact`` | |
| param in :class:`~unittest.TestResult` to reduce time and memory consumed | |
| by traceback formatting. | |
| - bpo-42931: Add :func:`randbytes` to ``random.__all__``. | |
| - bpo-38250: [Enum] Flags consisting of a single bit are now considered | |
| canonical, and will be the only flags returned from listing and iterating | |
| over a Flag class or a Flag member. Multi-bit flags are considered | |
| aliases; they will be returned from lookups and operations that result in | |
| their value. Iteration for both Flag and Flag members is in definition | |
| order. | |
| - bpo-42877: Added the ``compact`` parameter to the constructor of | |
| :class:`traceback.TracebackException` to reduce time and memory for use | |
| cases that only need to call :func:`TracebackException.format` and | |
| :func:`TracebackException.format_exception_only`. | |
| - bpo-42923: The :c:func:`Py_FatalError` function and the | |
| :mod:`faulthandler` module now dump the list of extension modules on a | |
| fatal error. | |
| - bpo-42848: Removed recursion from :class:`~traceback.TracebackException` | |
| to allow it to handle long exception chains. | |
| - bpo-42901: [Enum] move member creation from ``EnumMeta.__new__`` to | |
| ``_proto_member.__set_name__``, allowing members to be created and visible | |
| in ``__init_subclass__``. | |
| - bpo-42780: Fix os.set_inheritable() for O_PATH file descriptors on Linux. | |
| - bpo-42866: Fix a reference leak in the ``getcodec()`` function of CJK | |
| codecs. Patch by Victor Stinner. | |
| - bpo-42846: Convert the 6 CJK codec extension modules (_codecs_cn, | |
| _codecs_hk, _codecs_iso2022, _codecs_jp, _codecs_kr and _codecs_tw) to the | |
| multiphase initialization API (:pep:`489`). Patch by Victor Stinner. | |
| - bpo-42851: remove __init_subclass__ support for Enum members | |
| - bpo-42834: Make internal caches of the ``_json`` module compatible with | |
| subinterpreters. | |
| - bpo-41748: Fix HTMLParser parsing rules for element attributes containing | |
| commas with spaces. Patch by Karl Dubost. | |
| - bpo-40810: Require SQLite 3.7.15 or newer. Patch by Erlend E. Aasland. | |
| - bpo-1635741: Convert the _multibytecodec extension module (CJK codecs) to | |
| multi-phase initialization (:pep:`489`). Patch by Erlend E. Aasland. | |
| - bpo-42802: The distutils ``bdist_wininst`` command deprecated in Python | |
| 3.8 has been removed. The distutils ``bdist_wheel`` command is now | |
| recommended to distribute binary packages on Windows. | |
| - bpo-24464: The undocumented built-in function | |
| ``sqlite3.enable_shared_cache`` is now deprecated, scheduled for removal | |
| in Python 3.12. Its use is strongly discouraged by the SQLite3 | |
| documentation. Patch by Erlend E. Aasland. | |
| - bpo-42384: Make pdb populate sys.path[0] exactly the same as regular | |
| python execution. | |
| - bpo-42383: Fix pdb: previously pdb would fail to restart the debugging | |
| target if it was specified using a relative path and the current directory | |
| changed. | |
| - bpo-42005: Fix CLI of :mod:`cProfile` and :mod:`profile` to catch | |
| :exc:`BrokenPipeError`. | |
| - bpo-41604: Don't decrement the reference count of the previous user_ptr | |
| when set_panel_userptr fails. | |
| - bpo-41149: Allow executing callables that have a boolean value of | |
| ``False`` when passed to :class:`Threading.thread` as the target. Patch | |
| contributed by Barney Stratford. | |
| - bpo-38307: Add an 'end_lineno' attribute to the Class and Function objects | |
| that appear in the tree returned by pyclbr functions. This and the | |
| existing 'lineno' attribute define the extent of class and def statements. | |
| Patch by Aviral Srivastava. | |
| - bpo-39273: The ``BUTTON5_*`` constants are now exposed in the | |
| :mod:`curses` module if available. | |
| - bpo-33289: Correct call to :mod:`tkinter.colorchooser` to return RGB | |
| triplet of ints instead of floats. Patch by Cheryl Sabella. | |
| Documentation | |
| ------------- | |
| - bpo-40304: Fix doc for type(name, bases, dict). Patch by Boris | |
| Verkhovskiy and Éric Araujo. | |
| - bpo-42811: Updated importlib.utils.resolve_name() doc to use | |
| __spec__.parent instead of __package__. (Thanks Yair Frid.) | |
| Tests | |
| ----- | |
| - bpo-40823: Use :meth:`unittest.TestLoader().loadTestsFromTestCase` instead | |
| of :meth:`unittest.makeSuite` in :mod:`sqlite3` tests. Patch by Erlend E. | |
| Aasland. | |
| - bpo-40810: In :mod:`sqlite3`, fix ``CheckTraceCallbackContent`` for SQLite | |
| pre 3.7.15. | |
| Build | |
| ----- | |
| - bpo-43031: Pass ``--timeout=$(TESTTIMEOUT)`` option to the default profile | |
| task ``./python -m test --pgo`` command. | |
| - bpo-36143: ``make regen-all`` now also runs ``regen-keyword``. Patch by | |
| Victor Stinner. | |
| - bpo-42874: Removed the grep -q and -E flags in the tzpath validation | |
| section of the configure script to better accommodate users of some | |
| platforms (specifically Solaris 10). | |
| - bpo-31904: Add library search path by wr-cc in add_cross_compiling_paths() | |
| for VxWorks. | |
| - bpo-42856: Add ``--with-wheel-pkg-dir=PATH`` option to the ``./configure`` | |
| script. If specified, the :mod:`ensurepip` module looks for ``setuptools`` | |
| and ``pip`` wheel packages in this directory: if both are present, these | |
| wheel packages are used instead of ensurepip bundled wheel packages. | |
| Some Linux distribution packaging policies recommend against bundling | |
| dependencies. For example, Fedora installs wheel packages in the | |
| ``/usr/share/python-wheels/`` directory and don't install the | |
| ``ensurepip._bundled`` package. | |
| Windows | |
| ------- | |
| - bpo-41837: Updated Windows installer to include OpenSSL 1.1.1i | |
| - bpo-42584: Upgrade Windows installer to use SQLite 3.34.0. | |
| macOS | |
| ----- | |
| - bpo-42504: Ensure that the value of | |
| sysconfig.get_config_var('MACOSX_DEPLOYMENT_TARGET') is always a string, | |
| even in when the value is parsable as an integer. | |
| IDLE | |
| ---- | |
| - bpo-43008: Make IDLE invoke :func:`sys.excepthook` in normal, 2-process | |
| mode. Patch by Ken Hilton. | |
| - bpo-33065: Fix problem debugging user classes with __repr__ method. | |
| - bpo-23544: Disable Debug=>Stack Viewer when user code is running or | |
| Debugger is active, to prevent hang or crash. Patch by Zackery Spytz. | |
| - bpo-32631: Finish zzdummy example extension module: make menu entries | |
| work; add docstrings and tests with 100% coverage. | |
| C API | |
| ----- | |
| - bpo-42979: When Python is built in debug mode (with C assertions), calling | |
| a type slot like ``sq_length`` (``__len__()`` in Python) now fails with a | |
| fatal error if the slot succeeded with an exception set, or failed with no | |
| exception set. The error message contains the slot, the type name, and the | |
| current exception (if an exception is set). Patch by Victor Stinner. | |
| - bpo-43030: Fixed a compiler warning in :c:func:`Py_UNICODE_ISSPACE()` on | |
| platforms with signed ``wchar_t``. | |
| What's New in Python 3.10.0 alpha 4? | |
| ==================================== | |
| *Release date: 2021-01-04* | |
| Core and Builtins | |
| ----------------- | |
| - bpo-42814: Fix undefined behavior in ``Objects/genericaliasobject.c``. | |
| - bpo-42806: Fix the column offsets for f-strings :mod:`ast` nodes | |
| surrounded by parentheses and for nodes that spawn multiple lines. Patch | |
| by Pablo Galindo. | |
| - bpo-40631: Fix regression where a single parenthesized starred expression | |
| was a valid assignment target. | |
| - bpo-27794: Improve the error message for failed writes/deletes to property | |
| objects. When possible, the attribute name is now shown. Patch provided by | |
| Yurii Karabas. | |
| - bpo-42745: Make the type attribute lookup cache per-interpreter. Patch by | |
| Victor Stinner. | |
| - bpo-42246: Jumps to jumps are not eliminated when it would break PEP 626. | |
| - bpo-42246: Make sure that the ``f_lasti`` and ``f_lineno`` attributes of a | |
| frame are set correctly when an exception is raised or re-raised. Required | |
| for PEP 626. | |
| - bpo-32381: The coding cookie (ex: ``# coding: latin1``) is now ignored in | |
| the command passed to the :option:`-c` command line option. Patch by | |
| Victor Stinner. | |
| - bpo-30858: Improve error location in expressions that contain assignments. | |
| Patch by Pablo Galindo and Lysandros Nikolaou. | |
| - bpo-42615: Remove jump commands made redundant by the deletion of | |
| unreachable bytecode blocks | |
| - bpo-42639: Make the :mod:`atexit` module state per-interpreter. It is now | |
| safe have more than one :mod:`atexit` module instance. Patch by Dong-hee | |
| Na and Victor Stinner. | |
| - bpo-32381: Fix encoding name when running a ``.pyc`` file on Windows: | |
| :c:func:`PyRun_SimpleFileExFlags()` now uses the correct encoding to | |
| decode the filename. | |
| - bpo-42195: The ``__args__`` of the parameterized generics for | |
| :data:`typing.Callable` and :class:`collections.abc.Callable` are now | |
| consistent. The ``__args__`` for :class:`collections.abc.Callable` are | |
| now flattened while :data:`typing.Callable`'s have not changed. To allow | |
| this change, :class:`types.GenericAlias` can now be subclassed and | |
| ``collections.abc.Callable``'s ``__class_getitem__`` will now return a | |
| subclass of ``types.GenericAlias``. Tests for typing were also updated to | |
| not subclass things like ``Callable[..., T]`` as that is not a valid base | |
| class. Finally, both ``Callable``\ s no longer validate their | |
| ``argtypes``, in ``Callable[[argtypes], resulttype]`` to prepare for | |
| :pep:`612`. Patch by Ken Jin. | |
| - bpo-40137: Convert functools module to use | |
| :c:func:`PyType_FromModuleAndSpec`. | |
| - bpo-40077: Convert :mod:`array` to use heap types, and establish module | |
| state for these. | |
| - bpo-42008: Fix _random.Random() seeding. | |
| - bpo-1635741: Port the :mod:`pyexpat` extension module to multi-phase | |
| initialization (:pep:`489`). | |
| - bpo-40521: Make the Unicode dictionary of interned strings compatible with | |
| subinterpreters. Patch by Victor Stinner. | |
| - bpo-39465: Make :c:func:`_PyUnicode_FromId` function compatible with | |
| subinterpreters. Each interpreter now has an array of identifier objects | |
| (interned strings decoded from UTF-8). Patch by Victor Stinner. | |
| Library | |
| ------- | |
| - bpo-42257: Handle empty string in variable executable in | |
| platform.libc_ver() | |
| - bpo-42772: randrange() now raises a TypeError when step is specified | |
| without a stop argument. Formerly, it silently ignored the step argument. | |
| - bpo-42759: Fixed equality comparison of :class:`tkinter.Variable` and | |
| :class:`tkinter.font.Font`. Objects which belong to different Tcl | |
| interpreters are now always different, even if they have the same name. | |
| - bpo-42756: Configure LMTP Unix-domain socket to use socket global default | |
| timeout when a timeout is not explicitly provided. | |
| - bpo-23328: Allow / character in username, password fields on _PROXY | |
| envars. | |
| - bpo-42740: :func:`typing.get_args` and :func:`typing.get_origin` now | |
| support :pep:`604` union types and :pep:`612` additions to ``Callable``. | |
| - bpo-42655: :mod:`subprocess` *extra_groups* is now correctly passed into | |
| setgroups() system call. | |
| - bpo-42727: ``EnumMeta.__prepare__`` now accepts ``**kwds`` to properly | |
| support ``__init_subclass__`` | |
| - bpo-38308: Add optional *weights* to *statistics.harmonic_mean()*. | |
| - bpo-42721: When simple query dialogs (:mod:`tkinter.simpledialog`), | |
| message boxes (:mod:`tkinter.messagebox`) or color choose dialog | |
| (:mod:`tkinter.colorchooser`) are created without arguments *master* and | |
| *parent*, and the default root window is not yet created, and | |
| :func:`~tkinter.NoDefaultRoot` was not called, a new temporal hidden root | |
| window will be created automatically. It will not be set as the default | |
| root window and will be destroyed right after closing the dialog window. | |
| It will help to use these simple dialog windows in programs which do not | |
| need other GUI. | |
| - bpo-25246: Optimized :meth:`collections.deque.remove`. | |
| - bpo-35728: Added a root parameter to :func:`tkinter.font.nametofont`. | |
| - bpo-15303: :mod:`tkinter` supports now widgets with boolean value False. | |
| - bpo-42681: Fixed range checks for color and pair numbers in :mod:`curses`. | |
| - bpo-42685: Improved placing of simple query windows in Tkinter (such as | |
| :func:`tkinter.simpledialog.askinteger`). They are now centered at the | |
| center of the parent window if it is specified and shown, otherwise at the | |
| center of the screen. | |
| - bpo-9694: Argparse help no longer uses the confusing phrase, "optional | |
| arguments". It uses "options" instead. | |
| - bpo-1635741: Port the :mod:`_thread` extension module to the multiphase | |
| initialization API (:pep:`489`) and convert its static types to heap | |
| types. | |
| - bpo-37961: Fix crash in :func:`tracemalloc.Traceback.__repr__` (regressed | |
| in Python 3.9). | |
| - bpo-42630: :mod:`tkinter` functions and constructors which need a default | |
| root window raise now :exc:`RuntimeError` with descriptive message instead | |
| of obscure :exc:`AttributeError` or :exc:`NameError` if it is not created | |
| yet or cannot be created automatically. | |
| - bpo-42639: :func:`atexit._run_exitfuncs` now logs callback exceptions | |
| using :data:`sys.unraisablehook`, rather than logging them directly into | |
| :data:`sys.stderr` and raise the last exception. | |
| - bpo-42644: ``logging.disable`` will now validate the types and value of | |
| its parameter. It also now accepts strings representing the levels (as | |
| does ``loging.setLevel``) instead of only the numerical values. | |
| - bpo-42639: At Python exit, if a callback registered with | |
| :func:`atexit.register` fails, its exception is now logged. Previously, | |
| only some exceptions were logged, and the last exception was always | |
| silently ignored. | |
| - bpo-36541: Fixed lib2to3.pgen2 to be able to parse PEP-570 positional only | |
| argument syntax. | |
| - bpo-42382: In ``importlib.metadata``: - ``EntryPoint`` objects now expose | |
| a ``.dist`` object referencing the ``Distribution`` when constructed from | |
| a ``Distribution``. - Add support for package discovery under package | |
| normalization rules. - The object returned by ``metadata()`` now has a | |
| formally defined protocol called ``PackageMetadata`` with declared support | |
| for the ``.get_all()`` method. - Synced with importlib_metadata 3.3. | |
| - bpo-41877: A check is added against misspellings of autospect, auto_spec | |
| and set_spec being passed as arguments to patch, patch.object and | |
| create_autospec. | |
| - bpo-39717: [tarfile] update nested exception raising to use ``from None`` | |
| or ``from e`` | |
| - bpo-41877: AttributeError for suspected misspellings of assertions on | |
| mocks are now pointing out that the cause are misspelled assertions and | |
| also what to do if the misspelling is actually an intended attribute name. | |
| The unittest.mock document is also updated to reflect the current set of | |
| recognised misspellings. | |
| - bpo-41559: Implemented :pep:`612`: added ``ParamSpec`` and ``Concatenate`` | |
| to :mod:`typing`. Patch by Ken Jin. | |
| - bpo-42385: StrEnum: fix _generate_next_value_ to return a str | |
| - bpo-31904: Define THREAD_STACK_SIZE for VxWorks. | |
| - bpo-34750: [Enum] `_EnumDict.update()` is now supported | |
| - bpo-42517: Enum: private names do not become members / do not generate | |
| errors -- they remain normal attributes | |
| - bpo-42678: ``Enum``: call ``__init_subclass__`` after members have been | |
| added | |
| - bpo-28964: :func:`ast.literal_eval` adds line number information (if | |
| available) in error message for malformed nodes. | |
| - bpo-42470: :func:`random.sample` no longer warns on a sequence which is | |
| also a set. | |
| - bpo-31904: :func:`posixpath.expanduser` returns the input *path* unchanged | |
| if user home directory is None on VxWorks. | |
| - bpo-42388: Fix subprocess.check_output(..., input=None) behavior when | |
| text=True to be consistent with that of the documentation and | |
| universal_newlines=True. | |
| - bpo-34463: Fixed discrepancy between :mod:`traceback` and the interpreter | |
| in formatting of SyntaxError with lineno not set (:mod:`traceback` was | |
| changed to match interpreter). | |
| - bpo-42393: Raise :exc:`OverflowError` instead of silent truncation in | |
| :meth:`socket.ntohs` and :meth:`socket.htons`. Silent truncation was | |
| deprecated in Python 3.7. Patch by Erlend E. Aasland | |
| - bpo-42222: Harmonized :func:`random.randrange` argument handling to match | |
| :func:`range`. | |
| * The integer test and conversion in ``randrange()`` now uses | |
| :func:`operator.index`. | |
| * Non-integer arguments to ``randrange()`` are deprecated. | |
| * The ``ValueError`` is deprecated in favor of a ``TypeError``. | |
| * It now runs a little faster than before. | |
| (Contributed by Raymond Hettinger and Serhiy Storchaka.) | |
| - bpo-42163: Restore compatibility for ``uname_result`` around deepcopy and | |
| _replace. | |
| - bpo-42090: ``zipfile.Path.joinpath`` now accepts arbitrary arguments, same | |
| as ``pathlib.Path.joinpath``. | |
| - bpo-1635741: Port the _csv module to the multi-phase initialization API | |
| (:pep:`489`). | |
| - bpo-42059: :class:`typing.TypedDict` types created using the alternative | |
| call-style syntax now correctly respect the ``total`` keyword argument | |
| when setting their ``__required_keys__`` and ``__optional_keys__`` class | |
| attributes. | |
| - bpo-41960: Add ``globalns`` and ``localns`` parameters to the | |
| :func:`inspect.signature` and :meth:`inspect.Signature.from_callable`. | |
| - bpo-41907: fix ``format()`` behavior for ``IntFlag`` | |
| - bpo-41891: Ensure asyncio.wait_for waits for task completion | |
| - bpo-24792: Fixed bug where :mod:`zipimporter` sometimes reports an | |
| incorrect cause of import errors. | |
| - bpo-31904: Fix site and sysconfig modules for VxWorks RTOS which has no | |
| home directories. | |
| - bpo-41462: Add :func:`os.set_blocking()` support for VxWorks RTOS. | |
| - bpo-40219: Lowered :class:`tkinter.ttk.LabeledScale` dummy widget to | |
| prevent hiding part of the content label. | |
| - bpo-37193: Fixed memory leak in ``socketserver.ThreadingMixIn`` introduced | |
| in Python 3.7. | |
| - bpo-39068: Fix initialization race condition in :func:`a85encode` and | |
| :func:`b85encode` in :mod:`base64`. Patch by Brandon Stansbury. | |
| Documentation | |
| ------------- | |
| - bpo-17140: Add documentation for the | |
| :class:`multiprocessing.pool.ThreadPool` class. | |
| - bpo-34398: Prominently feature listings from the glossary in documentation | |
| search results. Patch by Ammar Askar. | |
| Tests | |
| ----- | |
| - bpo-42794: Update test_nntplib to use official group name of news.aioe.org | |
| for testing. Patch by Dong-hee Na. | |
| - bpo-31904: Skip some asyncio tests on VxWorks. | |
| - bpo-42641: Enhance ``test_select.test_select()``: it now takes 500 | |
| milliseconds rather than 10 seconds. Use Python rather than a shell to | |
| make the test more portable. | |
| - bpo-31904: Skip some tests in _test_all_chown_common() on VxWorks. | |
| - bpo-42199: Fix bytecode helper assertNotInBytecode. | |
| - bpo-41443: Add more attribute checking in test_posix.py | |
| - bpo-31904: Disable os.popen and impacted tests on VxWorks | |
| - bpo-41439: Port test_ssl and test_uuid to VxWorks RTOS. | |
| Build | |
| ----- | |
| - bpo-42692: Fix __builtin_available check on older compilers. Patch by | |
| Joshua Root. | |
| - bpo-27640: Added ``--disable-test-modules`` option to the ``configure`` | |
| script: don't build nor install test modules. Patch by Xavier de Gaye, | |
| Thomas Petazzoni and Peixing Xin. | |
| - bpo-42604: Now all platforms use a value for the "EXT_SUFFIX" build | |
| variable derived from SOABI (for instance in freeBSD, "EXT_SUFFIX" is now | |
| ".cpython-310d.so" instead of ".so"). Previously only Linux, Mac and | |
| VxWorks were using a value for "EXT_SUFFIX" that included "SOABI". | |
| - bpo-42598: Fix implicit function declarations in configure which could | |
| have resulted in incorrect configuration checks. Patch contributed by | |
| Joshua Root. | |
| - bpo-31904: Enable libpython3.so for VxWorks. | |
| - bpo-29076: Add fish shell support to macOS installer. | |
| macOS | |
| ----- | |
| - bpo-42361: Update macOS installer build to use Tcl/Tk 8.6.11 (rc2, | |
| expected to be final release). | |
| - bpo-41837: Update macOS installer build to use OpenSSL 1.1.1i. | |
| - bpo-42584: Update macOS installer to use SQLite 3.34.0. | |
| Tools/Demos | |
| ----------- | |
| - bpo-42726: Fixed Python 3 compatibility issue with gdb/libpython.py | |
| handling of attribute dictionaries. | |
| - bpo-42613: Fix ``freeze.py`` tool to use the prope config and library | |
| directories. Patch by Victor Stinner. | |
| C API | |
| ----- | |
| - bpo-42591: Export the :c:func:`Py_FrozenMain` function: fix a Python 3.9.0 | |
| regression. Python 3.9 uses ``-fvisibility=hidden`` and the function was | |
| not exported explicitly and so not exported. | |
| - bpo-32381: Remove the private :c:func:`_Py_fopen` function which is no | |
| longer needed. Use :c:func:`_Py_wfopen` or :c:func:`_Py_fopen_obj` | |
| instead. Patch by Victor Stinner. | |
| - bpo-1635741: Port :mod:`resource` extension module to module state | |
| - bpo-42111: Update the ``xxlimited`` module to be a better example of how | |
| to use the limited C API. | |
| - bpo-40052: Fix an alignment build warning/error in function | |
| ``PyVectorcall_Function()``. Patch by Andreas Schneider, Antoine Pitrou | |
| and Petr Viktorin. | |
| What's New in Python 3.10.0 alpha 3? | |
| ==================================== | |
| *Release date: 2020-12-07* | |
| Security | |
| -------- | |
| - bpo-40791: Add ``volatile`` to the accumulator variable in | |
| ``hmac.compare_digest``, making constant-time-defeating optimizations less | |
| likely. | |
| Core and Builtins | |
| ----------------- | |
| - bpo-42576: ``types.GenericAlias`` will now raise a ``TypeError`` when | |
| attempting to initialize with a keyword argument. Previously, this would | |
| cause the interpreter to crash if the interpreter was compiled with debug | |
| symbols. This does not affect interpreters compiled for release. Patch by | |
| Ken Jin. | |
| - bpo-42536: Several built-in and standard library types now ensure that | |
| their internal result tuples are always tracked by the :term:`garbage | |
| collector <garbage collection>`: | |
| - :meth:`collections.OrderedDict.items() <collections.OrderedDict>` | |
| - :meth:`dict.items` | |
| - :func:`enumerate` | |
| - :func:`functools.reduce` | |
| - :func:`itertools.combinations` | |
| - :func:`itertools.combinations_with_replacement` | |
| - :func:`itertools.permutations` | |
| - :func:`itertools.product` | |
| - :func:`itertools.zip_longest` | |
| - :func:`zip` | |
| Previously, they could have become untracked by a prior garbage | |
| collection. Patch by Brandt Bucher. | |
| - bpo-42500: Improve handling of exceptions near recursion limit. Converts a | |
| number of Fatal Errors in RecursionErrors. | |
| - bpo-42246: PEP 626: After a return, the f_lineno attribute of a frame is | |
| always the last line executed. | |
| - bpo-42435: Speed up comparison of bytes objects with non-bytes objects | |
| when option :option:`-b` is specified. Speed up comparison of bytarray | |
| objects with non-buffer object. | |
| - bpo-1635741: Port the ``_warnings`` extension module to the multi-phase | |
| initialization API (:pep:`489`). Patch by Victor Stinner. | |
| - bpo-41686: On Windows, the ``SIGINT`` event, ``_PyOS_SigintEvent()``, is | |
| now created even if Python is configured to not install signal handlers | |
| (if :c:member:`PyConfig.install_signal_handlers` equals to 0, or | |
| ``Py_InitializeEx(0)``). | |
| - bpo-42381: Allow assignment expressions in set literals and set | |
| comprehensions as per PEP 572. Patch by Pablo Galindo. | |
| - bpo-42202: Change function parameters annotations internal representation | |
| to tuple of strings. Patch provided by Yurii Karabas. | |
| - bpo-42374: Fix a regression introduced by the new parser, where an | |
| unparenthesized walrus operator was not allowed within generator | |
| expressions. | |
| - bpo-42316: Allow an unparenthesized walrus in subscript indexes. | |
| - bpo-42349: Make sure that the compiler front-end produces a well-formed | |
| control flow graph. Be be more aggressive in the compiler back-end, as it | |
| is now safe to do so. | |
| - bpo-42296: On Windows, fix a regression in signal handling which prevented | |
| to interrupt a program using CTRL+C. The signal handler can be run in a | |
| thread different than the Python thread, in which case the test deciding | |
| if the thread can handle signals is wrong. | |
| - bpo-42332: :class:`types.GenericAlias` objects can now be the targets of | |
| weakrefs. | |
| - bpo-42282: Optimise constant subexpressions that appear as part of named | |
| expressions (previously the AST optimiser did not descend into named | |
| expressions). Patch by Nick Coghlan. | |
| - bpo-42266: Fixed a bug with the LOAD_ATTR opcode cache that was not | |
| respecting monkey-patching a class-level attribute to make it a | |
| descriptor. Patch by Pablo Galindo. | |
| - bpo-40077: Convert :mod:`queue` to use heap types. | |
| - bpo-42246: Improved accuracy of line tracing events and f_lineno attribute | |
| of Frame objects. See PEP 626 for details. | |
| - bpo-40077: Convert :mod:`mmap` to use heap types. | |
| - bpo-42233: Allow ``GenericAlias`` objects to use :ref:`union type | |
| expressions <types-union>`. This allows expressions like ``list[int] | | |
| dict[float, str]`` where previously a ``TypeError`` would have been | |
| thrown. This also fixes union type expressions not de-duplicating | |
| ``GenericAlias`` objects. (Contributed by Ken Jin in :issue:`42233`.) | |
| - bpo-26131: The import system triggers a `ImportWarning` when it falls back | |
| to using `load_module()`. | |
| Library | |
| ------- | |
| - bpo-5054: CGIHTTPRequestHandler.run_cgi() HTTP_ACCEPT improperly parsed. | |
| Replace the special purpose getallmatchingheaders with generic get_all | |
| method and add relevant tests. | |
| Original Patch by Martin Panter. Modified by Senthil Kumaran. | |
| - bpo-42562: Fix issue when dis failed to parse function that has no line | |
| numbers. Patch provided by Yurii Karabas. | |
| - bpo-17735: :func:`inspect.findsource` now raises :exc:`OSError` instead of | |
| :exc:`IndexError` when :attr:`co_lineno` of a code object is greater than | |
| the file length. This can happen, for example, when a file is edited after | |
| it was imported. PR by Irit Katriel. | |
| - bpo-42116: Fix handling of trailing comments by :func:`inspect.getsource`. | |
| - bpo-42532: Remove unexpected call of ``__bool__`` when passing a | |
| ``spec_arg`` argument to a Mock. | |
| - bpo-38200: Added itertools.pairwise() | |
| - bpo-41818: Fix test_master_read() so that it succeeds on all platforms | |
| that either raise OSError or return b"" upon reading from master. | |
| - bpo-42487: ChainMap.__iter__ no longer calls __getitem__ on underlying | |
| maps | |
| - bpo-42482: :class:`~traceback.TracebackException` no longer holds a | |
| reference to the exception's traceback object. Consequently, instances of | |
| TracebackException for equivalent but non-equal exceptions now compare as | |
| equal. | |
| - bpo-41818: Make test_openpty() avoid unexpected success due to number of | |
| rows and/or number of columns being == 0. | |
| - bpo-42392: Remove loop parameter from ``asyncio.subprocess`` and | |
| ``asyncio.tasks`` functions. Patch provided by Yurii Karabas. | |
| - bpo-42392: Remove loop parameter from ``asyncio.open_connection`` and | |
| ``asyncio.start_server`` functions. Patch provided by Yurii Karabas. | |
| - bpo-28468: Add :func:`platform.freedesktop_os_release` function to parse | |
| freedesktop.org ``os-release`` files. | |
| - bpo-42299: Removed the ``formatter`` module, which was deprecated in | |
| Python 3.4. It is somewhat obsolete, little used, and not tested. It was | |
| originally scheduled to be removed in Python 3.6, but such removals were | |
| delayed until after Python 2.7 EOL. Existing users should copy whatever | |
| classes they use into their code. Patch by Dong-hee Na and and Terry J. | |
| Reedy. | |
| - bpo-26131: Deprecate zipimport.zipimporter.load_module() in favour of | |
| exec_module(). | |
| - bpo-41818: Updated tests for the pty library. test_basic() has been | |
| changed to test_openpty(); this additionally checks if slave termios and | |
| slave winsize are being set properly by pty.openpty(). In order to add | |
| support for FreeBSD, NetBSD, OpenBSD, and Darwin, this also adds | |
| test_master_read(), which demonstrates that pty.spawn() should not depend | |
| on an OSError to exit from its copy loop. | |
| - bpo-42392: Remove loop parameter from ``__init__`` in all | |
| ``asyncio.locks`` and ``asyncio.Queue`` classes. Patch provided by Yurii | |
| Karabas. | |
| - bpo-15450: Make :class:`filecmp.dircmp` respect subclassing. Now the | |
| :attr:`filecmp.dircmp.subdirs` behaves as expected when subclassing | |
| dircmp. | |
| - bpo-42413: The exception :exc:`socket.timeout` is now an alias of | |
| :exc:`TimeoutError`. | |
| - bpo-31904: Support signal module on VxWorks. | |
| - bpo-42406: We fixed an issue in `pickle.whichmodule` in which importing | |
| `multiprocessing` could change the how pickle identifies which module an | |
| object belongs to, potentially breaking the unpickling of those objects. | |
| - bpo-42403: Simplify the :mod:`importlib` external bootstrap code: | |
| ``importlib._bootstrap_external`` now uses regular imports to import | |
| builtin modules. When it is imported, the builtin :func:`__import__()` | |
| function is already fully working and so can be used to import builtin | |
| modules like :mod:`sys`. Patch by Victor Stinner. | |
| - bpo-1635741: Convert _sre module types to heap types (PEP 384). Patch by | |
| Erlend E. Aasland. | |
| - bpo-42375: subprocess module update for DragonFlyBSD support. | |
| - bpo-41713: Port the ``_signal`` extension module to the multi-phase | |
| initialization API (:pep:`489`). Patch by Victor Stinner and Mohamed | |
| Koubaa. | |
| - bpo-37205: :func:`time.time()`, :func:`time.perf_counter()` and | |
| :func:`time.monotonic()` functions can no longer fail with a Python fatal | |
| error, instead raise a regular Python exception on failure. | |
| - bpo-42328: Fixed :meth:`tkinter.ttk.Style.map`. The function accepts now | |
| the representation of the default state as empty sequence (as returned by | |
| ``Style.map()``). The structure of the result is now the same on all | |
| platform and does not depend on the value of ``wantobjects``. | |
| - bpo-42345: Fix various issues with ``typing.Literal`` parameter handling | |
| (flatten, deduplicate, use type to cache key). Patch provided by Yurii | |
| Karabas. | |
| - bpo-37205: :func:`time.perf_counter()` on Windows and | |
| :func:`time.monotonic()` on macOS are now system-wide. Previously, they | |
| used an offset computed at startup to reduce the precision loss caused by | |
| the float type. Use :func:`time.perf_counter_ns()` and | |
| :func:`time.monotonic_ns()` added in Python 3.7 to avoid this precision | |
| loss. | |
| - bpo-42318: Fixed support of non-BMP characters in :mod:`tkinter` on macOS. | |
| - bpo-42350: Fix the :class:`threading.Thread` class at fork: do nothing if | |
| the thread is already stopped (ex: fork called at Python exit). | |
| Previously, an error was logged in the child process. | |
| - bpo-42333: Port _ssl extension module to heap types. | |
| - bpo-42014: The ``onerror`` callback from ``shutil.rmtree`` now receives | |
| correct function when ``os.open`` fails. | |
| - bpo-42237: Fix `os.sendfile()` on illumos. | |
| - bpo-42308: Add :data:`threading.__excepthook__` to allow retrieving the | |
| original value of :func:`threading.excepthook` in case it is set to a | |
| broken or a different value. Patch by Mario Corchero. | |
| - bpo-42131: Implement PEP 451/spec methods on zipimport.zipimporter: | |
| find_spec(), create_module(), and exec_module(). | |
| This also allows for the documented deprecation of find_loader(), | |
| find_module(), and load_module(). | |
| - bpo-41877: Mock objects which are not unsafe will now raise an | |
| AttributeError if an attribute with the prefix asert, aseert, or assrt is | |
| accessed, in addition to this already happening for the prefixes assert or | |
| assret. | |
| - bpo-42264: ``sqlite3.OptimizedUnicode`` has been undocumented and obsolete | |
| since Python 3.3, when it was made an alias to :class:`str`. It is now | |
| deprecated, scheduled for removal in Python 3.12. | |
| - bpo-42251: Added :func:`threading.gettrace` and | |
| :func:`threading.getprofile` to retrieve the functions set by | |
| :func:`threading.settrace` and :func:`threading.setprofile` respectively. | |
| Patch by Mario Corchero. | |
| - bpo-42249: Fixed writing binary Plist files larger than 4 GiB. | |
| - bpo-42236: On Unix, the :func:`os.device_encoding` function now returns | |
| ``'UTF-8'`` rather than the device encoding if the :ref:`Python UTF-8 Mode | |
| <utf8-mode>` is enabled. | |
| - bpo-41754: webbrowser: Ignore *NotADirectoryError* when calling | |
| ``xdg-settings``. | |
| - bpo-42183: Fix a stack overflow error for asyncio Task or Future repr(). | |
| The overflow occurs under some circumstances when a Task or Future | |
| recursively returns itself. | |
| - bpo-42140: Improve asyncio.wait function to create the futures set just | |
| one time. | |
| - bpo-42133: Update various modules in the stdlib to fall back on | |
| `__spec__.loader` when `__loader__` isn't defined on a module. | |
| - bpo-26131: The `load_module()` methods found in importlib now trigger a | |
| DeprecationWarning. | |
| - bpo-39825: Windows: Change ``sysconfig.get_config_var('EXT_SUFFIX')`` to | |
| the expected full ``platform_tag.extension`` format. Previously it was | |
| hard-coded to ``.pyd``, now it is compatible with ``distutils.sysconfig`` | |
| and will result in something like ``.cp38-win_amd64.pyd``. This brings | |
| windows into conformance with the other platforms. | |
| - bpo-26389: The :func:`traceback.format_exception`, | |
| :func:`traceback.format_exception_only`, and | |
| :func:`traceback.print_exception` functions can now take an exception | |
| object as a positional-only argument. | |
| - bpo-41889: Enum: fix regression involving inheriting a multiply inherited | |
| enum | |
| - bpo-41861: Convert :mod:`sqlite3` to use heap types (PEP 384). Patch by | |
| Erlend E. Aasland. | |
| - bpo-40624: Added support for the XPath ``!=`` operator in xml.etree | |
| - bpo-28850: Fix :meth:`pprint.PrettyPrinter.format` overrides being ignored | |
| for contents of small containers. The :func:`pprint._safe_repr` function | |
| was removed. | |
| - bpo-41625: Expose the :c:func:`splice` as :func:`os.splice` in the | |
| :mod:`os` module. Patch by Pablo Galindo | |
| - bpo-34215: Clarify the error message for | |
| :exc:`asyncio.IncompleteReadError` when ``expected`` is ``None``. | |
| - bpo-41543: Add async context manager support for contextlib.nullcontext. | |
| - bpo-21041: :attr:`pathlib.PurePath.parents` now supports negative | |
| indexing. Patch contributed by Yaroslav Pankovych. | |
| - bpo-41332: Added missing connect_accepted_socket() method to | |
| ``asyncio.AbstractEventLoop``. | |
| - bpo-12800: Extracting a symlink from a tarball should succeed and | |
| overwrite the symlink if it already exists. The fix is to remove the | |
| existing file or symlink before extraction. Based on patch by Chris AtLee, | |
| Jeffrey Kintscher, and Senthil Kumaran. | |
| - bpo-40968: :mod:`urllib.request` and :mod:`http.client` now send | |
| ``http/1.1`` ALPN extension during TLS handshake when no custom context is | |
| supplied. | |
| - bpo-41001: Add func:`os.eventfd` to provide a low level interface for | |
| Linux's event notification file descriptor. | |
| - bpo-40816: Add AsyncContextDecorator to contextlib to support async | |
| context manager as a decorator. | |
| - bpo-40550: Fix time-of-check/time-of-action issue in | |
| subprocess.Popen.send_signal. | |
| - bpo-39411: Add an ``is_async`` identifier to :mod:`pyclbr`'s ``Function`` | |
| objects. Patch by Batuhan Taskaya | |
| - bpo-35498: Add slice support to :attr:`pathlib.PurePath.parents`. | |
| Documentation | |
| ------------- | |
| - bpo-42238: Tentative to deprecate ``make suspicious`` by first removing it | |
| from the CI and documentation builds, but keeping it around for manual | |
| uses. | |
| - bpo-42153: Fix the URL for the IMAP protocol documents. | |
| - bpo-41028: Language and version switchers, previously maintained in every | |
| cpython branches, are now handled by docsbuild-script. | |
| Tests | |
| ----- | |
| - bpo-41473: Re-enable test_gdb on gdb 9.2 and newer: | |
| https://bugzilla.redhat.com/show_bug.cgi?id=1866884 bug is fixed in gdb | |
| 10.1. | |
| - bpo-42553: Fix ``test_asyncio.test_call_later()`` race condition: don't | |
| measure asyncio performance in the ``call_later()`` unit test. The test | |
| failed randomly on the CI. | |
| - bpo-31904: Fix test_netrc on VxWorks: create temporary directories using | |
| temp_cwd(). | |
| - bpo-31904: skip test_getaddrinfo_ipv6_scopeid_symbolic and | |
| test_getnameinfo_ipv6_scopeid_symbolic on VxWorks | |
| - bpo-31904: skip test_test of test_mailcap on VxWorks | |
| - bpo-31904: add shell requirement for test_pipes | |
| - bpo-31904: skip some tests related to fifo on VxWorks | |
| - bpo-31904: Fix test_doctest.py failures for VxWorks. | |
| - bpo-40754: Include ``_testinternalcapi`` module in Windows installer for | |
| test suite | |
| - bpo-41561: test_ssl: skip test_min_max_version_mismatch when TLS 1.0 is | |
| not available | |
| - bpo-31904: Fix os module failures for VxWorks RTOS. | |
| - bpo-31904: Fix fifo test cases for VxWorks RTOS. | |
| Build | |
| ----- | |
| - bpo-31904: remove libnet dependency from detect_socket() for VxWorks | |
| - bpo-42398: Fix a race condition in "make regen-all" when make -jN option | |
| is used to run jobs in parallel. The clinic.py script now only use atomic | |
| write to write files. Moveover, generated files are now left unchanged if | |
| the content does not change, to not change the file modification time. | |
| - bpo-41617: Fix building ``pycore_bitutils.h`` internal header on old clang | |
| version without ``__builtin_bswap16()`` (ex: Xcode 4.6.3 on Mac OS X | |
| 10.7). Patch by Joshua Root and Victor Stinner. | |
| - bpo-38823: It is no longer possible to build the ``_ctypes`` extension | |
| module without :c:type:`wchar_t` type: remove ``CTYPES_UNICODE`` macro. | |
| Anyway, the :c:type:`wchar_t` type is required to build Python. Patch by | |
| Victor Stinner. | |
| - bpo-42087: Support was removed for AIX 5.3 and below. See :issue:`40680`. | |
| - bpo-40998: Addressed three compiler warnings found by undefined behavior | |
| sanitizer (ubsan). | |
| Windows | |
| ------- | |
| - bpo-42120: Remove macro definition of ``copysign`` (to ``_copysign``) in | |
| headers. | |
| - bpo-38506: The Windows launcher now properly handles Python 3.10 when | |
| listing installed Python versions. | |
| macOS | |
| ----- | |
| - bpo-42504: Fix build on macOS Big Sur when MACOSX_DEPLOYMENT_TARGET=11 | |
| - bpo-41116: Ensure distutils.unixxcompiler.find_library_file can find | |
| system provided libraries on macOS 11. | |
| - bpo-41100: Add support for macOS 11 and Apple Silicon systems. | |
| It is now possible to build "Universal 2" binaries using | |
| "--enable-universalsdk --with-universal-archs=universal2". | |
| Binaries build on later macOS versions can be deployed back to older | |
| versions (tested up to macOS 10.9), when using the correct deployment | |
| target. This is tested using Xcode 11 and later. | |
| - bpo-42232: Added Darwin specific madvise options to mmap module. | |
| - bpo-38443: The ``--enable-universalsdk`` and ``--with-universal-archs`` | |
| options for the configure script now check that the specified | |
| architectures can be used. | |
| IDLE | |
| ---- | |
| - bpo-42508: Keep IDLE running on macOS. Remove obsolete workaround that | |
| prevented running files with shortcuts when using new universal2 | |
| installers built on macOS 11. | |
| - bpo-42426: Fix reporting offset of the RE error in searchengine. | |
| - bpo-42415: Get docstrings for IDLE calltips more often by using | |
| inspect.getdoc. | |
| Tools/Demos | |
| ----------- | |
| - bpo-42212: The smelly.py script now also checks the Python dynamic library | |
| and extension modules, not only the Python static library. Make also the | |
| script more verbose: explain what it does. | |
| - bpo-36310: Allow :file:`Tools/i18n/pygettext.py` to detect calls to | |
| ``gettext`` in f-strings. | |
| C API | |
| ----- | |
| - bpo-42423: The :c:func:`PyType_FromSpecWithBases` and | |
| :c:func:`PyType_FromModuleAndSpec` functions now accept a single class as | |
| the *bases* argument. | |
| - bpo-1635741: Port :mod:`select` extension module to multiphase | |
| initialization (:pep:`489`). | |
| - bpo-1635741: Port _posixsubprocess extension module to multiphase | |
| initialization (:pep:`489`). | |
| - bpo-1635741: Port _posixshmem extension module to multiphase | |
| initialization (:pep:`489`) | |
| - bpo-1635741: Port _struct extension module to multiphase initialization | |
| (:pep:`489`) | |
| - bpo-1635741: Port :mod:`spwd` extension module to multiphase | |
| initialization (:pep:`489`) | |
| - bpo-1635741: Port :mod:`gc` extension module to multiphase initialization | |
| (:pep:`489`) | |
| - bpo-1635741: Port _queue extension module to multiphase initialization | |
| (:pep:`489`) | |
| - bpo-39573: Convert :c:func:`Py_TYPE` and :c:func:`Py_SIZE` back to macros | |
| to allow using them as an l-value. Many third party C extension modules | |
| rely on the ability of using Py_TYPE() and Py_SIZE() to set an object type | |
| and size: ``Py_TYPE(obj) = type;`` and ``Py_SIZE(obj) = size;``. | |
| - bpo-1635741: Port :mod:`symtable` extension module to multiphase | |
| initialization (:pep:`489`) | |
| - bpo-1635741: Port :mod:`grp` and :mod:`pwd` extension modules to | |
| multiphase initialization (:pep:`489`) | |
| - bpo-1635741: Port _random extension module to multiphase initialization | |
| (:pep:`489`) | |
| - bpo-1635741: Port _hashlib extension module to multiphase initialization | |
| (:pep:`489`) | |
| - bpo-41713: Removed the undocumented ``PyOS_InitInterrupts()`` function. | |
| Initializing Python already implicitly installs signal handlers: see | |
| :c:member:`PyConfig.install_signal_handlers`. Patch by Victor Stinner. | |
| - bpo-40170: The ``Py_TRASHCAN_BEGIN`` macro no longer accesses PyTypeObject | |
| attributes, but now can get the condition by calling the new private | |
| :c:func:`_PyTrash_cond()` function which hides implementation details. | |
| - bpo-42260: :c:func:`Py_GetPath`, :c:func:`Py_GetPrefix`, | |
| :c:func:`Py_GetExecPrefix`, :c:func:`Py_GetProgramFullPath`, | |
| :c:func:`Py_GetPythonHome` and :c:func:`Py_GetProgramName` functions now | |
| return ``NULL`` if called before :c:func:`Py_Initialize` (before Python is | |
| initialized). Use the new :ref:`Python Initialization Configuration API | |
| <init-config>` to get the :ref:`Python Path Configuration. | |
| <init-path-config>`. Patch by Victor Stinner. | |
| - bpo-42260: The :c:func:`PyConfig_Read` function now only parses | |
| :c:member:`PyConfig.argv` arguments once: :c:member:`PyConfig.parse_argv` | |
| is set to ``2`` after arguments are parsed. Since Python arguments are | |
| strippped from :c:member:`PyConfig.argv`, parsing arguments twice would | |
| parse the application options as Python options. | |
| - bpo-42262: Added :c:func:`Py_NewRef` and :c:func:`Py_XNewRef` functions to | |
| increment the reference count of an object and return the object. Patch by | |
| Victor Stinner. | |
| - bpo-42260: When :c:func:`Py_Initialize` is called twice, the second call | |
| now updates more :mod:`sys` attributes for the configuration, rather than | |
| only :data:`sys.argv`. Patch by Victor Stinner. | |
| - bpo-41832: The :c:func:`PyType_FromModuleAndSpec` function now accepts | |
| NULL ``tp_doc`` slot. | |
| - bpo-1635741: Added :c:func:`PyModule_AddObjectRef` function: similar to | |
| :c:func:`PyModule_AddObject` but don't steal a reference to the value on | |
| success. Patch by Victor Stinner. | |
| - bpo-42171: The :c:data:`METH_FASTCALL` calling convention is added to the | |
| limited API. The functions :c:func:`PyModule_AddType`, | |
| :c:func:`PyType_FromModuleAndSpec`, :c:func:`PyType_GetModule` and | |
| :c:func:`PyType_GetModuleState` are added to the limited API on Windows. | |
| - bpo-42085: Add dedicated entry to PyAsyncMethods for sending values | |
| - bpo-41073: :c:func:`PyType_GetSlot()` can now accept static types. | |
| - bpo-30459: :c:func:`PyList_SET_ITEM`, :c:func:`PyTuple_SET_ITEM` and | |
| :c:func:`PyCell_SET` macros can no longer be used as l-value or r-value. | |
| For example, ``x = PyList_SET_ITEM(a, b, c)`` and ``PyList_SET_ITEM(a, b, | |
| c) = x`` now fail with a compiler error. It prevents bugs like ``if | |
| (PyList_SET_ITEM (a, b, c) < 0) ...`` test. Patch by Zackery Spytz and | |
| Victor Stinner. | |
| What's New in Python 3.10.0 alpha 2? | |
| ==================================== | |
| *Release date: 2020-11-03* | |
| Security | |
| -------- | |
| - bpo-42103: Prevented potential DoS attack via CPU and RAM exhaustion when | |
| processing malformed Apple Property List files in binary format. | |
| - bpo-42051: The :mod:`plistlib` module no longer accepts entity | |
| declarations in XML plist files to avoid XML vulnerabilities. This should | |
| not affect users as entity declarations are not used in regular plist | |
| files. | |
| Core and Builtins | |
| ----------------- | |
| - bpo-42236: If the ``nl_langinfo(CODESET)`` function returns an empty | |
| string, Python now uses UTF-8 as the filesystem encoding. Patch by Victor | |
| Stinner. | |
| - bpo-42218: Fixed a bug in the PEG parser that was causing crashes in debug | |
| mode. Now errors are checked in left-recursive rules to avoid cases where | |
| such errors do not get handled in time and appear as long-distance crashes | |
| in other places. | |
| - bpo-42214: Fixed a possible crash in the PEG parser when checking for the | |
| '!=' token in the ``barry_as_flufl`` rule. Patch by Pablo Galindo. | |
| - bpo-42206: Propagate and raise the errors caused by | |
| :c:func:`PyAST_Validate` in the parser. | |
| - bpo-41796: The :mod:`ast` module internal state is now per interpreter. | |
| Patch by Victor Stinner. | |
| - bpo-42143: Fix handling of errors during creation of ``PyFunctionObject``, | |
| which resulted in operations on uninitialized memory. Patch by Yonatan | |
| Goldschmidt. | |
| - bpo-41659: Fix a bug in the parser, where a curly brace following a | |
| `primary` didn't fail immediately. This led to invalid expressions like `a | |
| {b}` to throw a :exc:`SyntaxError` with a wrong offset, or invalid | |
| expressions ending with a curly brace like `a {` to not fail immediately | |
| in the REPL. | |
| - bpo-42150: Fix possible buffer overflow in the new parser when checking | |
| for continuation lines. Patch by Pablo Galindo. | |
| - bpo-42123: Run the parser two times. On the first run, disable all the | |
| rules that only generate better error messages to gain performance. If | |
| there's a parse failure, run the parser a second time with those enabled. | |
| - bpo-42093: The ``LOAD_ATTR`` instruction now uses new "per opcode cache" | |
| mechanism and it is about 36% faster now. Patch by Pablo Galindo and Yury | |
| Selivanov. | |
| - bpo-42030: Support for the legacy AIX-specific shared library loading | |
| support has been removed. All versions of AIX since 4.3 have supported and | |
| defaulted to using the common Unix mechanism instead. | |
| - bpo-41984: The garbage collector now tracks all user-defined classes. | |
| Patch by Brandt Bucher. | |
| - bpo-41993: Fixed potential issues with removing not completely initialized | |
| module from ``sys.modules`` when import fails. | |
| - bpo-41979: Star-unpacking is now allowed for with item's targets in the | |
| PEG parser. | |
| - bpo-41974: Removed special methods ``__int__``, ``__float__``, | |
| ``__floordiv__``, ``__mod__``, ``__divmod__``, ``__rfloordiv__``, | |
| ``__rmod__`` and ``__rdivmod__`` of the :class:`complex` class. They | |
| always raised a :exc:`TypeError`. | |
| - bpo-41902: Micro optimization when compute | |
| :c:member:`~PySequenceMethods.sq_item` and | |
| :c:member:`~PyMappingMethods.mp_subscript` of :class:`range`. Patch by | |
| Dong-hee Na. | |
| - bpo-41894: When loading a native module and a load failure occurs, prevent | |
| a possible UnicodeDecodeError when not running in a UTF-8 locale by | |
| decoding the load error message using the current locale's encoding. | |
| - bpo-41902: Micro optimization for range.index if step is 1. Patch by | |
| Dong-hee Na. | |
| - bpo-41435: Add `sys._current_exceptions()` function to retrieve a | |
| dictionary mapping each thread's identifier to the topmost exception | |
| currently active in that thread at the time the function is called. | |
| - bpo-38605: Enable ``from __future__ import annotations`` (:pep:`563`) by | |
| default. The values found in :attr:`__annotations__` dicts are now | |
| strings, e.g. ``{"x": "int"}`` instead of ``{"x": int}``. | |
| Library | |
| ------- | |
| - bpo-35455: On Solaris, :func:`~time.thread_time` is now implemented with | |
| ``gethrvtime()`` because ``clock_gettime(CLOCK_THREAD_CPUTIME_ID)`` is not | |
| always available. Patch by Jakub Kulik. | |
| - bpo-42233: The :func:`repr` of :mod:`typing` types containing | |
| :ref:`Generic Alias Types <types-genericalias>` previously did not show | |
| the parameterized types in the ``GenericAlias``. They have now been | |
| changed to do so. | |
| - bpo-29566: ``binhex.binhex()`` consistently writes macOS 9 line endings. | |
| - bpo-26789: The :class:`logging.FileHandler` class now keeps a reference to | |
| the builtin :func:`open` function to be able to open or reopen the file | |
| during Python finalization. Fix errors like: ``NameError: name 'open' is | |
| not defined``. Patch by Victor Stinner. | |
| - bpo-42157: Removed the ``unicodedata.ucnhash_CAPI`` attribute which was an | |
| internal PyCapsule object. The related private ``_PyUnicode_Name_CAPI`` | |
| structure was moved to the internal C API. Patch by Victor Stinner. | |
| - bpo-42157: Convert the :mod:`unicodedata` extension module to the | |
| multiphase initialization API (:pep:`489`) and convert the | |
| ``unicodedata.UCD`` static type to a heap type. Patch by Mohamed Koubaa | |
| and Victor Stinner. | |
| - bpo-42146: Fix memory leak in :func:`subprocess.Popen` in case an uid | |
| (gid) specified in `user` (`group`, `extra_groups`) overflows `uid_t` | |
| (`gid_t`). | |
| - bpo-42103: :exc:`~plistlib.InvalidFileException` and :exc:`RecursionError` | |
| are now the only errors caused by loading malformed binary Plist file | |
| (previously ValueError and TypeError could be raised in some specific | |
| cases). | |
| - bpo-41490: In ``importlib.resources``, ``.path`` method is more aggressive | |
| about releasing handles to zipfile objects early, enabling use-cases like | |
| certifi to leave the context open but delete the underlying zip file. | |
| - bpo-41052: Pickling heap types implemented in C with protocols 0 and 1 | |
| raises now an error instead of producing incorrect data. | |
| - bpo-42089: In ``importlib.metadata.PackageNotFoundError``, make reference | |
| to the package metadata being missing to improve the user experience. | |
| - bpo-41491: plistlib: fix parsing XML plists with hexadecimal integer | |
| values | |
| - bpo-42065: Fix an incorrectly formatted error from | |
| :meth:`_codecs.charmap_decode` when called with a mapped value outside the | |
| range of valid Unicode code points. PR by Max Bernstein. | |
| - bpo-41966: Fix pickling pure Python :class:`datetime.time` subclasses. | |
| Patch by Dean Inwood. | |
| - bpo-19270: :meth:`sched.scheduler.cancel()` will now cancel the correct | |
| event, if two events with same priority are scheduled for the same time. | |
| Patch by Bar Harel. | |
| - bpo-28660: :func:`textwrap.wrap` now attempts to break long words after | |
| hyphens when ``break_long_words=True`` and ``break_on_hyphens=True``. | |
| - bpo-35823: Use ``vfork()`` instead of ``fork()`` for | |
| :func:`subprocess.Popen` on Linux to improve performance in cases where it | |
| is deemed safe. | |
| - bpo-42043: Add support for ``zipfile.Path`` inheritance. | |
| ``zipfile.Path.is_file()`` now returns False for non-existent names. | |
| ``zipfile.Path`` objects now expose a ``.filename`` attribute and rely on | |
| that to resolve ``.name`` and ``.parent`` when the ``Path`` object is at | |
| the root of the zipfile. | |
| - bpo-42021: Fix possible ref leaks in :mod:`sqlite3` module init. | |
| - bpo-39101: Fixed tests using IsolatedAsyncioTestCase from hanging on | |
| BaseExceptions. | |
| - bpo-41976: Fixed a bug that was causing :func:`ctypes.util.find_library` | |
| to return ``None`` when triying to locate a library in an environment when | |
| gcc>=9 is available and ``ldconfig`` is not. Patch by Pablo Galindo | |
| - bpo-41943: Fix bug where TestCase.assertLogs doesn't correctly filter | |
| messages by level. | |
| - bpo-41923: Implement :pep:`613`, introducing :data:`typing.TypeAlias` | |
| annotation. | |
| - bpo-41905: A new function in abc: *update_abstractmethods* to re-calculate | |
| an abstract class's abstract status. In addition, *dataclass* has been | |
| changed to call this function. | |
| - bpo-23706: Added *newline* parameter to ``pathlib.Path.write_text()``. | |
| - bpo-41876: Tkinter font class repr uses font name | |
| - bpo-41831: ``str()`` for the ``type`` attribute of the ``tkinter.Event`` | |
| object always returns now the numeric code returned by Tk instead of the | |
| name of the event type. | |
| - bpo-39337: :func:`encodings.normalize_encoding` now ignores non-ASCII | |
| characters. | |
| - bpo-41747: Ensure all methods that generated from | |
| :func:`dataclasses.dataclass` objects now have the proper ``__qualname__`` | |
| attribute referring to the class they belong to. Patch by Batuhan Taskaya. | |
| - bpo-30681: Handle exceptions caused by unparsable date headers when using | |
| email "default" policy. Patch by Tim Bell, Georges Toth | |
| - bpo-41586: Add F_SETPIPE_SZ and F_GETPIPE_SZ to fcntl module. Allow | |
| setting pipesize on subprocess.Popen. | |
| - bpo-41229: Add ``contextlib.aclosing`` for deterministic cleanup of async | |
| generators which is analogous to ``contextlib.closing`` for non-async | |
| generators. Patch by Joongi Kim and John Belmonte. | |
| - bpo-16396: Allow ``ctypes.wintypes`` to be imported on non-Windows | |
| systems. | |
| - bpo-4356: Add a key function to the bisect module. | |
| - bpo-40592: :func:`shutil.which` now ignores empty entries in | |
| :envvar:`PATHEXT` instead of treating them as a match. | |
| - bpo-40492: Fix ``--outfile`` for :mod:`cProfile` / :mod:`profile` not | |
| writing the output file in the original directory when the program being | |
| profiled changes the working directory. PR by Anthony Sottile. | |
| - bpo-34204: The :mod:`shelve` module now uses | |
| :data:`pickle.DEFAULT_PROTOCOL` by default instead of :mod:`pickle` | |
| protocol ``3``. | |
| - bpo-27321: Fixed KeyError exception when flattening an email to a string | |
| attempts to replace a non-existent Content-Transfer-Encoding header. | |
| - bpo-38976: The :mod:`http.cookiejar` module now supports the parsing of | |
| cookies in CURL-style cookiejar files through MozillaCookieJar on all | |
| platforms. Previously, such cookie entries would be silently ignored when | |
| loading a cookiejar with such entries. | |
| Additionally, the HTTP Only attribute is persisted in the object, and will | |
| be correctly written to file if the MozillaCookieJar object is | |
| subsequently dumped. | |
| Documentation | |
| ------------- | |
| - bpo-42061: Document __format__ functionality for IP addresses. | |
| - bpo-41910: Document the default implementation of `object.__eq__`. | |
| - bpo-42010: Clarify that subscription expressions are also valid for | |
| certain :term:`classes <class>` and :term:`types <type>` in the standard | |
| library, and for user-defined classes and types if the classmethod | |
| :meth:`__class_getitem__` is provided. | |
| - bpo-41805: Documented :ref:`generic alias type <types-genericalias>` and | |
| :data:`types.GenericAlias`. Also added an entry in glossary for | |
| :term:`generic types <generic type>`. | |
| - bpo-39693: Fix tarfile's extractfile documentation | |
| - bpo-39416: Document some restrictions on the default string | |
| representations of numeric classes. | |
| Tests | |
| ----- | |
| - bpo-41739: Fix test_logging.test_race_between_set_target_and_flush(): the | |
| test now waits until all threads complete to avoid leaking running | |
| threads. | |
| - bpo-41970: Avoid a test failure in ``test_lib2to3`` if the module has | |
| already imported at the time the test executes. Patch by Pablo Galindo. | |
| - bpo-41944: Tests for CJK codecs no longer call ``eval()`` on content | |
| received via HTTP. | |
| - bpo-41306: Fixed a failure in ``test_tk.test_widgets.ScaleTest`` happening | |
| when executing the test with Tk 8.6.10. | |
| Build | |
| ----- | |
| - bpo-38980: Add ``-fno-semantic-interposition`` to both the compile and | |
| link line when building with ``--enable-optimizations``. Patch by Victor | |
| Stinner and Pablo Galindo. | |
| Windows | |
| ------- | |
| - bpo-38439: Updates the icons for IDLE in the Windows Store package. | |
| - bpo-38252: Use 8-byte step to detect ASCII sequence in 64-bit Windows | |
| build. | |
| - bpo-39107: Update Tcl and Tk to 8.6.10 in Windows installer. | |
| - bpo-41557: Update Windows installer to use SQLite 3.33.0. | |
| - bpo-38324: Avoid Unicode errors when accessing certain locale data on | |
| Windows. | |
| macOS | |
| ----- | |
| - bpo-41471: Ignore invalid prefix lengths in system proxy excludes. | |
| IDLE | |
| ---- | |
| - bpo-33987: Mostly finish using ttk widgets, mainly for editor, settings, | |
| and searches. Some patches by Mark Roseman. | |
| - bpo-40511: Typing opening and closing parentheses inside the parentheses | |
| of a function call will no longer cause unnecessary "flashing" off and on | |
| of an existing open call-tip, e.g. when typed in a string literal. | |
| - bpo-38439: Add a 256×256 pixel IDLE icon to the Windows .ico file. Created | |
| by Andrew Clover. Remove the low-color gif variations from the .ico file. | |
| C API | |
| ----- | |
| - bpo-42157: The private ``_PyUnicode_Name_CAPI`` structure of the PyCapsule | |
| API ``unicodedata.ucnhash_CAPI`` has been moved to the internal C API. | |
| Patch by Victor Stinner. | |
| - bpo-42015: Fix potential crash in deallocating method objects when | |
| dynamically allocated `PyMethodDef`'s lifetime is managed through the | |
| ``self`` argument of a `PyCFunction`. | |
| - bpo-40423: The :mod:`subprocess` module and ``os.closerange`` will now use | |
| the ``close_range(low, high, flags)`` syscall when it is available for | |
| more efficient closing of ranges of descriptors. | |
| - bpo-41845: :c:func:`PyObject_GenericGetDict` is available again in the | |
| limited API when targeting 3.10 or later. | |
| - bpo-40422: Add `_Py_closerange` function to provide performant closing of | |
| a range of file descriptors. | |
| - bpo-41986: :c:data:`Py_FileSystemDefaultEncodeErrors` and | |
| :c:data:`Py_UTF8Mode` are available again in limited API. | |
| - bpo-41756: Add `PyIter_Send` function to allow sending value into | |
| generator/coroutine/iterator without raising StopIteration exception to | |
| signal return. | |
| - bpo-41784: Added ``PyUnicode_AsUTF8AndSize`` to the limited C API. | |
| What's New in Python 3.10.0 alpha 1? | |
| ==================================== | |
| *Release date: 2020-10-05* | |
| Security | |
| -------- | |
| - bpo-41304: Fixes `python3x._pth` being ignored on Windows, caused by the | |
| fix for :issue:`29778` (CVE-2020-15801). | |
| - bpo-41162: Audit hooks are now cleared later during finalization to avoid | |
| missing events. | |
| - bpo-29778: Ensure :file:`python3.dll` is loaded from correct locations | |
| when Python is embedded (CVE-2020-15523). | |
| - bpo-41004: The __hash__() methods of ipaddress.IPv4Interface and | |
| ipaddress.IPv6Interface incorrectly generated constant hash values of 32 | |
| and 128 respectively. This resulted in always causing hash collisions. The | |
| fix uses hash() to generate hash values for the tuple of (address, mask | |
| length, network address). | |
| - bpo-39603: Prevent http header injection by rejecting control characters | |
| in http.client.putrequest(...). | |
| Core and Builtins | |
| ----------------- | |
| - bpo-41909: Fixed stack overflow in :func:`issubclass` and | |
| :func:`isinstance` when getting the ``__bases__`` attribute leads to | |
| infinite recursion. | |
| - bpo-41922: Speed up calls to ``reversed()`` by using the :pep:`590` | |
| ``vectorcall`` calling convention. Patch by Dong-hee Na. | |
| - bpo-41873: Calls to ``float()`` are now faster due to the ``vectorcall`` | |
| calling convention. Patch by Dennis Sweeney. | |
| - bpo-41870: Speed up calls to ``bool()`` by using the :pep:`590` | |
| ``vectorcall`` calling convention. Patch by Dong-hee Na. | |
| - bpo-1635741: Port the :mod:`_bisect` module to the multi-phase | |
| initialization API (:pep:`489`). | |
| - bpo-39934: Correctly count control blocks in 'except' in compiler. Ensures | |
| that a syntax error, rather a fatal error, occurs for deeply nested, named | |
| exception handlers. | |
| - bpo-41780: Fix :meth:`__dir__` of :class:`types.GenericAlias`. Patch by | |
| Batuhan Taskaya. | |
| - bpo-1635741: Port the :mod:`_lsprof` extension module to multi-phase | |
| initialization (:pep:`489`). | |
| - bpo-1635741: Port the :mod:`cmath` extension module to multi-phase | |
| initialization (:pep:`489`). | |
| - bpo-1635741: Port the :mod:`_scproxy` extension module to multi-phase | |
| initialization (:pep:`489`). | |
| - bpo-1635741: Port the :mod:`termios` extension module to multi-phase | |
| initialization (:pep:`489`). | |
| - bpo-1635741: Convert the :mod:`_sha256` extension module types to heap | |
| types. | |
| - bpo-41690: Fix a possible stack overflow in the parser when parsing | |
| functions and classes with a huge amount of arguments. Patch by Pablo | |
| Galindo. | |
| - bpo-1635741: Port the :mod:`_overlapped` extension module to multi-phase | |
| initialization (:pep:`489`). | |
| - bpo-1635741: Port the :mod:`_curses_panel` extension module to multi-phase | |
| initialization (:pep:`489`). | |
| - bpo-1635741: Port the :mod:`_opcode` extension module to multi-phase | |
| initialization (:pep:`489`). | |
| - bpo-41681: Fixes the wrong error description in the error raised by using | |
| 2 `,` in format string in f-string and :meth:`str.format`. | |
| - bpo-41675: The implementation of :func:`signal.siginterrupt` now uses | |
| :c:func:`sigaction` (if it is available in the system) instead of the | |
| deprecated :c:func:`siginterrupt`. Patch by Pablo Galindo. | |
| - bpo-41670: Prevent line trace being skipped on platforms not compiled with | |
| ``USE_COMPUTED_GOTOS``. Fixes issue where some lines nested within a | |
| try-except block were not being traced on Windows. | |
| - bpo-41654: Fix a crash that occurred when destroying subclasses of | |
| :class:`MemoryError`. Patch by Pablo Galindo. | |
| - bpo-1635741: Port the :mod:`zlib` extension module to multi-phase | |
| initialization (:pep:`489`). | |
| - bpo-41631: The ``_ast`` module uses again a global state. Using a module | |
| state per module instance is causing subtle practical problems. For | |
| example, the Mercurial project replaces the ``__import__()`` function to | |
| implement lazy import, whereas Python expected that ``import _ast`` always | |
| return a fully initialized ``_ast`` module. | |
| - bpo-40077: Convert :mod:`_operator` to use :c:func:`PyType_FromSpec`. | |
| - bpo-1653741: Port :mod:`_sha3` to multi-phase init. Convert static types | |
| to heap types. | |
| - bpo-1635741: Port the :mod:`_blake2` extension module to the multi-phase | |
| initialization API (:pep:`489`). | |
| - bpo-41533: Free the stack allocated in ``va_build_stack`` if | |
| ``do_mkstack`` fails and the stack is not a ``small_stack``. | |
| - bpo-41531: Fix a bug that was dropping keys when compiling dict literals | |
| with more than 0xFFFF elements. Patch by Pablo Galindo. | |
| - bpo-41525: The output of ``python --help`` contains now only ASCII | |
| characters. | |
| - bpo-1635741: Port the :mod:`_sha1`, :mod:`_sha512`, and :mod:`_md5` | |
| extension modules to multi-phase initialization API (:pep:`489`). | |
| - bpo-41431: Optimize ``dict_merge()`` for copying dict (e.g. ``dict(d)`` | |
| and ``{}.update(d)``). | |
| - bpo-41428: Implement PEP 604. This supports (int | str) etc. in place of | |
| Union[str, int]. | |
| - bpo-41340: Removed fallback implementation for ``strdup``. | |
| - bpo-38156: Handle interrupts that come after EOF correctly in | |
| ``PyOS_StdioReadline``. | |
| - bpo-41342: :func:`round` with integer argument is now faster (9--60%). | |
| - bpo-41334: Constructors :func:`str`, :func:`bytes` and :func:`bytearray` | |
| are now faster (around 30--40% for small objects). | |
| - bpo-41295: Resolve a regression in CPython 3.8.4 where defining | |
| "__setattr__" in a multi-inheritance setup and calling up the hierarchy | |
| chain could fail if builtins/extension types were involved in the base | |
| types. | |
| - bpo-41323: Bytecode optimizations are performed directly on the control | |
| flow graph. This will result in slightly more compact code objects in some | |
| circumstances. | |
| - bpo-41247: Always cache the running loop holder when running | |
| ``asyncio.set_running_loop``. | |
| - bpo-41252: Fix incorrect refcounting in _ssl.c's | |
| ``_servername_callback()``. | |
| - bpo-1635741: Port :mod:`multiprocessing` to multi-phase initialization | |
| - bpo-1635741: Port :mod:`winapi` to multiphase initialization | |
| - bpo-41215: Use non-NULL default values in the PEG parser keyword list to | |
| overcome a bug that was preventing Python from being properly compiled | |
| when using the XLC compiler. Patch by Pablo Galindo. | |
| - bpo-41218: Python 3.8.3 had a regression where compiling with | |
| ast.PyCF_ALLOW_TOP_LEVEL_AWAIT would aggressively mark list comprehension | |
| with CO_COROUTINE. Now only list comprehension making use of async/await | |
| will tagged as so. | |
| - bpo-1635741: Port :mod:`faulthandler` to multiphase initialization. | |
| - bpo-1635741: Port :mod:`sha256` to multiphase initialization | |
| - bpo-41175: Guard against a NULL pointer dereference within bytearrayobject | |
| triggered by the ``bytearray() + bytearray()`` operation. | |
| - bpo-41100: add arm64 to the allowable Mac OS arches in mpdecimal.h | |
| - bpo-41094: Fix decoding errors with audit when open files with non-ASCII | |
| names on non-UTF-8 locale. | |
| - bpo-39960: The "hackcheck" that prevents sneaking around a type's | |
| __setattr__() by calling the superclass method was rewritten to allow C | |
| implemented heap types. | |
| - bpo-41084: Prefix the error message with 'f-string: ', when parsing an | |
| f-string expression which throws a :exc:`SyntaxError`. | |
| - bpo-40521: Empty frozensets are no longer singletons. | |
| - bpo-41076: Pre-feed the parser with the location of the f-string | |
| expression, not the f-string itself, which allows us to skip the shifting | |
| of the AST node locations after the parsing is completed. | |
| - bpo-41056: Fixes a reference to deallocated stack space during startup | |
| when constructing sys.path involving a relative symlink when code was | |
| supplied via -c. (discovered via Coverity) | |
| - bpo-41061: Fix incorrect expressions and asserts in hashtable code and | |
| tests. | |
| - bpo-41052: Opt out serialization/deserialization for _random.Random | |
| - bpo-40939: Rename `PyPegen*` functions to `PyParser*`, so that we can | |
| remove the old set of `PyParser*` functions that were using the old | |
| parser, but keep everything backwards-compatible. | |
| - bpo-35975: Stefan Behnel reported that cf_feature_version is used even | |
| when PyCF_ONLY_AST is not set. This is against the intention and against | |
| the documented behavior, so it's been fixed. | |
| - bpo-40939: Remove the remaining files from the old parser and the | |
| :mod:`symbol` module. | |
| - bpo-40077: Convert :mod:`_bz2` to use :c:func:`PyType_FromSpec`. | |
| - bpo-41006: The ``encodings.latin_1`` module is no longer imported at | |
| startup. Now it is only imported when it is the filesystem encoding or the | |
| stdio encoding. | |
| - bpo-40636: :func:`zip` now supports :pep:`618`'s ``strict`` parameter, | |
| which raises a :exc:`ValueError` if the arguments are exhausted at | |
| different lengths. Patch by Brandt Bucher. | |
| - bpo-1635741: Port :mod:`_gdbm` to multiphase initialization. | |
| - bpo-40985: Fix a bug that caused the :exc:`SyntaxError` text to be empty | |
| when a file ends with a line ending in a line continuation character (i.e. | |
| backslash). The error text should contain the text of the last line. | |
| - bpo-40958: Fix a possible buffer overflow in the PEG parser when gathering | |
| information for emitting syntax errors. Patch by Pablo Galindo. | |
| - bpo-1635741: Port :mod:`_dbm` to multiphase initialization. | |
| - bpo-40957: Fix refleak in _Py_fopen_obj() when PySys_Audit() fails | |
| - bpo-40950: Add a state to the :mod:`nis` module (:pep:`3121`) and apply | |
| the multiphase initialization. Patch by Dong-hee Na. | |
| - bpo-40947: The Python :ref:`Path Configuration <init-path-config>` now | |
| takes :c:member:`PyConfig.platlibdir` in account. | |
| - bpo-40939: Remove the old parser, the :mod:`parser` module and all | |
| associated support code, command-line options and environment variables. | |
| Patch by Pablo Galindo. | |
| - bpo-40847: Fix a bug where a line with only a line continuation character | |
| is not considered a blank line at tokenizer level. In such cases, more | |
| than a single `NEWLINE` token was emitted. The old parser was working | |
| around the issue, but the new parser threw a :exc:`SyntaxError` for valid | |
| input due to this. For example, an empty line following a line | |
| continuation character was interpreted as a :exc:`SyntaxError`. | |
| - bpo-40890: Each dictionary view now has a ``mapping`` attribute that | |
| provides a :class:`types.MappingProxyType` wrapping the original | |
| dictionary. Patch contributed by Dennis Sweeney. | |
| - bpo-40889: Improved the performance of symmetric difference operations on | |
| dictionary item views. Patch by Dennis Sweeney. | |
| - bpo-40904: Fix possible segfault in the new PEG parser when parsing | |
| f-string containing yield statements with no value (:code:`f"{yield}"`). | |
| Patch by Pablo Galindo | |
| - bpo-40903: Fixed a possible segfault in the new PEG parser when producing | |
| error messages for invalid assignments of the form :code:`p=p=`. Patch by | |
| Pablo Galindo | |
| - bpo-40880: Fix invalid memory read in the new parser when checking | |
| newlines in string literals. Patch by Pablo Galindo. | |
| - bpo-40883: Fix memory leak in when parsing f-strings in the new parser. | |
| Patch by Pablo Galindo | |
| - bpo-40870: Raise :exc:`ValueError` when validating custom AST's where the | |
| constants ``True``, ``False`` and ``None`` are used within a | |
| :class:`ast.Name` node. | |
| - bpo-40854: Allow overriding :data:`sys.platlibdir` via a new | |
| :envvar:`PYTHONPLATLIBDIR` environment variable. | |
| - bpo-40826: Fix GIL usage in :c:func:`PyOS_Readline`: lock the GIL to set | |
| an exception and pass the Python thread state when checking if there is a | |
| pending signal. | |
| - bpo-1635741: Port :mod:`fcntl` to multiphase initialization. | |
| - bpo-19468: Delete unnecessary instance check in importlib.reload(). Patch | |
| by Furkan Önder. | |
| - bpo-40824: Unexpected errors in calling the ``__iter__`` method are no | |
| longer masked by ``TypeError`` in the :keyword:`in` operator and functions | |
| :func:`~operator.contains`, :func:`~operator.indexOf` and | |
| :func:`~operator.countOf` of the :mod:`operator` module. | |
| - bpo-40792: Attributes ``start``, ``stop`` and ``step`` of the | |
| :class:`range` object now always has exact type :class:`int`. Previously, | |
| they could have been an instance of a subclass of ``int``. | |
| - bpo-40780: Fix a corner case where g-style string formatting of a float | |
| failed to remove trailing zeros. | |
| - bpo-38964: When there's a :exc:`SyntaxError` in the expression part of an | |
| fstring, the filename attribute of the :exc:`SyntaxError` gets correctly | |
| set to the name of the file the fstring resides in. | |
| - bpo-40750: Support the "-d" debug flag in the new PEG parser. Patch by | |
| Pablo Galindo | |
| - bpo-40217: Instances of types created with | |
| :c:func:`PyType_FromSpecWithBases` will no longer automatically visit | |
| their class object when traversing references in the garbage collector. | |
| The user is expected to manually visit the object's class. Patch by Pablo | |
| Galindo. | |
| - bpo-39573: :c:func:`Py_TYPE()` is changed to the inline static function. | |
| Patch by Dong-hee Na. | |
| - bpo-40696: Fix a hang that can arise after :meth:`generator.throw` due to | |
| a cycle in the exception context chain. | |
| - bpo-40521: Each interpreter now its has own free lists, singletons and | |
| caches: | |
| * Free lists: float, tuple, list, dict, frame, context, | |
| asynchronous generator, MemoryError. | |
| * Singletons: empty tuple, empty bytes string, empty Unicode string, | |
| single byte character, single Unicode (latin1) character. | |
| * Slice cache. | |
| They are no longer shared by all interpreters. | |
| - bpo-40679: Certain :exc:`TypeError` messages about missing or extra | |
| arguments now include the function's :term:`qualified name`. Patch by | |
| Dennis Sweeney. | |
| - bpo-29590: Make the stack trace correct after calling | |
| :meth:`generator.throw` on a generator that has yielded from a ``yield | |
| from``. | |
| - bpo-4022: Improve performance of generators by not raising internal | |
| StopIteration. | |
| - bpo-1635741: Port :mod:`mmap` to multiphase initialization. | |
| - bpo-1635741: Port :mod:`_lzma` to multiphase initialization. | |
| - bpo-37999: Builtin and extension functions that take integer arguments no | |
| longer accept :class:`~decimal.Decimal`\ s, :class:`~fractions.Fraction`\ | |
| s and other objects that can be converted to integers only with a loss | |
| (e.g. that have the :meth:`~object.__int__` method but do not have the | |
| :meth:`~object.__index__` method). | |
| - bpo-29882: Add :meth:`int.bit_count()`, counting the number of ones in the | |
| binary representation of an integer. Patch by Niklas Fiekas. | |
| - bpo-36982: Use ncurses extended color functions when available to support | |
| terminals with 256 colors, and add the new function | |
| :func:`curses.has_extended_color_support` to indicate whether extended | |
| color support is provided by the underlying ncurses library. | |
| - bpo-19569: Add the private macros ``_Py_COMP_DIAG_PUSH``, | |
| ``_Py_COMP_DIAG_IGNORE_DEPR_DECLS``, and ``_Py_COMP_DIAG_POP``. | |
| - bpo-26680: The int type now supports the x.is_integer() method for | |
| compatibility with float. | |
| Library | |
| ------- | |
| - bpo-41900: C14N 2.0 serialisation in xml.etree.ElementTree failed for | |
| unprefixed attributes when a default namespace was defined. | |
| - bpo-41887: Strip leading spaces and tabs on :func:`ast.literal_eval`. Also | |
| document stripping of spaces and tabs for :func:`eval`. | |
| - bpo-41773: Note in documentation that :func:`random.choices` doesn't | |
| support non-finite weights, raise :exc:`ValueError` when given non-finite | |
| weights. | |
| - bpo-41840: Fix a bug in the :mod:`symtable` module that was causing | |
| module-scope global variables to not be reported as both local and global. | |
| Patch by Pablo Galindo. | |
| - bpo-41842: Add :func:`codecs.unregister` function to unregister a codec | |
| search function. | |
| - bpo-40564: In ``zipfile.Path``, mutate the passed ZipFile object type | |
| instead of making a copy. Prevents issues when both the local copy and the | |
| caller’s copy attempt to close the same file handle. | |
| - bpo-40670: More reliable validation of statements in | |
| :class:`timeit.Timer`. It now accepts "empty" statements (only whitespaces | |
| and comments) and rejects misindentent statements. | |
| - bpo-41833: The :class:`threading.Thread` constructor now uses the target | |
| name if the *target* argument is specified but the *name* argument is | |
| omitted. | |
| - bpo-41817: fix `tkinter.EventType` Enum so all members are strings, and | |
| none are tuples | |
| - bpo-41810: :data:`types.EllipsisType`, :data:`types.NotImplementedType` | |
| and :data:`types.NoneType` have been reintroduced, providing a new set of | |
| types readily interpretable by static type checkers. | |
| - bpo-41815: Fix SQLite3 segfault when backing up closed database. Patch | |
| contributed by Peter David McCormick. | |
| - bpo-41816: StrEnum added: it ensures that all members are already strings | |
| or string candidates | |
| - bpo-41517: fix bug allowing Enums to be extended via multiple inheritance | |
| - bpo-39587: use the correct mix-in data type when constructing Enums | |
| - bpo-41792: Add is_typeddict function to typing.py to check if a type is a | |
| TypedDict class | |
| Previously there was no way to check that without using private API. See | |
| the `relevant issue in python/typing | |
| <https://github.com/python/typing/issues/751>` | |
| - bpo-41789: Honor `object` overrides in `Enum` class creation | |
| (specifically, `__str__`, `__repr__`, `__format__`, and `__reduce_ex__`). | |
| - bpo-32218: `enum.Flag` and `enum.IntFlag` members are now iterable | |
| - bpo-39651: Fix a race condition in the ``call_soon_threadsafe()`` method | |
| of ``asyncio.ProactorEventLoop``: do nothing if the self-pipe socket has | |
| been closed. | |
| - bpo-1635741: Port the ``mashal`` extension module to the multi-phase | |
| initialization API (:pep:`489`). | |
| - bpo-1635741: Port the ``_string`` extension module to the multi-phase | |
| initialization API (:pep:`489`). | |
| - bpo-41732: Added an :term:`iterator` to :class:`memoryview`. | |
| - bpo-41720: Fixed :meth:`turtle.Vec2D.__rmul__` for arguments which are not | |
| int or float. | |
| - bpo-41696: Fix handling of debug mode in :func:`asyncio.run`. This allows | |
| setting ``PYTHONASYNCIODEBUG`` or ``-X dev`` to enable asyncio debug mode | |
| when using :func:`asyncio.run`. | |
| - bpo-41687: Fix implementation of sendfile to be compatible with Solaris. | |
| - bpo-41662: No longer override exceptions raised in ``__len__()`` of a | |
| sequence of parameters in :mod:`sqlite3` with | |
| :exc:`~sqlite3.ProgrammingError`. | |
| - bpo-39010: Restarting a ``ProactorEventLoop`` on Windows no longer logs | |
| spurious ``ConnectionResetErrors``. | |
| - bpo-41638: :exc:`~sqlite3.ProgrammingError` message for absent parameter | |
| in :mod:`sqlite3` contains now the name of the parameter instead of its | |
| index when parameters are supplied as a dict. | |
| - bpo-41662: Fixed crash when mutate list of parameters during iteration in | |
| :mod:`sqlite3`. | |
| - bpo-41513: Improved the accuracy of math.hypot(). Internally, each step | |
| is computed with extra precision so that the result is now almost always | |
| correctly rounded. | |
| - bpo-41609: The pdb whatis command correctly reports instance methods as | |
| 'Method' rather than 'Function'. | |
| - bpo-39994: Fixed pprint's handling of dict subclasses that override | |
| __repr__. | |
| - bpo-32751: When cancelling the task due to a timeout, | |
| :meth:`asyncio.wait_for` will now wait until the cancellation is complete | |
| also in the case when *timeout* is <= 0, like it does with positive | |
| timeouts. | |
| - bpo-37658: :meth:`asyncio.wait_for` now properly handles races between | |
| cancellation of itself and the completion of the wrapped awaitable. | |
| - bpo-40782: Change the method asyncio.AbstractEventLoop.run_in_executor to | |
| not be a coroutine. | |
| - bpo-41520: Fix :mod:`codeop` regression that prevented turning compile | |
| warnings into errors. | |
| - bpo-41528: turtle uses math module functions to convert degrees to radians | |
| and vice versa and to calculate vector norm | |
| - bpo-41513: Minor algorithmic improvement to math.hypot() and math.dist() | |
| giving small gains in speed and accuracy. | |
| - bpo-41503: Fixed a race between setTarget and flush in | |
| logging.handlers.MemoryHandler. | |
| - bpo-41497: Fix potential UnicodeDecodeError in dis module. | |
| - bpo-41467: On Windows, fix asyncio ``recv_into()`` return value when the | |
| socket/pipe is closed (:exc:`BrokenPipeError`): return ``0`` rather than | |
| an empty byte string (``b''``). | |
| - bpo-41425: Make tkinter doc example runnable. | |
| - bpo-41421: Make an algebraic simplification to random.paretovariate(). It | |
| now is slightly less subject to round-off error and is slightly faster. | |
| Inputs that used to cause ZeroDivisionError now cause an OverflowError | |
| instead. | |
| - bpo-41440: Add :func:`os.cpu_count()` support for VxWorks RTOS. | |
| - bpo-41316: Fix the :mod:`tarfile` module to write only basename of TAR | |
| file to GZIP compression header. | |
| - bpo-41384: Raise TclError instead of TypeError when an unknown option is | |
| passed to tkinter.OptionMenu. | |
| - bpo-41317: Use add_done_callback() in asyncio.loop.sock_accept() to | |
| unsubscribe reader early on cancellation. | |
| - bpo-41364: Reduce import overhead of :mod:`uuid`. | |
| - bpo-35328: Set the environment variable ``VIRTUAL_ENV_PROMPT`` at | |
| :mod:`venv` activation. | |
| - bpo-41341: Recursive evaluation of `typing.ForwardRef` in | |
| `get_type_hints`. | |
| - bpo-41344: Prevent creating :class:`shared_memory.SharedMemory` objects | |
| with :code:`size=0`. | |
| - bpo-41333: :meth:`collections.OrderedDict.pop` is now 2 times faster. | |
| - bpo-41288: Unpickling invalid NEWOBJ_EX opcode with the C implementation | |
| raises now UnpicklingError instead of crashing. | |
| - bpo-39017: Avoid infinite loop when reading specially crafted TAR files | |
| using the tarfile module (CVE-2019-20907). | |
| - bpo-41273: Speed up any transport using ``_ProactorReadPipeTransport`` by | |
| calling ``recv_into`` instead of ``recv``, thus not creating a new buffer | |
| for each ``recv`` call in the transport's read loop. | |
| - bpo-41235: Fix the error handling in | |
| :meth:`ssl.SSLContext.load_dh_params`. | |
| - bpo-41207: In distutils.spawn, restore expectation that DistutilsExecError | |
| is raised when the command is not found. | |
| - bpo-29727: Register :class:`array.array` as a | |
| :class:`~collections.abc.MutableSequence`. Patch by Pablo Galindo. | |
| - bpo-39168: Remove the ``__new__`` method of :class:`typing.Generic`. | |
| - bpo-41194: Fix a crash in the ``_ast`` module: it can no longer be loaded | |
| more than once. It now uses a global state rather than a module state. | |
| - bpo-41195: Add read-only ssl.SSLContext.security_level attribute to | |
| retrieve the context's security level. | |
| - bpo-41193: The ``write_history()`` atexit function of the readline | |
| completer now ignores any :exc:`OSError` to ignore error if the filesystem | |
| is read-only, instead of only ignoring :exc:`FileNotFoundError` and | |
| :exc:`PermissionError`. | |
| - bpo-41182: selector: use DefaultSelector based upon implementation | |
| - bpo-41161: The decimal module now requires libmpdec-2.5.0. Users of | |
| --with-system-libmpdec should update their system library. | |
| - bpo-40874: The decimal module now requires libmpdec-2.5.0. | |
| - bpo-41138: Fixed the :mod:`trace` module CLI for Python source files with | |
| non-UTF-8 encoding. | |
| - bpo-31082: Use the term "iterable" in the docstring for | |
| :func:`functools.reduce`. | |
| - bpo-40521: Remove freelist from collections.deque(). | |
| - bpo-31938: Fix default-value signatures of several functions in the | |
| :mod:`select` module - by Anthony Sottile. | |
| - bpo-41068: Fixed reading files with non-ASCII names from ZIP archive | |
| directly after writing them. | |
| - bpo-41058: :func:`pdb.find_function` now correctly determines the source | |
| file encoding. | |
| - bpo-41056: Invalid file descriptor values are now prevented from being | |
| passed to os.fpathconf. (discovered by Coverity) | |
| - bpo-41056: Fix a NULL pointer dereference within the ssl module during a | |
| MemoryError in the keylog callback. (discovered by Coverity) | |
| - bpo-41056: Fixed an instance where a MemoryError within the zoneinfo | |
| module might not be reported or not reported at its source. (found by | |
| Coverity) | |
| - bpo-41048: :func:`mimetypes.read_mime_types` function reads the rule file | |
| using UTF-8 encoding, not the locale encoding. Patch by Srinivas Reddy | |
| Thatiparthy. | |
| - bpo-41043: Fixed the use of :func:`~glob.glob` in the stdlib: literal part | |
| of the path is now always correctly escaped. | |
| - bpo-41025: Fixed an issue preventing the C implementation of | |
| :class:`zoneinfo.ZoneInfo` from being subclassed. | |
| - bpo-35018: Add the :class:`xml.sax.handler.LexicalHandler` class that is | |
| present in other SAX XML implementations. | |
| - bpo-41002: Improve performance of HTTPResponse.read with a given amount. | |
| Patch by Bruce Merry. | |
| - bpo-40448: :mod:`ensurepip` now disables the use of `pip` cache when | |
| installing the bundled versions of `pip` and `setuptools`. Patch by | |
| Krzysztof Konopko. | |
| - bpo-40967: Removed :meth:`asyncio.Task.current_task` and | |
| :meth:`asyncio.Task.all_tasks`. Patch contributed by Rémi Lapeyre. | |
| - bpo-40924: Ensure ``importlib.resources.path`` returns an extant path for | |
| the SourceFileLoader's resource reader. Avoids the regression identified | |
| in master while a long-term solution is devised. | |
| - bpo-40955: Fix a minor memory leak in :mod:`subprocess` module when | |
| extra_groups was specified. | |
| - bpo-40855: The standard deviation and variance functions in the statistics | |
| module were ignoring their mu and xbar arguments. | |
| - bpo-40939: Use the new PEG parser when generating the stdlib | |
| :mod:`keyword` module. | |
| - bpo-23427: Add :data:`sys.orig_argv` attribute: the list of the original | |
| command line arguments passed to the Python executable. | |
| - bpo-33689: Ignore empty or whitespace-only lines in .pth files. This | |
| matches the documentated behavior. Before, empty lines caused the | |
| site-packages dir to appear multiple times in sys.path. By Ido Michael, | |
| contributors Malcolm Smith and Tal Einat. | |
| - bpo-40884: Added a `defaults` parameter to :class:`logging.Formatter`, to | |
| allow specifying default values for custom fields. Patch by Asaf Alon and | |
| Bar Harel. | |
| - bpo-40876: Clarify error message in the :mod:`csv` module. | |
| - bpo-39791: Refresh importlib.metadata from importlib_metadata 1.6.1. | |
| - bpo-40807: Stop codeop._maybe_compile, used by code.InteractiveInterpreter | |
| (and IDLE). from emitting each warning three times. | |
| - bpo-32604: Fix reference leak in the :mod:`select` module when the module | |
| is imported in a subinterpreter. | |
| - bpo-39791: Built-in loaders (SourceFileLoader and ZipImporter) now supply | |
| ``TraversableResources`` implementations for ``ResourceReader``, and the | |
| fallback function has been removed. | |
| - bpo-39314: :class:`rlcompleter.Completer` and the standard Python shell | |
| now close the parenthesis for functions that take no arguments. Patch | |
| contributed by Rémi Lapeyre. | |
| - bpo-17005: The topological sort functionality that was introduced | |
| initially in the :mod:`functools` module has been moved to a new | |
| :mod:`graphlib` module to better accommodate the new tools and keep the | |
| original scope of the :mod:`functools` module. Patch by Pablo Galindo | |
| - bpo-40834: Fix truncate when sending str object | |
| with_xxsubinterpreters.channel_send. | |
| - bpo-40755: Add rich comparisons to collections.Counter(). | |
| - bpo-26407: Unexpected errors in calling the ``__iter__`` method are no | |
| longer masked by ``TypeError`` in :func:`csv.reader`, | |
| :func:`csv.writer.writerow` and :meth:`csv.writer.writerows`. | |
| - bpo-39384: Fixed email.contentmanager to allow set_content() to set a null | |
| string. | |
| - bpo-40744: The :mod:`sqlite3` module uses SQLite API functions that | |
| require SQLite v3.7.3 or higher. This patch removes support for older | |
| SQLite versions, and explicitly requires SQLite 3.7.3 both at build, | |
| compile and runtime. Patch by Sergey Fedoseev and Erlend E. Aasland. | |
| - bpo-40777: Initialize PyDateTime_IsoCalendarDateType.tp_base at run-time | |
| to avoid errors on some compilers. | |
| - bpo-38488: Update ensurepip to install pip 20.1.1 and setuptools 47.1.0. | |
| - bpo-40792: The result of :func:`operator.index` now always has exact type | |
| :class:`int`. Previously, the result could have been an instance of a | |
| subclass of ``int``. | |
| - bpo-40767: :mod:`webbrowser` now properly finds the default browser in | |
| pure Wayland systems by checking the WAYLAND_DISPLAY environment variable. | |
| Patch contributed by Jérémy Attali. | |
| - bpo-40791: :func:`hashlib.compare_digest` uses OpenSSL's | |
| ``CRYPTO_memcmp()`` function when OpenSSL is available. | |
| - bpo-40795: :mod:`ctypes` module: If ctypes fails to convert the result of | |
| a callback or if a ctypes callback function raises an exception, | |
| sys.unraisablehook is now called with an exception set. Previously, the | |
| error was logged into stderr by :c:func:`PyErr_Print`. | |
| - bpo-16995: Add :func:`base64.b32hexencode` and :func:`base64.b32hexdecode` | |
| to support the Base32 Encoding with Extended Hex Alphabet. | |
| - bpo-30008: Fix :mod:`ssl` code to be compatible with OpenSSL 1.1.x builds | |
| that use ``no-deprecated`` and ``--api=1.1.0``. | |
| - bpo-30064: Fix asyncio ``loop.sock_*`` race condition issue | |
| - bpo-40759: Deprecate the :mod:`symbol` module. | |
| - bpo-40756: The second argument (extra) of ``LoggerAdapter.__init__`` now | |
| defaults to None. | |
| - bpo-37129: Add a new :data:`os.RWF_APPEND` flag for :func:`os.pwritev`. | |
| - bpo-40737: Fix possible reference leak for :mod:`sqlite3` initialization. | |
| - bpo-40726: Handle cases where the ``end_lineno`` is ``None`` on | |
| :func:`ast.increment_lineno`. | |
| - bpo-40698: :mod:`distutils` upload creates SHA2-256 and Blake2b-256 | |
| digests. MD5 digests is skipped if platform blocks MD5. | |
| - bpo-40695: :mod:`hashlib` no longer falls back to builtin hash | |
| implementations when OpenSSL provides a hash digest and the algorithm is | |
| blocked by security policy. | |
| - bpo-9216: func:`hashlib.new` passed ``usedforsecurity`` to OpenSSL EVP | |
| constructor ``_hashlib.new()``. test_hashlib and test_smtplib handle | |
| strict security policy better. | |
| - bpo-40614: :func:`ast.parse` will not parse self documenting expressions | |
| in f-strings when passed ``feature_version`` is less than ``(3, 8)``. | |
| - bpo-40626: Add h5 file extension as MIME Type application/x-hdf5, as per | |
| HDF Group recommendation for HDF5 formatted data files. Patch contributed | |
| by Mark Schwab. | |
| - bpo-25920: On macOS, when building Python for macOS 10.4 and older, which | |
| wasn't the case for python.org macOS installer, :func:`socket.getaddrinfo` | |
| no longer uses an internal lock to prevent race conditions when calling | |
| ``getaddrinfo()`` which is thread-safe since macOS 10.5. Python 3.9 | |
| requires macOS 10.6 or newer. The internal lock caused random hang on fork | |
| when another thread was calling :func:`socket.getaddrinfo`. The lock was | |
| also used on FreeBSD older than 5.3, OpenBSD older than 201311 and NetBSD | |
| older than 4. | |
| - bpo-40671: Prepare ``_hashlib`` for :pep:`489` and use | |
| :c:func:`PyModule_AddType`. | |
| - bpo-32309: Added a new :term:`coroutine` :func:`asyncio.to_thread`. It is | |
| mainly used for running IO-bound functions in a separate thread to avoid | |
| blocking the event loop, and essentially works as a high-level version of | |
| :meth:`~asyncio.loop.run_in_executor` that can directly take keyword | |
| arguments. | |
| - bpo-36543: Restored the deprecated :mod:`xml.etree.cElementTree` module. | |
| - bpo-40611: :data:`~mmap.MAP_POPULATE` constant has now been added to the | |
| list of exported :mod:`mmap` module flags. | |
| - bpo-39881: PEP 554 for use in the test suite. (Patch By Joannah Nanjekye) | |
| - bpo-13097: ``ctypes`` now raises an ``ArgumentError`` when a callback is | |
| invoked with more than 1024 arguments. | |
| - bpo-39385: A new test assertion context-manager, | |
| :func:`unittest.assertNoLogs` will ensure a given block of code emits no | |
| log messages using the logging module. Contributed by Kit Yan Choi. | |
| - bpo-23082: Updated the error message and docs of PurePath.relative_to() to | |
| better reflect the function behaviour. | |
| - bpo-40318: Use SQLite3 trace v2 API, if it is available. | |
| - bpo-40105: ZipFile truncates files to avoid corruption when a shorter | |
| comment is provided in append ("a") mode. Patch by Jan Mazur. | |
| - bpo-40084: Fix ``Enum.__dir__``: dir(Enum.member) now includes attributes | |
| as well as methods. | |
| - bpo-31122: ssl.wrap_socket() now raises ssl.SSLEOFError rather than | |
| OSError when peer closes connection during TLS negotiation | |
| - bpo-39728: fix default `_missing_` so a duplicate `ValueError` is not set | |
| as the `__context__` of the original `ValueError` | |
| - bpo-39244: Fixed :class:`multiprocessing.context.get_all_start_methods` to | |
| properly return the default method first on macOS. | |
| - bpo-39040: Fix parsing of invalid mime headers parameters by collapsing | |
| whitespace between encoded words in a bare-quote-string. | |
| - bpo-38731: Add ``--quiet`` option to command-line interface of | |
| :mod:`py_compile`. Patch by Gregory Schevchenko. | |
| - bpo-35714: :exc:`struct.error` is now raised if there is a null character | |
| in a :mod:`struct` format string. | |
| - bpo-38144: Added the *root_dir* and *dir_fd* parameters in | |
| :func:`glob.glob`. | |
| - bpo-26543: Fix :meth:`IMAP4.noop()` when debug mode is enabled (ex: | |
| ``imaplib.Debug = 3``). | |
| - bpo-12178: :func:`csv.writer` now correctly escapes *escapechar* when | |
| input contains *escapechar*. Patch by Catalin Iacob, Berker Peksag, and | |
| Itay Elbirt. | |
| - bpo-36290: AST nodes are now raising :exc:`TypeError` on conflicting | |
| keyword arguments. Patch contributed by Rémi Lapeyre. | |
| - bpo-33944: Added site.py site-packages tracing in verbose mode. | |
| - bpo-35078: Refactor formatweekday, formatmonthname methods in | |
| LocaleHTMLCalendar and LocaleTextCalendar classes in calendar module to | |
| call the base class methods.This enables customizable CSS classes for | |
| LocaleHTMLCalendar. Patch by Srinivas Reddy Thatiparthy | |
| - bpo-29620: :func:`~unittest.TestCase.assertWarns` no longer raises a | |
| ``RuntimeException`` when accessing a module's ``__warningregistry__`` | |
| causes importation of a new module, or when a new module is imported in | |
| another thread. Patch by Kernc. | |
| - bpo-31844: Remove ``ParserBase.error()`` method from the private and | |
| undocumented ``_markupbase`` module. :class:`html.parser.HTMLParser` is | |
| the only subclass of ``ParserBase`` and its ``error()`` implementation was | |
| deprecated in Python 3.4 and removed in Python 3.5. | |
| - bpo-34226: Fix `cgi.parse_multipart` without content_length. Patch by | |
| Roger Duran | |
| - bpo-33660: Fix pathlib.PosixPath to resolve a relative path located on the | |
| root directory properly. | |
| - bpo-28557: Improve the error message for a misbehaving ``rawio.readinto`` | |
| - bpo-26680: The d.is_integer() method is added to the Decimal type, for | |
| compatibility with other number types. | |
| - bpo-26680: The x.is_integer() method is incorporated into the abstract | |
| types of the numeric tower, Real, Rational and Integral, with appropriate | |
| default implementations. | |
| Documentation | |
| ------------- | |
| - bpo-41428: Add documentation for :pep:`604` (Allow writing union types as | |
| ``X | Y``). | |
| - bpo-41774: In Programming FAQ "Sequences (Tuples/Lists)" section, add "How | |
| do you remove multiple items from a list". | |
| - bpo-35293: Fix RemovedInSphinx40Warning when building the documentation. | |
| Patch by Dong-hee Na. | |
| - bpo-37149: Change Shipman tkinter doc link from archive.org to TkDocs. | |
| (The doc has been removed from the NMT server.) The new link responds | |
| much faster and includes a short explanatory note. | |
| - bpo-41726: Update the refcounts info of ``PyType_FromModuleAndSpec``. | |
| - bpo-41624: Fix the signature of :class:`typing.Coroutine`. | |
| - bpo-40204: Enable Sphinx 3.2 ``c_allow_pre_v3`` option and disable | |
| ``c_warn_on_allowed_pre_v3`` option to make the documentation compatible | |
| with Sphinx 2 and Sphinx 3. | |
| - bpo-41045: Add documentation for debug feature of f-strings. | |
| - bpo-41314: Changed the release when ``from __future__ import annotations`` | |
| becomes the default from ``4.0`` to ``3.10`` (following a change in PEP | |
| 563). | |
| - bpo-40979: Refactored typing.rst, arranging more than 70 classes, | |
| functions, and decorators into new sub-sections. | |
| - bpo-40552: Fix in tutorial section 4.2. Code snippet is now correct. | |
| - bpo-39883: Make code, examples, and recipes in the Python documentation be | |
| licensed under the more permissive BSD0 license in addition to the | |
| existing Python 2.0 license. | |
| - bpo-37703: Updated Documentation to comprehensively elaborate on the | |
| behaviour of gather.cancel() | |
| Tests | |
| ----- | |
| - bpo-41939: Fix test_site.test_license_exists_at_url(): call | |
| ``urllib.request.urlcleanup()`` to reset the global | |
| ``urllib.request._opener``. Patch by Victor Stinner. | |
| - bpo-41731: Make test_cmd_line_script pass with option '-vv'. | |
| - bpo-41602: Add tests for SIGINT handling in the runpy module. | |
| - bpo-41521: :mod:`test.support`: Rename ``blacklist`` parameter of | |
| :func:`~test.support.check__all__` to ``not_exported``. | |
| - bpo-41477: Make ctypes optional in test_genericalias. | |
| - bpo-41085: Fix integer overflow in the :meth:`array.array.index` method on | |
| 64-bit Windows for index larger than ``2**31``. | |
| - bpo-41069: :data:`test.support.TESTFN` and the current directory for tests | |
| when run via ``test.regrtest`` contain now non-ascii characters if | |
| possible. | |
| - bpo-38377: On Linux, skip tests using multiprocessing if the current user | |
| cannot create a file in ``/dev/shm/`` directory. Add the | |
| :func:`~test.support.skip_if_broken_multiprocessing_synchronize` function | |
| to the :mod:`test.support` module. | |
| - bpo-41009: Fix use of ``support.require_{linux|mac|freebsd}_version()`` | |
| decorators as class decorator. | |
| - bpo-41003: Fix ``test_copyreg`` when ``numpy`` is installed: | |
| ``test.pickletester`` now saves/restores warnings filters when importing | |
| ``numpy``, to ignore filters installed by ``numpy``. | |
| - bpo-40964: Disable remote :mod:`imaplib` tests, host cyrus.andrew.cmu.edu | |
| is blocking incoming connections. | |
| - bpo-40927: Fix test_binhex when run twice: it now uses | |
| import_fresh_module() to ensure that it raises DeprecationWarning each | |
| time. | |
| - bpo-17258: Skip some :mod:`multiprocessing` tests when MD5 hash digest is | |
| blocked. | |
| - bpo-31904: Increase LOOPBACK_TIMEOUT to 10 for VxWorks RTOS. | |
| - bpo-38169: Increase code coverage for SharedMemory and ShareableList | |
| - bpo-34401: Make test_gdb properly run on HP-UX. Patch by Michael Osipov. | |
| Build | |
| ----- | |
| - bpo-38249: Update :c:macro:`Py_UNREACHABLE` to use __builtin_unreachable() | |
| if only the compiler is able to use it. Patch by Dong-hee Na. | |
| - bpo-41617: Fix ``pycore_bitutils.h`` header file to support old clang | |
| versions: ``__builtin_bswap16()`` is not available in LLVM clang 3.0. | |
| - bpo-40204: Pin Sphinx version to 2.3.1 in ``Doc/Makefile``. | |
| - bpo-36020: The C99 functions :c:func:`snprintf` and :c:func:`vsnprintf` | |
| are now required to build Python. | |
| - bpo-40684: ``make install`` now uses the ``PLATLIBDIR`` variable for the | |
| destination ``lib-dynload/`` directory when ``./configure | |
| --with-platlibdir`` is used. | |
| - bpo-40683: Fixed an issue where the :mod:`zoneinfo` module and its tests | |
| were not included when Python is installed with ``make``. | |
| Windows | |
| ------- | |
| - bpo-41744: Fixes automatic import of props file when using the Nuget | |
| package. | |
| - bpo-41627: The user site directory for 32-bit now includes a ``-32`` | |
| suffix to distinguish it from the 64-bit interpreter's directory. | |
| - bpo-41526: Fixed layout of final page of the installer by removing the | |
| special thanks to Mark Hammond (with his permission). | |
| - bpo-41492: Fixes the description that appears in UAC prompts. | |
| - bpo-40948: Improve post-install message to direct people to the "py" | |
| command. | |
| - bpo-41412: The installer will now fail to install on Windows 7 and Windows | |
| 8. Further, the UCRT dependency is now always downloaded on demand. | |
| - bpo-40741: Update Windows release to include SQLite 3.32.3. | |
| - bpo-41142: :mod:`msilib` now supports creating CAB files with non-ASCII | |
| file path and adding files with non-ASCII file path to them. | |
| - bpo-41074: Fixed support of non-ASCII names in functions | |
| :func:`msilib.OpenDatabase` and :func:`msilib.init_database` and non-ASCII | |
| SQL in method :meth:`msilib.Database.OpenView`. | |
| - bpo-41039: Stable ABI redirection DLL (python3.dll) now uses ``#pragma | |
| comment(linker)`` for re-exporting. | |
| - bpo-40164: Updates Windows OpenSSL to 1.1.1g | |
| - bpo-39631: Changes the registered MIME type for ``.py`` files on Windows | |
| to ``text/x-python`` instead of ``text/plain``. | |
| - bpo-40677: Manually define IO_REPARSE_TAG_APPEXECLINK in case some old | |
| Windows SDK doesn't have it. | |
| - bpo-37556: Extend py.exe help to mention overrides via venv, shebang, | |
| environmental variables & ini files. | |
| macOS | |
| ----- | |
| - bpo-41557: Update macOS installer to use SQLite 3.33.0. | |
| - bpo-39580: Avoid opening Finder window if running installer from the | |
| command line. Patch contributed by Rick Heil. | |
| - bpo-41100: Fix configure error when building on macOS 11. Note that the | |
| current Python release was released shortly after the first developer | |
| preview of macOS 11 (Big Sur); there are other known issues with building | |
| and running on the developer preview. Big Sur is expected to be fully | |
| supported in a future bugfix release of Python 3.8.x and with 3.9.0. | |
| - bpo-40741: Update macOS installer to use SQLite 3.32.3. | |
| - bpo-41005: fixed an XDG settings issue not allowing macos to open browser | |
| in webbrowser.py | |
| - bpo-40741: Update macOS installer to use SQLite 3.32.2. | |
| IDLE | |
| ---- | |
| - bpo-41775: Use 'IDLE Shell' as shell title | |
| - bpo-35764: Rewrite the Calltips doc section. | |
| - bpo-40181: In calltips, stop reminding that '/' marks the end of | |
| positional-only arguments. | |
| - bpo-41468: Improve IDLE run crash error message (which users should never | |
| see). | |
| - bpo-41373: Save files loaded with no line ending, as when blank, or | |
| different line endings, by setting its line ending to the system default. | |
| Fix regression in 3.8.4 and 3.9.0b4. | |
| - bpo-41300: Save files with non-ascii chars. Fix regression released in | |
| 3.9.0b4 and 3.8.4. | |
| - bpo-37765: Add keywords to module name completion list. Rewrite | |
| Completions section of IDLE doc. | |
| - bpo-41152: The encoding of ``stdin``, ``stdout`` and ``stderr`` in IDLE is | |
| now always UTF-8. | |
| - bpo-41144: Make Open Module open a special module such as os.path. | |
| - bpo-39885: Make context menu Cut and Copy work again when right-clicking | |
| within a selection. | |
| - bpo-40723: Make test_idle pass when run after import. | |
| C API | |
| ----- | |
| - bpo-41936: Removed undocumented macros ``Py_ALLOW_RECURSION`` and | |
| ``Py_END_ALLOW_RECURSION`` and the ``recursion_critical`` field of the | |
| :c:type:`PyInterpreterState` structure. | |
| - bpo-41692: The ``PyUnicode_InternImmortal()`` function is now deprecated | |
| and will be removed in Python 3.12: use :c:func:`PyUnicode_InternInPlace` | |
| instead. Patch by Victor Stinner. | |
| - bpo-41842: Add :c:func:`PyCodec_Unregister` function to unregister a codec | |
| search function. | |
| - bpo-41834: Remove the ``_Py_CheckRecursionLimit`` variable: it has been | |
| replaced by ``ceval.recursion_limit`` of the :c:type:`PyInterpreterState` | |
| structure. Patch by Victor Stinner. | |
| - bpo-41689: Types created with :c:func:`PyType_FromSpec` now make any | |
| signature in their ``tp_doc`` slot accessible from ``__text_signature__``. | |
| - bpo-41524: Fix bug in PyOS_mystrnicmp and PyOS_mystricmp that incremented | |
| pointers beyond the end of a string. | |
| - bpo-41324: Add a minimal decimal capsule API. The API supports fast | |
| conversions between Decimals up to 38 digits and their triple | |
| representation as a C struct. | |
| - bpo-30155: Add :c:func:`PyDateTime_DATE_GET_TZINFO` and | |
| :c:func:`PyDateTime_TIME_GET_TZINFO` macros for accessing the ``tzinfo`` | |
| attributes of :class:`datetime.datetime` and :class:`datetime.time` | |
| objects. | |
| - bpo-40170: Revert :c:func:`PyType_HasFeature` change: it reads again | |
| directly the :c:member:`PyTypeObject.tp_flags` member when the limited C | |
| API is not used, rather than always calling :c:func:`PyType_GetFlags` | |
| which hides implementation details. | |
| - bpo-41123: Remove ``PyUnicode_AsUnicodeCopy``. | |
| - bpo-41123: Removed ``PyLong_FromUnicode()``. | |
| - bpo-41123: Removed ``PyUnicode_GetMax()``. | |
| - bpo-41123: Removed ``Py_UNICODE_str*`` functions manipulating | |
| ``Py_UNICODE*`` strings. | |
| - bpo-41103: ``PyObject_AsCharBuffer()``, ``PyObject_AsReadBuffer()``, | |
| ``PyObject_CheckReadBuffer()``, and ``PyObject_AsWriteBuffer()`` are | |
| removed. Please migrate to new buffer protocol; | |
| :c:func:`PyObject_GetBuffer` and :c:func:`PyBuffer_Release`. | |
| - bpo-36346: Raises DeprecationWarning for ``PyUnicode_FromUnicode(NULL, | |
| size)`` and ``PyUnicode_FromStringAndSize(NULL, size)`` with ``size > 0``. | |
| - bpo-36346: Mark ``Py_UNICODE_COPY``, ``Py_UNICODE_FILL``, | |
| ``PyUnicode_WSTR_LENGTH``, ``PyUnicode_FromUnicode``, | |
| ``PyUnicode_AsUnicode``, and ``PyUnicode_AsUnicodeAndSize`` as deprecated | |
| in C. Remove ``Py_UNICODE_MATCH`` which was deprecated and broken since | |
| Python 3.3. | |
| - bpo-40989: The :c:func:`PyObject_INIT` and :c:func:`PyObject_INIT_VAR` | |
| macros become aliases to, respectively, :c:func:`PyObject_Init` and | |
| :c:func:`PyObject_InitVar` functions. | |
| - bpo-36020: On Windows, ``#include "pyerrors.h"`` no longer defines | |
| ``snprintf`` and ``vsnprintf`` macros. | |
| - bpo-40943: The ``PY_SSIZE_T_CLEAN`` macro must now be defined to use | |
| :c:func:`PyArg_ParseTuple` and :c:func:`Py_BuildValue` formats which use | |
| ``#``: ``es#``, ``et#``, ``s#``, ``u#``, ``y#``, ``z#``, ``U#`` and | |
| ``Z#``. See :ref:`Parsing arguments and building values <arg-parsing>` and | |
| the :pep:`353`. | |
| - bpo-40910: Export explicitly the :c:func:`Py_GetArgcArgv` function to the | |
| C API and document the function. Previously, it was exported implicitly | |
| which no longer works since Python is built with ``-fvisibility=hidden``. | |
| - bpo-40724: Allow defining buffer slots in type specs. | |
| - bpo-40679: Fix a ``_PyEval_EvalCode()`` crash if *qualname* argument is | |
| NULL. | |
| - bpo-40839: Calling :c:func:`PyDict_GetItem` without :term:`GIL` held had | |
| been allowed for historical reason. It is no longer allowed. | |
| - bpo-40826: :c:func:`PyOS_InterruptOccurred` now fails with a fatal error | |
| if it is called with the GIL released. | |
| - bpo-40792: The result of :c:func:`PyNumber_Index` now always has exact | |
| type :class:`int`. Previously, the result could have been an instance of a | |
| subclass of ``int``. | |
| - bpo-39573: Convert :c:func:`Py_REFCNT` and :c:func:`Py_SIZE` macros to | |
| static inline functions. They cannot be used as l-value anymore: use | |
| :c:func:`Py_SET_REFCNT` and :c:func:`Py_SET_SIZE` to set an object | |
| reference count and size. This change is backward incompatible on purpose, | |
| to prepare the C API for an opaque :c:type:`PyObject` structure. | |
| - bpo-40703: The PyType_FromSpec*() functions no longer overwrite the type's | |
| "__module__" attribute if it is set via "Py_tp_members" or "Py_tp_getset". | |
| - bpo-39583: Remove superfluous "extern C" declarations from | |
| ``Include/cpython/*.h``. | |
| What's New in Python 3.9.0 beta 1? | |
| ================================== | |
| *Release date: 2020-05-19* | |
| Security | |
| -------- | |
| - bpo-40501: :mod:`uuid` no longer uses :mod:`ctypes` to load | |
| :file:`libuuid` or :file:`rpcrt4.dll` at runtime. | |
| Core and Builtins | |
| ----------------- | |
| - bpo-40663: Correctly generate annotations where parentheses are omitted | |
| but required (e.g: ``Type[(str, int, *other))]``. | |
| - bpo-40596: Fixed :meth:`str.isidentifier` for non-canonicalized strings | |
| containing non-BMP characters on Windows. | |
| - bpo-40593: Improved syntax errors for invalid characters in source code. | |
| - bpo-40585: Fixed a bug when using :func:`codeop.compile_command` that was | |
| causing exceptions to be swallowed with the new parser. Patch by Pablo | |
| Galindo | |
| - bpo-40566: Apply :pep:`573` to :mod:`abc`. | |
| - bpo-40502: Initialize ``n->n_col_offset``. (Patch by Joannah Nanjekye) | |
| - bpo-40527: Fix command line argument parsing: no longer write errors | |
| multiple times into stderr. | |
| - bpo-1635741: Port :mod:`errno` to multiphase initialization (:pep:`489`). | |
| - bpo-40523: Add pass-throughs for :func:`hash` and :func:`reversed` to | |
| :class:`weakref.proxy` objects. Patch by Pablo Galindo. | |
| - bpo-1635741: Port :mod:`syslog` to multiphase initialization (:pep:`489`). | |
| - bpo-40246: Reporting a specialised error message for invalid string | |
| prefixes, which was introduced in :issue:`40246`, is being reverted due to | |
| backwards compatibility concerns for strings that immediately follow a | |
| reserved keyword without whitespace between them. Constructs like | |
| `bg="#d00" if clear else"#fca"` were failing to parse, which is not an | |
| acceptable breakage on such short notice. | |
| - bpo-40417: Fix imp module deprecation warning when PyImport_ReloadModule | |
| is called. Patch by Robert Rouhani. | |
| - bpo-40408: Fixed support of nested type variables in GenericAlias (e.g. | |
| ``list[list[T]]``). | |
| - bpo-1635741: Port _stat module to multiphase initialization (:pep:`489`). | |
| - bpo-29587: Enable implicit exception chaining when calling | |
| :meth:`generator.throw`. | |
| - bpo-40328: Add tools for generating mappings headers for CJKCodecs. | |
| - bpo-40228: Setting frame.f_lineno is now robust w.r.t. changes in the | |
| source-to-bytecode compiler | |
| - bpo-38880: Added the ability to list interpreters associated with channel | |
| ends in the internal subinterpreters module. | |
| - bpo-37986: Improve performance of :c:func:`PyLong_FromDouble` for values | |
| that fit into :c:expr:`long`. | |
| Library | |
| ------- | |
| - bpo-40662: Fixed :func:`ast.get_source_segment` for ast nodes that have | |
| incomplete location information. Patch by Irit Katriel. | |
| - bpo-40665: Convert :mod:`bisect` to use Argument Clinic. | |
| - bpo-40536: Added the :func:`~zoneinfo.available_timezones` function to the | |
| :mod:`zoneinfo` module. Patch by Paul Ganssle. | |
| - bpo-40645: The :class:`hmac.HMAC` exposes internal implementation details. | |
| The attributes ``digest_cons``, ``inner``, and ``outer`` are deprecated | |
| and will be removed in the future. | |
| - bpo-40645: The internal module ``_hashlib`` wraps and exposes OpenSSL's | |
| HMAC API. The new code will be used in Python 3.10 after the internal | |
| implementation details of the pure Python HMAC module are no longer part | |
| of the public API. | |
| - bpo-40637: Builtin hash modules can now be disabled or selectively enabled | |
| with ``configure --with-builtin-hashlib-hashes=sha3,blake1`` or | |
| ``--without-builtin-hashlib-hashes``. | |
| - bpo-37630: The :mod:`hashlib` module can now use SHA3 hashes and SHAKE XOF | |
| from OpenSSL when available. | |
| - bpo-40479: The :mod:`hashlib` now compiles with OpenSSL 3.0.0-alpha2. | |
| - bpo-40257: Revert changes to :func:`inspect.getdoc`. | |
| - bpo-40607: When cancelling a task due to timeout, :meth:`asyncio.wait_for` | |
| will now propagate the exception if an error happens during cancellation. | |
| Patch by Roman Skurikhin. | |
| - bpo-40612: Fix edge cases in SyntaxError formatting. If the offset is <= | |
| 0, no caret is printed. If the offset is > line length, the caret is | |
| printed pointing just after the last character. | |
| - bpo-40597: If text content lines are longer than policy.max_line_length, | |
| always use a content-encoding to make sure they are wrapped. | |
| - bpo-40571: Added functools.cache() as a simpler, more discoverable way to | |
| access the unbounded cache variant of lru_cache(maxsize=None). | |
| - bpo-40503: :pep:`615`, the :mod:`zoneinfo` module. Adds support for the | |
| IANA time zone database. | |
| - bpo-40397: Removed attributes ``__args__`` and ``__parameters__`` from | |
| special generic aliases like ``typing.List`` (not subscripted). | |
| - bpo-40549: Convert posixmodule.c ("posix" or "nt" module) to the | |
| multiphase initialization (PEP 489). | |
| - bpo-31033: Add a ``msg`` argument to :meth:`Future.cancel` and | |
| :meth:`Task.cancel`. | |
| - bpo-40541: Added an optional *counts* parameter to random.sample(). | |
| - bpo-40515: The :mod:`ssl` and :mod:`hashlib` modules now actively check | |
| that OpenSSL is build with thread support. Python 3.7.0 made thread | |
| support mandatory and no longer works safely with a no-thread builds. | |
| - bpo-31033: When a :class:`asyncio.Task` is cancelled, the exception | |
| traceback now chains all the way back to where the task was first | |
| interrupted. | |
| - bpo-40504: :func:`functools.lru_cache` objects can now be the targets of | |
| weakrefs. | |
| - bpo-40559: Fix possible memory leak in the C implementation of | |
| :class:`asyncio.Task`. | |
| - bpo-40480: ``fnmatch.fnmatch()`` could take exponential time in the | |
| presence of multiple ``*`` pattern characters. This was repaired by | |
| generating more elaborate regular expressions to avoid futile | |
| backtracking. | |
| - bpo-40495: :mod:`compileall` is now able to use hardlinks to prevent | |
| duplicates in a case when ``.pyc`` files for different optimization levels | |
| have the same content. | |
| - bpo-40457: The ssl module now support OpenSSL builds without TLS 1.0 and | |
| 1.1 methods. | |
| - bpo-40355: Improve error reporting in :func:`ast.literal_eval` in the | |
| presence of malformed :class:`ast.Dict` nodes instead of silently ignoring | |
| any non-conforming elements. Patch by Curtis Bucher. | |
| - bpo-40465: Deprecated the optional *random* argument to | |
| *random.shuffle()*. | |
| - bpo-40459: :func:`platform.win32_ver` now produces correct *ptype* strings | |
| instead of empty strings. | |
| - bpo-39435: The first argument of :func:`pickle.loads` is now | |
| positional-only. | |
| - bpo-39305: Update :mod:`nntplib` to merge :class:`nntplib.NNTP` and | |
| :class:`nntplib._NNTPBase`. Patch by Dong-hee Na. | |
| - bpo-32494: Update :mod:`dbm.gnu` to use gdbm_count if possible when | |
| calling :func:`len`. Patch by Dong-hee Na. | |
| - bpo-40453: Add ``isolated=True`` keyword-only parameter to | |
| ``_xxsubinterpreters.create()``. An isolated subinterpreter cannot spawn | |
| threads, spawn a child process or call ``os.fork()``. | |
| - bpo-40286: Remove ``_random.Random.randbytes()``: the C implementation of | |
| ``randbytes()``. Implement the method in Python to ease subclassing: | |
| ``randbytes()`` now directly reuses ``getrandbits()``. | |
| - bpo-40394: Added default arguments to | |
| :meth:`difflib.SequenceMatcher.find_longest_match()`. | |
| - bpo-39995: Fix a race condition in concurrent.futures._ThreadWakeup: | |
| access to _ThreadWakeup is now protected with the shutdown lock. | |
| - bpo-30966: ``Process.shutdown(wait=True)`` of :mod:`concurrent.futures` | |
| now closes explicitly the result queue. | |
| - bpo-30966: Add a new :meth:`~multiprocessing.SimpleQueue.close` method to | |
| the :class:`~multiprocessing.SimpleQueue` class to explicitly close the | |
| queue. | |
| - bpo-39966: Revert bpo-25597. :class:`unittest.mock.MagicMock` with wraps' | |
| set uses default return values for magic methods. | |
| - bpo-39791: Added ``files()`` function to importlib.resources with support | |
| for subdirectories in package data, matching backport in | |
| importlib_resources 1.5. | |
| - bpo-40375: :meth:`imaplib.IMAP4.unselect` is added. Patch by Dong-hee Na. | |
| - bpo-40389: ``repr()`` now returns ``typing.Optional[T]`` when called for | |
| ``typing.Union`` of two types, one of which is ``NoneType``. | |
| - bpo-40291: Add support for CAN_J1939 sockets (available on Linux 5.4+) | |
| - bpo-40273: :class:`types.MappingProxyType` is now reversible. | |
| - bpo-39075: The repr for :class:`types.SimpleNamespace` is now insertion | |
| ordered rather than alphabetical. | |
| - bpo-40192: On AIX, :func:`~time.thread_time` is now implemented with | |
| ``thread_cputime()`` which has nanosecond resolution, rather than | |
| ``clock_gettime(CLOCK_THREAD_CPUTIME_ID)`` which has a resolution of 10 | |
| milliseconds. Patch by Batuhan Taskaya. | |
| - bpo-40025: Raise TypeError when _generate_next_value_ is defined after | |
| members. Patch by Ethan Onstott. | |
| - bpo-39058: In the argparse module, the repr for Namespace() and other | |
| argument holders now displayed in the order attributes were added. | |
| Formerly, it displayed in alphabetical order even though argument order is | |
| preserved the user visible parts of the module. | |
| - bpo-24416: The ``isocalendar()`` methods of :class:`datetime.date` and | |
| :class:`datetime.datetime` now return a :term:`named tuple` instead of a | |
| :class:`tuple`. | |
| Documentation | |
| ------------- | |
| - bpo-34790: Add version of removal for explicit passing of coros to | |
| `asyncio.wait()`'s documentation | |
| - bpo-40561: Provide docstrings for webbrowser open functions. | |
| - bpo-40499: Mention that :func:`asyncio.wait` requires a non-empty set of | |
| awaitables. | |
| - bpo-39705: Tutorial example for sorted() in the Loop Techniques section is | |
| given a better explanation. Also a new example is included to explain | |
| sorted()'s basic behavior. | |
| - bpo-39435: Fix an incorrect signature for :func:`pickle.loads` in the docs | |
| Tests | |
| ----- | |
| - bpo-40055: distutils.tests now saves/restores warnings filters to leave | |
| them unchanged. Importing tests imports docutils which imports | |
| pkg_resources which adds a warnings filter. | |
| - bpo-40436: test_gdb and test.pythoninfo now check gdb command exit code. | |
| Build | |
| ----- | |
| - bpo-40653: Move _dirnameW out of HAVE_SYMLINK to fix a potential compiling | |
| issue. | |
| - bpo-40514: Add ``--with-experimental-isolated-subinterpreters`` build | |
| option to ``configure``: better isolate subinterpreters, experimental | |
| build mode. | |
| Windows | |
| ------- | |
| - bpo-40650: Include winsock2.h in pytime.c for timeval. | |
| - bpo-40458: Increase reserved stack space to prevent overflow crash on | |
| Windows. | |
| - bpo-39148: Add IPv6 support to :mod:`asyncio` datagram endpoints in | |
| ProactorEventLoop. Change the raised exception for unknown address | |
| families to ValueError as it's not coming from Windows API. | |
| macOS | |
| ----- | |
| - bpo-34956: When building Python on macOS from source, ``_tkinter`` now | |
| links with non-system Tcl and Tk frameworks if they are installed in | |
| ``/Library/Frameworks``, as had been the case on older releases of macOS. | |
| If a macOS SDK is explicitly configured, by using | |
| ``--enable-universalsdk=`` or ``-isysroot``, only the SDK itself is | |
| searched. The default behavior can still be overridden with | |
| ``--with-tcltk-includes`` and ``--with-tcltk-libs``. | |
| - bpo-35569: Expose RFC 3542 IPv6 socket options. | |
| Tools/Demos | |
| ----------- | |
| - bpo-40479: Update multissltest helper to test with latest OpenSSL 1.0.2, | |
| 1.1.0, 1.1.1, and 3.0.0-alpha. | |
| - bpo-40431: Fix a syntax typo in ``turtledemo`` that now raises a | |
| ``SyntaxError``. | |
| - bpo-40163: Fix multissltest tool. OpenSSL has changed download URL for old | |
| releases. The multissltest tool now tries to download from current and old | |
| download URLs. | |
| C API | |
| ----- | |
| - bpo-39465: Remove the ``_PyUnicode_ClearStaticStrings()`` function from | |
| the C API. | |
| - bpo-38787: Add PyCFunction_CheckExact() macro for exact type checks now | |
| that we allow subtypes of PyCFunction, as well as PyCMethod_CheckExact() | |
| and PyCMethod_Check() for the new PyCMethod subtype. | |
| - bpo-40545: Declare ``_PyErr_GetTopmostException()`` with ``PyAPI_FUNC()`` | |
| to properly export the function in the C API. The function remains private | |
| (``_Py``) prefix. | |
| - bpo-40412: Nullify inittab_copy during finalization, preventing future | |
| interpreter initializations in an embedded situation from crashing. Patch | |
| by Gregory Szorc. | |
| - bpo-40429: The :c:func:`PyThreadState_GetFrame` function now returns a | |
| strong reference to the frame. | |
| - bpo-40428: Remove the following functions from the C API. Call | |
| :c:func:`PyGC_Collect` explicitly to free all free lists. | |
| * ``PyAsyncGen_ClearFreeLists()`` | |
| * ``PyContext_ClearFreeList()`` | |
| * ``PyDict_ClearFreeList()`` | |
| * ``PyFloat_ClearFreeList()`` | |
| * ``PyFrame_ClearFreeList()`` | |
| * ``PyList_ClearFreeList()`` | |
| * ``PySet_ClearFreeList()`` | |
| * ``PyTuple_ClearFreeList()`` | |
| - bpo-40421: New :c:func:`PyFrame_GetBack` function: get the frame next | |
| outer frame. | |
| - bpo-40421: New :c:func:`PyFrame_GetCode` function: return a borrowed | |
| reference to the frame code. | |
| - bpo-40217: Ensure that instances of types created with | |
| :c:func:`PyType_FromSpecWithBases` will visit its class object when | |
| traversing references in the garbage collector (implemented as an | |
| extension of the provided :c:member:`~PyTypeObject.tp_traverse`). Patch by | |
| Pablo Galindo. | |
| - bpo-38787: Module C state is now accessible from C-defined heap type | |
| methods (:pep:`573`). Patch by Marcel Plch and Petr Viktorin. | |
| What's New in Python 3.9.0 alpha 6? | |
| =================================== | |
| *Release date: 2020-04-27* | |
| Security | |
| -------- | |
| - bpo-40121: Fixes audit events raised on creating a new socket. | |
| - bpo-39073: Disallow CR or LF in email.headerregistry.Address arguments to | |
| guard against header injection attacks. | |
| - bpo-39503: CVE-2020-8492: The | |
| :class:`~urllib.request.AbstractBasicAuthHandler` class of the | |
| :mod:`urllib.request` module uses an inefficient regular expression which | |
| can be exploited by an attacker to cause a denial of service. Fix the | |
| regex to prevent the catastrophic backtracking. Vulnerability reported by | |
| Ben Caller and Matt Schwager. | |
| Core and Builtins | |
| ----------------- | |
| - bpo-40313: Improve the performance of bytes.hex(). | |
| - bpo-40334: Switch to a new parser, based on PEG. For more details see PEP | |
| 617. To temporarily switch back to the old parser, use ``-X oldparser`` or | |
| ``PYTHONOLDPARSER=1``. In Python 3.10 we will remove the old parser | |
| completely, including the ``parser`` module (already deprecated) and | |
| anything that depends on it. | |
| - bpo-40267: Fix the tokenizer to display the correct error message, when | |
| there is a SyntaxError on the last input character and no newline follows. | |
| It used to be `unexpected EOF while parsing`, while it should be `invalid | |
| syntax`. | |
| - bpo-39522: Correctly unparse explicit ``u`` prefix for strings when | |
| postponed evaluation for annotations activated. Patch by Batuhan Taskaya. | |
| - bpo-40246: Report a specialized error message, `invalid string prefix`, | |
| when the tokenizer encounters a string with an invalid prefix. | |
| - bpo-40082: Fix the signal handler: it now always uses the main | |
| interpreter, rather than trying to get the current Python thread state. | |
| - bpo-37388: str.encode() and str.decode() no longer check the encoding and | |
| errors in development mode or in debug mode during Python finalization. | |
| The codecs machinery can no longer work on very late calls to str.encode() | |
| and str.decode(). | |
| - bpo-40077: Fix possible refleaks in :mod:`_json`, memo of PyScannerObject | |
| should be traversed. | |
| - bpo-37207: Speed up calls to ``dict()`` by using the :pep:`590` | |
| ``vectorcall`` calling convention. | |
| - bpo-40141: Add column and line information to ``ast.keyword`` nodes. Patch | |
| by Pablo Galindo. | |
| - bpo-1635741: Port :mod:`resource` to multiphase initialization | |
| (:pep:`489`). | |
| - bpo-1635741: Port :mod:`math` to multiphase initialization (:pep:`489`). | |
| - bpo-1635741: Port _uuid module to multiphase initialization (:pep:`489`). | |
| - bpo-40077: Convert json module to use :c:func:`PyType_FromSpec`. | |
| - bpo-40067: Improve the error message for multiple star expressions in an | |
| assignment. Patch by Furkan Onder | |
| - bpo-1635741: Port _functools module to multiphase initialization (PEP | |
| 489). Patch by Paulo Henrique Silva. | |
| - bpo-1635741: Port operator module to multiphase initialization (PEP 489). | |
| Patch by Paulo Henrique Silva. | |
| - bpo-20526: Fix :c:func:`PyThreadState_Clear()`. ``PyThreadState.frame`` is | |
| a borrowed reference, not a strong reference: ``PyThreadState_Clear()`` | |
| must not call ``Py_CLEAR(tstate->frame)``. | |
| - bpo-1635741: Port time module to multiphase initialization (:pep:`489`). | |
| Patch by Paulo Henrique Silva. | |
| - bpo-1635741: Port _weakref extension module to multiphase initialization | |
| (:pep:`489`). | |
| - bpo-40020: Fix a leak and subsequent crash in parsetok.c caused by realloc | |
| misuse on a rare codepath. | |
| - bpo-39939: Added str.removeprefix and str.removesuffix methods and | |
| corresponding bytes, bytearray, and collections.UserString methods to | |
| remove affixes from a string if present. See :pep:`616` for a full | |
| description. Patch by Dennis Sweeney. | |
| - bpo-39481: Implement PEP 585. This supports list[int], tuple[str, ...] | |
| etc. | |
| - bpo-32894: Support unparsing of infinity numbers in postponed annotations. | |
| Patch by Batuhan Taşkaya. | |
| - bpo-37207: Speed up calls to ``list()`` by using the :pep:`590` | |
| ``vectorcall`` calling convention. Patch by Mark Shannon. | |
| Library | |
| ------- | |
| - bpo-40398: :func:`typing.get_args` now always returns an empty tuple for | |
| special generic aliases. | |
| - bpo-40396: Functions :func:`typing.get_origin`, :func:`typing.get_args` | |
| and :func:`typing.get_type_hints` support now generic aliases like | |
| ``list[int]``. | |
| - bpo-38061: Optimize the :mod:`subprocess` module on FreeBSD using | |
| ``closefrom()``. A single ``close(fd)`` syscall is cheap, but when | |
| ``sysconf(_SC_OPEN_MAX)`` is high, the loop calling ``close(fd)`` on each | |
| file descriptor can take several milliseconds. | |
| The workaround on FreeBSD to improve performance was to load and mount the | |
| fdescfs kernel module, but this is not enabled by default. | |
| Initial patch by Ed Maste (emaste), Conrad Meyer (cem), Kyle Evans | |
| (kevans) and Kubilay Kocak (koobs): | |
| https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=242274 | |
| - bpo-38061: On FreeBSD, ``os.closerange(fd_low, fd_high)`` now calls | |
| ``closefrom(fd_low)`` if *fd_high* is greater than or equal to | |
| ``sysconf(_SC_OPEN_MAX)``. | |
| Initial patch by Ed Maste (emaste), Conrad Meyer (cem), Kyle Evans | |
| (kevans) and Kubilay Kocak (koobs): | |
| https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=242274 | |
| - bpo-40360: The :mod:`lib2to3` module is pending deprecation due to | |
| :pep:`617`. | |
| - bpo-40138: Fix the Windows implementation of :func:`os.waitpid` for exit | |
| code larger than ``INT_MAX >> 8``. The exit status is now interpreted as | |
| an unsigned number. | |
| - bpo-39942: Set "__main__" as the default module name when "__name__" is | |
| missing in :class:`typing.TypeVar`. Patch by Weipeng Hong. | |
| - bpo-40275: The :mod:`logging` package is now imported lazily in | |
| :mod:`unittest` only when the :meth:`~unittest.TestCase.assertLogs` | |
| assertion is used. | |
| - bpo-40275: The :mod:`asyncio` package is now imported lazily in | |
| :mod:`unittest` only when the :class:`~unittest.IsolatedAsyncioTestCase` | |
| class is used. | |
| - bpo-40330: In :meth:`ShareableList.__setitem__`, check the size of a new | |
| string item after encoding it to utf-8, not before. | |
| - bpo-40148: Added :meth:`pathlib.Path.with_stem()` to create a new Path | |
| with the stem replaced. | |
| - bpo-40325: Deprecated support for set objects in random.sample(). | |
| - bpo-40257: Improved help for the :mod:`typing` module. Docstrings are now | |
| shown for all special forms and special generic aliases (like ``Union`` | |
| and ``List``). Using ``help()`` with generic alias like ``List[int]`` will | |
| show the help for the correspondent concrete type (``list`` in this case). | |
| - bpo-40257: func:`inspect.getdoc` no longer returns docstring inherited | |
| from the type of the object or from parent class if it is a class if it is | |
| not defined in the object itself. In :mod:`pydoc` the documentation string | |
| is now shown not only for class, function, method etc, but for any object | |
| that has its own ``__doc__`` attribute. | |
| - bpo-40287: Fixed ``SpooledTemporaryFile.seek()`` to return the position. | |
| - bpo-40290: Added zscore() to statistics.NormalDist(). | |
| - bpo-40282: Allow ``random.getrandbits(0)`` to succeed and to return 0. | |
| - bpo-40286: Add :func:`random.randbytes` function and | |
| :meth:`random.Random.randbytes` method to generate random bytes. | |
| - bpo-40277: :func:`collections.namedtuple` now provides a human-readable | |
| repr for its field accessors. | |
| - bpo-40270: The included copy of sqlite3 on Windows is now compiled with | |
| the json extension. This allows the use of functions such as | |
| ``json_object``. | |
| - bpo-29255: Wait in `KqueueSelector.select` when no fds are registered | |
| - bpo-40260: Ensure :mod:`modulefinder` uses :func:`io.open_code` and | |
| respects coding comments. | |
| - bpo-40234: Allow again to spawn daemon threads in subinterpreters (revert | |
| change which denied them). | |
| - bpo-39207: Workers in :class:`~concurrent.futures.ProcessPoolExecutor` are | |
| now spawned on demand, only when there are no available idle workers to | |
| reuse. This optimizes startup overhead and reduces the amount of lost CPU | |
| time to idle workers. Patch by Kyle Stanley. | |
| - bpo-40091: Fix a hang at fork in the logging module: the new private | |
| _at_fork_reinit() method is now used to reinitialize locks at fork in the | |
| child process. | |
| - bpo-40149: Implement traverse and clear slots in _abc._abc_data type. | |
| - bpo-40208: Remove deprecated :meth:`symtable.SymbolTable.has_exec`. | |
| - bpo-40196: Fix a bug in the :mod:`symtable` module that was causing | |
| incorrectly report global variables as local. Patch by Pablo Galindo. | |
| - bpo-40190: Add support for ``_SC_AIX_REALMEM`` to :func:`posix.sysconf`. | |
| - bpo-40182: Removed the ``_field_types`` attribute of the | |
| :class:`typing.NamedTuple` class. | |
| - bpo-36517: Multiple inheritance with :class:`typing.NamedTuple` now raises | |
| an error instead of silently ignoring other types. | |
| - bpo-40126: Fixed reverting multiple patches in unittest.mock. Patcher's | |
| ``__exit__()`` is now never called if its ``__enter__()`` is failed. | |
| Returning true from ``__exit__()`` silences now the exception. | |
| - bpo-40094: CGIHTTPRequestHandler of http.server now logs the CGI script | |
| exit code, rather than the CGI script exit status of os.waitpid(). For | |
| example, if the script is killed by signal 11, it now logs: "CGI script | |
| exit code -11." | |
| - bpo-40108: Improve the error message when triying to import a module using | |
| :mod:`runpy` and incorrently use the ".py" extension at the end of the | |
| module name. Patch by Pablo Galindo. | |
| - bpo-40094: Add :func:`os.waitstatus_to_exitcode` function: convert a wait | |
| status to an exit code. | |
| - bpo-40089: Fix threading._after_fork(): if fork was not called by a thread | |
| spawned by threading.Thread, threading._after_fork() now creates a | |
| _MainThread instance for _main_thread, instead of a _DummyThread instance. | |
| - bpo-40089: Add a private ``_at_fork_reinit()`` method to | |
| :class:`_thread.Lock`, :class:`_thread.RLock`, :class:`threading.RLock` | |
| and :class:`threading.Condition` classes: reinitialize the lock at fork in | |
| the child process, reset the lock to the unlocked state. Rename also the | |
| private ``_reset_internal_locks()`` method of :class:`threading.Event` to | |
| ``_at_fork_reinit()``. | |
| - bpo-25780: Expose :data:`~socket.CAN_RAW_JOIN_FILTERS` in the | |
| :mod:`socket` module. | |
| - bpo-39503: :class:`~urllib.request.AbstractBasicAuthHandler` of | |
| :mod:`urllib.request` now parses all WWW-Authenticate HTTP headers and | |
| accepts multiple challenges per header: use the realm of the first Basic | |
| challenge. | |
| - bpo-39812: Removed daemon threads from :mod:`concurrent.futures` by adding | |
| an internal `threading._register_atexit()`, which calls registered | |
| functions prior to joining all non-daemon threads. This allows for | |
| compatibility with subinterpreters, which don't support daemon threads. | |
| - bpo-40050: Fix ``importlib._bootstrap_external``: avoid creating a new | |
| ``winreg`` builtin module if it's already available in | |
| :data:`sys.modules`, and remove redundant imports. | |
| - bpo-40014: Fix ``os.getgrouplist()``: if ``getgrouplist()`` function fails | |
| because the group list is too small, retry with a larger group list. On | |
| failure, the glibc implementation of ``getgrouplist()`` sets ``ngroups`` | |
| to the total number of groups. For other implementations, double the group | |
| list size. | |
| - bpo-40017: Add :data:`time.CLOCK_TAI` constant if the operating system | |
| support it. | |
| - bpo-40016: In re docstring, clarify the relationship between inline and | |
| argument compile flags. | |
| - bpo-39953: Update internal table of OpenSSL error codes in the ``ssl`` | |
| module. | |
| - bpo-36144: Added :pep:`584` operators to | |
| :class:`weakref.WeakValueDictionary`. | |
| - bpo-36144: Added :pep:`584` operators to | |
| :class:`weakref.WeakKeyDictionary`. | |
| - bpo-38891: Fix linear runtime behaviour of the `__getitem__` and | |
| `__setitem__` methods in | |
| :class:`multiprocessing.shared_memory.ShareableList`. This avoids | |
| quadratic performance when iterating a `ShareableList`. Patch by Thomas | |
| Krennwallner. | |
| - bpo-39682: Remove undocumented support for *closing* a `pathlib.Path` | |
| object via its context manager. The context manager magic methods remain, | |
| but they are now a no-op, making `Path` objects immutable. | |
| - bpo-36144: Added :pep:`584` operators (``|`` and ``|=``) to | |
| :class:`collections.ChainMap`. | |
| - bpo-39011: Normalization of line endings in ElementTree attributes was | |
| removed, as line endings which were replaced by entity numbers should be | |
| preserved in original form. | |
| - bpo-38410: Properly handle :func:`sys.audit` failures in | |
| :func:`sys.set_asyncgen_hooks`. | |
| - bpo-36541: lib2to3 now recognizes named assignment expressions (the walrus | |
| operator, ``:=``) | |
| - bpo-35967: In platform, delay the invocation of 'uname -p' until the | |
| processor attribute is requested. | |
| - bpo-35113: :meth:`inspect.getsource` now returns correct source code for | |
| inner class with same name as module level class. Decorators are also | |
| returned as part of source of the class. Patch by Karthikeyan | |
| Singaravelan. | |
| - bpo-33262: Deprecate passing None as an argument for | |
| :func:`shlex.split()`'s ``s`` parameter. Patch by Zackery Spytz. | |
| - bpo-31758: Prevent crashes when using an uninitialized | |
| ``_elementtree.XMLParser`` object. Patch by Oren Milman. | |
| Documentation | |
| ------------- | |
| - bpo-27635: The pickle documentation incorrectly claimed that ``__new__`` | |
| isn't called by default when unpickling. | |
| - bpo-39879: Updated :ref:`datamodel` docs to include :func:`dict` insertion | |
| order preservation. Patch by Furkan Onder and Samy Lahfa. | |
| - bpo-38387: Document :c:macro:`PyDoc_STRVAR` macro in the C-API reference. | |
| - bpo-13743: Some methods within xml.dom.minidom.Element class are now | |
| better documented. | |
| Tests | |
| ----- | |
| - bpo-31904: Set expected default encoding in test_c_locale_coercion.py for | |
| VxWorks RTOS. | |
| - bpo-40162: Update Travis CI configuration to OpenSSL 1.1.1f. | |
| - bpo-40146: Update OpenSSL to 1.1.1f in Azure Pipelines. | |
| - bpo-40094: Add :func:`test.support.wait_process` function. | |
| - bpo-40003: ``test.bisect_cmd`` now copies Python command line options like | |
| ``-O`` or ``-W``. Moreover, emit a warning if ``test.bisect_cmd`` is used | |
| with ``-w``/``--verbose2`` option. | |
| - bpo-39380: Add the encoding in :class:`ftplib.FTP` and | |
| :class:`ftplib.FTP_TLS` to the constructor as keyword-only and change the | |
| default from ``latin-1`` to ``utf-8`` to follow :rfc:`2640`. | |
| - bpo-39793: Use the same domain when testing ``make_msgid``. Patch by | |
| Batuhan Taskaya. | |
| - bpo-1812: Fix newline handling in doctest.testfile when loading from a | |
| package whose loader has a get_data method. Patch by Peter Donis. | |
| Build | |
| ----- | |
| - bpo-38360: Support single-argument form of macOS -isysroot flag. | |
| - bpo-40158: Fix CPython MSBuild Properties in NuGet Package | |
| (build/native/python.props) | |
| - bpo-38527: Fix configure check on Solaris for "float word ordering": | |
| sometimes, the correct "grep" command was not being used. Patch by Arnon | |
| Yaari. | |
| Windows | |
| ------- | |
| - bpo-40164: Updates Windows to OpenSSL 1.1.1f | |
| - bpo-8901: Ignore the Windows registry when the ``-E`` option is used. | |
| macOS | |
| ----- | |
| - bpo-38329: python.org macOS installers now update the Current version | |
| symlink of /Library/Frameworks/Python.framework/Versions for 3.9 installs. | |
| Previously, Current was only updated for Python 2.x installs. This should | |
| make it easier to embed Python 3 into other macOS applications. | |
| - bpo-40164: Update macOS installer builds to use OpenSSL 1.1.1g. | |
| IDLE | |
| ---- | |
| - bpo-38439: Add a 256×256 pixel IDLE icon to support more modern | |
| environments. Created by Andrew Clover. Delete the unused macOS idle.icns | |
| icon file. | |
| - bpo-38689: IDLE will no longer freeze when inspect.signature fails when | |
| fetching a calltip. | |
| Tools/Demos | |
| ----------- | |
| - bpo-40385: Removed the checkpyc.py tool. Please see compileall without | |
| force mode as a potential alternative. | |
| - bpo-40179: Fixed translation of ``#elif`` in Argument Clinic. | |
| - bpo-40094: Fix ``which.py`` script exit code: it now uses | |
| :func:`os.waitstatus_to_exitcode` to convert :func:`os.system` exit status | |
| into an exit code. | |
| C API | |
| ----- | |
| - bpo-40241: Move the :c:type:`PyGC_Head` structure to the internal C API. | |
| - bpo-40170: Convert :c:func:`PyObject_IS_GC` macro to a function to hide | |
| implementation details. | |
| - bpo-40241: Add the functions :c:func:`PyObject_GC_IsTracked` and | |
| :c:func:`PyObject_GC_IsFinalized` to the public API to allow to query if | |
| Python objects are being currently tracked or have been already finalized | |
| by the garbage collector respectively. Patch by Pablo Galindo. | |
| - bpo-40170: The :c:func:`PyObject_NEW` macro becomes an alias to the | |
| :c:func:`PyObject_New` macro, and the :c:func:`PyObject_NEW_VAR` macro | |
| becomes an alias to the :c:func:`PyObject_NewVar` macro, to hide | |
| implementation details. They no longer access directly the | |
| :c:member:`PyTypeObject.tp_basicsize` member. | |
| - bpo-40170: :c:func:`PyType_HasFeature` now always calls | |
| :c:func:`PyType_GetFlags` to hide implementation details. Previously, it | |
| accessed directly the :c:member:`PyTypeObject.tp_flags` member when the | |
| limited C API was not used. | |
| - bpo-40170: Convert the :c:func:`PyObject_GET_WEAKREFS_LISTPTR` macro to a | |
| function to hide implementation details: the macro accessed directly to | |
| the :c:member:`PyTypeObject.tp_weaklistoffset` member. | |
| - bpo-40170: Convert :c:func:`PyObject_CheckBuffer` macro to a function to | |
| hide implementation details: the macro accessed directly the | |
| :c:member:`PyTypeObject.tp_as_buffer` member. | |
| - bpo-40170: Always declare :c:func:`PyIndex_Check` as an opaque function to | |
| hide implementation details: remove ``PyIndex_Check()`` macro. The macro | |
| accessed directly the :c:member:`PyTypeObject.tp_as_number` member. | |
| - bpo-39947: Add :c:func:`PyThreadState_GetID` function: get the unique | |
| identifier of a Python thread state. | |
| What's New in Python 3.9.0 alpha 5? | |
| =================================== | |
| *Release date: 2020-03-23* | |
| Security | |
| -------- | |
| - bpo-38576: Disallow control characters in hostnames in http.client, | |
| addressing CVE-2019-18348. Such potentially malicious header injection | |
| URLs now cause a InvalidURL to be raised. | |
| Core and Builtins | |
| ----------------- | |
| - bpo-40010: Optimize pending calls in multithreaded applications. If a | |
| thread different than the main thread schedules a pending call | |
| (:c:func:`Py_AddPendingCall`), the bytecode evaluation loop is no longer | |
| interrupted at each bytecode instruction to check for pending calls which | |
| cannot be executed. Only the main thread can execute pending calls. | |
| Previously, the bytecode evaluation loop was interrupted at each | |
| instruction until the main thread executes pending calls. | |
| - bpo-1635741: Port _weakref extension module to multiphase initialization | |
| (:pep:`489`). | |
| - bpo-1635741: Port _collections module to multiphase initialization | |
| (:pep:`489`). | |
| - bpo-40010: Optimize signal handling in multithreaded applications. If a | |
| thread different than the main thread gets a signal, the bytecode | |
| evaluation loop is no longer interrupted at each bytecode instruction to | |
| check for pending signals which cannot be handled. Only the main thread of | |
| the main interpreter can handle signals. | |
| Previously, the bytecode evaluation loop was interrupted at each | |
| instruction until the main thread handles signals. | |
| - bpo-39984: If :c:func:`Py_AddPendingCall` is called in a subinterpreter, | |
| the function is now scheduled to be called from the subinterpreter, rather | |
| than being called from the main interpreter. Each subinterpreter now has | |
| its own list of scheduled calls. | |
| - bpo-1635741: Port _heapq module to multiphase initialization. | |
| - bpo-1635741: Port itertools module to multiphase initialization | |
| (:pep:`489`). | |
| - bpo-37207: Speed up calls to ``frozenset()`` by using the :pep:`590` | |
| ``vectorcall`` calling convention. Patch by Dong-hee Na. | |
| - bpo-39984: subinterpreters: Move | |
| ``_PyRuntimeState.ceval.tracing_possible`` to | |
| ``PyInterpreterState.ceval.tracing_possible``: each interpreter now has | |
| its own variable. | |
| - bpo-37207: Speed up calls to ``set()`` by using the :pep:`590` | |
| ``vectorcall`` calling convention. Patch by Dong-hee Na. | |
| - bpo-1635741: Port _statistics module to multiphase initialization | |
| (:pep:`489`). | |
| - bpo-39968: Use inline function to replace extension modules' | |
| get_module_state macros. | |
| - bpo-39965: Correctly raise ``SyntaxError`` if *await* is used inside | |
| non-async functions and ``PyCF_ALLOW_TOP_LEVEL_AWAIT`` is set (like in the | |
| asyncio REPL). Patch by Pablo Galindo. | |
| - bpo-39562: Allow executing asynchronous comprehensions on the top level | |
| when the ``PyCF_ALLOW_TOP_LEVEL_AWAIT`` flag is given. Patch by Batuhan | |
| Taskaya. | |
| - bpo-37207: Speed up calls to ``tuple()`` by using the :pep:`590` | |
| ``vectorcall`` calling convention. Patch by Dong-hee Na. | |
| - bpo-38373: Changed list overallocation strategy. It no longer | |
| overallocates if the new size is closer to overallocated size than to the | |
| old size and adds padding. | |
| - bpo-39926: Update Unicode database to Unicode version 13.0.0. | |
| - bpo-19466: Clear the frames of daemon threads earlier during the Python | |
| shutdown to call objects destructors. So "unclosed file" resource warnings | |
| are now emitted for daemon threads in a more reliable way. | |
| - bpo-38894: Fix a bug that was causing incomplete results when calling | |
| ``pathlib.Path.glob`` in the presence of symlinks that point to files | |
| where the user does not have read access. Patch by Pablo Galindo and Matt | |
| Wozniski. | |
| - bpo-39877: Fix :c:func:`PyEval_RestoreThread` random crash at exit with | |
| daemon threads. It now accesses the ``_PyRuntime`` variable directly | |
| instead of using ``tstate->interp->runtime``, since ``tstate`` can be a | |
| dangling pointer after :c:func:`Py_Finalize` has been called. Moreover, | |
| the daemon thread now exits before trying to take the GIL. | |
| - bpo-39871: Fix a possible :exc:`SystemError` in | |
| ``math.{atan2,copysign,remainder}()`` when the first argument cannot be | |
| converted to a :class:`float`. Patch by Zackery Spytz. | |
| - bpo-39776: Fix race condition where threads created by PyGILState_Ensure() | |
| could get a duplicate id. | |
| This affects consumers of tstate->id like the contextvar caching | |
| machinery, which could return invalid cached objects under heavy thread | |
| load (observed in embedded scenarios). | |
| - bpo-39778: Fixed a crash due to incorrect handling of weak references in | |
| ``collections.OrderedDict`` classes. Patch by Pablo Galindo. | |
| - bpo-1635741: Port audioop extension module to multiphase initialization | |
| (:pep:`489`). | |
| - bpo-39702: Relax :term:`decorator` grammar restrictions to allow any valid | |
| expression (:pep:`614`). | |
| - bpo-38091: Tweak import deadlock detection code to not deadlock itself. | |
| - bpo-1635741: Port _locale extension module to multiphase initialization | |
| (:pep:`489`). | |
| - bpo-39087: Optimize :c:func:`PyUnicode_AsUTF8` and | |
| :c:func:`PyUnicode_AsUTF8AndSize` slightly when they need to create | |
| internal UTF-8 cache. | |
| - bpo-39520: Fix unparsing of ext slices with no items (``foo[:,]``). Patch | |
| by Batuhan Taskaya. | |
| - bpo-39220: Do not optimize annotations if 'from __future__ import | |
| annotations' is used. Patch by Pablo Galindo. | |
| - bpo-35712: Using :data:`NotImplemented` in a boolean context has been | |
| deprecated. Patch contributed by Josh Rosenberg. | |
| - bpo-22490: Don't leak environment variable ``__PYVENV_LAUNCHER__`` into | |
| the interpreter session on macOS. | |
| Library | |
| ------- | |
| - bpo-39830: Add :class:`zipfile.Path` to ``__all__`` in the :mod:`zipfile` | |
| module. | |
| - bpo-40000: Improved error messages for validation of ``ast.Constant`` | |
| nodes. Patch by Batuhan Taskaya. | |
| - bpo-39999: ``__module__`` of the AST node classes is now set to "ast" | |
| instead of "_ast". Added docstrings for dummy AST node classes and | |
| deprecated attributes. | |
| - bpo-39991: :func:`uuid.getnode` now skips IPv6 addresses with the same | |
| string length than a MAC address (17 characters): only use MAC addresses. | |
| - bpo-39988: Deprecated ``ast.AugLoad`` and ``ast.AugStore`` node classes | |
| because they are no longer used. | |
| - bpo-39656: Ensure ``bin/python3.#`` is always present in virtual | |
| environments on POSIX platforms - by Anthony Sottile. | |
| - bpo-39969: Deprecated ``ast.Param`` node class because it's no longer | |
| used. Patch by Batuhan Taskaya. | |
| - bpo-39360: Ensure all workers exit when finalizing a | |
| :class:`multiprocessing.Pool` implicitly via the module finalization | |
| handlers of multiprocessing. This fixes a deadlock situation that can be | |
| experienced when the Pool is not properly finalized via the context | |
| manager or a call to ``multiprocessing.Pool.terminate``. Patch by Batuhan | |
| Taskaya and Pablo Galindo. | |
| - bpo-35370: sys.settrace(), sys.setprofile() and _lsprof.Profiler.enable() | |
| now properly report :c:func:`PySys_Audit` error if "sys.setprofile" or | |
| "sys.settrace" audit event is denied. | |
| - bpo-39936: AIX: Fix _aix_support module when the subprocess is not | |
| available, when building Python from scratch. It now uses new private | |
| _bootsubprocess module, rather than having two implementations depending | |
| if subprocess is available or not. So _aix_support.aix_platform() result | |
| is now the same if subprocess is available or not. | |
| - bpo-36144: :class:`collections.OrderedDict` now implements ``|`` and | |
| ``|=`` (:pep:`584`). | |
| - bpo-39652: The column name found in ``sqlite3.Cursor.description`` is now | |
| truncated on the first '[' only if the PARSE_COLNAMES option is set. | |
| - bpo-39915: Ensure :attr:`unittest.mock.AsyncMock.await_args_list` has call | |
| objects in the order of awaited arguments instead of using | |
| :attr:`unittest.mock.Mock.call_args` which has the last value of the call. | |
| Patch by Karthikeyan Singaravelan. | |
| - bpo-36144: Updated :data:`os.environ` and :data:`os.environb` to support | |
| :pep:`584`'s merge (``|``) and update (``|=``) operators. | |
| - bpo-38662: The ``ensurepip`` module now invokes ``pip`` via the ``runpy`` | |
| module. Hence it is no longer tightly coupled with the internal API of the | |
| bundled ``pip`` version, allowing easier updates to a newer ``pip`` | |
| version both internally and for distributors. | |
| - bpo-38075: Fix the :meth:`random.Random.seed` method when a :class:`bool` | |
| is passed as the seed. | |
| - bpo-39916: More reliable use of ``os.scandir()`` in ``Path.glob()``. It no | |
| longer emits a ResourceWarning when interrupted. | |
| - bpo-39850: :mod:`multiprocessing` now supports abstract socket addresses | |
| (if abstract sockets are supported in the running platform). When creating | |
| arbitrary addresses (like when default-constructing | |
| :class:`multiprocessing.connection.Listener` objects) abstract sockets are | |
| preferred to avoid the case when the temporary-file-generated address is | |
| too large for an AF_UNIX socket address. Patch by Pablo Galindo. | |
| - bpo-36287: :func:`ast.dump()` no longer outputs optional fields and | |
| attributes with default values. The default values for optional fields and | |
| attributes of AST nodes are now set as class attributes (e.g. | |
| ``Constant.kind`` is set to ``None``). | |
| - bpo-39889: Fixed :func:`ast.unparse` for extended slices containing a | |
| single element (e.g. ``a[i:j,]``). Remove redundant tuples when index with | |
| a tuple (e.g. ``a[i, j]``). | |
| - bpo-39828: Fix :mod:`json.tool` to catch :exc:`BrokenPipeError`. Patch by | |
| Dong-hee Na. | |
| - bpo-13487: Avoid a possible *"RuntimeError: dictionary changed size during | |
| iteration"* from :func:`inspect.getmodule` when it tried to loop through | |
| :attr:`sys.modules`. | |
| - bpo-39674: Revert "bpo-37330: open() no longer accept 'U' in file mode". | |
| The "U" mode of open() is kept in Python 3.9 to ease transition from | |
| Python 2.7, but will be removed in Python 3.10. | |
| - bpo-28577: The hosts method on 32-bit prefix length IPv4Networks and | |
| 128-bit prefix IPv6Networks now returns a list containing the single | |
| Address instead of an empty list. | |
| - bpo-39826: Add getConnection method to logging HTTPHandler to enable | |
| custom connections. | |
| - bpo-39763: Reimplement :func:`distutils.spawn.spawn` function with the | |
| :mod:`subprocess` module. | |
| - bpo-39794: Add --without-decimal-contextvar build option. This enables a | |
| thread-local rather than a coroutine local context. | |
| - bpo-36144: :class:`collections.defaultdict` now implements ``|`` | |
| (:pep:`584`). | |
| - bpo-39517: Fix runpy.run_path() when using pathlike objects | |
| - bpo-39775: Change ``inspect.Signature.parameters`` back to | |
| ``collections.OrderedDict``. This was changed to ``dict`` in Python | |
| 3.9.0a4. | |
| - bpo-39678: Refactor queue_manager in | |
| :class:`concurrent.futures.ProcessPoolExecutor` to make it easier to | |
| maintain. | |
| - bpo-39764: Fix AttributeError when calling get_stack on a PyAsyncGenObject | |
| Task | |
| - bpo-39769: The :func:`compileall.compile_dir` function's *ddir* parameter | |
| and the compileall command line flag `-d` no longer write the wrong | |
| pathname to the generated pyc file for submodules beneath the root of the | |
| directory tree being compiled. This fixes a regression introduced with | |
| Python 3.5. | |
| - bpo-36144: :class:`types.MappingProxyType` objects now support the merge | |
| (``|``) operator from :pep:`584`. | |
| - bpo-38691: The :mod:`importlib` module now ignores the | |
| :envvar:`PYTHONCASEOK` environment variable when the :option:`-E` or | |
| :option:`-I` command line options are being used. | |
| - bpo-39719: Remove :meth:`tempfile.SpooledTemporaryFile.softspace` as files | |
| no longer have the ``softspace`` attribute in Python 3. Patch by Shantanu. | |
| - bpo-39667: Improve pathlib.Path compatibility on zipfile.Path and correct | |
| performance degradation as found in zipp 3.0. | |
| - bpo-39638: Keep ASDL signatures in the docstrings for ``AST`` nodes. Patch | |
| by Batuhan Taskaya | |
| - bpo-39639: Deprecated ``ast.Suite`` node class because it's no longer | |
| used. Patch by Batuhan Taskaya. | |
| - bpo-39609: Add thread_name_prefix to default asyncio executor | |
| - bpo-39548: Fix handling of header in | |
| :class:`urllib.request.AbstractDigestAuthHandler` when the optional | |
| ``qop`` parameter is not present. | |
| - bpo-39509: HTTP status codes ``103 EARLY_HINTS`` and ``425 TOO_EARLY`` are | |
| added to :class:`http.HTTPStatus`. Patch by Dong-hee Na. | |
| - bpo-39507: Adding HTTP status 418 "I'm a Teapot" to HTTPStatus in http | |
| library. Patch by Ross Rhodes. | |
| - bpo-39495: Remove default value from *attrs* parameter of | |
| :meth:`xml.etree.ElementTree.TreeBuilder.start` for consistency between | |
| Python and C implementations. | |
| - bpo-38971: Open issue in the BPO indicated a desire to make the | |
| implementation of codecs.open() at parity with io.open(), which implements | |
| a try/except to assure file stream gets closed before an exception is | |
| raised. | |
| - bpo-38641: Added starred expressions support to ``return`` and ``yield`` | |
| statements for ``lib2to3``. Patch by Vlad Emelianov. | |
| - bpo-37534: When using minidom module to generate XML documents the ability | |
| to add Standalone Document Declaration is added. All the changes are made | |
| to generate a document in compliance with Extensible Markup Language (XML) | |
| 1.0 (Fifth Edition) W3C Recommendation (available here: | |
| https://www.w3.org/TR/xml/#sec-prolog-dtd). | |
| - bpo-34788: Add support for scoped IPv6 addresses to :mod:`ipaddress`. | |
| Patch by Oleksandr Pavliuk. | |
| - bpo-34822: Simplified AST for subscription. Simple indices are now | |
| represented by their value, extended slices are represented as tuples. | |
| :mod:`ast` classes ``Index`` and ``ExtSlice`` are considered deprecated | |
| and will be removed in future Python versions. In the meantime, | |
| ``Index(value)`` now returns a ``value`` itself, ``ExtSlice(slices)`` | |
| returns ``Tuple(slices, Load())``. | |
| Documentation | |
| ------------- | |
| - bpo-39868: Updated the Language Reference for :pep:`572`. | |
| - bpo-13790: Change 'string' to 'specification' in format doc. | |
| - bpo-17422: The language reference no longer restricts default class | |
| namespaces to dicts only. | |
| - bpo-39530: Fix misleading documentation about mixed-type numeric | |
| comparisons. | |
| - bpo-39718: Update :mod:`token` documentation to reflect additions in | |
| Python 3.8 | |
| - bpo-39677: Changed operand name of **MAKE_FUNCTION** from *argc* to | |
| *flags* for module :mod:`dis` | |
| Tests | |
| ----- | |
| - bpo-40019: test_gdb now skips tests if it detects that gdb failed to read | |
| debug information because the Python binary is optimized. | |
| - bpo-27807: ``test_site.test_startup_imports()`` is now skipped if a path | |
| of :data:`sys.path` contains a ``.pth`` file. | |
| - bpo-26067: Do not fail test_shutil test_chown test when uid or gid of user | |
| cannot be resolved to a name. | |
| - bpo-39855: test_subprocess.test_user() now skips the test on an user name | |
| if the user name doesn't exist. For example, skip the test if the user | |
| "nobody" doesn't exist on Linux. | |
| Build | |
| ----- | |
| - bpo-39761: Fix build with DTrace but without additional DFLAGS. | |
| - bpo-39763: setup.py now uses a basic implementation of the | |
| :mod:`subprocess` module if the :mod:`subprocess` module is not available: | |
| before required C extension modules are built. | |
| - bpo-1294959: Add ``--with-platlibdir`` option to the configure script: | |
| name of the platform-specific library directory, stored in the new | |
| :attr:`sys.platlibdir` attribute. It is used to build the path of | |
| platform-specific extension modules and the path of the standard library. | |
| It is equal to ``"lib"`` on most platforms. On Fedora and SuSE, it is | |
| equal to ``"lib64"`` on 64-bit platforms. Patch by Jan Matějek, Matěj | |
| Cepl, Charalampos Stratakis and Victor Stinner. | |
| Windows | |
| ------- | |
| - bpo-39930: Ensures the required :file:`vcruntime140.dll` is included in | |
| install packages. | |
| - bpo-39847: Avoid hang when computer is hibernated whilst waiting for a | |
| mutex (for lock-related objects from :mod:`threading`) around 49-day | |
| uptime. | |
| - bpo-38597: :mod:`distutils` will no longer statically link | |
| :file:`vcruntime140.dll` when a redistributable version is unavailable. | |
| All future releases of CPython will include a copy of this DLL to ensure | |
| distributed extensions can continue to load. | |
| - bpo-38380: Update Windows builds to use SQLite 3.31.1 | |
| - bpo-39789: Update Windows release build machines to Visual Studio 2019 | |
| (MSVC 14.2). | |
| - bpo-34803: Package for nuget.org now includes repository reference and | |
| bundled icon image. | |
| macOS | |
| ----- | |
| - bpo-38380: Update macOS builds to use SQLite 3.31.1 | |
| IDLE | |
| ---- | |
| - bpo-27115: For 'Go to Line', use a Query box subclass with IDLE standard | |
| behavior and improved error checking. | |
| - bpo-39885: Since clicking to get an IDLE context menu moves the cursor, | |
| any text selection should be and now is cleared. | |
| - bpo-39852: Edit "Go to line" now clears any selection, preventing | |
| accidental deletion. It also updates Ln and Col on the status bar. | |
| - bpo-39781: Selecting code context lines no longer causes a jump. | |
| Tools/Demos | |
| ----------- | |
| - bpo-36184: Port python-gdb.py to FreeBSD. python-gdb.py now checks for | |
| "take_gil" function name to check if a frame tries to acquire the GIL, | |
| instead of checking for "pthread_cond_timedwait" which is specific to | |
| Linux and can be a different condition than the GIL. | |
| - bpo-38080: Added support to fix ``getproxies`` in the | |
| :mod:`lib2to3.fixes.fix_urllib` module. Patch by José Roberto Meza | |
| Cabrera. | |
| C API | |
| ----- | |
| - bpo-40024: Add :c:func:`PyModule_AddType` helper function: add a type to a | |
| module. Patch by Dong-hee Na. | |
| - bpo-39946: Remove ``_PyRuntime.getframe`` hook and remove | |
| ``_PyThreadState_GetFrame`` macro which was an alias to | |
| ``_PyRuntime.getframe``. They were only exposed by the internal C API. | |
| Remove also ``PyThreadFrameGetter`` type. | |
| - bpo-39947: Add :c:func:`PyThreadState_GetFrame` function: get the current | |
| frame of a Python thread state. | |
| - bpo-37207: Add _PyArg_NoKwnames helper function. Patch by Dong-hee Na. | |
| - bpo-39947: Add :c:func:`PyThreadState_GetInterpreter`: get the interpreter | |
| of a Python thread state. | |
| - bpo-39947: Add :c:func:`PyInterpreterState_Get` function to the limited C | |
| API. | |
| - bpo-35370: If :c:func:`PySys_Audit` fails in :c:func:`PyEval_SetProfile` | |
| or :c:func:`PyEval_SetTrace`, log the error as an unraisable exception. | |
| - bpo-39947: Move the static inline function flavor of | |
| Py_EnterRecursiveCall() and Py_LeaveRecursiveCall() to the internal C API: | |
| they access PyThreadState attributes. The limited C API provides regular | |
| functions which hide implementation details. | |
| - bpo-39947: Py_TRASHCAN_BEGIN_CONDITION and Py_TRASHCAN_END macro no longer | |
| access PyThreadState attributes, but call new private _PyTrash_begin() and | |
| _PyTrash_end() functions which hide implementation details. | |
| - bpo-39884: :c:func:`PyDescr_NewMethod` and :c:func:`PyCFunction_NewEx` now | |
| include the method name in the SystemError "bad call flags" error message | |
| to ease debug. | |
| - bpo-39877: Deprecated :c:func:`PyEval_InitThreads` and | |
| :c:func:`PyEval_ThreadsInitialized`. Calling :c:func:`PyEval_InitThreads` | |
| now does nothing. | |
| - bpo-38249: :c:macro:`Py_UNREACHABLE` is now implemented with | |
| ``__builtin_unreachable()`` and analogs in release mode. | |
| - bpo-38643: :c:func:`PyNumber_ToBase` now raises a :exc:`SystemError` | |
| instead of crashing when called with invalid base. | |
| - bpo-39882: The :c:func:`Py_FatalError` function is replaced with a macro | |
| which logs automatically the name of the current function, unless the | |
| ``Py_LIMITED_API`` macro is defined. | |
| - bpo-39824: Extension modules: :c:member:`~PyModuleDef.m_traverse`, | |
| :c:member:`~PyModuleDef.m_clear` and :c:member:`~PyModuleDef.m_free` | |
| functions of :c:type:`PyModuleDef` are no longer called if the module | |
| state was requested but is not allocated yet. This is the case immediately | |
| after the module is created and before the module is executed | |
| (:c:data:`Py_mod_exec` function). More precisely, these functions are not | |
| called if :c:member:`~PyModuleDef.m_size` is greater than 0 and the module | |
| state (as returned by :c:func:`PyModule_GetState`) is ``NULL``. | |
| Extension modules without module state (``m_size <= 0``) are not affected. | |
| - bpo-38913: Fixed segfault in ``Py_BuildValue()`` called with a format | |
| containing "#" and undefined PY_SSIZE_T_CLEAN whwn an exception is set. | |
| - bpo-38500: Add a private API to get and set the frame evaluation function: | |
| add :c:func:`_PyInterpreterState_GetEvalFrameFunc` and | |
| :c:func:`_PyInterpreterState_SetEvalFrameFunc` C functions. The | |
| :c:type:`_PyFrameEvalFunction` function type now takes a *tstate* | |
| parameter. | |
| What's New in Python 3.9.0 alpha 4? | |
| =================================== | |
| *Release date: 2020-02-25* | |
| Security | |
| -------- | |
| - bpo-39184: Add audit events to functions in `fcntl`, `msvcrt`, `os`, | |
| `resource`, `shutil`, `signal` and `syslog`. | |
| - bpo-39401: Avoid unsafe DLL load at startup on Windows 7 and earlier. | |
| - bpo-39184: Add audit events to command execution functions in os and pty | |
| modules. | |
| Core and Builtins | |
| ----------------- | |
| - bpo-39382: Fix a use-after-free in the single inheritance path of | |
| ``issubclass()``, when the ``__bases__`` of an object has a single | |
| reference, and so does its first item. Patch by Yonatan Goldschmidt. | |
| - bpo-39573: Update clinic tool to use :c:func:`Py_IS_TYPE`. Patch by | |
| Dong-hee Na. | |
| - bpo-39619: Enable use of :func:`os.chroot` on HP-UX systems. | |
| - bpo-39573: Add :c:func:`Py_IS_TYPE` static inline function to check | |
| whether the object *o* type is *type*. | |
| - bpo-39606: Fix regression caused by fix for bpo-39386, that prevented | |
| calling ``aclose`` on an async generator that had already been closed or | |
| exhausted. | |
| - bpo-39579: Change the ending column offset of `Attribute` nodes | |
| constructed in `ast_for_dotted_name` to point at the end of the current | |
| node and not at the end of the last `NAME` node. | |
| - bpo-1635741: Port _crypt extension module to multiphase initialization | |
| (:pep:`489`). | |
| - bpo-1635741: Port _contextvars extension module to multiphase | |
| initialization (:pep:`489`). | |
| - bpo-39510: Fix segfault in ``readinto()`` method on closed BufferedReader. | |
| - bpo-39502: Fix :func:`time.localtime` on 64-bit AIX to support years | |
| before 1902 and after 2038. Patch by M Felt. | |
| - bpo-39492: Fix a reference cycle in the C Pickler that was preventing the | |
| garbage collection of deleted, pickled objects. | |
| - bpo-39453: Fixed a possible crash in :meth:`list.__contains__` when a list | |
| is changed during comparing items. Patch by Dong-hee Na. | |
| - bpo-39434: :term:`floor division` of float operation now has a better | |
| performance. Also the message of :exc:`ZeroDivisionError` for this | |
| operation is updated. Patch by Dong-hee Na. | |
| - bpo-1635741: Port _codecs extension module to multiphase initialization | |
| (:pep:`489`). | |
| - bpo-1635741: Port _bz2 extension module to multiphase initialization | |
| (:pep:`489`). | |
| - bpo-1635741: Port _abc extension module to multiphase initialization | |
| (:pep:`489`). | |
| - bpo-39320: Replace two complex bytecodes for building dicts with two | |
| simpler ones. The new bytecodes ``DICT_MERGE`` and ``DICT_UPDATE`` have | |
| been added The old bytecodes ``BUILD_MAP_UNPACK`` and | |
| ``BUILD_MAP_UNPACK_WITH_CALL`` have been removed. | |
| - bpo-39219: Syntax errors raised in the tokenizer now always set correct | |
| "text" and "offset" attributes. | |
| - bpo-36051: Drop the GIL during large ``bytes.join`` operations. Patch by | |
| Bruce Merry. | |
| - bpo-38960: Fix DTrace build issues on FreeBSD. Patch by David Carlier. | |
| - bpo-37207: Speed up calls to ``range()`` by about 30%, by using the PEP | |
| 590 ``vectorcall`` calling convention. Patch by Mark Shannon. | |
| - bpo-36144: :class:`dict` (and :class:`collections.UserDict`) objects now | |
| support PEP 584's merge (``|``) and update (``|=``) operators. Patch by | |
| Brandt Bucher. | |
| - bpo-32856: Optimized the idiom for assignment a temporary variable in | |
| comprehensions. Now ``for y in [expr]`` in comprehensions is as fast as a | |
| simple assignment ``y = expr``. | |
| Library | |
| ------- | |
| - bpo-30566: Fix :exc:`IndexError` when trying to decode an invalid string | |
| with punycode codec. | |
| - bpo-39649: Remove obsolete check for `__args__` in | |
| bdb.Bdb.format_stack_entry. | |
| - bpo-39648: Expanded :func:`math.gcd` and :func:`math.lcm` to handle | |
| multiple arguments. | |
| - bpo-39681: Fix a regression where the C pickle module wouldn't allow | |
| unpickling from a file-like object that doesn't expose a readinto() | |
| method. | |
| - bpo-35950: Raise :exc:`io.UnsupportedOperation` in | |
| :meth:`io.BufferedReader.truncate` when it is called on a read-only | |
| :class:`io.BufferedReader` instance. | |
| - bpo-39479: Add :func:`math.lcm` function: least common multiple. | |
| - bpo-39674: Revert "Do not expose abstract collection classes in the | |
| collections module" change (bpo-25988). Aliases to ABC like | |
| collections.Mapping are kept in Python 3.9 to ease transition from Python | |
| 2.7, but will be removed in Python 3.10. | |
| - bpo-39104: Fix hanging ProcessPoolExcutor on ``shutdown(wait=False)`` when | |
| a task has failed pickling. | |
| - bpo-39627: Fixed TypedDict totality check for inherited keys. | |
| - bpo-39474: Fixed starting position of AST for expressions like ``(a)(b)``, | |
| ``(a)[b]`` and ``(a).b``. | |
| - bpo-21016: The :mod:`pydoc` and :mod:`trace` modules now use the | |
| :mod:`sysconfig` module to get the path to the Python standard library, to | |
| support uncommon installation path like ``/usr/lib64/python3.9/`` on | |
| Fedora. Patch by Jan Matějek. | |
| - bpo-39590: Collections.deque now holds strong references during | |
| deque.__contains__ and deque.count, fixing crashes. | |
| - bpo-39586: The distutils ``bdist_msi`` command is deprecated in Python | |
| 3.9, use ``bdist_wheel`` (wheel packages) instead. | |
| - bpo-39595: Improved performance of zipfile.Path for files with a large | |
| number of entries. Also improved performance and fixed minor issue as | |
| published with `importlib_metadata 1.5 | |
| <https://importlib-metadata.readthedocs.io/en/latest/history.html#v1-5-0>`_. | |
| - bpo-39350: Fix regression in :class:`fractions.Fraction` if the numerator | |
| and/or the denominator is an :class:`int` subclass. The :func:`math.gcd` | |
| function is now used to normalize the *numerator* and *denominator*. | |
| :func:`math.gcd` always return a :class:`int` type. Previously, the GCD | |
| type depended on *numerator* and *denominator*. | |
| - bpo-39567: Added audit for :func:`os.walk`, :func:`os.fwalk`, | |
| :meth:`pathlib.Path.glob` and :meth:`pathlib.Path.rglob`. | |
| - bpo-39559: Remove unused, undocumented argument ``getters`` from | |
| :func:`uuid.getnode` | |
| - bpo-38149: :func:`sys.audit` is now called only once per call of | |
| :func:`glob.glob` and :func:`glob.iglob`. | |
| - bpo-39546: Fix a regression in :class:`~argparse.ArgumentParser` where | |
| ``allow_abbrev=False`` was ignored for long options that used a prefix | |
| character other than "-". | |
| - bpo-39450: Striped whitespace from docstring before returning it from | |
| :func:`unittest.case.shortDescription`. | |
| - bpo-12915: A new function ``resolve_name`` has been added to the | |
| ``pkgutil`` module. This resolves a string of the form ``'a.b.c.d'`` or | |
| ``'a.b:c.d'`` to an object. In the example, ``a.b`` is a package/module | |
| and ``c.d`` is an object within that package/module reached via recursive | |
| attribute access. | |
| - bpo-39353: The :func:`binascii.crc_hqx` function is no longer deprecated. | |
| - bpo-39493: Mark ``typing.IO.closed`` as a property | |
| - bpo-39491: Add :data:`typing.Annotated` and ``include_extras`` parameter | |
| to :func:`typing.get_type_hints` as part of :pep:`593`. Patch by Till | |
| Varoquaux, documentation by Till Varoquaux and Konstantin Kashin. | |
| - bpo-39485: Fix a bug in :func:`unittest.mock.create_autospec` that would | |
| complain about the wrong number of arguments for custom descriptors | |
| defined in an extension module returning functions. | |
| - bpo-38932: Mock fully resets child objects on reset_mock(). Patch by | |
| Vegard Stikbakke | |
| - bpo-39082: Allow AsyncMock to correctly patch static/class methods | |
| - bpo-39432: Implement PEP-489 algorithm for non-ascii "PyInit\_..." symbol | |
| names in distutils to make it export the correct init symbol also on | |
| Windows. | |
| - bpo-18819: Omit ``devmajor`` and ``devminor`` fields for non-device files | |
| in :mod:`tarfile` archives, enabling bit-for-bit compatibility with GNU | |
| ``tar(1)``. | |
| - bpo-39349: Added a new *cancel_futures* parameter to | |
| :meth:`concurrent.futures.Executor.shutdown` that cancels all pending | |
| futures which have not started running, instead of waiting for them to | |
| complete before shutting down the executor. | |
| - bpo-39274: ``bool(fraction.Fraction)`` now returns a boolean even if | |
| (numerator != 0) does not return a boolean (ex: numpy number). | |
| - bpo-34793: Remove support for ``with (await asyncio.lock):`` and ``with | |
| (yield from asyncio.lock):``. The same is correct for | |
| ``asyncio.Condition`` and ``asyncio.Semaphore``. | |
| - bpo-25597: Ensure, if ``wraps`` is supplied to | |
| :class:`unittest.mock.MagicMock`, it is used to calculate return values | |
| for the magic methods instead of using the default return values. Patch by | |
| Karthikeyan Singaravelan. | |
| - bpo-36350: `inspect.Signature.parameters` and | |
| `inspect.BoundArguments.arguments` are now dicts instead of OrderedDicts. | |
| Patch contributed by Rémi Lapeyre. | |
| - bpo-35727: Fix sys.exit() and sys.exit(None) exit code propagation when | |
| used in multiprocessing.Process. | |
| - bpo-32173: * Add `lazycache` function to `__all__`. * Use `dict.clear` to | |
| clear the cache. * Refactoring `getline` function and `checkcache` | |
| function. | |
| Documentation | |
| ------------- | |
| - bpo-17422: The language reference now specifies restrictions on class | |
| namespaces. Adapted from a patch by Ethan Furman. | |
| - bpo-39572: Updated documentation of ``total`` flag of ``TypedDict``. | |
| - bpo-39654: In pyclbr doc, update 'class' to 'module' where appropriate and | |
| add readmodule comment. Patch by Hakan Çelik. | |
| - bpo-39153: Clarify refcounting semantics for the following functions: - | |
| PyObject_SetItem - PyMapping_SetItemString - PyDict_SetItem - | |
| PyDict_SetItemString | |
| - bpo-39392: Explain that when filling with turtle, overlap regions may be | |
| left unfilled. | |
| - bpo-39369: Update mmap readline method description. The fact that the | |
| readline method does update the file position should not be ignored since | |
| this might give the impression for the programmer that it doesn't update | |
| it. | |
| - bpo-9056: Include subsection in TOC for PDF version of docs. | |
| Tests | |
| ----- | |
| - bpo-38325: Skip tests on non-BMP characters of test_winconsoleio. | |
| - bpo-39502: Skip test_zipfile.test_add_file_after_2107() if | |
| :func:`time.localtime` fails with :exc:`OverflowError`. It is the case on | |
| AIX 6.1 for example. | |
| Build | |
| ----- | |
| - bpo-39489: Remove ``COUNT_ALLOCS`` special build. | |
| Windows | |
| ------- | |
| - bpo-39553: Delete unused code related to SxS manifests. | |
| - bpo-39439: Honor the Python path when a virtualenv is active on Windows. | |
| - bpo-39393: Improve the error message when attempting to load a DLL with | |
| unresolved dependencies. | |
| - bpo-38883: :meth:`~pathlib.Path.home()` and | |
| :meth:`~pathlib.Path.expanduser()` on Windows now prefer | |
| :envvar:`USERPROFILE` and no longer use :envvar:`HOME`, which is not | |
| normally set for regular user accounts. This makes them again behave like | |
| :func:`os.path.expanduser`, which was changed to ignore :envvar:`HOME` in | |
| 3.8, see :issue:`36264`. | |
| - bpo-39185: The build.bat script has additional options for very-quiet | |
| output (-q) and very-verbose output (-vv) | |
| IDLE | |
| ---- | |
| - bpo-39663: Add tests for pyparse find_good_parse_start(). | |
| - bpo-39600: In the font configuration window, remove duplicated font names. | |
| - bpo-30780: Add remaining configdialog tests for buttons and highlights and | |
| keys tabs. | |
| - bpo-39388: IDLE Settings Cancel button now cancels pending changes | |
| - bpo-38792: Close an IDLE shell calltip if a :exc:`KeyboardInterrupt` or | |
| shell restart occurs. Patch by Zackery Spytz. | |
| C API | |
| ----- | |
| - bpo-35081: Move the ``bytes_methods.h`` header file to the internal C API | |
| as ``pycore_bytes_methods.h``: it only contains private symbols (prefixed | |
| by ``_Py``), except of the ``PyDoc_STRVAR_shared()`` macro. | |
| - bpo-35081: Move the ``dtoa.h`` header file to the internal C API as | |
| ``pycore_dtoa.h``: it only contains private functions (prefixed by | |
| ``_Py``). The :mod:`math` and :mod:`cmath` modules must now be compiled | |
| with the ``Py_BUILD_CORE`` macro defined. | |
| - bpo-39573: Add :c:func:`Py_SET_SIZE` function to set the size of an | |
| object. | |
| - bpo-39500: :c:func:`PyUnicode_IsIdentifier` does not call | |
| :c:func:`Py_FatalError` anymore if the string is not ready. | |
| - bpo-39573: Add :c:func:`Py_SET_TYPE` function to set the type of an | |
| object. | |
| - bpo-39573: Add a :c:func:`Py_SET_REFCNT` function to set the reference | |
| counter of an object. | |
| - bpo-39542: Convert :c:func:`PyType_HasFeature`, :c:func:`PyType_Check` and | |
| :c:func:`PyType_CheckExact` macros to static inline functions. | |
| - bpo-39542: In the limited C API, ``PyObject_INIT()`` and | |
| ``PyObject_INIT_VAR()`` are now defined as aliases to | |
| :c:func:`PyObject_Init` and :c:func:`PyObject_InitVar` to make their | |
| implementation opaque. It avoids to leak implementation details in the | |
| limited C API. Exclude the following functions from the limited C API: | |
| ``_Py_NewReference()``, ``_Py_ForgetReference()``, | |
| ``_PyTraceMalloc_NewReference()`` and ``_Py_GetRefTotal()``. | |
| - bpo-39542: Exclude trashcan mechanism from the limited C API: it requires | |
| access to PyTypeObject and PyThreadState structure fields, whereas these | |
| structures are opaque in the limited C API. | |
| - bpo-39511: The :c:func:`PyThreadState_Clear` function now calls the | |
| :c:member:`PyThreadState.on_delete` callback. Previously, that happened in | |
| :c:func:`PyThreadState_Delete`. | |
| - bpo-38076: Fix to clear the interpreter state only after clearing module | |
| globals to guarantee module state access from C Extensions during runtime | |
| destruction | |
| - bpo-39245: The Vectorcall API (PEP 590) was made public, adding the | |
| functions ``PyObject_Vectorcall``, ``PyObject_VectorcallMethod``, | |
| ``PyVectorcall_Function``, ``PyObject_CallOneArg``, | |
| ``PyObject_CallMethodNoArgs``, ``PyObject_CallMethodOneArg``, | |
| ``PyObject_FastCallDict``, and the flag ``Py_TPFLAGS_HAVE_VECTORCALL``. | |
| What's New in Python 3.9.0 alpha 3? | |
| =================================== | |
| *Release date: 2020-01-24* | |
| Core and Builtins | |
| ----------------- | |
| - bpo-39427: Document all possibilities for the ``-X`` options in the | |
| command line help section. Patch by Pablo Galindo. | |
| - bpo-39421: Fix possible crashes when operating with the functions in the | |
| :mod:`heapq` module and custom comparison operators. | |
| - bpo-39386: Prevent double awaiting of async iterator. | |
| - bpo-17005: Add :class:`functools.TopologicalSorter` to the | |
| :mod:`functools` module to offers functionality to perform topological | |
| sorting of graphs. Patch by Pablo Galindo, Tim Peters and Larry Hastings. | |
| - bpo-39320: Replace four complex bytecodes for building sequences with | |
| three simpler ones. | |
| The following four bytecodes have been removed: | |
| * BUILD_LIST_UNPACK | |
| * BUILD_TUPLE_UNPACK | |
| * BUILD_SET_UNPACK | |
| * BUILD_TUPLE_UNPACK_WITH_CALL | |
| The following three bytecodes have been added: | |
| * LIST_TO_TUPLE | |
| * LIST_EXTEND | |
| * SET_UPDATE | |
| - bpo-39336: Import loaders which publish immutable module objects can now | |
| publish immutable packages in addition to individual modules. | |
| - bpo-39322: Added a new function :func:`gc.is_finalized` to check if an | |
| object has been finalized by the garbage collector. Patch by Pablo | |
| Galindo. | |
| - bpo-39048: Improve the displayed error message when incorrect types are | |
| passed to ``async with`` statements by looking up the :meth:`__aenter__` | |
| special method before the :meth:`__aexit__` special method when entering | |
| an asynchronous context manager. Patch by Géry Ogam. | |
| - bpo-39235: Fix AST end location for lone generator expression in function | |
| call, e.g. f(i for i in a). | |
| - bpo-39209: Correctly handle multi-line tokens in interactive mode. Patch | |
| by Pablo Galindo. | |
| - bpo-1635741: Port _json extension module to multiphase initialization | |
| (:pep:`489`). | |
| - bpo-39216: Fix constant folding optimization for positional only arguments | |
| - by Anthony Sottile. | |
| - bpo-39215: Fix ``SystemError`` when nested function has annotation on | |
| positional-only argument - by Anthony Sottile. | |
| - bpo-39200: Correct the error message when calling the :func:`min` or | |
| :func:`max` with no arguments. Patch by Dong-hee Na. | |
| - bpo-39200: Correct the error message when trying to construct | |
| :class:`range` objects with no arguments. Patch by Pablo Galindo. | |
| - bpo-39166: Fix incorrect line execution reporting in trace functions when | |
| tracing the last iteration of asynchronous for loops. Patch by Pablo | |
| Galindo. | |
| - bpo-39114: Fix incorrect line execution reporting in trace functions when | |
| tracing exception handlers with name binding. Patch by Pablo Galindo. | |
| - bpo-39156: Split the COMPARE_OP bytecode instruction into four distinct | |
| instructions. | |
| * COMPARE_OP for rich comparisons | |
| * IS_OP for 'is' and 'is not' tests | |
| * CONTAINS_OP for 'in' and 'is not' tests | |
| * JUMP_IF_NOT_EXC_MATCH for checking exceptions in 'try-except' statements. | |
| This improves the clarity of the interpreter and should provide a modest | |
| speedup. | |
| - bpo-38588: Fix possible crashes in dict and list when calling | |
| :c:func:`PyObject_RichCompareBool`. | |
| - bpo-13601: By default, ``sys.stderr`` is line-buffered now, even if | |
| ``stderr`` is redirected to a file. You can still make ``sys.stderr`` | |
| unbuffered by passing the :option:`-u` command-line option or setting the | |
| :envvar:`PYTHONUNBUFFERED` environment variable. | |
| (Contributed by Jendrik Seipp in bpo-13601.) | |
| - bpo-38610: Fix possible crashes in several list methods by holding strong | |
| references to list elements when calling | |
| :c:func:`PyObject_RichCompareBool`. | |
| - bpo-32021: Include brotli .br encoding in mimetypes encodings_map | |
| Library | |
| ------- | |
| - bpo-39430: Fixed race condition in lazy imports in :mod:`tarfile`. | |
| - bpo-39413: The :func:`os.unsetenv` function is now also available on | |
| Windows. | |
| - bpo-39390: Fixed a regression with the `ignore` callback of | |
| :func:`shutil.copytree`. The argument types are now str and List[str] | |
| again. | |
| - bpo-39395: The :func:`os.putenv` and :func:`os.unsetenv` functions are now | |
| always available. | |
| - bpo-39406: If ``setenv()`` C function is available, :func:`os.putenv` is | |
| now implemented with ``setenv()`` instead of ``putenv()``, so Python | |
| doesn't have to handle the environment variable memory. | |
| - bpo-39396: Fix ``math.nextafter(-0.0, +0.0)`` on AIX 7.1. | |
| - bpo-29435: Allow :func:`tarfile.is_tarfile` to be used with file and | |
| file-like objects, like :func:`zipfile.is_zipfile`. Patch by William | |
| Woodruff. | |
| - bpo-39377: Removed ``encoding`` option from :func:`json.loads`. It has | |
| been deprecated since Python 3.1. | |
| - bpo-39389: Write accurate compression level metadata in :mod:`gzip` | |
| archives, rather than always signaling maximum compression. | |
| - bpo-39366: The previously deprecated ``xpath()`` and ``xgtitle()`` methods | |
| of :class:`nntplib.NNTP` have been removed. | |
| - bpo-39357: Remove the *buffering* parameter of :class:`bz2.BZ2File`. Since | |
| Python 3.0, it was ignored and using it was emitting | |
| :exc:`DeprecationWarning`. Pass an open file object, to control how the | |
| file is opened. The *compresslevel* parameter becomes keyword-only. | |
| - bpo-39353: Deprecate binhex4 and hexbin4 standards. Deprecate the | |
| :mod:`binhex` module and the following :mod:`binascii` functions: | |
| :func:`~binascii.b2a_hqx`, :func:`~binascii.a2b_hqx`, | |
| :func:`~binascii.rlecode_hqx`, :func:`~binascii.rledecode_hqx`, | |
| :func:`~binascii.crc_hqx`. | |
| - bpo-39351: Remove ``base64.encodestring()`` and ``base64.decodestring()``, | |
| aliases deprecated since Python 3.1: use :func:`base64.encodebytes` and | |
| :func:`base64.decodebytes` instead. | |
| - bpo-39350: Remove ``fractions.gcd()`` function, deprecated since Python | |
| 3.5 (:issue:`22486`): use :func:`math.gcd` instead. | |
| - bpo-39329: :class:`~smtplib.LMTP` constructor now has an optional | |
| *timeout* parameter. Patch by Dong-hee Na. | |
| - bpo-39313: Add a new ``exec_function`` option (*--exec-function* in the | |
| CLI) to ``RefactoringTool`` for making ``exec`` a function. Patch by | |
| Batuhan Taskaya. | |
| - bpo-39259: :class:`~ftplib.FTP_TLS` and :class:`~ftplib.FTP_TLS` now raise | |
| a :class:`ValueError` if the given timeout for their constructor is zero | |
| to prevent the creation of a non-blocking socket. Patch by Dong-hee Na. | |
| - bpo-39259: :class:`~smtplib.SMTP` and :class:`~smtplib.SMTP_SSL` now raise | |
| a :class:`ValueError` if the given timeout for their constructor is zero | |
| to prevent the creation of a non-blocking socket. Patch by Dong-hee Na. | |
| - bpo-39310: Add :func:`math.ulp`: return the value of the least significant | |
| bit of a float. | |
| - bpo-39297: Improved performance of importlib.metadata distribution | |
| discovery and resilients to inaccessible sys.path entries | |
| (importlib_metadata v1.4.0). | |
| - bpo-39259: :class:`~nntplib.NNTP` and :class:`~nntplib.NNTP_SSL` now raise | |
| a :class:`ValueError` if the given timeout for their constructor is zero | |
| to prevent the creation of a non-blocking socket. Patch by Dong-hee Na. | |
| - bpo-38901: When you specify prompt='.' or equivalently python -m venv | |
| --prompt . ... the basename of the current directory is used to set the | |
| created venv's prompt when it's activated. | |
| - bpo-39288: Add :func:`math.nextafter`: return the next floating-point | |
| value after *x* towards *y*. | |
| - bpo-39259: :class:`~poplib.POP3` and :class:`~poplib.POP3_SSL` now raise a | |
| :class:`ValueError` if the given timeout for their constructor is zero to | |
| prevent the creation of a non-blocking socket. Patch by Dong-hee Na. | |
| - bpo-39242: Updated the Gmane domain from news.gmane.org to news.gmane.io | |
| which is used for examples of :class:`~nntplib.NNTP` news reader server | |
| and nntplib tests. | |
| - bpo-35292: Proxy the `SimpleHTTPRequestHandler.guess_type` to | |
| `mimetypes.guess_type` so the `mimetypes.init` is called lazily to avoid | |
| unnecessary costs when :mod:`http.server` module is imported. | |
| - bpo-39239: The :meth:`select.epoll.unregister` method no longer ignores | |
| the :data:`~errno.EBADF` error. | |
| - bpo-38907: In http.server script, restore binding to IPv4 on Windows. | |
| - bpo-39152: Fix ttk.Scale.configure([name]) to return configuration tuple | |
| for name or all options. Giovanni Lombardo contributed part of the patch. | |
| - bpo-39198: If an exception were to be thrown in `Logger.isEnabledFor` | |
| (say, by asyncio timeouts or stopit) , the `logging` global lock may not | |
| be released appropriately, resulting in deadlock. This change wraps that | |
| block of code with `try...finally` to ensure the lock is released. | |
| - bpo-39191: Perform a check for running loop before starting a new task in | |
| ``loop.run_until_complete()`` to fail fast; it prevents the side effect of | |
| new task spawning before exception raising. | |
| - bpo-38871: Correctly parenthesize filter-based statements that contain | |
| lambda expressions in mod:`lib2to3`. Patch by Dong-hee Na. | |
| - bpo-39142: A change was made to logging.config.dictConfig to avoid | |
| converting instances of named tuples to ConvertingTuple. It's assumed that | |
| named tuples are too specialised to be treated like ordinary tuples; if a | |
| user of named tuples requires ConvertingTuple functionality, they will | |
| have to implement that themselves in their named tuple class. | |
| - bpo-39158: ast.literal_eval() now supports empty sets. | |
| - bpo-39129: Fix import path for ``asyncio.TimeoutError`` | |
| - bpo-39057: :func:`urllib.request.proxy_bypass_environment` now ignores | |
| leading dots and no longer ignores a trailing newline. | |
| - bpo-39056: Fixed handling invalid warning category in the -W option. No | |
| longer import the re module if it is not needed. | |
| - bpo-39055: :func:`base64.b64decode` with ``validate=True`` raises now a | |
| binascii.Error if the input ends with a single ``\n``. | |
| - bpo-21600: Fix :func:`mock.patch.stopall` to stop active patches that were | |
| created with :func:`mock.patch.dict`. | |
| - bpo-39019: Implement dummy ``__class_getitem__`` for | |
| :class:`tempfile.SpooledTemporaryFile`. | |
| - bpo-39019: Implement dummy ``__class_getitem__`` for ``subprocess.Popen``, | |
| ``subprocess.CompletedProcess`` | |
| - bpo-38914: Adjusted the wording of the warning issued by distutils' | |
| ``check`` command when the ``author`` and ``maintainer`` fields are | |
| supplied but no corresponding e-mail field (``author_email`` or | |
| ``maintainer_email``) is found. The wording now reflects the fact that | |
| these fields are suggested, but not required. Patch by Juergen Gmach. | |
| - bpo-38878: Fixed __subclasshook__ of :class:`os.PathLike` to return a | |
| correct result upon inheritance. Patch by Bar Harel. | |
| - bpo-38615: :class:`~imaplib.IMAP4` and :class:`~imaplib.IMAP4_SSL` now | |
| have an optional *timeout* parameter for their constructors. Also, the | |
| :meth:`~imaplib.IMAP4.open` method now has an optional *timeout* parameter | |
| with this change. The overridden methods of :class:`~imaplib.IMAP4_SSL` | |
| and :class:`~imaplib.IMAP4_stream` were applied to this change. Patch by | |
| Dong-hee Na. | |
| - bpo-35182: Fixed :func:`Popen.communicate` subsequent call crash when the | |
| child process has already closed any piped standard stream, but still | |
| continues to be running. Patch by Andriy Maletsky. | |
| - bpo-38630: On Unix, :meth:`subprocess.Popen.send_signal` now polls the | |
| process status. Polling reduces the risk of sending a signal to the wrong | |
| process if the process completed, the :attr:`subprocess.Popen.returncode` | |
| attribute is still ``None``, and the pid has been reassigned (recycled) to | |
| a new different process. | |
| - bpo-38536: Removes trailing space in formatted currency with | |
| `international=True` and a locale with symbol following value. E.g. | |
| `locale.currency(12.34, international=True)` returned `'12,34 EUR '` | |
| instead of `'12,34 EUR'`. | |
| - bpo-38473: Use signature from inner mock for autospecced methods attached | |
| with :func:`unittest.mock.attach_mock`. Patch by Karthikeyan Singaravelan. | |
| - bpo-38361: Fixed an issue where ``ident`` could include a leading path | |
| separator when :func:`syslog.openlog` was called without arguments. | |
| - bpo-38293: Add :func:`copy.copy` and :func:`copy.deepcopy` support to | |
| :func:`property` objects. | |
| - bpo-37958: Added the pstats.Stats.get_profile_dict() method to return the | |
| profile data as a StatsProfile instance. | |
| - bpo-28367: Termios magic constants for the following baud rates: - | |
| B500000 - B576000 - B921600 - B1000000 - B1152000 - B1500000 - | |
| B2000000 - B2500000 - B3000000 - B3500000 - B4000000 Patch by | |
| Andrey Smirnov | |
| Documentation | |
| ------------- | |
| - bpo-39381: Mention in docs that :func:`asyncio.get_event_loop` implicitly | |
| creates new event loop only if called from the main thread. | |
| - bpo-38918: Add an entry for ``__module__`` in the "function" & "method" | |
| sections of the :mod:`inspect` docs' :ref:`inspect-types` table. | |
| - bpo-3530: In the :mod:`ast` module documentation, fix a misleading | |
| ``NodeTransformer`` example and add advice on when to use the | |
| ``fix_missing_locations`` function. | |
| Build | |
| ----- | |
| - bpo-39395: On non-Windows platforms, the :c:func:`setenv` and | |
| :c:func:`unsetenv` functions are now required to build Python. | |
| - bpo-39160: Updated the documentation in `./configure --help` to show | |
| default values, reference documentation where required and add additional | |
| explanation where needed. | |
| - bpo-39144: The ctags and etags build targets both include Modules/_ctypes | |
| and Python standard library source files. | |
| IDLE | |
| ---- | |
| - bpo-39050: Make IDLE Settings dialog Help button work again. | |
| - bpo-34118: Tag memoryview, range, and tuple as classes, the same as list, | |
| etcetera, in the library manual built-in functions list. | |
| - bpo-32989: Add tests for editor newline_and_indent_event method. Remove | |
| dead code from pyparse find_good_parse_start method. | |
| C API | |
| ----- | |
| - bpo-39372: Clean header files of interfaces defined but with no | |
| implementation. The public API symbols being removed are: | |
| ``_PyBytes_InsertThousandsGroupingLocale``, | |
| ``_PyBytes_InsertThousandsGrouping``, ``_Py_InitializeFromArgs``, | |
| ``_Py_InitializeFromWideArgs``, ``_PyFloat_Repr``, ``_PyFloat_Digits``, | |
| ``_PyFloat_DigitsInit``, ``PyFrame_ExtendStack``, | |
| ``_PyAIterWrapper_Type``, ``PyNullImporter_Type``, ``PyCmpWrapper_Type``, | |
| ``PySortWrapper_Type``, ``PyNoArgsFunction``. | |
| - bpo-39164: Add a private ``_PyErr_GetExcInfo()`` function to retrieve | |
| exception information of the specified Python thread state. | |
| What's New in Python 3.9.0 alpha 2? | |
| =================================== | |
| *Release date: 2019-12-18* | |
| Security | |
| -------- | |
| - bpo-38945: Newline characters have been escaped when performing uu | |
| encoding to prevent them from overflowing into to content section of the | |
| encoded file. This prevents malicious or accidental modification of data | |
| during the decoding process. | |
| - bpo-37228: Due to significant security concerns, the *reuse_address* | |
| parameter of :meth:`asyncio.loop.create_datagram_endpoint` is no longer | |
| supported. This is because of the behavior of ``SO_REUSEADDR`` in UDP. For | |
| more details, see the documentation for | |
| ``loop.create_datagram_endpoint()``. (Contributed by Kyle Stanley, Antoine | |
| Pitrou, and Yury Selivanov in :issue:`37228`.) | |
| - bpo-38804: Fixes a ReDoS vulnerability in :mod:`http.cookiejar`. Patch by | |
| Ben Caller. | |
| Core and Builtins | |
| ----------------- | |
| - bpo-39028: Slightly improve the speed of keyword argument parsing with | |
| many kwargs by strengthening the assumption that kwargs are interned | |
| strings. | |
| - bpo-39080: Fix the value of *end_col_offset* for Starred Expression AST | |
| nodes when they are among the elements in the *args* attribute of Call AST | |
| nodes. | |
| - bpo-39031: When parsing an "elif" node, lineno and col_offset of the node | |
| now point to the "elif" keyword and not to its condition, making it | |
| consistent with the "if" node. Patch by Lysandros Nikolaou. | |
| - bpo-20443: In Python 3.9.0a1, sys.argv[0] was made an absolute path if a | |
| filename was specified on the command line. Revert this change, since most | |
| users expect sys.argv to be unmodified. | |
| - bpo-39008: :c:func:`PySys_Audit` now requires ``Py_ssize_t`` to be used | |
| for size arguments in the format string, regardless of whether | |
| ``PY_SSIZE_T_CLEAN`` was defined at include time. | |
| - bpo-38673: In REPL mode, don't switch to PS2 if the line starts with | |
| comment or whitespace. Based on work by Batuhan Taşkaya. | |
| - bpo-38922: Calling ``replace`` on a code object now raises the | |
| ``code.__new__`` audit event. | |
| - bpo-38920: Add audit hooks for when :func:`sys.excepthook` and | |
| :func:`sys.unraisablehook` are invoked. | |
| - bpo-38892: Improve documentation for audit events table and functions. | |
| - bpo-38852: Set the thread stack size to 8 Mb for debug builds on android | |
| platforms. | |
| - bpo-38858: Each Python subinterpreter now has its own "small integer | |
| singletons": numbers in [-5; 257] range. It is no longer possible to | |
| change the number of small integers at build time by overriding | |
| ``NSMALLNEGINTS`` and ``NSMALLPOSINTS`` macros: macros should now be | |
| modified manually in ``pycore_pystate.h`` header file. | |
| - bpo-36854: The garbage collector state becomes per interpreter | |
| (``PyInterpreterState.gc``), rather than being global | |
| (``_PyRuntimeState.gc``). | |
| - bpo-38835: The ``PyFPE_START_PROTECT()`` and ``PyFPE_END_PROTECT()`` | |
| macros are empty: they have been doing nothing for the last year, so stop | |
| using them. | |
| - bpo-38328: Sped up the creation time of constant :class:`list` and | |
| :class:`set` displays. Patch by Brandt Bucher. | |
| - bpo-38707: ``MainThread.native_id`` is now correctly reset in child | |
| processes spawned using :class:`multiprocessing.Process`, instead of | |
| retaining the parent's value. | |
| - bpo-38629: Added ``__floor__`` and ``__ceil__`` methods to float object. | |
| Patch by Batuhan Taşkaya. | |
| - bpo-27145: int + int and int - int operators can now return small integer | |
| singletons. Patch by hongweipeng. | |
| - bpo-38021: Provide a platform tag for AIX that is sufficient for PEP425 | |
| binary distribution identification. Patch by Michael Felt. | |
| - bpo-35409: Ignore GeneratorExit exceptions when throwing an exception into | |
| the aclose coroutine of an asynchronous generator. | |
| - bpo-33387: Removed WITH_CLEANUP_START, WITH_CLEANUP_FINISH, BEGIN_FINALLY, | |
| END_FINALLY, CALL_FINALLY and POP_FINALLY bytecodes. Replaced with RERAISE | |
| and WITH_EXCEPT_START bytecodes. The compiler now generates different code | |
| for exceptional and non-exceptional branches for 'with' and 'try-except' | |
| statements. For 'try-finally' statements the 'finally' block is replicated | |
| for each exit from the 'try' body. | |
| Library | |
| ------- | |
| - bpo-39033: Fix :exc:`NameError` in :mod:`zipimport`. Patch by Karthikeyan | |
| Singaravelan. | |
| - bpo-39022: Update importlib.metadata to include improvements from | |
| importlib_metadata 1.3 including better serialization of EntryPoints and | |
| improved documentation for custom finders. | |
| - bpo-39006: Fix asyncio when the ssl module is missing: only check for | |
| ssl.SSLSocket instance if the ssl module is available. | |
| - bpo-38708: Fix a potential IndexError in email parser when parsing an | |
| empty msg-id. | |
| - bpo-38698: Add a new ``InvalidMessageID`` token to email parser to | |
| represent invalid Message-ID headers. Also, add defects when there is | |
| remaining value after parsing the header. | |
| - bpo-38994: Implement ``__class_getitem__`` for ``os.PathLike``, | |
| ``pathlib.Path``. | |
| - bpo-38979: Return class from ``ContextVar.__class_getitem__`` to simplify | |
| subclassing. | |
| - bpo-38978: Implement ``__class_getitem__`` on asyncio objects (Future, | |
| Task, Queue). Patch by Batuhan Taskaya. | |
| - bpo-38916: :class:`array.array`: Remove ``tostring()`` and | |
| ``fromstring()`` methods. They were aliases to ``tobytes()`` and | |
| ``frombytes()``, deprecated since Python 3.2. | |
| - bpo-38986: Make repr of C accelerated TaskWakeupMethWrapper the same as of | |
| pure Python version. | |
| - bpo-38982: Fix asyncio ``PidfdChildWatcher``: handle ``waitpid()`` error. | |
| If ``waitpid()`` is called elsewhere, ``waitpid()`` call fails with | |
| :exc:`ChildProcessError`: use return code 255 in this case, and log a | |
| warning. It ensures that the pidfd file descriptor is closed if this error | |
| occurs. | |
| - bpo-38529: Drop too noisy asyncio warning about deletion of a stream | |
| without explicit ``.close()`` call. | |
| - bpo-27413: Added ability to pass through ``ensure_ascii`` options to | |
| json.dumps in the ``json.tool`` command-line interface. | |
| - bpo-38634: The :mod:`readline` module now detects if Python is linked to | |
| libedit at runtime on all platforms. Previously, the check was only done | |
| on macOS. | |
| - bpo-33684: Fix ``json.tool`` failed to read a JSON file with non-ASCII | |
| characters when locale encoding is not UTF-8. | |
| - bpo-38698: Prevent UnboundLocalError to pop up in parse_message_id. | |
| parse_message_id() was improperly using a token defined inside an | |
| exception handler, which was raising `UnboundLocalError` on parsing an | |
| invalid value. Patch by Claudiu Popa. | |
| - bpo-38927: Use ``python -m pip`` instead of ``pip`` to upgrade | |
| dependencies in venv. | |
| - bpo-26730: Fix ``SpooledTemporaryFile.rollover()`` might corrupt the file | |
| when it is in text mode. Patch by Serhiy Storchaka. | |
| - bpo-38881: random.choices() now raises a ValueError when all the weights | |
| are zero. | |
| - bpo-38876: Raise pickle.UnpicklingError when loading an item from memo for | |
| invalid input. | |
| The previous code was raising a `KeyError` for both the Python and C | |
| implementation. This was caused by the specified index of an invalid input | |
| which did not exist in the memo structure, where the pickle stores what | |
| objects it has seen. The malformed input would have caused either a | |
| `BINGET` or `LONG_BINGET` load from the memo, leading to a `KeyError` as | |
| the determined index was bogus. Patch by Claudiu Popa | |
| - bpo-38688: Calling func:`shutil.copytree` to copy a directory tree from | |
| one directory to another subdirectory resulted in an endless loop and a | |
| RecursionError. A fix was added to consume an iterator and create the list | |
| of the entries to be copied, avoiding the recursion for newly created | |
| directories. Patch by Bruno P. Kinoshita. | |
| - bpo-38863: Improve :func:`is_cgi` function in :mod:`http.server`, which | |
| enables processing the case that cgi directory is a child of another | |
| directory other than root. | |
| - bpo-37838: :meth:`typing.get_type_hints` properly handles functions | |
| decorated with :meth:`functools.wraps`. | |
| - bpo-38870: Expose :func:`ast.unparse` as a function of the :mod:`ast` | |
| module that can be used to unparse an :class:`ast.AST` object and produce | |
| a string with code that would produce an equivalent :class:`ast.AST` | |
| object when parsed. Patch by Pablo Galindo and Batuhan Taskaya. | |
| - bpo-38859: AsyncMock now returns StopAsyncIteration on the exhaustion of a | |
| side_effects iterable. Since PEP-479 its Impossible to raise a | |
| StopIteration exception from a coroutine. | |
| - bpo-38857: AsyncMock fix for return values that are awaitable types. This | |
| also covers side_effect iterable values that happened to be awaitable, and | |
| wraps callables that return an awaitable type. Before these awaitables | |
| were being awaited instead of being returned as is. | |
| - bpo-38834: :class:`typing.TypedDict` subclasses now track which keys are | |
| optional using the ``__required_keys__`` and ``__optional_keys__`` | |
| attributes, to enable runtime validation by downstream projects. Patch by | |
| Zac Hatfield-Dodds. | |
| - bpo-38821: Fix unhandled exceptions in :mod:`argparse` when | |
| internationalizing error messages for arguments with ``nargs`` set to | |
| special (non-integer) values. Patch by Federico Bond. | |
| - bpo-38820: Make Python compatible with OpenSSL 3.0.0. | |
| :func:`ssl.SSLSocket.getpeercert` no longer returns IPv6 addresses with a | |
| trailing new line. | |
| - bpo-38811: Fix an unhandled exception in :mod:`pathlib` when | |
| :meth:`os.link` is missing. Patch by Toke Høiland-Jørgensen. | |
| - bpo-38686: Added support for multiple ``qop`` values in | |
| :class:`urllib.request.AbstractDigestAuthHandler`. | |
| - bpo-38712: Add the Linux-specific :func:`signal.pidfd_send_signal` | |
| function, which allows sending a signal to a process identified by a file | |
| descriptor rather than a pid. | |
| - bpo-38348: Add ``-i`` and ``--indent`` (indentation level), and | |
| ``--no-type-comments`` (type comments) command line options to ast parsing | |
| tool. | |
| - bpo-37523: Change :class:`zipfile.ZipExtFile` to raise ``ValueError`` when | |
| trying to access the underlying file object after it has been closed. This | |
| new behavior is consistent with how accessing closed files is handled in | |
| other parts of Python. | |
| - bpo-38045: Improve the performance of :func:`enum._decompose` in | |
| :mod:`enum`. Patch by hongweipeng. | |
| - bpo-36820: Break cycle generated when saving an exception in socket.py, | |
| codeop.py and dyld.py as they keep alive not only the exception but user | |
| objects through the ``__traceback__`` attribute. Patch by Mario Corchero. | |
| - bpo-36406: Handle namespace packages in :mod:`doctest`. Patch by | |
| Karthikeyan Singaravelan. | |
| - bpo-34776: Fix dataclasses to support forward references in type | |
| annotations | |
| - bpo-20928: ElementTree supports recursive XInclude processing. Patch by | |
| Stefan Behnel. | |
| - bpo-29636: Add whitespace options for formatting JSON with the | |
| ``json.tool`` CLI. The following mutually exclusive options are now | |
| supported: ``--indent`` for setting the indent level in spaces; ``--tab`` | |
| for indenting with tabs; ``--no-indent`` for suppressing newlines; and | |
| ``--compact`` for suppressing all whitespace. The default behavior remains | |
| the same as ``--indent=4``. | |
| Documentation | |
| ------------- | |
| - bpo-38928: Correct when venv's ``upgrade_dependencies()`` and | |
| ``--upgrade-deps`` are added. | |
| - bpo-38899: Update documentation to state that to activate virtual | |
| environments under fish one should use `source`, not `.` as documented at | |
| https://fishshell.com/docs/current/cmds/source.html. | |
| - bpo-22377: Improves documentation of the values that | |
| :meth:`datetime.datetime.strptime` accepts for ``%Z``. Patch by Karl | |
| Dubost. | |
| Tests | |
| ----- | |
| - bpo-38546: Fix test_ressources_gced_in_workers() of | |
| test_concurrent_futures: explicitly stop the manager to prevent leaking a | |
| child process running in the background after the test completes. | |
| - bpo-38546: Multiprocessing and concurrent.futures tests now stop the | |
| resource tracker process when tests complete. | |
| - bpo-38614: Replace hardcoded timeout constants in tests with new | |
| :mod:`test.support` constants: :data:`~test.support.LOOPBACK_TIMEOUT`, | |
| :data:`~test.support.INTERNET_TIMEOUT`, | |
| :data:`~test.support.SHORT_TIMEOUT` and | |
| :data:`~test.support.LONG_TIMEOUT`. It becomes easier to adjust these four | |
| timeout constants for all tests at once, rather than having to adjust | |
| every single test file. | |
| - bpo-38547: Fix test_pty: if the process is the session leader, closing the | |
| master file descriptor raises a SIGHUP signal: simply ignore SIGHUP when | |
| running the tests. | |
| - bpo-38992: Fix a test for :func:`math.fsum` that was failing due to | |
| constant folding. | |
| - bpo-38991: :mod:`test.support`: | |
| :func:`~test.support.run_python_until_end`, | |
| :func:`~test.support.assert_python_ok` and | |
| :func:`~test.support.assert_python_failure` functions no longer strip | |
| whitespaces from stderr. Remove ``test.support.strip_python_stderr()`` | |
| function. | |
| - bpo-38965: Fix test_faulthandler on GCC 10. Use the "volatile" keyword in | |
| ``faulthandler._stack_overflow()`` to prevent tail call optimization on | |
| any compiler, rather than relying on compiler specific pragma. | |
| - bpo-38875: test_capi: trashcan tests now require the test "cpu" resource. | |
| - bpo-38841: Skip asyncio test_create_datagram_endpoint_existing_sock_unix | |
| on platforms lacking a functional bind() for named unix domain sockets. | |
| - bpo-38692: Skip the test_posix.test_pidfd_open() test if | |
| ``os.pidfd_open()`` fails with a :exc:`PermissionError`. This situation | |
| can happen in a Linux sandbox using a syscall whitelist which doesn't | |
| allow the ``pidfd_open()`` syscall yet. | |
| - bpo-38839: Fix some unused functions in tests. Patch by Adam Johnson. | |
| - bpo-38669: Raise :exc:`TypeError` when passing target as a string with | |
| :meth:`unittest.mock.patch.object`. | |
| - bpo-37957: test.regrtest now can receive a list of test patterns to ignore | |
| (using the -i/--ignore argument) or a file with a list of patterns to | |
| ignore (using the --ignore-file argument). Patch by Pablo Galindo. | |
| Build | |
| ----- | |
| - bpo-37404: :mod:`asyncio` now raises :exc:`TyperError` when calling | |
| incompatible methods with an :class:`ssl.SSLSocket` socket. Patch by Ido | |
| Michael. | |
| - bpo-36500: Added an optional "regen" project to the Visual Studio solution | |
| that will regenerate all grammar, tokens, and opcodes. | |
| Windows | |
| ------- | |
| - bpo-39007: Add auditing events to functions in :mod:`winreg`. | |
| - bpo-33125: Add support for building and releasing Windows ARM64 packages. | |
| macOS | |
| ----- | |
| - bpo-37931: Fixed a crash on OSX dynamic builds that occurred when | |
| re-initializing the posix module after a Py_Finalize if the environment | |
| had changed since the previous `import posix`. Patch by Benoît Hudson. | |
| IDLE | |
| ---- | |
| - bpo-38944: Escape key now closes IDLE completion windows. Patch by Johnny | |
| Najera. | |
| - bpo-38943: Fix IDLE autocomplete windows not always appearing on some | |
| systems. Patch by Johnny Najera. | |
| - bpo-38862: 'Strip Trailing Whitespace' on the Format menu removes extra | |
| newlines at the end of non-shell files. | |
| - bpo-38636: Fix IDLE Format menu tab toggle and file indent width. These | |
| functions (default shortcuts Alt-T and Alt-U) were mistakenly disabled in | |
| 3.7.5 and 3.8.0. | |
| C API | |
| ----- | |
| - bpo-38896: Remove ``PyUnicode_ClearFreeList()`` function: the Unicode free | |
| list has been removed in Python 3.3. | |
| - bpo-37340: Remove ``PyMethod_ClearFreeList()`` and | |
| ``PyCFunction_ClearFreeList()`` functions: the free lists of bound method | |
| objects have been removed. | |
| - bpo-38835: Exclude ``PyFPE_START_PROTECT()`` and ``PyFPE_END_PROTECT()`` | |
| macros of ``pyfpe.h`` from ``Py_LIMITED_API`` (stable API). | |
| What's New in Python 3.9.0 alpha 1? | |
| =================================== | |
| *Release date: 2019-11-19* | |
| Security | |
| -------- | |
| - bpo-38722: :mod:`runpy` now uses :meth:`io.open_code` to open code files. | |
| Patch by Jason Killen. | |
| - bpo-38622: Add additional audit events for the :mod:`ctypes` module. | |
| - bpo-38418: Fixes audit event for :func:`os.system` to be named | |
| ``os.system``. | |
| - bpo-38243: Escape the server title of | |
| :class:`xmlrpc.server.DocXMLRPCServer` when rendering the document page as | |
| HTML. (Contributed by Dong-hee Na in :issue:`38243`.) | |
| - bpo-38174: Update vendorized expat library version to 2.2.8, which | |
| resolves CVE-2019-15903. | |
| - bpo-37764: Fixes email._header_value_parser.get_unstructured going into an | |
| infinite loop for a specific case in which the email header does not have | |
| trailing whitespace, and the case in which it contains an invalid encoded | |
| word. Patch by Ashwin Ramaswami. | |
| - bpo-37461: Fix an infinite loop when parsing specially crafted email | |
| headers. Patch by Abhilash Raj. | |
| - bpo-37363: Adds audit events for the range of supported run commands (see | |
| :ref:`using-on-general`). | |
| - bpo-37463: ssl.match_hostname() no longer accepts IPv4 addresses with | |
| additional text after the address and only quad-dotted notation without | |
| trailing whitespaces. Some inet_aton() implementations ignore whitespace | |
| and all data after whitespace, e.g. '127.0.0.1 whatever'. | |
| - bpo-37363: Adds audit events for :mod:`ensurepip`, :mod:`ftplib`, | |
| :mod:`glob`, :mod:`imaplib`, :mod:`nntplib`, :mod:`pdb`, :mod:`poplib`, | |
| :mod:`shutil`, :mod:`smtplib`, :mod:`sqlite3`, :mod:`subprocess`, | |
| :mod:`telnetlib`, :mod:`tempfile` and :mod:`webbrowser`, as well as | |
| :func:`os.listdir`, :func:`os.scandir` and :func:`breakpoint`. | |
| - bpo-37364: :func:`io.open_code` is now used when reading :file:`.pth` | |
| files. | |
| - bpo-34631: Updated OpenSSL to 1.1.1c in Windows installer | |
| - bpo-34155: Fix parsing of invalid email addresses with more than one ``@`` | |
| (e.g. a@b@c.com.) to not return the part before 2nd ``@`` as valid email | |
| address. Patch by maxking & jpic. | |
| Core and Builtins | |
| ----------------- | |
| - bpo-38631: Replace ``Py_FatalError()`` call with a regular | |
| :exc:`RuntimeError` exception in :meth:`float.__getformat__`. | |
| - bpo-38639: Optimized :func:`math.floor()`, :func:`math.ceil()` and | |
| :func:`math.trunc()` for floats. | |
| - bpo-38640: Fixed a bug in the compiler that was causing to raise in the | |
| presence of break statements and continue statements inside always false | |
| while loops. Patch by Pablo Galindo. | |
| - bpo-38613: Optimized some set operations (e.g. ``|``, ``^``, and ``-``) of | |
| ``dict_keys``. ``d.keys() | other`` was slower than ``set(d) | other`` but | |
| they are almost same performance for now. | |
| - bpo-28029: ``"".replace("", s, n)`` now returns ``s`` instead of an empty | |
| string for all non-zero ``n``. There are similar changes for | |
| :class:`bytes` and :class:`bytearray` objects. | |
| - bpo-38535: Fixed line numbers and column offsets for AST nodes for calls | |
| without arguments in decorators. | |
| - bpo-38525: Fix a segmentation fault when using reverse iterators of empty | |
| ``dict`` objects. Patch by Dong-hee Na and Inada Naoki. | |
| - bpo-38465: :class:`bytearray`, :class:`~array.array` and | |
| :class:`~mmap.mmap` objects allow now to export more than ``2**31`` | |
| buffers at a time. | |
| - bpo-38469: Fixed a bug where the scope of named expressions was not being | |
| resolved correctly in the presence of the *global* keyword. Patch by Pablo | |
| Galindo. | |
| - bpo-38437: Activate the ``GC_DEBUG`` macro for debug builds of the | |
| interpreter (when ``Py_DEBUG`` is set). Patch by Pablo Galindo. | |
| - bpo-38379: When the garbage collector makes a collection in which some | |
| objects resurrect (they are reachable from outside the isolated cycles | |
| after the finalizers have been executed), do not block the collection of | |
| all objects that are still unreachable. Patch by Pablo Galindo and Tim | |
| Peters. | |
| - bpo-38379: When cyclic garbage collection (gc) runs finalizers that | |
| resurrect unreachable objects, the current gc run ends, without collecting | |
| any cyclic trash. However, the statistics reported by ``collect()`` and | |
| ``get_stats()`` claimed that all cyclic trash found was collected, and | |
| that the resurrected objects were collected. Changed the stats to report | |
| that none were collected. | |
| - bpo-38392: In debug mode, :c:func:`PyObject_GC_Track` now calls | |
| ``tp_traverse()`` of the object type to ensure that the object is valid: | |
| test that objects visited by ``tp_traverse()`` are valid. | |
| - bpo-38210: Remove unnecessary intersection and update set operation in | |
| dictview with empty set. (Contributed by Dong-hee Na in :issue:`38210`.) | |
| - bpo-38402: Check the error from the system's underlying ``crypt`` or | |
| ``crypt_r``. | |
| - bpo-37474: On FreeBSD, Python no longer calls ``fedisableexcept()`` at | |
| startup to control the floating point control mode. The call became | |
| useless since FreeBSD 6: it became the default mode. | |
| - bpo-38006: Fix a bug due to the interaction of weakrefs and the cyclic | |
| garbage collector. We must clear any weakrefs in garbage in order to | |
| prevent their callbacks from executing and causing a crash. | |
| - bpo-38317: Fix warnings options priority: ``PyConfig.warnoptions`` has the | |
| highest priority, as stated in the :pep:`587`. | |
| - bpo-38310: Predict ``BUILD_MAP_UNPACK_WITH_CALL`` -> ``CALL_FUNCTION_EX`` | |
| opcode pairs in the main interpreter loop. Patch by Brandt Bucher. | |
| - bpo-36871: Improve error handling for the assert_has_calls and | |
| assert_has_awaits methods of mocks. Fixed a bug where any errors | |
| encountered while binding the expected calls to the mock's spec were | |
| silently swallowed, leading to misleading error output. | |
| - bpo-11410: Better control over symbol visibility is provided through use | |
| of the visibility attributes available in gcc >= 4.0, provided in a | |
| uniform way across POSIX and Windows. The POSIX build files have been | |
| updated to compile with -fvisibility=hidden, minimising exported symbols. | |
| - bpo-38219: Optimized the :class:`dict` constructor and the | |
| :meth:`~dict.update` method for the case when the argument is a dict. | |
| - bpo-38236: Python now dumps path configuration if it fails to import the | |
| Python codecs of the filesystem and stdio encodings. | |
| - bpo-38013: Allow to call ``async_generator_athrow().throw(...)`` even for | |
| non-started async generator helper. It fixes annoying warning at the end | |
| of :func:`asyncio.run` call. | |
| - bpo-38124: Fix an off-by-one error in PyState_AddModule that could cause | |
| out-of-bounds memory access. | |
| - bpo-38116: The select module is now PEP-384 compliant and no longer has | |
| static state | |
| - bpo-38113: ast module updated to PEP-384 and all statics removed | |
| - bpo-38076: The struct module is now PEP-384 compatible | |
| - bpo-38075: The random module is now PEP-384 compatible | |
| - bpo-38074: zlib module made PEP-384 compatible | |
| - bpo-38073: Make pwd extension module PEP-384 compatible | |
| - bpo-38072: grp module made PEP-384 compatible | |
| - bpo-38069: Make _posixsubprocess PEP-384 compatible | |
| - bpo-38071: Make termios extension module PEP-384 compatible | |
| - bpo-38005: Fixed comparing and creating of InterpreterID and ChannelID. | |
| - bpo-36946: Fix possible signed integer overflow when handling slices. | |
| Patch by hongweipeng. | |
| - bpo-37994: Fixed silencing arbitrary errors if an attribute lookup fails | |
| in several sites. Only AttributeError should be silenced. | |
| - bpo-8425: Optimize set difference_update for the case when the other set | |
| is much larger than the base set. (Suggested by Evgeny Kapun with code | |
| contributed by Michele Orrù). | |
| - bpo-37966: The implementation of :func:`~unicodedata.is_normalized` has | |
| been greatly sped up on strings that aren't normalized, by implementing | |
| the full normalization-quick-check algorithm from the Unicode standard. | |
| - bpo-37947: Adjust correctly the recursion level in the symtable generation | |
| for named expressions. Patch by Pablo Galindo. | |
| - bpo-37812: The ``CHECK_SMALL_INT`` macro used inside | |
| :file:`Object/longobject.c` has been replaced with an explicit ``return`` | |
| at each call site. | |
| - bpo-37751: Fix :func:`codecs.lookup` to normalize the encoding name the | |
| same way than :func:`encodings.normalize_encoding`, except that | |
| :func:`codecs.lookup` also converts the name to lower case. | |
| - bpo-37830: Fixed compilation of :keyword:`break` and :keyword:`continue` | |
| in the :keyword:`finally` block when the corresponding :keyword:`try` | |
| block contains :keyword:`return` with a non-constant value. | |
| - bpo-20490: Improve import error message for partially initialized module | |
| on circular ``from`` imports - by Anthony Sottile. | |
| - bpo-37840: Fix handling of negative indices in | |
| :c:member:`~PySequenceMethods.sq_item` of :class:`bytearray`. Patch by | |
| Sergey Fedoseev. | |
| - bpo-37802: Slightly improve performance of | |
| :c:func:`PyLong_FromUnsignedLong`, :c:func:`PyLong_FromUnsignedLongLong` | |
| and :c:func:`PyLong_FromSize_t`. Patch by Sergey Fedoseev. | |
| - bpo-37409: Ensure explicit relative imports from interactive sessions and | |
| scripts (having no parent package) always raise ImportError, rather than | |
| treating the current module as the package. Patch by Ben Lewis. | |
| - bpo-32912: Reverted :issue:`32912`: emitting :exc:`SyntaxWarning` instead | |
| of :exc:`DeprecationWarning` for invalid escape sequences in string and | |
| bytes literals. | |
| - bpo-37757: :pep:`572`: As described in the PEP, assignment expressions now | |
| raise :exc:`SyntaxError` when their interaction with comprehension scoping | |
| results in an ambiguous target scope. | |
| The ``TargetScopeError`` subclass originally proposed by the PEP has been | |
| removed in favour of just raising regular syntax errors for the disallowed | |
| cases. | |
| - bpo-36279: Fix potential use of uninitialized memory in :func:`os.wait3`. | |
| - bpo-36311: Decoding bytes objects larger than 2GiB is faster and no longer | |
| fails when a multibyte characters spans a chunk boundary. | |
| - bpo-34880: The :keyword:`assert` statement now works properly if the | |
| :exc:`AssertionError` exception is being shadowed. Patch by Zackery Spytz. | |
| - bpo-37340: Removed object cache (``free_list``) for bound method objects. | |
| Temporary bound method objects are less used than before thanks to the | |
| ``LOAD_METHOD`` opcode and the ``_PyObject_VectorcallMethod`` C API. | |
| - bpo-37648: Fixed minor inconsistency in :meth:`list.__contains__`, | |
| :meth:`tuple.__contains__` and a few other places. The collection's item | |
| is now always at the left and the needle is on the right of ``==``. | |
| - bpo-37444: Update differing exception between :meth:`builtins.__import__` | |
| and :meth:`importlib.__import__`. | |
| - bpo-37619: When adding a wrapper descriptor from one class to a different | |
| class (for example, setting ``__add__ = str.__add__`` on an ``int`` | |
| subclass), an exception is correctly raised when the operator is called. | |
| - bpo-37593: Swap the positions of the *posonlyargs* and *args* parameters | |
| in the constructor of :class:`ast.parameters` nodes. | |
| - bpo-37543: Optimized pymalloc for non PGO build. | |
| - bpo-37537: Compute allocated pymalloc blocks inside | |
| _Py_GetAllocatedBlocks(). This slows down _Py_GetAllocatedBlocks() but | |
| gives a small speedup to _PyObject_Malloc() and _PyObject_Free(). | |
| - bpo-37467: Fix :func:`sys.excepthook` and :c:func:`PyErr_Display` if a | |
| filename is a bytes string. For example, for a SyntaxError exception where | |
| the filename attribute is a bytes string. | |
| - bpo-37433: Fix ``SyntaxError`` indicator printing too many spaces for | |
| multi-line strings - by Anthony Sottile. | |
| - bpo-37417: :meth:`bytearray.extend` now correctly handles errors that | |
| arise during iteration. Patch by Brandt Bucher. | |
| - bpo-37414: The undocumented ``sys.callstats()`` function has been removed. | |
| Since Python 3.7, it was deprecated and always returned ``None``. It | |
| required a special build option ``CALL_PROFILE`` which was already removed | |
| in Python 3.7. | |
| - bpo-37392: Remove ``sys.getcheckinterval()`` and | |
| ``sys.setcheckinterval()`` functions. They were deprecated since Python | |
| 3.2. Use :func:`sys.getswitchinterval` and :func:`sys.setswitchinterval` | |
| instead. Remove also ``check_interval`` field of the | |
| ``PyInterpreterState`` structure. | |
| - bpo-37388: In development mode and in debug build, *encoding* and *errors* | |
| arguments are now checked on string encoding and decoding operations. | |
| Examples: :func:`open`, :meth:`str.encode` and :meth:`bytes.decode`. | |
| By default, for best performances, the *errors* argument is only checked | |
| at the first encoding/decoding error, and the *encoding* argument is | |
| sometimes ignored for empty strings. | |
| - bpo-37348: Optimized decoding short ASCII string with UTF-8 and ascii | |
| codecs. ``b"foo".decode()`` is about 15% faster. Patch by Inada Naoki. | |
| - bpo-24214: Improved support of the surrogatepass error handler in the | |
| UTF-8 and UTF-16 incremental decoders. | |
| - bpo-37330: :func:`open`, :func:`io.open`, :func:`codecs.open` and | |
| :class:`fileinput.FileInput` no longer accept ``'U'`` ("universal | |
| newline") in the file mode. This flag was deprecated since Python 3.3. | |
| - bpo-35224: Reverse evaluation order of key: value in dict comprehensions | |
| as proposed in PEP 572. I.e. in ``{k: v for ...}``, ``k`` will be | |
| evaluated before ``v``. | |
| - bpo-37316: Fix the :c:func:`PySys_Audit` call in :class:`mmap.mmap`. | |
| - bpo-37300: Remove an unnecessary Py_XINCREF in classobject.c. | |
| - bpo-37269: Fix a bug in the peephole optimizer that was not treating | |
| correctly constant conditions with binary operators. Patch by Pablo | |
| Galindo. | |
| - bpo-20443: Python now gets the absolute path of the script filename | |
| specified on the command line (ex: "python3 script.py"): the __file__ | |
| attribute of the __main__ module and sys.path[0] become an absolute path, | |
| rather than a relative path. | |
| - bpo-37257: Python's small object allocator (``obmalloc.c``) now allows (no | |
| more than) one empty arena to remain available for immediate reuse, | |
| without returning it to the OS. This prevents thrashing in simple loops | |
| where an arena could be created and destroyed anew on each iteration. | |
| - bpo-37231: The dispatching of type slots to special methods (for example | |
| calling ``__mul__`` when doing ``x * y``) has been made faster. | |
| - bpo-36974: Implemented separate vectorcall functions for every calling | |
| convention of builtin functions and methods. This improves performance for | |
| calls. | |
| - bpo-37213: Handle correctly negative line offsets in the peephole | |
| optimizer. Patch by Pablo Galindo. | |
| - bpo-37219: Remove erroneous optimization for empty set differences. | |
| - bpo-15913: Implement :c:func:`PyBuffer_SizeFromFormat()` function | |
| (previously documented but not implemented): call :func:`struct.calcsize`. | |
| Patch by Joannah Nanjekye. | |
| - bpo-36922: Slot functions optimize any callable with | |
| ``Py_TPFLAGS_METHOD_DESCRIPTOR`` instead of only instances of | |
| ``function``. | |
| - bpo-36974: The slot ``tp_vectorcall_offset`` is inherited unconditionally | |
| to support ``super().__call__()`` when the base class uses vectorcall. | |
| - bpo-37160: :func:`threading.get_native_id` now also supports NetBSD. | |
| - bpo-37077: Add :func:`threading.get_native_id` support for AIX. Patch by | |
| M. Felt | |
| - bpo-36781: :func:`sum` has been optimized for boolean values. | |
| - bpo-34556: Add ``--upgrade-deps`` to venv module. Patch by Cooper Ry Lees | |
| - bpo-20523: ``pdb.Pdb`` supports ~/.pdbrc in Windows 7. Patch by Tim Hopper | |
| and Dan Lidral-Porter. | |
| - bpo-35551: Updated encodings: - Removed the "tis260" encoding, which was | |
| an alias for the nonexistent "tactis" codec. - Added "mac_centeuro" as an | |
| alias for the mac_latin2 encoding. | |
| - bpo-19072: The :class:`classmethod` decorator can now wrap other | |
| descriptors such as property objects. Adapted from a patch written by | |
| Graham Dumpleton. | |
| - bpo-27575: Improve speed of dictview intersection by directly using set | |
| intersection logic. Patch by David Su. | |
| - bpo-30773: Prohibit parallel running of aclose() / asend() / athrow(). Fix | |
| ag_running to reflect the actual running status of the AG. | |
| Library | |
| ------- | |
| - bpo-36589: The :func:`curses.update_lines_cols` function now returns | |
| ``None`` instead of ``1`` on success. | |
| - bpo-38807: Update :exc:`TypeError` messages for :meth:`os.path.join` to | |
| include :class:`os.PathLike` objects as acceptable input types. | |
| - bpo-38724: Add a repr for ``subprocess.Popen`` objects. Patch by Andrey | |
| Doroschenko. | |
| - bpo-38786: pydoc now recognizes and parses HTTPS URLs. Patch by python273. | |
| - bpo-38785: Prevent asyncio from crashing if parent ``__init__`` is not | |
| called from a constructor of object derived from ``asyncio.Future``. | |
| - bpo-38723: :mod:`pdb` now uses :meth:`io.open_code` to trigger auditing | |
| events. | |
| - bpo-27805: Allow opening pipes and other non-seekable files in append mode | |
| with :func:`open`. | |
| - bpo-38438: Simplify the :mod:`argparse` usage message for ``nargs="*"``. | |
| - bpo-38761: WeakSet is now registered as a collections.abc.MutableSet. | |
| - bpo-38716: logging: change RotatingHandler namer and rotator to | |
| class-level attributes. This stops __init__ from setting them to None in | |
| the case where a subclass defines them with eponymous methods. | |
| - bpo-38713: Add :data:`os.P_PIDFD` constant, which may be passed to | |
| :func:`os.waitid` to wait on a Linux process file descriptor. | |
| - bpo-38692: Add :class:`asyncio.PidfdChildWatcher`, a Linux-specific child | |
| watcher implementation that polls process file descriptors. | |
| - bpo-38692: Expose the Linux ``pidfd_open`` syscall as | |
| :func:`os.pidfd_open`. | |
| - bpo-38602: Added constants :data:`~fcntl.F_OFD_GETLK`, | |
| :data:`~fcntl.F_OFD_SETLK` and :data:`~fcntl.F_OFD_SETLKW` to the | |
| :mod:`fcntl` module. Patch by Dong-hee Na. | |
| - bpo-38334: Fixed seeking backward on an encrypted | |
| :class:`zipfile.ZipExtFile`. | |
| - bpo-38312: Add :func:`curses.get_escdelay`, :func:`curses.set_escdelay`, | |
| :func:`curses.get_tabsize`, and :func:`curses.set_tabsize` functions - by | |
| Anthony Sottile. | |
| - bpo-38586: Now :func:`~logging.config.fileConfig` correctly sets the .name | |
| of handlers loaded. | |
| - bpo-38565: Add new cache_parameters() method for functools.lru_cache() to | |
| better support pickling. | |
| - bpo-34679: asynci.ProactorEventLoop.close() now only calls | |
| signal.set_wakeup_fd() in the main thread. | |
| - bpo-31202: The case the result of :func:`pathlib.WindowsPath.glob` matches | |
| now the case of the pattern for literal parts. | |
| - bpo-36321: Remove misspelled attribute. The 3.8 changelog noted that this | |
| would be removed in 3.9. | |
| - bpo-38521: Fixed erroneous equality comparison in statistics.NormalDist(). | |
| - bpo-38493: Added :data:`~os.CLD_KILLED` and :data:`~os.CLD_STOPPED` for | |
| :attr:`si_code`. Patch by Dong-hee Na. | |
| - bpo-38478: Fixed a bug in :meth:`inspect.signature.bind` that was causing | |
| it to fail when handling a keyword argument with same name as | |
| positional-only parameter. Patch by Pablo Galindo. | |
| - bpo-33604: Fixed `hmac.new` and `hmac.HMAC` to raise TypeError instead of | |
| ValueError when the digestmod parameter, now required in 3.8, is omitted. | |
| Also clarified the hmac module documentation and docstrings. | |
| - bpo-38378: Parameters *out* and *in* of :func:`os.sendfile` was renamed to | |
| *out_fd* and *in_fd*. | |
| - bpo-38417: Added support for setting the umask in the child process to the | |
| subprocess module on POSIX systems. | |
| - bpo-38449: Revert PR 15522, which introduces a regression in | |
| :meth:`mimetypes.guess_type` due to improper handling of filenames as | |
| urls. | |
| - bpo-38431: Fix ``__repr__`` method for :class:`dataclasses.InitVar` to | |
| support typing objects, patch by Samuel Colvin. | |
| - bpo-38109: Add missing :data:`stat.S_IFDOOR`, :data:`stat.S_IFPORT`, | |
| :data:`stat.S_IFWHT`, :func:`stat.S_ISDOOR`, :func:`stat.S_ISPORT`, and | |
| :func:`stat.S_ISWHT` values to the Python implementation of :mod:`stat`. | |
| - bpo-38422: Clarify docstrings of pathlib suffix(es) | |
| - bpo-38405: Nested subclasses of :class:`typing.NamedTuple` are now | |
| pickleable. | |
| - bpo-38332: Prevent :exc:`KeyError` thrown by :func:`_encoded_words.decode` | |
| when given an encoded-word with invalid content-type encoding from | |
| propagating all the way to :func:`email.message.get`. | |
| - bpo-38371: Deprecated the ``split()`` method in | |
| :class:`_tkinter.TkappType` in favour of the ``splitlist()`` method which | |
| has more consistent and predicable behavior. | |
| - bpo-38341: Add :exc:`smtplib.SMTPNotSupportedError` to the :mod:`smtplib` | |
| exported names. | |
| - bpo-38319: sendfile() used in socket and shutil modules was raising | |
| OverflowError for files >= 2GiB on 32-bit architectures. (patch by | |
| Giampaolo Rodola) | |
| - bpo-38242: Revert the new asyncio Streams API | |
| - bpo-13153: OS native encoding is now used for converting between Python | |
| strings and Tcl objects. This allows to display, copy and paste to | |
| clipboard emoji and other non-BMP characters. Converting strings from Tcl | |
| to Python and back now never fails (except MemoryError). | |
| - bpo-38019: Correctly handle pause/resume reading of closed asyncio unix | |
| pipe. | |
| - bpo-38163: Child mocks will now detect their type as either synchronous or | |
| asynchronous, asynchronous child mocks will be AsyncMocks and synchronous | |
| child mocks will be either MagicMock or Mock (depending on their parent | |
| type). | |
| - bpo-38161: Removes _AwaitEvent from AsyncMock. | |
| - bpo-38216: Allow the rare code that wants to send invalid http requests | |
| from the `http.client` library a way to do so. The fixes for bpo-30458 | |
| led to breakage for some projects that were relying on this ability to | |
| test their own behavior in the face of bad requests. | |
| - bpo-28286: Deprecate opening :class:`~gzip.GzipFile` for writing | |
| implicitly. Always specify the *mode* argument for writing. | |
| - bpo-38108: Any synchronous magic methods on an AsyncMock now return a | |
| MagicMock. Any asynchronous magic methods on a MagicMock now return an | |
| AsyncMock. | |
| - bpo-38265: Update the *length* parameter of :func:`os.pread` to accept | |
| :c:type:`Py_ssize_t` instead of :c:expr:`int`. | |
| - bpo-38112: :mod:`compileall` has a higher default recursion limit and new | |
| command-line arguments for path manipulation, symlinks handling, and | |
| multiple optimization levels. | |
| - bpo-38248: asyncio: Fix inconsistent immediate Task cancellation | |
| - bpo-38237: The arguments for the builtin pow function are more | |
| descriptive. They can now also be passed in as keywords. | |
| - bpo-34002: Improve efficiency in parts of email package by changing | |
| while-pop to a for loop, using isdisjoint instead of set intersections. | |
| - bpo-38191: Constructors of :class:`~typing.NamedTuple` and | |
| :class:`~typing.TypedDict` types now accept arbitrary keyword argument | |
| names, including "cls", "self", "typename", "_typename", "fields" and | |
| "_fields". | |
| - bpo-38155: Add ``__all__`` to :mod:`datetime`. Patch by Tahia Khan. | |
| - bpo-38185: Fixed case-insensitive string comparison in | |
| :class:`sqlite3.Row` indexing. | |
| - bpo-38136: Changes AsyncMock call count and await count to be two | |
| different counters. Now await count only counts when a coroutine has been | |
| awaited, not when it has been called, and vice-versa. Update the | |
| documentation around this. | |
| - bpo-37828: Fix default mock name in | |
| :meth:`unittest.mock.Mock.assert_called` exceptions. Patch by Abraham | |
| Toriz Cruz. | |
| - bpo-38175: Fix a memory leak in comparison of :class:`sqlite3.Row` | |
| objects. | |
| - bpo-33936: _hashlib no longer calls obsolete OpenSSL initialization | |
| function with OpenSSL 1.1.0+. | |
| - bpo-34706: Preserve subclassing in inspect.Signature.from_callable. | |
| - bpo-38153: Names of hashing algorithms from OpenSSL are now normalized to | |
| follow Python's naming conventions. For example OpenSSL uses sha3-512 | |
| instead of sha3_512 or blake2b512 instead of blake2b. | |
| - bpo-38115: Fix a bug in dis.findlinestarts() where it would return invalid | |
| bytecode offsets. Document that a code object's co_lnotab can contain | |
| invalid bytecode offsets. | |
| - bpo-38148: Add slots to :mod:`asyncio` transport classes, which can reduce | |
| memory usage. | |
| - bpo-38142: The _hashlib OpenSSL wrapper extension module is now PEP-384 | |
| compliant. | |
| - bpo-9216: hashlib constructors now support usedforsecurity flag to signal | |
| that a hashing algorithm is not used in a security context. | |
| - bpo-36991: Fixes a potential incorrect AttributeError exception escaping | |
| ZipFile.extract() in some unsupported input error situations. | |
| - bpo-38134: Remove obsolete copy of PBKDF2_HMAC_fast. All supported OpenSSL | |
| versions contain a fast implementation. | |
| - bpo-38132: The OpenSSL hashlib wrapper uses a simpler implementation. | |
| Several Macros and pointless caches are gone. The hash name now comes from | |
| OpenSSL's EVP. The algorithm name stays the same, except it is now always | |
| lower case. | |
| - bpo-38008: Fix parent class check in protocols to correctly identify the | |
| module that provides a builtin protocol, instead of assuming they all come | |
| from the :mod:`collections.abc` module | |
| - bpo-34037: For :mod:`asyncio`, add a new coroutine | |
| :meth:`loop.shutdown_default_executor`. The new coroutine provides an API | |
| to schedule an executor shutdown that waits on the threadpool to finish | |
| closing. Also, :func:`asyncio.run` has been updated to utilize the new | |
| coroutine. Patch by Kyle Stanley. | |
| - bpo-37405: Fixed regression bug for socket.getsockname() for non-CAN_ISOTP | |
| AF_CAN address family sockets by returning a 1-tuple instead of string. | |
| - bpo-38121: Update parameter names on functions in importlib.metadata | |
| matching the changes in the 0.22 release of importlib_metadata. | |
| - bpo-38110: The os.closewalk() implementation now uses the libc fdwalk() | |
| API on platforms where it is available. | |
| - bpo-38093: Fixes AsyncMock so it doesn't crash when used with | |
| AsyncContextManagers or AsyncIterators. | |
| - bpo-37488: Add warning to :meth:`datetime.utctimetuple`, | |
| :meth:`datetime.utcnow` and :meth:`datetime.utcfromtimestamp` . | |
| - bpo-35640: Allow passing a :term:`path-like object` as ``directory`` | |
| argument to the :class:`http.server.SimpleHTTPRequestHandler` class. Patch | |
| by Géry Ogam. | |
| - bpo-38086: Update importlib.metadata with changes from `importlib_metadata | |
| 0.21 | |
| <https://gitlab.com/python-devs/importlib_metadata/blob/0.21/importlib_metadata/docs/changelog.rst>`_. | |
| - bpo-37251: Remove `__code__` check in AsyncMock that incorrectly evaluated | |
| function specs as async objects but failed to evaluate classes with | |
| `__await__` but no `__code__` attribute defined as async objects. | |
| - bpo-38037: Fix reference counters in the :mod:`signal` module. | |
| - bpo-38066: Hide internal asyncio.Stream methods: feed_eof(), feed_data(), | |
| set_exception() and set_transport(). | |
| - bpo-38059: inspect.py now uses sys.exit() instead of exit() | |
| - bpo-38049: Added command-line interface for the :mod:`ast` module. | |
| - bpo-37953: In :mod:`typing`, improved the ``__hash__`` and ``__eq__`` | |
| methods for :class:`ForwardReferences`. | |
| - bpo-38026: Fixed :func:`inspect.getattr_static` used ``isinstance`` while | |
| it should avoid dynamic lookup. | |
| - bpo-35923: Update :class:`importlib.machinery.BuiltinImporter` to use | |
| ``loader._ORIGIN`` instead of a hardcoded value. Patch by Dong-hee Na. | |
| - bpo-38010: In ``importlib.metadata`` sync with ``importlib_metadata`` | |
| 0.20, clarifying behavior of ``files()`` and fixing issue where only one | |
| requirement was returned for ``requires()`` on ``dist-info`` packages. | |
| - bpo-38006: weakref.WeakValueDictionary defines a local remove() function | |
| used as callback for weak references. This function was created with a | |
| closure. Modify the implementation to avoid the closure. | |
| - bpo-37995: Added the *indent* option to :func:`ast.dump` which allows it | |
| to produce a multiline indented output. | |
| - bpo-34410: Fixed a crash in the :func:`tee` iterator when re-enter it. | |
| RuntimeError is now raised in this case. | |
| - bpo-37140: Fix a ctypes regression of Python 3.8. When a ctypes.Structure | |
| is passed by copy to a function, ctypes internals created a temporary | |
| object which had the side effect of calling the structure finalizer | |
| (__del__) twice. The Python semantics requires a finalizer to be called | |
| exactly once. Fix ctypes internals to no longer call the finalizer twice. | |
| - bpo-37587: ``_json.scanstring`` is now up to 3x faster when there are many | |
| backslash escaped characters in the JSON string. | |
| - bpo-37834: Prevent shutil.rmtree exception when built on non-Windows | |
| system without fd system call support, like older versions of macOS. | |
| - bpo-10978: Semaphores and BoundedSemaphores can now release more than one | |
| waiting thread at a time. | |
| - bpo-37972: Subscripts to the `unittest.mock.call` objects now receive the | |
| same chaining mechanism as any other custom attributes, so that the | |
| following usage no longer raises a `TypeError`: | |
| call().foo().__getitem__('bar') | |
| Patch by blhsing | |
| - bpo-37965: Fix C compiler warning caused by | |
| distutils.ccompiler.CCompiler.has_function. | |
| - bpo-37964: Add ``F_GETPATH`` command to :mod:`fcntl`. | |
| - bpo-37960: ``repr()`` of buffered and text streams now silences only | |
| expected exceptions when get the value of "name" and "mode" attributes. | |
| - bpo-37961: Add a ``total_nframe`` field to the traces collected by the | |
| tracemalloc module. This field indicates the original number of frames | |
| before it was truncated. | |
| - bpo-37951: Most features of the subprocess module now work again in | |
| subinterpreters. Only *preexec_fn* is restricted in subinterpreters. | |
| - bpo-36205: Fix the rusage implementation of time.process_time() to | |
| correctly report the sum of the system and user CPU time. | |
| - bpo-37950: Fix :func:`ast.dump` when call with incompletely initialized | |
| node. | |
| - bpo-34679: Restores instantiation of Windows IOCP event loops from the | |
| non-main thread. | |
| - bpo-36917: Add default implementation of the | |
| :meth:`ast.NodeVisitor.visit_Constant` method which emits a deprecation | |
| warning and calls corresponding methody ``visit_Num()``, ``visit_Str()``, | |
| etc. | |
| - bpo-37798: Update test_statistics.py to verify that the statistics module | |
| works well for both C and Python implementations. Patch by Dong-hee Na | |
| - bpo-26589: Added a new status code to the http module: 451 | |
| UNAVAILABLE_FOR_LEGAL_REASONS | |
| - bpo-37915: Fix a segmentation fault that appeared when comparing instances | |
| of ``datetime.timezone`` and ``datetime.tzinfo`` objects. Patch by Pablo | |
| Galindo. | |
| - bpo-32554: Deprecate having random.seed() call hash on arbitrary types. | |
| - bpo-9938: Add optional keyword argument ``exit_on_error`` for | |
| :class:`ArgumentParser`. | |
| - bpo-37851: The :mod:`faulthandler` module no longer allocates its | |
| alternative stack at Python startup. Now the stack is only allocated at | |
| the first faulthandler usage. | |
| - bpo-32793: Fix a duplicated debug message when | |
| :meth:`smtplib.SMTP.connect` is called. | |
| - bpo-37885: venv: Don't generate unset variable warning on deactivate. | |
| - bpo-37868: Fix dataclasses.is_dataclass when given an instance that never | |
| raises AttributeError in __getattr__. That is, an object that returns | |
| something for __dataclass_fields__ even if it's not a dataclass. | |
| - bpo-37811: Fix ``socket`` module's ``socket.connect(address)`` function | |
| being unable to establish connection in case of interrupted system call. | |
| The problem was observed on all OSes which ``poll(2)`` system call can | |
| take only non-negative integers and -1 as a timeout value. | |
| - bpo-37863: Optimizations for Fraction.__hash__ suggested by Tim Peters. | |
| - bpo-21131: Fix ``faulthandler.register(chain=True)`` stack. faulthandler | |
| now allocates a dedicated stack of ``SIGSTKSZ*2`` bytes, instead of just | |
| ``SIGSTKSZ`` bytes. Calling the previous signal handler in faulthandler | |
| signal handler uses more than ``SIGSTKSZ`` bytes of stack memory on some | |
| platforms. | |
| - bpo-37798: Add C fastpath for statistics.NormalDist.inv_cdf() Patch by | |
| Dong-hee Na | |
| - bpo-37804: Remove the deprecated method `threading.Thread.isAlive()`. | |
| Patch by Dong-hee Na. | |
| - bpo-37819: Add Fraction.as_integer_ratio() to match the corresponding | |
| methods in bool, int, float, and decimal. | |
| - bpo-14465: Add an xml.etree.ElementTree.indent() function for | |
| pretty-printing XML trees. Contributed by Stefan Behnel. | |
| - bpo-37810: Fix :mod:`difflib` ``?`` hint in diff output when dealing with | |
| tabs. Patch by Anthony Sottile. | |
| - bpo-37772: In ``zipfile.Path``, when adding implicit dirs, ensure that | |
| ancestral directories are added and that duplicates are excluded. | |
| - bpo-18578: Renamed and documented `test.bytecode_helper` as | |
| `test.support.bytecode_helper`. Patch by Joannah Nanjekye. | |
| - bpo-37785: Fix xgettext warnings in :mod:`argparse`. | |
| - bpo-34488: :meth:`writelines` method of :class:`io.BytesIO` is now | |
| slightly faster when many small lines are passed. Patch by Sergey | |
| Fedoseev. | |
| - bpo-37449: `ensurepip` now uses `importlib.resources.read_binary()` to | |
| read data instead of `pkgutil.get_data()`. Patch by Joannah Nanjekye. | |
| - bpo-28292: Mark calendar.py helper functions as being private. The | |
| follows PEP 8 guidance to maintain the style conventions in the module and | |
| it addresses a known case of user confusion. | |
| - bpo-18049: Add definition of THREAD_STACK_SIZE for AIX in | |
| Python/thread_pthread.h The default thread stacksize caused crashes with | |
| the default recursion limit Patch by M Felt | |
| - bpo-37742: The logging.getLogger() API now returns the root logger when | |
| passed the name 'root', whereas previously it returned a non-root logger | |
| named 'root'. This could affect cases where user code explicitly wants a | |
| non-root logger named 'root', or instantiates a logger using | |
| logging.getLogger(__name__) in some top-level module called 'root.py'. | |
| - bpo-37738: Fix the implementation of curses ``addch(str, color_pair)``: | |
| pass the color pair to ``setcchar()``, instead of always passing 0 as the | |
| color pair. | |
| - bpo-37723: Fix performance regression on regular expression parsing with | |
| huge character sets. Patch by Yann Vaginay. | |
| - bpo-35943: The function :c:func:`PyImport_GetModule` now ensures any | |
| module it returns is fully initialized. Patch by Joannah Nanjekye. | |
| - bpo-32178: Fix IndexError in :mod:`email` package when trying to parse | |
| invalid address fields starting with ``:``. | |
| - bpo-37268: The :mod:`parser` module is deprecated and will be removed in | |
| future versions of Python. | |
| - bpo-11953: Completing WSA* error codes in :mod:`socket`. | |
| - bpo-37685: Fixed comparisons of :class:`datetime.timedelta` and | |
| :class:`datetime.timezone`. | |
| - bpo-37697: Synchronize ``importlib.metadata`` with `importlib_metadata | |
| 0.19 | |
| <https://gitlab.com/python-devs/importlib_metadata/-/milestones/20>`_, | |
| improving handling of EGG-INFO files and fixing a crash when entry point | |
| names contained colons. | |
| - bpo-37695: Correct :func:`curses.unget_wch` error message. Patch by | |
| Anthony Sottile. | |
| - bpo-37689: Add :meth:`is_relative_to` in :class:`PurePath` to determine | |
| whether or not one path is relative to another. | |
| - bpo-29553: Fixed :meth:`argparse.ArgumentParser.format_usage` for mutually | |
| exclusive groups. Patch by Andrew Nester. | |
| - bpo-37691: Let math.dist() accept coordinates as sequences (or iterables) | |
| rather than just tuples. | |
| - bpo-37685: Fixed ``__eq__``, ``__lt__`` etc implementations in some | |
| classes. They now return :data:`NotImplemented` for unsupported type of | |
| the other operand. This allows the other operand to play role (for example | |
| the equality comparison with :data:`~unittest.mock.ANY` will return | |
| ``True``). | |
| - bpo-37354: Make Activate.ps1 Powershell script static to allow for signing | |
| it. | |
| - bpo-37664: Update wheels bundled with ensurepip (pip 19.2.3 and setuptools | |
| 41.2.0) | |
| - bpo-37663: Bring consistency to venv shell activation scripts by always | |
| using __VENV_PROMPT__. | |
| - bpo-37642: Allowed the pure Python implementation of | |
| :class:`datetime.timezone` to represent sub-minute offsets close to | |
| minimum and maximum boundaries, specifically in the ranges (23:59, 24:00) | |
| and (-23:59, 24:00). Patch by Ngalim Siregar | |
| - bpo-36161: In :mod:`posix`, use ``ttyname_r`` instead of ``ttyname`` for | |
| thread safety. | |
| - bpo-36324: Make internal attributes for statistics.NormalDist() private. | |
| - bpo-37555: Fix `NonCallableMock._call_matcher` returning tuple instead of | |
| `_Call` object when `self._spec_signature` exists. Patch by Elizabeth | |
| Uselton | |
| - bpo-29446: Make `from tkinter import *` import only the expected objects. | |
| - bpo-16970: Adding a value error when an invalid value in passed to nargs | |
| Patch by Robert Leenders | |
| - bpo-34443: Exceptions from :mod:`enum` now use the ``__qualname`` of the | |
| enum class in the exception message instead of the ``__name__``. | |
| - bpo-37491: Fix ``IndexError`` when parsing email headers with unexpectedly | |
| ending bare-quoted string value. Patch by Abhilash Raj. | |
| - bpo-37587: Make json.loads faster for long strings. (Patch by Marco | |
| Paolini) | |
| - bpo-18378: Recognize "UTF-8" as a valid value for LC_CTYPE in | |
| locale._parse_localename. | |
| - bpo-37579: Return :exc:`NotImplemented` in Python implementation of | |
| ``__eq__`` for :class:`~datetime.timedelta` and :class:`~datetime.time` | |
| when the other object being compared is not of the same type to match C | |
| implementation. Patch by Karthikeyan Singaravelan. | |
| - bpo-21478: Record calls to parent when autospecced object is attached to a | |
| mock using :func:`unittest.mock.attach_mock`. Patch by Karthikeyan | |
| Singaravelan. | |
| - bpo-37531: "python3 -m test -jN --timeout=TIMEOUT" now kills a worker | |
| process if it runs longer than *TIMEOUT* seconds. | |
| - bpo-37482: Fix serialization of display name in originator or destination | |
| address fields with both encoded words and special chars. | |
| - bpo-36993: Improve error reporting for corrupt zip files with bad zip64 | |
| extra data. Patch by Daniel Hillier. | |
| - bpo-37502: pickle.loads() no longer raises TypeError when the buffers | |
| argument is set to None | |
| - bpo-37520: Correct behavior for zipfile.Path.parent when the path object | |
| identifies a subdirectory. | |
| - bpo-18374: Fix the ``.col_offset`` attribute of nested :class:`ast.BinOp` | |
| instances which had a too large value in some situations. | |
| - bpo-37424: Fixes a possible hang when using a timeout on | |
| `subprocess.run()` while capturing output. If the child process spawned | |
| its own children or otherwise connected its stdout or stderr handles with | |
| another process, we could hang after the timeout was reached and our child | |
| was killed when attempting to read final output from the pipes. | |
| - bpo-37421: Fix :func:`multiprocessing.util.get_temp_dir` finalizer: clear | |
| also the 'tempdir' configuration of the current process, so next call to | |
| ``get_temp_dir()`` will create a new temporary directory, rather than | |
| reusing the removed temporary directory. | |
| - bpo-37481: The distutils ``bdist_wininst`` command is deprecated in Python | |
| 3.8, use ``bdist_wheel`` (wheel packages) instead. | |
| - bpo-37479: When `Enum.__str__` is overridden in a derived class, the | |
| override will be used by `Enum.__format__` regardless of whether mixin | |
| classes are present. | |
| - bpo-37440: http.client now enables TLS 1.3 post-handshake authentication | |
| for default context or if a cert_file is passed to HTTPSConnection. | |
| - bpo-37437: Update vendorized expat version to 2.2.7. | |
| - bpo-37428: SSLContext.post_handshake_auth = True no longer sets | |
| SSL_VERIFY_POST_HANDSHAKE verify flag for client connections. Although the | |
| option is documented as ignored for clients, OpenSSL implicitly enables | |
| cert chain validation when the flag is set. | |
| - bpo-37420: :func:`os.sched_setaffinity` now correctly handles errors that | |
| arise during iteration over its ``mask`` argument. Patch by Brandt Bucher. | |
| - bpo-37412: The :func:`os.getcwdb` function now uses the UTF-8 encoding on | |
| Windows, rather than the ANSI code page: see :pep:`529` for the rationale. | |
| The function is no longer deprecated on Windows. | |
| - bpo-37406: The sqlite3 module now raises TypeError, rather than | |
| ValueError, if operation argument type is not str: execute(), | |
| executemany() and calling a connection. | |
| - bpo-29412: Fix IndexError in parsing a header value ending unexpectedly. | |
| Patch by Abhilash Raj. | |
| - bpo-36546: The *dist* argument for statistics.quantiles() is now | |
| positional only. The current name doesn't reflect that the argument can be | |
| either a dataset or a distribution. Marking the parameter as positional | |
| avoids confusion and makes it possible to change the name later. | |
| - bpo-37394: Fix a bug that was causing the :mod:`queue` module to fail if | |
| the accelerator module was not available. Patch by Pablo Galindo. | |
| - bpo-37376: :mod:`pprint` now has support for | |
| :class:`types.SimpleNamespace`. Patch by Carl Bordum Hansen. | |
| - bpo-26967: An :class:`~argparse.ArgumentParser` with | |
| ``allow_abbrev=False`` no longer disables grouping of short flags, such as | |
| ``-vv``, but only disables abbreviation of long flags as documented. Patch | |
| by Zac Hatfield-Dodds. | |
| - bpo-37212: :func:`unittest.mock.call` now preserves the order of keyword | |
| arguments in repr output. Patch by Karthikeyan Singaravelan. | |
| - bpo-37372: Fix error unpickling datetime.time objects from Python 2 with | |
| seconds>=24. Patch by Justin Blanchard. | |
| - bpo-37345: Add formal support for UDPLITE sockets. Support was present | |
| before, but it is now easier to detect support with ``hasattr(socket, | |
| 'IPPROTO_UDPLITE')`` and there are constants defined for each of the | |
| values needed: :py:obj:`socket.IPPROTO_UDPLITE`, | |
| :py:obj:`UDPLITE_SEND_CSCOV`, and :py:obj:`UDPLITE_RECV_CSCOV`. Patch by | |
| Gabe Appleton. | |
| - bpo-37358: Optimized ``functools.partial`` by using vectorcall. | |
| - bpo-37347: :meth:`sqlite3.Connection.create_aggregate`, | |
| :meth:`sqlite3.Connection.create_function`, | |
| :meth:`sqlite3.Connection.set_authorizer`, | |
| :meth:`sqlite3.Connection.set_progress_handler` | |
| :meth:`sqlite3.Connection.set_trace_callback` methods lead to segfaults if | |
| some of these methods are called twice with an equal object but not the | |
| same. Now callbacks are stored more carefully. Patch by Aleksandr Balezin. | |
| - bpo-37163: The *obj* argument of :func:`dataclasses.replace` is | |
| positional-only now. | |
| - bpo-37085: Add the optional Linux SocketCAN Broadcast Manager constants, | |
| used as flags to configure the BCM behaviour, in the socket module. Patch | |
| by Karl Ding. | |
| - bpo-37328: ``HTMLParser.unescape`` is removed. It was undocumented and | |
| deprecated since Python 3.4. | |
| - bpo-37305: Add .webmanifest -> application/manifest+json to list of | |
| recognized file types and content type headers | |
| - bpo-37320: ``aifc.openfp()`` alias to ``aifc.open()``, ``sunau.openfp()`` | |
| alias to ``sunau.open()``, and ``wave.openfp()`` alias to ``wave.open()`` | |
| have been removed. They were deprecated since Python 3.7. | |
| - bpo-37315: Deprecated accepting floats with integral value (like ``5.0``) | |
| in :func:`math.factorial`. | |
| - bpo-37312: ``_dummy_thread`` and ``dummy_threading`` modules have been | |
| removed. These modules were deprecated since Python 3.7 which requires | |
| threading support. | |
| - bpo-33972: Email with single part but content-type set to ``multipart/*`` | |
| doesn't raise AttributeError anymore. | |
| - bpo-37280: Use threadpool for reading from file for sendfile fallback | |
| mode. | |
| - bpo-37279: Fix asyncio sendfile support when sendfile sends extra data in | |
| fallback mode. | |
| - bpo-19865: :func:`ctypes.create_unicode_buffer()` now also supports | |
| non-BMP characters on platforms with 16-bit :c:type:`wchar_t` (for | |
| example, Windows and AIX). | |
| - bpo-37266: In a subinterpreter, spawning a daemon thread now raises an | |
| exception. Daemon threads were never supported in subinterpreters. | |
| Previously, the subinterpreter finalization crashed with a Python fatal | |
| error if a daemon thread was still running. | |
| - bpo-37210: Allow pure Python implementation of :mod:`pickle` to work even | |
| when the C :mod:`_pickle` module is unavailable. | |
| - bpo-21872: Fix :mod:`lzma`: module decompresses data incompletely. When | |
| decompressing a FORMAT_ALONE format file, and it doesn't have the end | |
| marker, sometimes the last one to dozens bytes can't be output. Patch by | |
| Ma Lin. | |
| - bpo-35922: Fix :meth:`RobotFileParser.crawl_delay` and | |
| :meth:`RobotFileParser.request_rate` to return ``None`` rather than raise | |
| :exc:`AttributeError` when no relevant rule is defined in the robots.txt | |
| file. Patch by Rémi Lapeyre. | |
| - bpo-35766: Change the format of feature_version to be a (major, minor) | |
| tuple. | |
| - bpo-36607: Eliminate :exc:`RuntimeError` raised by | |
| :func:`asyncio.all_tasks()` if internal tasks weak set is changed by | |
| another thread during iteration. | |
| - bpo-18748: :class:`_pyio.IOBase` destructor now does nothing if getting | |
| the ``closed`` attribute fails to better mimic :class:`_io.IOBase` | |
| finalizer. | |
| - bpo-36402: Fix a race condition at Python shutdown when waiting for | |
| threads. Wait until the Python thread state of all non-daemon threads get | |
| deleted (join all non-daemon threads), rather than just wait until | |
| non-daemon Python threads complete. | |
| - bpo-37206: Default values which cannot be represented as Python objects no | |
| longer improperly represented as ``None`` in function signatures. | |
| - bpo-37111: Added ``encoding`` and ``errors`` keyword parameters to | |
| ``logging.basicConfig``. | |
| - bpo-12144: Ensure cookies with ``expires`` attribute are handled in | |
| :meth:`CookieJar.make_cookies`. | |
| - bpo-34886: Fix an unintended ValueError from :func:`subprocess.run` when | |
| checking for conflicting `input` and `stdin` or `capture_output` and | |
| `stdout` or `stderr` args when they were explicitly provided but with | |
| `None` values within a passed in `**kwargs` dict rather than as passed | |
| directly by name. Patch contributed by Rémi Lapeyre. | |
| - bpo-37173: The exception message for ``inspect.getfile()`` now correctly | |
| reports the passed class rather than the builtins module. | |
| - bpo-37178: Give math.perm() a one argument form that means the same as | |
| math.factorial(). | |
| - bpo-37178: For math.perm(n, k), let k default to n, giving the same result | |
| as factorial. | |
| - bpo-37165: Converted _collections._count_elements to use the Argument | |
| Clinic. | |
| - bpo-34767: Do not always create a :class:`collections.deque` in | |
| :class:`asyncio.Lock`. | |
| - bpo-37158: Speed-up statistics.fmean() by switching from a function to a | |
| generator. | |
| - bpo-34282: Remove ``Enum._convert`` method, deprecated in 3.8. | |
| - bpo-37150: `argparse._ActionsContainer.add_argument` now throws error, if | |
| someone accidentally pass FileType class object instead of instance of | |
| FileType as `type` argument | |
| - bpo-28724: The socket module now has the :func:`socket.send_fds` and | |
| :func:`socket.recv.fds` methods. Contributed by Joannah Nanjekye, Shinya | |
| Okano and Victor Stinner. | |
| - bpo-35621: Support running asyncio subprocesses when execution event loop | |
| in a thread on UNIX. | |
| - bpo-36520: Lengthy email headers with UTF-8 characters are now properly | |
| encoded when they are folded. Patch by Jeffrey Kintscher. | |
| - bpo-30835: Fixed a bug in email parsing where a message with invalid bytes | |
| in content-transfer-encoding of a multipart message can cause an | |
| AttributeError. Patch by Andrew Donnellan. | |
| - bpo-31163: pathlib.Path instance's rename and replace methods now return | |
| the new Path instance. | |
| - bpo-25068: :class:`urllib.request.ProxyHandler` now lowercases the keys of | |
| the passed dictionary. | |
| - bpo-26185: Fix :func:`repr` on empty :class:`ZipInfo` object. Patch by | |
| Mickaël Schoentgen. | |
| - bpo-21315: Email headers containing RFC2047 encoded words are parsed | |
| despite the missing whitespace, and a defect registered. Also missing | |
| trailing whitespace after encoded words is now registered as a defect. | |
| - bpo-31904: Port test_datetime to VxWorks: skip zoneinfo tests on VxWorks | |
| - bpo-35805: Add parser for Message-ID header and add it to default | |
| HeaderRegistry. This should prevent folding of Message-ID using RFC 2048 | |
| encoded words. | |
| - bpo-36871: Ensure method signature is used instead of constructor | |
| signature of a class while asserting mock object against method calls. | |
| Patch by Karthikeyan Singaravelan. | |
| - bpo-35070: posix.getgrouplist() now works correctly when the user belongs | |
| to NGROUPS_MAX supplemental groups. Patch by Jeffrey Kintscher. | |
| - bpo-31783: Fix race condition in ThreadPoolExecutor when worker threads | |
| are created during interpreter shutdown. | |
| - bpo-36582: Fix ``UserString.encode()`` to correctly return ``bytes`` | |
| rather than a ``UserString`` instance. | |
| - bpo-32424: Deprecate xml.etree.ElementTree.Element.copy() in favor of | |
| copy.copy(). | |
| Patch by Gordon P. Hemsley | |
| - bpo-36564: Fix infinite loop in email header folding logic that would be | |
| triggered when an email policy's max_line_length is not long enough to | |
| include the required markup and any values in the message. Patch by Paul | |
| Ganssle | |
| - bpo-36543: Removed methods Element.getchildren(), Element.getiterator() | |
| and ElementTree.getiterator() and the xml.etree.cElementTree module. | |
| - bpo-36409: Remove the old plistlib API deprecated in Python 3.4 | |
| - bpo-36302: distutils sorts source file lists so that Extension .so files | |
| build more reproducibly by default | |
| - bpo-36250: Ignore ``ValueError`` from ``signal`` with ``interaction`` in | |
| non-main thread. | |
| - bpo-36046: Added ``user``, ``group`` and ``extra_groups`` parameters to | |
| the subprocess.Popen constructor. Patch by Patrick McLean. | |
| - bpo-32627: Fix compile error when ``_uuid`` headers conflicting included. | |
| - bpo-35800: Deprecate ``smtpd.MailmanProxy`` ready for future removal. | |
| - bpo-35168: :attr:`shlex.shlex.punctuation_chars` is now a read-only | |
| property. | |
| - bpo-8538: Add support for boolean actions like ``--foo`` and ``--no-foo`` | |
| to argparse. Patch contributed by Rémi Lapeyre. | |
| - bpo-20504: Fixes a bug in :mod:`cgi` module when a multipart/form-data | |
| request has no `Content-Length` header. | |
| - bpo-25988: The abstract base classes in :mod:`collections.abc` no longer | |
| are exposed in the regular :mod:`collections` module. | |
| - bpo-11122: Distutils won't check for rpmbuild in specified paths only. | |
| - bpo-34775: Division handling of PurePath now returns NotImplemented | |
| instead of raising a TypeError when passed something other than an | |
| instance of str or PurePath. Patch by Roger Aiudi. | |
| - bpo-34749: :func:`binascii.a2b_base64` is now up to 2 times faster. Patch | |
| by Sergey Fedoseev. | |
| - bpo-34519: Add additional aliases for HP Roman 8. Patch by Michael Osipov. | |
| - bpo-28009: Fix uuid.getnode() on platforms with '.' as MAC Addr delimiter | |
| as well fix for MAC Addr format that omits a leading 0 in MAC Addr values. | |
| Currently, AIX is the only know platform with these settings. Patch by | |
| Michael Felt. | |
| - bpo-30618: Add :meth:`~pathlib.Path.readlink`. Patch by Girts Folkmanis. | |
| - bpo-32498: Made :func:`urllib.parse.unquote()` accept bytes in addition to | |
| strings. Patch by Stein Karlsen. | |
| - bpo-33348: lib2to3 now recognizes expressions after ``*`` and `**` like in | |
| ``f(*[] or [])``. | |
| - bpo-32689: Update :func:`shutil.move` function to allow for Path objects | |
| to be used as source argument. Patch by Emily Morehouse and Maxwell | |
| "5.13b" McKinnon. | |
| - bpo-32820: Added __format__ to IPv4 and IPv6 classes. Always outputs a | |
| fully zero- padded string. Supports b/x/n modifiers (bin/hex/native | |
| format). Native format for IPv4 is bin, native format for IPv6 is hex. | |
| Also supports '#' and '_' modifiers. | |
| - bpo-27657: Fix urllib.parse.urlparse() with numeric paths. A string like | |
| "path:80" is no longer parsed as a path but as a scheme ("path") and a | |
| path ("80"). | |
| - bpo-4963: Fixed non-deterministic behavior related to mimetypes extension | |
| mapping and module reinitialization. | |
| Documentation | |
| ------------- | |
| - bpo-21767: Explicitly mention abc support in functools.singledispatch | |
| - bpo-38816: Provides more details about the interaction between | |
| :c:func:`fork` and CPython's runtime, focusing just on the C-API. This | |
| includes cautions about where :c:func:`fork` should and shouldn't be | |
| called. | |
| - bpo-38351: Modernize :mod:`email` examples from %-formatting to f-strings. | |
| - bpo-38778: Document the fact that :exc:`RuntimeError` is raised if | |
| :meth:`os.fork` is called in a subinterpreter. | |
| - bpo-38592: Add Brazilian Portuguese to the language switcher at Python | |
| Documentation website. | |
| - bpo-38294: Add list of no-longer-escaped chars to re.escape documentation | |
| - bpo-38053: Modernized the plistlib documentation | |
| - bpo-26868: Fix example usage of :c:func:`PyModule_AddObject` to properly | |
| handle errors. | |
| - bpo-36797: Fix a dead link in the distutils API Reference. | |
| - bpo-37977: Warn more strongly and clearly about pickle insecurity | |
| - bpo-37979: Added a link to dateutil.parser.isoparse in the | |
| datetime.fromisoformat documentation. Patch by Paul Ganssle | |
| - bpo-12707: Deprecate info(), geturl(), getcode() methods in favor of the | |
| headers, url, and status properties, respectively, for HTTPResponse and | |
| addinfourl. Also deprecate the code attribute of addinfourl in favor of | |
| the status attribute. Patch by Ashwin Ramaswami | |
| - bpo-37937: Mention ``frame.f_trace`` in :func:`sys.settrace` docs. | |
| - bpo-37878: Make :c:func:`PyThreadState_DeleteCurrent` Internal. | |
| - bpo-37759: Beginning edits to Whatsnew 3.8 | |
| - bpo-37726: Stop recommending getopt in the tutorial for command line | |
| argument parsing and promote argparse. | |
| - bpo-32910: Remove implementation-specific behaviour of how venv's | |
| Deactivate works. | |
| - bpo-37256: Fix wording of arguments for :class:`Request` in | |
| :mod:`urllib.request` | |
| - bpo-37284: Add a brief note to indicate that any new | |
| ``sys.implementation`` required attributes must go through the PEP | |
| process. | |
| - bpo-30088: Documented that :class:`mailbox.Maildir` constructor doesn't | |
| attempt to verify the maildir folder layout correctness. Patch by | |
| Sviatoslav Sydorenko. | |
| - bpo-37521: Fix `importlib` examples to insert any newly created modules | |
| via importlib.util.module_from_spec() immediately into sys.modules instead | |
| of after calling loader.exec_module(). | |
| Thanks to Benjamin Mintz for finding the bug. | |
| - bpo-37456: Slash ('/') is now part of syntax. | |
| - bpo-37487: Fix PyList_GetItem index description to include 0. | |
| - bpo-37149: Replace the dead link to the Tkinter 8.5 reference by John | |
| Shipman, New Mexico Tech, with a link to the archive.org copy. | |
| - bpo-37478: Added possible exceptions to the description of os.chdir(). | |
| - bpo-34903: Documented that in :meth:`datetime.datetime.strptime()`, the | |
| leading zero in some two-digit formats is optional. Patch by Mike Gleen. | |
| - bpo-36260: Add decompression pitfalls to zipfile module documentation. | |
| - bpo-37004: In the documentation for difflib, a note was added explicitly | |
| warning that the results of SequenceMatcher's ratio method may depend on | |
| the order of the input strings. | |
| - bpo-36960: Restructured the :mod:`datetime` docs in the interest of making | |
| them more user-friendly and improving readability. Patch by Brad Solomon. | |
| - bpo-36487: Make C-API docs clear about what the "main" interpreter is. | |
| - bpo-23460: The documentation for decimal string formatting using the `:g` | |
| specifier has been updated to reflect the correct exponential notation | |
| cutoff point. Original patch contributed by Tuomas Suutari. | |
| - bpo-35803: Document and test that ``tempfile`` functions may accept a | |
| :term:`path-like object` for the ``dir`` argument. Patch by Anthony | |
| Sottile. | |
| - bpo-33944: Added a note about the intended use of code in .pth files. | |
| - bpo-34293: Fix the Doc/Makefile regarding PAPER environment variable and | |
| PDF builds | |
| - bpo-25237: Add documentation for tkinter modules | |
| Tests | |
| ----- | |
| - bpo-38614: Fix test_communicate() of test_asyncio.test_subprocess: use | |
| ``support.LONG_TIMEOUT`` (5 minutes), instead of just 1 minute. | |
| - bpo-38614: Add timeout constants to :mod:`test.support`: | |
| :data:`~test.support.LOOPBACK_TIMEOUT`, | |
| :data:`~test.support.INTERNET_TIMEOUT`, | |
| :data:`~test.support.SHORT_TIMEOUT` and | |
| :data:`~test.support.LONG_TIMEOUT`. | |
| - bpo-38502: test.regrtest now uses process groups in the multiprocessing | |
| mode (-jN command line option) if process groups are available: if | |
| :func:`os.setsid` and :func:`os.killpg` functions are available. | |
| - bpo-35998: Fix a race condition in test_asyncio.test_start_tls_server_1(). | |
| Previously, there was a race condition between the test main() function | |
| which replaces the protocol and the test ServerProto protocol which sends | |
| ANSWER once it gets HELLO. Now, only the test main() function is | |
| responsible to send data, ServerProto no longer sends data. | |
| - bpo-38470: Fix ``test_compileall.test_compile_dir_maxlevels()`` on Windows | |
| without long path support: only create 3 subdirectories instead of between | |
| 20 and 100 subdirectories. | |
| - bpo-37531: On timeout, regrtest no longer attempts to call | |
| ``popen.communicate()`` again: it can hang until all child processes using | |
| stdout and stderr pipes completes. Kill the worker process and ignores its | |
| output. Change also the faulthandler timeout of the main process from 1 | |
| minute to 5 minutes, for Python slowest buildbots. | |
| - bpo-38239: Fix test_gdb for Link Time Optimization (LTO) builds. | |
| - bpo-38275: test_ssl now handles disabled TLS/SSL versions better. | |
| OpenSSL's crypto policy and run-time settings are recognized and tests for | |
| disabled versions are skipped. Tests also accept more TLS minimum_versions | |
| for platforms that override OpenSSL's default with strict settings. | |
| - bpo-38271: The private keys for test_ssl were encrypted with 3DES in | |
| traditional PKCS#5 format. 3DES and the digest algorithm of PKCS#5 are | |
| blocked by some strict crypto policies. Use PKCS#8 format with AES256 | |
| encryption instead. | |
| - bpo-38270: test.support now has a helper function to check for | |
| availability of a hash digest function. Several tests are refactored avoid | |
| MD5 and use SHA256 instead. Other tests are marked to use MD5 and skipped | |
| when MD5 is disabled. | |
| - bpo-37123: Multiprocessing test test_mymanager() now also expects | |
| -SIGTERM, not only exitcode 0. BaseManager._finalize_manager() sends | |
| SIGTERM to the manager process if it takes longer than 1 second to stop, | |
| which happens on slow buildbots. | |
| - bpo-38212: Multiprocessing tests: increase | |
| test_queue_feeder_donot_stop_onexc() timeout from 1 to 60 seconds. | |
| - bpo-38117: Test with OpenSSL 1.1.1d | |
| - bpo-38018: Increase code coverage for multiprocessing.shared_memory. | |
| - bpo-37805: Add tests for json.dump(..., skipkeys=True). Patch by Dong-hee | |
| Na. | |
| - bpo-37531: Enhance regrtest multiprocess timeout: write a message when | |
| killing a worker process, catch popen.kill() and popen.wait() exceptions, | |
| put a timeout on the second call to popen.communicate(). | |
| - bpo-37876: Add tests for ROT-13 codec. | |
| - bpo-36833: Added tests for PyDateTime_xxx_GET_xxx() macros of the C API of | |
| the :mod:`datetime` module. Patch by Joannah Nanjekye. | |
| - bpo-37558: Fix test_shared_memory_cleaned_after_process_termination name | |
| handling | |
| - bpo-37526: Add :func:`test.support.catch_threading_exception`: context | |
| manager catching :class:`threading.Thread` exception using | |
| :func:`threading.excepthook`. | |
| - bpo-37421: test_concurrent_futures now explicitly stops the ForkServer | |
| instance if it's running. | |
| - bpo-37421: multiprocessing tests now stop the ForkServer instance if it's | |
| running: close the "alive" file descriptor to ask the server to stop and | |
| then remove its UNIX address. | |
| - bpo-37421: test_distutils.test_build_ext() is now able to remove the | |
| temporary directory on Windows: don't import the newly built C extension | |
| ("xx") in the current process, but test it in a separated process. | |
| - bpo-37421: test_concurrent_futures now cleans up multiprocessing to remove | |
| immediately temporary directories created by | |
| multiprocessing.util.get_temp_dir(). | |
| - bpo-37421: test_winconsoleio doesn't leak a temporary file anymore: use | |
| tempfile.TemporaryFile() to remove it when the test completes. | |
| - bpo-37421: multiprocessing tests now explicitly call ``_run_finalizers()`` | |
| to immediately remove temporary directories created by tests. | |
| - bpo-37421: urllib.request tests now call | |
| :func:`~urllib.request.urlcleanup` to remove temporary files created by | |
| ``urlretrieve()`` tests and to clear the ``_opener`` global variable set | |
| by ``urlopen()`` and functions calling indirectly ``urlopen()``. | |
| - bpo-37472: Remove ``Lib/test/outstanding_bugs.py``. | |
| - bpo-37199: Fix test failures when IPv6 is unavailable or disabled. | |
| - bpo-19696: Replace deprecated method "random.choose" with "random.choice" | |
| in "test_pkg_import.py". | |
| - bpo-37335: Remove no longer necessary code from c locale coercion tests | |
| - bpo-37421: Fix test_shutil to no longer leak temporary files. | |
| - bpo-37411: Fix test_wsgiref.testEnviron() to no longer depend on the | |
| environment variables (don't fail if "X" variable is set). | |
| - bpo-37400: Fix test_os.test_chown(): use os.getgroups() rather than | |
| grp.getgrall() to get groups. Rename also the test to test_chown_gid(). | |
| - bpo-37359: Add --cleanup option to python3 -m test to remove | |
| ``test_python_*`` directories of previous failed jobs. Add "make | |
| cleantest" to run ``python3 -m test --cleanup``. | |
| - bpo-37362: test_gdb no longer fails if it gets an "unexpected" message on | |
| stderr: it now ignores stderr. The purpose of test_gdb is to test that | |
| python-gdb.py commands work as expected, not to test gdb. | |
| - bpo-35998: Avoid TimeoutError in test_asyncio: test_start_tls_server_1() | |
| - bpo-37278: Fix test_asyncio ProactorLoopCtrlC: join the thread to prevent | |
| leaking a running thread and leaking a reference. | |
| - bpo-37261: Fix :func:`test.support.catch_unraisable_exception`: its | |
| __exit__() method now ignores unraisable exception raised when clearing | |
| its ``unraisable`` attribute. | |
| - bpo-37069: regrtest now uses :func:`sys.unraisablehook` to mark a test as | |
| "environment altered" (ENV_CHANGED) if it emits an "unraisable exception". | |
| Moreover, regrtest logs a warning in this case. | |
| Use ``python3 -m test --fail-env-changed`` to catch unraisable exceptions | |
| in tests. | |
| - bpo-37252: Fix assertions in ``test_close`` and | |
| ``test_events_mask_overflow`` devpoll tests. | |
| - bpo-37169: Rewrite ``_PyObject_IsFreed()`` unit tests. | |
| - bpo-37153: ``test_venv.test_multiprocessing()`` now explicitly calls | |
| ``pool.terminate()`` to wait until the pool completes. | |
| - bpo-34001: Make test_ssl pass with LibreSSL. LibreSSL handles minimum and | |
| maximum TLS version differently than OpenSSL. | |
| - bpo-36919: Make ``test_source_encoding.test_issue2301`` implementation | |
| independent. The test will work now for both CPython and IronPython. | |
| - bpo-30202: Update ``test.test_importlib.test_abc`` to test | |
| ``find_spec()``. | |
| - bpo-28009: Modify the test_uuid logic to test when a program is available | |
| AND can be used to obtain a MACADDR as basis for an UUID. Patch by M. Felt | |
| - bpo-34596: Fallback to a default reason when :func:`unittest.skip` is | |
| uncalled. Patch by Naitree Zhu. | |
| Build | |
| ----- | |
| - bpo-38809: On Windows, build scripts will now recognize and use python.exe | |
| from an active virtual env. | |
| - bpo-38684: Fix _hashlib build when Blake2 is disabled, but OpenSSL | |
| supports it. | |
| - bpo-38468: Misc/python-config.in now uses `getvar()` for all still | |
| existing `sysconfig.get_config_var()` calls. Patch by Joannah Nanjekye. | |
| - bpo-37415: Fix stdatomic.h header check for ICC compiler: the ICC | |
| implementation lacks atomic_uintptr_t type which is needed by Python. | |
| - bpo-38301: In Solaris family, we must be sure to use ``-D_REENTRANT``. | |
| Patch by Jesús Cea Avión. | |
| - bpo-36002: Locate ``llvm-profdata`` and ``llvm-ar`` binaries using | |
| ``AC_PATH_TOOL`` rather than ``AC_PATH_TARGET_TOOL``. | |
| - bpo-37936: The :file:`.gitignore` file systematically keeps "rooted", with | |
| a non-trailing slash, all the rules that are meant to apply to files in a | |
| specific place in the repo. Previously, when the intended file to ignore | |
| happened to be at the root of the repo, we'd most often accidentally also | |
| ignore files and directories with the same name anywhere in the tree. | |
| - bpo-37760: The :file:`Tools/unicode/makeunicodedata.py` script, which is | |
| used for converting information from the Unicode Character Database into | |
| generated code and data used by the methods of :class:`str` and by the | |
| :mod:`unicodedata` module, now handles each character's data as a | |
| ``dataclass`` with named attributes, rather than a length-18 list of | |
| different fields. | |
| - bpo-37936: The :file:`.gitignore` file no longer applies to any files that | |
| are in fact tracked in the Git repository. Patch by Greg Price. | |
| - bpo-37725: Change "clean" makefile target to also clean the program guided | |
| optimization (PGO) data. Previously you would have to use "make clean" | |
| and "make profile-removal", or "make clobber". | |
| - bpo-37707: Mark some individual tests to skip when --pgo is used. The | |
| tests marked increase the PGO task time significantly and likely don't | |
| help improve optimization of the final executable. | |
| - bpo-36044: Reduce the number of unit tests run for the PGO generation | |
| task. This speeds up the task by a factor of about 15x. Running the full | |
| unit test suite is slow. This change may result in a slightly less | |
| optimized build since not as many code branches will be executed. If you | |
| are willing to wait for the much slower build, the old behavior can be | |
| restored using './configure [..] PROFILE_TASK="-m test --pgo-extended"'. | |
| We make no guarantees as to which PGO task set produces a faster build. | |
| Users who care should run their own relevant benchmarks as results can | |
| depend on the environment, workload, and compiler tool chain. | |
| - bpo-37468: ``make install`` no longer installs ``wininst-*.exe`` files | |
| used by distutils bdist_wininst: bdist_wininst only works on Windows. | |
| - bpo-37189: Many ``PyRun_XXX()`` functions like :c:func:`PyRun_String` were | |
| no longer exported in ``libpython38.dll`` by mistake. Export them again to | |
| fix the ABI compatibility. | |
| - bpo-25361: Enables use of SSE2 instructions in Windows 32-bit build. | |
| - bpo-36210: Update optional extension module detection for AIX. ossaudiodev | |
| and spwd are not applicable for AIX, and are no longer reported as | |
| missing. 3rd-party packaging of ncurses (with ASIS support) conflicts with | |
| officially supported AIX curses library, so configure AIX to use | |
| libcurses.a. However, skip trying to build _curses_panel. | |
| patch by M Felt | |
| Windows | |
| ------- | |
| - bpo-38589: Fixes HTML Help shortcut when Windows is not installed to C | |
| drive | |
| - bpo-38453: Ensure ntpath.realpath() correctly resolves relative paths. | |
| - bpo-38519: Restores the internal C headers that were missing from the | |
| nuget.org and Microsoft Store packages. | |
| - bpo-38492: Remove ``pythonw.exe`` dependency on the Microsoft C++ runtime. | |
| - bpo-38344: Fix error message in activate.bat | |
| - bpo-38359: Ensures ``pyw.exe`` launcher reads correct registry key. | |
| - bpo-38355: Fixes ``ntpath.realpath`` failing on ``sys.executable``. | |
| - bpo-38117: Update bundled OpenSSL to 1.1.1d | |
| - bpo-38092: Reduce overhead when using multiprocessing in a Windows virtual | |
| environment. | |
| - bpo-38133: Allow py.exe launcher to locate installations from the | |
| Microsoft Store and improve display of active virtual environments. | |
| - bpo-38114: The ``pip.ini`` is no longer included in the Nuget package. | |
| - bpo-32592: Set Windows 8 as the minimum required version for API support | |
| - bpo-36634: :func:`os.cpu_count` now returns active processors rather than | |
| maximum processors. | |
| - bpo-36634: venv activate.bat now works when the existing variables contain | |
| double quote characters. | |
| - bpo-38081: Prevent error calling :func:`os.path.realpath` on ``'NUL'``. | |
| - bpo-38087: Fix case sensitivity in test_pathlib and test_ntpath. | |
| - bpo-38088: Fixes distutils not finding vcruntime140.dll with only the v142 | |
| toolset installed. | |
| - bpo-37283: Ensure command-line and unattend.xml setting override | |
| previously detected states in Windows installer. | |
| - bpo-38030: Fixes :func:`os.stat` failing for block devices on Windows | |
| - bpo-38020: Fixes potential crash when calling :func:`os.readlink` (or | |
| indirectly through :func:`~os.path.realpath`) on a file that is not a | |
| supported link. | |
| - bpo-37705: Improve the implementation of ``winerror_to_errno()``. | |
| - bpo-37549: :func:`os.dup` no longer fails for standard streams on Windows | |
| 7. | |
| - bpo-1311: The ``nul`` file on Windows now returns True from | |
| :func:`~os.path.exists` and a valid result from :func:`os.stat` with | |
| ``S_IFCHR`` set. | |
| - bpo-9949: Enable support for following symlinks in :func:`os.realpath`. | |
| - bpo-37834: Treat all name surrogate reparse points on Windows in | |
| :func:`os.lstat` and other reparse points as regular files in | |
| :func:`os.stat`. | |
| - bpo-36266: Add the module name in the formatted error message when DLL | |
| load fail happens during module import in | |
| ``_PyImport_FindSharedFuncptrWindows()``. Patch by Srinivas Nyayapati. | |
| - bpo-25172: Trying to import the :mod:`crypt` module on Windows will result | |
| in an :exc:`ImportError` with a message explaining that the module isn't | |
| supported on Windows. On other platforms, if the underlying ``_crypt`` | |
| module is not available, the ImportError will include a message explaining | |
| the problem. | |
| - bpo-37778: Fixes the icons used for file associations to the Microsoft | |
| Store package. | |
| - bpo-37734: Fix use of registry values to launch Python from Microsoft | |
| Store app. | |
| - bpo-37702: Fix memory leak on Windows in creating an SSLContext object or | |
| running ``urllib.request.urlopen('https://...')``. | |
| - bpo-37672: Switch Windows Store package's pip to use bundled | |
| :file:`pip.ini` instead of :envvar:`PIP_USER` variable. | |
| - bpo-10945: Officially drop support for creating bdist_wininst installers | |
| on non-Windows systems. | |
| - bpo-37445: Include the ``FORMAT_MESSAGE_IGNORE_INSERTS`` flag in | |
| ``FormatMessageW()`` calls. | |
| - bpo-37369: Fixes path for :data:`sys.executable` when running from the | |
| Microsoft Store. | |
| - bpo-37380: Don't collect unfinished processes with ``subprocess._active`` | |
| on Windows to cleanup later. Patch by Ruslan Kuprieiev. | |
| - bpo-37351: Removes libpython38.a from standard Windows distribution. | |
| - bpo-35360: Update Windows builds to use SQLite 3.28.0. | |
| - bpo-37267: On Windows, :func:`os.dup` no longer creates an inheritable fd | |
| when handling a character file. | |
| - bpo-36779: Ensure ``time.tzname`` is correct on Windows when the active | |
| code page is set to CP_UTF7 or CP_UTF8. | |
| - bpo-32587: Make :data:`winreg.REG_MULTI_SZ` support zero-length strings. | |
| - bpo-28269: Replace use of :c:func:`strcasecmp` for the system function | |
| :c:func:`_stricmp`. Patch by Minmin Gong. | |
| - bpo-36590: Add native Bluetooth RFCOMM support to socket module. | |
| macOS | |
| ----- | |
| - bpo-38117: Updated OpenSSL to 1.1.1d in macOS installer. | |
| - bpo-38089: Move Azure Pipelines to latest VM versions and make macOS tests | |
| optional | |
| - bpo-18049: Increase the default stack size of threads from 5MB to 16MB on | |
| macOS, to match the stack size of the main thread. This avoids crashes on | |
| deep recursion in threads. | |
| - bpo-34602: Avoid test suite failures on macOS by no longer calling | |
| resource.setrlimit to increase the process stack size limit at runtime. | |
| The runtime change is no longer needed since the interpreter is being | |
| built with a larger default stack size. | |
| - bpo-35360: Update macOS installer to use SQLite 3.28.0. | |
| - bpo-34631: Updated OpenSSL to 1.1.1c in macOS installer. | |
| IDLE | |
| ---- | |
| - bpo-26353: Stop adding newline when saving an IDLE shell window. | |
| - bpo-4630: Add an option to toggle IDLE's cursor blink for shell, editor, | |
| and output windows. See Settings, General, Window Preferences, Cursor | |
| Blink. Patch by Zackery Spytz. | |
| - bpo-38598: Do not try to compile IDLE shell or output windows | |
| - bpo-36698: IDLE no longer fails when write non-encodable characters to | |
| stderr. It now escapes them with a backslash, as the regular Python | |
| interpreter. Added the ``errors`` field to the standard streams. | |
| - bpo-35379: When exiting IDLE, catch any AttributeError. One happens when | |
| EditorWindow.close is called twice. Printing a traceback, when IDLE is | |
| run from a terminal, is useless and annoying. | |
| - bpo-38183: To avoid problems, test_idle ignores the user config directory. | |
| It no longer tries to create or access .idlerc or any files within. Users | |
| must run IDLE to discover problems with saving settings. | |
| - bpo-38077: IDLE no longer adds 'argv' to the user namespace when | |
| initializing it. This bug only affected 3.7.4 and 3.8.0b2 to 3.8.0b4. | |
| - bpo-38041: Shell restart lines now fill the window width, always start | |
| with '=', and avoid wrapping unnecessarily. The line will still wrap if | |
| the included file name is long relative to the width. | |
| - bpo-35771: To avoid occasional spurious test_idle failures on slower | |
| machines, increase the ``hover_delay`` in test_tooltip. | |
| - bpo-37824: Properly handle user input warnings in IDLE shell. Cease | |
| turning SyntaxWarnings into SyntaxErrors. | |
| - bpo-37929: IDLE Settings dialog now closes properly when there is no shell | |
| window. | |
| - bpo-37902: Add mousewheel scrolling for IDLE module, path, and stack | |
| browsers. Patch by George Zhang. | |
| - bpo-37849: Fixed completions list appearing too high or low when shown | |
| above the current line. | |
| - bpo-36419: Refactor IDLE autocomplete and improve testing. | |
| - bpo-37748: Reorder the Run menu. Put the most common choice, Run Module, | |
| at the top. | |
| - bpo-37692: Improve highlight config sample with example shell interaction | |
| and better labels for shell elements. | |
| - bpo-37628: Settings dialog no longer expands with font size. | |
| - bpo-37627: Initialize the Customize Run dialog with the command line | |
| arguments most recently entered before. The user can optionally edit | |
| before submitting them. | |
| - bpo-33610: Fix code context not showing the correct context when first | |
| toggled on. | |
| - bpo-37530: Optimize code context to reduce unneeded background activity. | |
| Font and highlight changes now occur along with text changes instead of | |
| after a random delay. | |
| - bpo-27452: Cleanup ``config.py`` by inlining ``RemoveFile`` and | |
| simplifying the handling of ``file`` in ``CreateConfigHandlers``. | |
| - bpo-37325: Fix tab focus traversal order for help source and custom run | |
| dialogs. | |
| - bpo-37321: Both subprocess connection error messages now refer to the | |
| 'Startup failure' section of the IDLE doc. | |
| - bpo-17535: Add optional line numbers for IDLE editor windows. Windows | |
| open without line numbers unless set otherwise in the General tab of the | |
| configuration dialog. | |
| - bpo-26806: To compensate for stack frames added by IDLE and avoid possible | |
| problems with low recursion limits, add 30 to limits in the user code | |
| execution process. Subtract 30 when reporting recursion limits to make | |
| this addition mostly transparent. | |
| - bpo-37177: Properly 'attach' search dialogs to their main window so that | |
| they behave like other dialogs and do not get hidden behind their main | |
| window. | |
| - bpo-37039: Adjust "Zoom Height" to individual screens by momentarily | |
| maximizing the window on first use with a particular screen. Changing | |
| screen settings may invalidate the saved height. While a window is | |
| maximized, "Zoom Height" has no effect. | |
| - bpo-35763: Make calltip reminder about '/' meaning positional-only less | |
| obtrusive by only adding it when there is room on the first line. | |
| - bpo-5680: Add 'Run... Customized' to the Run menu to run a module with | |
| customized settings. Any 'command line arguments' entered are added to | |
| sys.argv. One can suppress the normal Shell main module restart. | |
| - bpo-36390: Gather Format menu functions into format.py. Combine | |
| paragraph.py, rstrip.py, and format methods from editor.py. | |
| Tools/Demos | |
| ----------- | |
| - bpo-38118: Update Valgrind suppression file to ignore a false alarm in | |
| :c:func:`PyUnicode_Decode` when using GCC builtin strcmp(). | |
| - bpo-38347: pathfix.py: Assume all files that end on '.py' are Python | |
| scripts when working recursively. | |
| - bpo-37803: pdb's ``--help`` and ``--version`` long options now work. | |
| - bpo-37942: Improve ArgumentClinic converter for floats. | |
| - bpo-37704: Remove ``Tools/scripts/h2py.py``: use cffi to access a C API in | |
| Python. | |
| - bpo-37675: 2to3 now works when run from a zipped standard library. | |
| - bpo-37034: Argument Clinic now uses the argument name on errors with | |
| keyword-only argument instead of their position. Patch contributed by Rémi | |
| Lapeyre. | |
| - bpo-37064: Add option -k to pathscript.py script: preserve shebang flags. | |
| Add option -a to pathscript.py script: add flags. | |
| C API | |
| ----- | |
| - bpo-37633: Re-export some function compatibility wrappers for macros in | |
| ``pythonrun.h``. | |
| - bpo-38644: Provide :c:func:`Py_EnterRecursiveCall` and | |
| :c:func:`Py_LeaveRecursiveCall` as regular functions for the limited API. | |
| Previously, there were defined as macros, but these macros didn't work | |
| with the limited API which cannot access ``PyThreadState.recursion_depth`` | |
| field. Remove ``_Py_CheckRecursionLimit`` from the stable ABI. | |
| - bpo-38650: The global variable :c:data:`PyStructSequence_UnnamedField` is | |
| now a constant and refers to a constant string. | |
| - bpo-38540: Fixed possible leak in :c:func:`PyArg_Parse` and similar | |
| functions for format units ``"es#"`` and ``"et#"`` when the macro | |
| :c:macro:`PY_SSIZE_T_CLEAN` is not defined. | |
| - bpo-38395: Fix a crash in :class:`weakref.proxy` objects due to incorrect | |
| lifetime management when calling some associated methods that may delete | |
| the last reference to object being referenced by the proxy. Patch by Pablo | |
| Galindo. | |
| - bpo-36389: The ``_PyObject_CheckConsistency()`` function is now also | |
| available in release mode. For example, it can be used to debug a crash in | |
| the ``visit_decref()`` function of the GC. | |
| - bpo-38266: Revert the removal of PyThreadState_DeleteCurrent() with | |
| documentation. | |
| - bpo-38303: Update audioop extension module to use the stable ABI | |
| (PEP-384). Patch by Tyler Kieft. | |
| - bpo-38234: :c:func:`Py_SetPath` now sets :data:`sys.executable` to the | |
| program full path (:c:func:`Py_GetProgramFullPath`) rather than to the | |
| program name (:c:func:`Py_GetProgramName`). | |
| - bpo-38234: Python ignored arguments passed to :c:func:`Py_SetPath`, | |
| :c:func:`Py_SetPythonHome` and :c:func:`Py_SetProgramName`: fix Python | |
| initialization to use specified arguments. | |
| - bpo-38205: The :c:func:`Py_UNREACHABLE` macro now calls | |
| :c:func:`Py_FatalError`. | |
| - bpo-38140: Make dict and weakref offsets opaque for C heap types by | |
| passing the offsets through PyMemberDef | |
| - bpo-15088: The C function ``PyGen_NeedsFinalizing`` has been removed. It | |
| was not documented, tested or used anywhere within CPython after the | |
| implementation of :pep:`442`. Patch by Joannah Nanjekye. (Patch by Joannah | |
| Nanjekye) | |
| - bpo-36763: Options added by ``PySys_AddXOption()`` are now handled the | |
| same way than ``PyConfig.xoptions`` and command line ``-X`` options. | |
| - bpo-37926: Fix a crash in ``PySys_SetArgvEx(0, NULL, 0)``. | |
| - bpo-37879: Fix subtype_dealloc to suppress the type decref when the base | |
| type is a C heap type | |
| - bpo-37645: Add :c:func:`_PyObject_FunctionStr` to get a user-friendly | |
| string representation of a function-like object. Patch by Jeroen Demeyer. | |
| - bpo-29548: The functions ``PyEval_CallObject``, ``PyEval_CallFunction``, | |
| ``PyEval_CallMethod`` and ``PyEval_CallObjectWithKeywords`` are | |
| deprecated. Use :c:func:`PyObject_Call` and its variants instead. | |
| - bpo-37151: ``PyCFunction_Call`` is now a deprecated alias of | |
| :c:func:`PyObject_Call`. | |
| - bpo-37540: The vectorcall protocol now requires that the caller passes | |
| only strings as keyword names. | |
| - bpo-37207: The vectorcall protocol is now enabled for ``type`` objects: | |
| set ``tp_vectorcall`` to a vectorcall function to be used instead of | |
| ``tp_new`` and ``tp_init`` when calling the class itself. | |
| - bpo-21120: Exclude Python-ast.h, ast.h and asdl.h from the limited API. | |
| - bpo-37483: Add new function ``_PyObject_CallOneArg`` for calling an object | |
| with one positional argument. | |
| - bpo-36763: Add :func:`PyConfig_SetWideStringList` function. | |
| - bpo-37337: Add fast functions for calling methods: | |
| :c:func:`_PyObject_VectorcallMethod`, :c:func:`_PyObject_CallMethodNoArgs` | |
| and :c:func:`_PyObject_CallMethodOneArg`. | |
| - bpo-28805: The :const:`METH_FASTCALL` calling convention has been | |
| documented. | |
| - bpo-37221: The new function :c:func:`PyCode_NewWithPosOnlyArgs` allows to | |
| create code objects like :c:func:`PyCode_New`, but with an extra | |
| *posonlyargcount* parameter for indicating the number of positonal-only | |
| arguments. | |
| - bpo-37215: Fix dtrace issue introduce by bpo-36842 | |
| - bpo-37194: Add a new public :c:func:`PyObject_CallNoArgs` function to the | |
| C API: call a callable Python object without any arguments. It is the most | |
| efficient way to call a callback without any argument. On x86-64, for | |
| example, ``PyObject_CallFunctionObjArgs(func, NULL)`` allocates 960 bytes | |
| on the stack per call, whereas ``PyObject_CallNoArgs(func)`` only | |
| allocates 624 bytes per call. | |
| - bpo-37170: Fix the cast on error in | |
| :c:func:`PyLong_AsUnsignedLongLongMask()`. | |
| - bpo-35381: Convert posixmodule.c statically allocated types | |
| ``DirEntryType`` and ``ScandirIteratorType`` to heap-allocated types. | |
| - bpo-34331: Use singular/plural noun in error message when instantiating an | |
| abstract class with non-overriden abstract method(s). | |
| What's New in Python 3.8.0 beta 1? | |
| ================================== | |
| *Release date: 2019-06-04* | |
| Security | |
| -------- | |
| - bpo-35907: CVE-2019-9948: Avoid file reading by disallowing | |
| ``local-file://`` and ``local_file://`` URL schemes in | |
| ``URLopener().open()`` and ``URLopener().retrieve()`` of | |
| :mod:`urllib.request`. | |
| - bpo-33529: Prevent fold function used in email header encoding from | |
| entering infinite loop when there are too many non-ASCII characters in a | |
| header. | |
| - bpo-33164: Updated blake2 implementation which uses secure memset | |
| implementation provided by platform. | |
| Core and Builtins | |
| ----------------- | |
| - bpo-35814: Allow unpacking in the right hand side of annotated | |
| assignments. In particular, ``t: Tuple[int, ...] = x, y, *z`` is now | |
| allowed. | |
| - bpo-37126: All structseq objects are now tracked by the garbage collector. | |
| Patch by Pablo Galindo. | |
| - bpo-37122: Make the *co_argcount* attribute of code objects represent the | |
| total number of positional arguments (including positional-only | |
| arguments). The value of *co_posonlyargcount* can be used to distinguish | |
| which arguments are positional only, and the difference (*co_argcount* - | |
| *co_posonlyargcount*) is the number of positional-or-keyword arguments. | |
| Patch by Pablo Galindo. | |
| - bpo-20092: Constructors of :class:`int`, :class:`float` and | |
| :class:`complex` will now use the :meth:`~object.__index__` special | |
| method, if available and the corresponding method :meth:`~object.__int__`, | |
| :meth:`~object.__float__` or :meth:`~object.__complex__` is not available. | |
| - bpo-37087: Add native thread ID (TID) support to OpenBSD. | |
| - bpo-26219: Implemented per opcode cache mechanism and ``LOAD_GLOBAL`` | |
| instruction use it. ``LOAD_GLOBAL`` is now about 40% faster. Contributed | |
| by Yury Selivanov, and Inada Naoki. | |
| - bpo-37072: Fix crash in PyAST_FromNodeObject() when flags is NULL. | |
| - bpo-37029: Freeing a great many small objects could take time quadratic in | |
| the number of arenas, due to using linear search to keep ``obmalloc.c``'s | |
| list of usable arenas sorted by order of number of free memory pools. | |
| This is accomplished without search now, leaving the worst-case time | |
| linear in the number of arenas. For programs where this quite visibly | |
| matters (typically with more than 100 thousand small objects alive | |
| simultaneously), this can greatly reduce the time needed to release their | |
| memory. | |
| - bpo-26423: Fix possible overflow in ``wrap_lenfunc()`` when ``sizeof(long) | |
| < sizeof(Py_ssize_t)`` (e.g., 64-bit Windows). | |
| - bpo-37050: Improve the AST for "debug" f-strings, which use '=' to print | |
| out the source of the expression being evaluated. Delete expr_text from | |
| the FormattedValue node, and instead use a Constant string node (possibly | |
| merged with adjacent constant expressions inside the f-string). | |
| - bpo-22385: The `bytes.hex`, `bytearray.hex`, and `memoryview.hex` methods | |
| as well as the `binascii.hexlify` and `b2a_hex` functions now have the | |
| ability to include an optional separator between hex bytes. This | |
| functionality was inspired by MicroPython's hexlify implementation. | |
| - bpo-26836: Add :func:`os.memfd_create`. | |
| - bpo-37032: Added new ``replace()`` method to the code type | |
| (:class:`types.CodeType`). | |
| - bpo-37007: Implement :func:`socket.if_nameindex()`, | |
| :func:`socket.if_nametoindex()`, and :func:`socket.if_indextoname()` on | |
| Windows. | |
| - bpo-36829: :c:func:`PyErr_WriteUnraisable` now creates a traceback object | |
| if there is no current traceback. Moreover, call | |
| :c:func:`PyErr_NormalizeException` and :c:func:`PyException_SetTraceback` | |
| to normalize the exception value. Ignore any error. | |
| - bpo-36878: Only accept text after `# type: ignore` if the first character | |
| is ASCII. This is to disallow things like `# type: ignoreé`. | |
| - bpo-36878: Store text appearing after a `# type: ignore` comment in the | |
| AST. For example a type ignore like `# type: ignore[E1000]` will have the | |
| string `"[E1000]"` stored in its AST node. | |
| - bpo-2180: Treat line continuation at EOF as a ``SyntaxError`` by Anthony | |
| Sottile. | |
| - bpo-36907: Fix a crash when calling a C function with a keyword dict | |
| (``f(**kwargs)``) and changing the dict ``kwargs`` while that function is | |
| running. | |
| - bpo-36946: Fix possible signed integer overflow when handling slices. | |
| - bpo-36826: Add NamedExpression kind support to ast_unparse.c | |
| - bpo-1875: A :exc:`SyntaxError` is now raised if a code blocks that will be | |
| optimized away (e.g. if conditions that are always false) contains syntax | |
| errors. Patch by Pablo Galindo. | |
| - bpo-36027: Allow computation of modular inverses via three-argument | |
| ``pow``: the second argument is now permitted to be negative in the case | |
| where the first and third arguments are relatively prime. | |
| - bpo-36861: Update the Unicode database to version 12.1.0. | |
| - bpo-28866: Avoid caching attributes of classes which type defines mro() to | |
| avoid a hard cache invalidation problem. | |
| - bpo-36851: The ``FrameType`` stack is now correctly cleaned up if the | |
| execution ends with a return and the stack is not empty. | |
| - bpo-34616: The ``compile()`` builtin functions now support the | |
| ``ast.PyCF_ALLOW_TOP_LEVEL_AWAIT`` flag, which allow to compile sources | |
| that contains top-level ``await``, ``async with`` or ``async for``. This | |
| is useful to evaluate async-code from with an already async functions; for | |
| example in a custom REPL. | |
| - bpo-36842: Implement PEP 578, adding sys.audit, io.open_code and related | |
| APIs. | |
| - bpo-27639: Correct return type for UserList slicing operations. Patch by | |
| Michael Blahay, Erick Cervantes, and vaultah | |
| - bpo-36737: Move PyRuntimeState.warnings into per-interpreter state (via | |
| "module state"). | |
| - bpo-36793: Removed ``__str__`` implementations from builtin types | |
| :class:`bool`, :class:`int`, :class:`float`, :class:`complex` and few | |
| classes from the standard library. They now inherit ``__str__()`` from | |
| :class:`object`. | |
| - bpo-36817: Add a ``=`` feature f-strings for debugging. This can precede | |
| ``!s``, ``!r``, or ``!a``. It produces the text of the expression, | |
| followed by an equal sign, followed by the repr of the value of the | |
| expression. So ``f'{3*9+15=}'`` would be equal to the string | |
| ``'3*9+15=42'``. If ``=`` is specified, the default conversion is set to | |
| ``!r``, unless a format spec is given, in which case the formatting | |
| behavior is unchanged, and __format__ will be used. | |
| - bpo-24048: Save the live exception during import.c's ``remove_module()``. | |
| - bpo-27987: pymalloc returns memory blocks aligned by 16 bytes, instead of | |
| 8 bytes, on 64-bit platforms to conform x86-64 ABI. Recent compilers | |
| assume this alignment more often. Patch by Inada Naoki. | |
| - bpo-36601: A long-since-meaningless check for ``getpid() == main_pid`` was | |
| removed from Python's internal C signal handler. | |
| - bpo-36594: Fix incorrect use of ``%p`` in format strings. Patch by Zackery | |
| Spytz. | |
| - bpo-36045: builtins.help() now prefixes `async` for async functions | |
| - bpo-36084: Add native thread ID (TID) to threading.Thread objects | |
| (supported platforms: Windows, FreeBSD, Linux, macOS) | |
| - bpo-36035: Added fix for broken symlinks in combination with pathlib | |
| - bpo-35983: Added new trashcan macros to deal with a double deallocation | |
| that could occur when the `tp_dealloc` of a subclass calls the | |
| `tp_dealloc` of a base class and that base class uses the trashcan | |
| mechanism. Patch by Jeroen Demeyer. | |
| - bpo-20602: Do not clear :data:`sys.flags` and :data:`sys.float_info` | |
| during shutdown. Patch by Zackery Spytz. | |
| - bpo-26826: Expose :func:`copy_file_range` as a low level API in the | |
| :mod:`os` module. | |
| - bpo-32388: Remove cross-version binary compatibility requirement in | |
| tp_flags. | |
| - bpo-31862: Port binascii to PEP 489 multiphase initialization. Patch by | |
| Marcel Plch. | |
| Library | |
| ------- | |
| - bpo-37128: Added :func:`math.perm`. | |
| - bpo-37120: Add SSLContext.num_tickets to control the number of TLSv1.3 | |
| session tickets. | |
| - bpo-12202: Fix the error handling in | |
| :meth:`msilib.SummaryInformation.GetProperty`. Patch by Zackery Spytz. | |
| - bpo-26835: The fcntl module now contains file sealing constants for | |
| sealing of memfds. | |
| - bpo-29262: Add ``get_origin()`` and ``get_args()`` introspection helpers | |
| to ``typing`` module. | |
| - bpo-12639: :meth:`msilib.Directory.start_component()` no longer fails if | |
| *keyfile* is not ``None``. | |
| - bpo-36999: Add the ``asyncio.Task.get_coro()`` method to publicly expose | |
| the tasks's coroutine object. | |
| - bpo-35246: Make :func:`asyncio.create_subprocess_exec` accept path-like | |
| arguments. | |
| - bpo-35279: Change default *max_workers* of ``ThreadPoolExecutor`` from | |
| ``cpu_count() * 5`` to ``min(32, cpu_count() + 4)``. Previous value was | |
| unreasonably large on many cores machines. | |
| - bpo-37076: :func:`_thread.start_new_thread` now logs uncaught exception | |
| raised by the function using :func:`sys.unraisablehook`, rather than | |
| :func:`sys.excepthook`, so the hook gets access to the function which | |
| raised the exception. | |
| - bpo-33725: On macOS, the :mod:`multiprocessing` module now uses *spawn* | |
| start method by default. | |
| - bpo-37054: Fix destructor :class:`_pyio.BytesIO` and | |
| :class:`_pyio.TextIOWrapper`: initialize their ``_buffer`` attribute as | |
| soon as possible (in the class body), because it's used by ``__del__()`` | |
| which calls ``close()``. | |
| - bpo-37058: PEP 544: Add ``Protocol`` and ``@runtime_checkable`` to the | |
| ``typing`` module. | |
| - bpo-36933: The functions ``sys.set_coroutine_wrapper`` and | |
| ``sys.get_coroutine_wrapper`` that were deprecated and marked for removal | |
| in 3.8 have been removed. | |
| - bpo-37047: Handle late binding and attribute access in | |
| :class:`unittest.mock.AsyncMock` setup for autospeccing. Document newly | |
| implemented async methods in :class:`unittest.mock.MagicMock`. | |
| - bpo-37049: PEP 589: Add ``TypedDict`` to the ``typing`` module. | |
| - bpo-37046: PEP 586: Add ``Literal`` to the ``typing`` module. | |
| - bpo-37045: PEP 591: Add ``Final`` qualifier and ``@final`` decorator to | |
| the ``typing`` module. | |
| - bpo-37035: Don't log OSError based exceptions if a fatal error has | |
| occurred in asyncio transport. Peer can generate almost any OSError, user | |
| cannot avoid these exceptions by fixing own code. Errors are still | |
| propagated to user code, it's just logging them is pointless and pollute | |
| asyncio logs. | |
| - bpo-37001: :func:`symtable.symtable` now accepts the same input types for | |
| source code as the built-in :func:`compile` function. Patch by Dino | |
| Viehland. | |
| - bpo-37028: Implement asyncio REPL | |
| - bpo-37027: Return safe to use proxy socket object from | |
| transport.get_extra_info('socket') | |
| - bpo-32528: Make asyncio.CancelledError a BaseException. | |
| This will address the common mistake many asyncio users make: an "except | |
| Exception" clause breaking Tasks cancellation. | |
| In addition to this change, we stop inheriting asyncio.TimeoutError and | |
| asyncio.InvalidStateError from their concurrent.futures.* counterparts. | |
| There's no point for these exceptions to share the inheritance chain. | |
| - bpo-1230540: Add a new :func:`threading.excepthook` function which handles | |
| uncaught :meth:`threading.Thread.run` exception. It can be overridden to | |
| control how uncaught :meth:`threading.Thread.run` exceptions are handled. | |
| - bpo-36996: Handle :func:`unittest.mock.patch` used as a decorator on async | |
| functions. | |
| - bpo-37008: Add support for calling :func:`next` with the mock resulting | |
| from :func:`unittest.mock.mock_open` | |
| - bpo-27737: Allow whitespace only header encoding in ``email.header`` - by | |
| Batuhan Taskaya | |
| - bpo-36969: PDB command `args` now display positional only arguments. | |
| Patch contributed by Rémi Lapeyre. | |
| - bpo-36969: PDB command `args` now display keyword only arguments. Patch | |
| contributed by Rémi Lapeyre. | |
| - bpo-36983: Add missing names to ``typing.__all__``: ``ChainMap``, | |
| ``ForwardRef``, ``OrderedDict`` - by Anthony Sottile. | |
| - bpo-36972: Add SupportsIndex protocol to the typing module to allow type | |
| checking to detect classes that can be passed to `hex()`, `oct()` and | |
| `bin()`. | |
| - bpo-32972: Implement ``unittest.IsolatedAsyncioTestCase`` to help testing | |
| asyncio-based code. | |
| - bpo-36952: :func:`fileinput.input` and :class:`fileinput.FileInput` | |
| **bufsize** argument has been removed (was deprecated and ignored since | |
| Python 3.6), and as a result the **mode** and **openhook** arguments have | |
| been made keyword-only. | |
| - bpo-36952: Starting with Python 3.3, importing ABCs from | |
| :mod:`collections` is deprecated, and import should be done from | |
| :mod:`collections.abc`. Still being able to import from :mod:`collections` | |
| was marked for removal in 3.8, but has been delayed to 3.9; documentation | |
| and ``DeprecationWarning`` clarified. | |
| - bpo-36949: Implement __repr__ for WeakSet objects. | |
| - bpo-36948: Fix :exc:`NameError` in | |
| :meth:`urllib.request.URLopener.retrieve`. Patch by Karthikeyan | |
| Singaravelan. | |
| - bpo-33524: Fix the folding of email header when the max_line_length is 0 | |
| or None and the header contains non-ascii characters. Contributed by | |
| Licht Takeuchi (@Licht-T). | |
| - bpo-24564: :func:`shutil.copystat` now ignores :const:`errno.EINVAL` on | |
| :func:`os.setxattr` which may occur when copying files on filesystems | |
| without extended attributes support. | |
| Original patch by Giampaolo Rodola, updated by Ying Wang. | |
| - bpo-36888: Python child processes can now access the status of their | |
| parent process using multiprocessing.process.parent_process | |
| - bpo-36921: Deprecate ``@coroutine`` for sake of ``async def``. | |
| - bpo-25652: Fix bug in ``__rmod__`` of ``UserString`` - by Batuhan Taskaya. | |
| - bpo-36916: Remove a message about an unhandled exception in a task when | |
| writer.write() is used without await and writer.drain() fails with an | |
| exception. | |
| - bpo-36889: Introduce :class:`asyncio.Stream` class that merges | |
| :class:`asyncio.StreamReader` and :class:`asyncio.StreamWriter` | |
| functionality. :class:`asyncio.Stream` can work in readonly, writeonly and | |
| readwrite modes. Provide :func:`asyncio.connect`, | |
| :func:`asyncio.connect_unix`, :func:`asyncio.connect_read_pipe` and | |
| :func:`asyncio.connect_write_pipe` factories to open | |
| :class:`asyncio.Stream` connections. Provide :class:`asyncio.StreamServer` | |
| and :class:`UnixStreamServer` to serve servers with asyncio.Stream API. | |
| Modify :func:`asyncio.create_subprocess_shell` and | |
| :func:`asyncio.create_subprocess_exec` to use :class:`asyncio.Stream` | |
| instead of deprecated :class:`StreamReader` and :class:`StreamWriter`. | |
| Deprecate :class:`asyncio.StreamReader` and :class:`asyncio.StreamWriter`. | |
| Deprecate usage of private classes, e.g. | |
| :class:`asyncio.FlowControlMixing` and | |
| :class:`asyncio.StreamReaderProtocol` outside of asyncio package. | |
| - bpo-36845: Added validation of integer prefixes to the construction of IP | |
| networks and interfaces in the ipaddress module. | |
| - bpo-23378: Add an extend action to argparser. | |
| - bpo-36867: Fix a bug making a SharedMemoryManager instance and its parent | |
| process use two separate resource_tracker processes. | |
| - bpo-23896: Adds a grammar to lib2to3.pygram that contains exec as a | |
| function not as statement. | |
| - bpo-36895: The function ``time.clock()`` was deprecated in 3.3 in favor of | |
| ``time.perf_counter()`` and marked for removal in 3.8, it has removed. | |
| - bpo-35545: Fix asyncio discarding IPv6 scopes when ensuring hostname | |
| resolutions internally | |
| - bpo-36887: Add new function :func:`math.isqrt` to compute integer square | |
| roots. | |
| - bpo-34632: Introduce the ``importlib.metadata`` module with (provisional) | |
| support for reading metadata from third-party packages. | |
| - bpo-36878: When using `type_comments=True` in `ast.parse`, treat `# type: | |
| ignore` followed by a non-alphanumeric character and then arbitrary text | |
| as a type ignore, instead of requiring nothing but whitespace or another | |
| comment. This is to permit formations such as `# type: ignore[E1000]`. | |
| - bpo-36778: ``cp65001`` encoding (Windows code page 65001) becomes an alias | |
| to ``utf_8`` encoding. | |
| - bpo-36867: The multiprocessing.resource_tracker replaces the | |
| multiprocessing.semaphore_tracker module. Other than semaphores, | |
| resource_tracker also tracks shared_memory segments. | |
| - bpo-30262: The ``Cache`` and ``Statement`` objects of the :mod:`sqlite3` | |
| module are not exposed to the user. Patch by Aviv Palivoda. | |
| - bpo-24538: In `shutil.copystat()`, first copy extended file attributes and | |
| then file permissions, since extended attributes can only be set on the | |
| destination while it is still writeable. | |
| - bpo-36829: Add new :func:`sys.unraisablehook` function which can be | |
| overridden to control how "unraisable exceptions" are handled. It is | |
| called when an exception has occurred but there is no way for Python to | |
| handle it. For example, when a destructor raises an exception or during | |
| garbage collection (:func:`gc.collect`). | |
| - bpo-36832: Introducing ``zipfile.Path``, a pathlib-compatible wrapper for | |
| traversing zip files. | |
| - bpo-36814: Fix an issue where os.posix_spawnp() would incorrectly raise a | |
| TypeError when file_actions is None. | |
| - bpo-33110: Handle exceptions raised by functions added by | |
| concurrent.futures add_done_callback correctly when the Future has already | |
| completed. | |
| - bpo-26903: Limit `max_workers` in `ProcessPoolExecutor` to 61 to work | |
| around a WaitForMultipleObjects limitation. | |
| - bpo-36813: Fix :class:`~logging.handlers.QueueListener` to call | |
| ``queue.task_done()`` upon stopping. Patch by Bar Harel. | |
| - bpo-36806: Forbid creation of asyncio stream objects like StreamReader, | |
| StreamWriter, Process, and their protocols outside of asyncio package. | |
| - bpo-36802: Provide both sync and async calls for StreamWriter.write() and | |
| StreamWriter.close() | |
| - bpo-36801: Properly handle SSL connection closing in asyncio | |
| StreamWriter.drain() call. | |
| - bpo-36785: Implement PEP 574 (pickle protocol 5 with out-of-band buffers). | |
| - bpo-36772: functools.lru_cache() can now be used as a straight decorator | |
| in addition to its existing usage as a function that returns a decorator. | |
| - bpo-6584: Add a :exc:`~gzip.BadGzipFile` exception to the :mod:`gzip` | |
| module. | |
| - bpo-36748: Optimized write buffering in C implementation of | |
| ``TextIOWrapper``. Writing ASCII string to ``TextIOWrapper`` with ascii, | |
| latin1, or utf-8 encoding is about 20% faster. Patch by Inada Naoki. | |
| - bpo-8138: Don't mark ``wsgiref.simple_server.SimpleServer`` as | |
| multi-threaded since ``wsgiref.simple_server.WSGIServer`` is | |
| single-threaded. | |
| - bpo-22640: :func:`py_compile.compile` now supports silent mode. Patch by | |
| Joannah Nanjekye | |
| - bpo-29183: Fix double exceptions in :class:`wsgiref.handlers.BaseHandler` | |
| by calling its :meth:`~wsgiref.handlers.BaseHandler.close` method only | |
| when no exception is raised. | |
| - bpo-36548: Improved the repr of regular expression flags. | |
| - bpo-36542: The signature of Python functions can now be overridden by | |
| specifying the ``__text_signature__`` attribute. | |
| - bpo-36533: Reinitialize logging.Handler locks in forked child processes | |
| instead of attempting to acquire them all in the parent before forking | |
| only to be released in the child process. The acquire/release pattern was | |
| leading to deadlocks in code that has implemented any form of chained | |
| logging handlers that depend upon one another as the lock acquisition | |
| order cannot be guaranteed. | |
| - bpo-35252: Throw a TypeError instead of an AssertionError when using an | |
| invalid type annotation with singledispatch. | |
| - bpo-35900: Allow reduction methods to return a 6-item tuple where the 6th | |
| item specifies a custom state-setting method that's called instead of the | |
| regular ``__setstate__`` method. | |
| - bpo-35900: enable custom reduction callback registration for functions and | |
| classes in _pickle.c, using the new Pickler's attribute | |
| ``reducer_override`` | |
| - bpo-36368: Fix a bug crashing SharedMemoryManager instances in interactive | |
| sessions after a ctrl-c (KeyboardInterrupt) was sent | |
| - bpo-31904: Fix mmap fail for VxWorks | |
| - bpo-27497: :meth:`csv.DictWriter.writeheader` now returns the return value | |
| of the underlying :meth:`csv.Writer.writerow` method. Patch contributed by | |
| Ashish Nitin Patil. | |
| - bpo-36239: Parsing .mo files now ignores comments starting and ending with | |
| #-#-#-#-#. | |
| - bpo-26707: Enable plistlib to read and write binary plist files that were | |
| created as a KeyedArchive file. Specifically, this allows the plistlib to | |
| process 0x80 tokens as UID objects. | |
| - bpo-31904: Add posix module support for VxWorks. | |
| - bpo-35125: Asyncio: Remove inner callback on outer cancellation in shield | |
| - bpo-35721: Fix :meth:`asyncio.SelectorEventLoop.subprocess_exec()` leaks | |
| file descriptors if ``Popen`` fails and called with | |
| ``stdin=subprocess.PIPE``. Patch by Niklas Fiekas. | |
| - bpo-31855: :func:`unittest.mock.mock_open` results now respects the | |
| argument of read([size]). Patch contributed by Rémi Lapeyre. | |
| - bpo-35431: Implement :func:`math.comb` that returns binomial coefficient, | |
| that computes the number of ways to choose k items from n items without | |
| repetition and without order. Patch by Yash Aggarwal and Keller Fuchs. | |
| - bpo-26660: Fixed permission errors in | |
| :class:`~tempfile.TemporaryDirectory` clean up. Previously | |
| ``TemporaryDirectory.cleanup()`` failed when non-writeable or | |
| non-searchable files or directories were created inside a temporary | |
| directory. | |
| - bpo-34271: Add debugging helpers to ssl module. It's now possible to dump | |
| key material and to trace TLS protocol. The default and stdlib contexts | |
| also support SSLKEYLOGFILE env var. | |
| - bpo-26467: Added AsyncMock to support using unittest to mock asyncio | |
| coroutines. Patch by Lisa Roach. | |
| - bpo-33569: dataclasses.InitVar: Exposes the type used to create the init | |
| var. | |
| - bpo-34424: Fix serialization of messages containing encoded strings when | |
| the policy.linesep is set to a multi-character string. Patch by Jens | |
| Troeger. | |
| - bpo-34303: Performance of :func:`functools.reduce` is slightly improved. | |
| Patch by Sergey Fedoseev. | |
| - bpo-33361: Fix a bug in :class:`codecs.StreamRecoder` where seeking might | |
| leave old data in a buffer and break subsequent read calls. Patch by Ammar | |
| Askar. | |
| - bpo-22454: The :mod:`shlex` module now exposes :func:`shlex.join`, the | |
| inverse of :func:`shlex.split`. Patch by Bo Bayles. | |
| - bpo-31922: :meth:`asyncio.AbstractEventLoop.create_datagram_endpoint`: Do | |
| not connect UDP socket when broadcast is allowed. This allows to receive | |
| replies after a UDP broadcast. | |
| - bpo-24882: Change ThreadPoolExecutor to use existing idle threads before | |
| spinning up new ones. | |
| - bpo-31961: Added support for bytes and path-like objects in | |
| :func:`subprocess.Popen` on Windows. The *args* parameter now accepts a | |
| :term:`path-like object` if *shell* is ``False`` and a sequence containing | |
| bytes and path-like objects. The *executable* parameter now accepts a | |
| bytes and :term:`path-like object`. The *cwd* parameter now accepts a | |
| bytes object. Based on patch by Anders Lorentsen. | |
| - bpo-33123: :class:`pathlib.Path.unlink` now accepts a *missing_ok* | |
| parameter to avoid a :exc:`FileNotFoundError` from being raised. Patch by | |
| Robert Buchholz. | |
| - bpo-32941: Allow :class:`mmap.mmap` objects to access the madvise() system | |
| call (through :meth:`mmap.mmap.madvise`). | |
| - bpo-22102: Added support for ZIP files with disks set to 0. Such files are | |
| commonly created by builtin tools on Windows when use ZIP64 extension. | |
| Patch by Francisco Facioni. | |
| - bpo-32515: trace.py can now run modules via python3 -m trace -t --module | |
| module_name | |
| - bpo-32299: Changed :func:`unittest.mock.patch.dict` to return the patched | |
| dictionary when used as context manager. Patch by Vadim Tsander. | |
| - bpo-27141: Added a ``__copy__()`` to ``collections.UserList`` and | |
| ``collections.UserDict`` in order to correctly implement shallow copying | |
| of the objects. Patch by Bar Harel. | |
| - bpo-31829: ``\r``, ``\0`` and ``\x1a`` (end-of-file on Windows) are now | |
| escaped in protocol 0 pickles of Unicode strings. This allows to load them | |
| without loss from files open in text mode in Python 2. | |
| - bpo-23395: ``_thread.interrupt_main()`` now avoids setting the Python | |
| error status if the ``SIGINT`` signal is ignored or not handled by Python. | |
| Documentation | |
| ------------- | |
| - bpo-36896: Clarify that some types have unstable constructor signature | |
| between Python versions. | |
| - bpo-36686: Improve documentation of the stdin, stdout, and stderr | |
| arguments of the ``asyncio.subprocess_exec`` function to specify which | |
| values are supported. Also mention that decoding as text is not supported. | |
| Add a few tests to verify that the various values passed to the std* | |
| arguments actually work. | |
| - bpo-36984: Improve version added references in ``typing`` module - by | |
| Anthony Sottile. | |
| - bpo-36868: What's new now mentions SSLContext.hostname_checks_common_name | |
| instead of SSLContext.host_flags. | |
| - bpo-35924: Add a note to the ``curses.addstr()`` documentation to warn | |
| that multiline strings can cause segfaults because of an ncurses bug. | |
| - bpo-36783: Added C API Documentation for Time_FromTimeAndFold and | |
| PyDateTime_FromDateAndTimeAndFold as per PEP 495. Patch by Edison | |
| Abahurire. | |
| - bpo-36797: More of the legacy distutils documentation has been either | |
| pruned, or else more clearly marked as being retained solely until the | |
| setuptools documentation covers it independently. | |
| - bpo-22865: Add detail to the documentation on the `pty.spawn` function. | |
| - bpo-35397: Remove deprecation and document urllib.parse.unwrap(). Patch | |
| contributed by Rémi Lapeyre. | |
| - bpo-32995: Added the context variable in glossary. | |
| - bpo-33519: Clarify that `copy()` is not part of the `MutableSequence` ABC. | |
| - bpo-33482: Make `codecs.StreamRecoder.writelines` take a list of bytes. | |
| - bpo-25735: Added documentation for func factorial to indicate that returns | |
| integer values | |
| - bpo-20285: Expand object.__doc__ (docstring) to make it clearer. Modify | |
| pydoc.py so that help(object) lists object methods (for other classes, | |
| help omits methods of the object base class.) | |
| Tests | |
| ----- | |
| - bpo-37069: Modify test_coroutines, test_cprofile, test_generators, | |
| test_raise, test_ssl and test_yield_from to use | |
| :func:`test.support.catch_unraisable_exception` rather than | |
| :func:`test.support.captured_stderr`. | |
| - bpo-37098: Fix test_memfd_create on older Linux Kernels. | |
| - bpo-37081: Test with OpenSSL 1.1.1c | |
| - bpo-36829: Add :func:`test.support.catch_unraisable_exception`: context | |
| manager catching unraisable exception using :func:`sys.unraisablehook`. | |
| - bpo-36915: The main regrtest process now always removes all temporary | |
| directories of worker processes even if they crash or if they are killed | |
| on KeyboardInterrupt (CTRL+c). | |
| - bpo-36719: "python3 -m test -jN ..." now continues the execution of next | |
| tests when a worker process crash (CHILD_ERROR state). Previously, the | |
| test suite stopped immediately. Use --failfast to stop at the first error. | |
| - bpo-36816: Update Lib/test/selfsigned_pythontestdotnet.pem to match | |
| self-signed.pythontest.net's new TLS certificate. | |
| - bpo-35925: Skip httplib and nntplib networking tests when they would | |
| otherwise fail due to a modern OS or distro with a default OpenSSL policy | |
| of rejecting connections to servers with weak certificates. | |
| - bpo-36782: Add tests for several C API functions in the :mod:`datetime` | |
| module. Patch by Edison Abahurire. | |
| - bpo-36342: Fix test_multiprocessing in test_venv if platform lacks | |
| functioning sem_open. | |
| Build | |
| ----- | |
| - bpo-36721: To embed Python into an application, a new ``--embed`` option | |
| must be passed to ``python3-config --libs --embed`` to get ``-lpython3.8`` | |
| (link the application to libpython). To support both 3.8 and older, try | |
| ``python3-config --libs --embed`` first and fallback to ``python3-config | |
| --libs`` (without ``--embed``) if the previous command fails. | |
| Add a pkg-config ``python-3.8-embed`` module to embed Python into an | |
| application: ``pkg-config python-3.8-embed --libs`` includes | |
| ``-lpython3.8``. To support both 3.8 and older, try ``pkg-config | |
| python-X.Y-embed --libs`` first and fallback to ``pkg-config python-X.Y | |
| --libs`` (without ``--embed``) if the previous command fails (replace | |
| ``X.Y`` with the Python version). | |
| On the other hand, ``pkg-config python3.8 --libs`` no longer contains | |
| ``-lpython3.8``. C extensions must not be linked to libpython (except on | |
| Android, case handled by the script); this change is backward incompatible | |
| on purpose. | |
| - bpo-36786: "make install" now runs compileall in parallel. | |
| Windows | |
| ------- | |
| - bpo-36965: include of STATUS_CONTROL_C_EXIT without depending on MSC | |
| compiler | |
| - bpo-35926: Update to OpenSSL 1.1.1b for Windows. | |
| - bpo-29883: Add Windows support for UDP transports for the Proactor Event | |
| Loop. Patch by Adam Meily. | |
| - bpo-33407: The :c:macro:`Py_DEPRECATED()` macro has been implemented for | |
| MSVC. | |
| macOS | |
| ----- | |
| - bpo-36231: Support building Python on macOS without /usr/include | |
| installed. As of macOS 10.14, system header files are only available | |
| within an SDK provided by either the Command Line Tools or the Xcode app. | |
| IDLE | |
| ---- | |
| - bpo-35610: Replace now redundant .context_use_ps1 with .prompt_last_line. | |
| This finishes change started in bpo-31858. | |
| - bpo-37038: Make idlelib.run runnable; add test clause. | |
| - bpo-36958: Print any argument other than None or int passed to SystemExit | |
| or sys.exit(). | |
| - bpo-36807: When saving a file, call os.fsync() so bits are flushed to e.g. | |
| USB drive. | |
| - bpo-32411: In browser.py, remove extraneous sorting by line number since | |
| dictionary was created in line number order. | |
| Tools/Demos | |
| ----------- | |
| - bpo-37053: Handle strings like u"bar" correctly in | |
| Tools/parser/unparse.py. Patch by Chih-Hsuan Yen. | |
| C API | |
| ----- | |
| - bpo-36763: Implement the :pep:`587` "Python Initialization Configuration". | |
| - bpo-36379: Fix crashes when attempting to use the *modulo* parameter when | |
| ``__ipow__`` is implemented in C. | |
| - bpo-37107: Update :c:func:`PyObject_CallMethodObjArgs` and | |
| ``_PyObject_CallMethodIdObjArgs`` to use ``_PyObject_GetMethod`` to avoid | |
| creating a bound method object in many cases. Patch by Michael J. | |
| Sullivan. | |
| - bpo-36974: Implement :pep:`590`: Vectorcall: a fast calling protocol for | |
| CPython. This is a new protocol to optimize calls of custom callable | |
| objects. | |
| - bpo-36763: ``Py_Main()`` now returns the exitcode rather than calling | |
| ``Py_Exit(exitcode)`` when calling ``PyErr_Print()`` if the current | |
| exception type is ``SystemExit``. | |
| - bpo-36922: Add new type flag ``Py_TPFLAGS_METHOD_DESCRIPTOR`` for objects | |
| behaving like unbound methods. These are objects supporting the | |
| optimization given by the ``LOAD_METHOD``/``CALL_METHOD`` opcodes. See PEP | |
| 590. | |
| - bpo-36728: The :c:func:`PyEval_ReInitThreads` function has been removed | |
| from the C API. It should not be called explicitly: use | |
| :c:func:`PyOS_AfterFork_Child` instead. | |
| What's New in Python 3.8.0 alpha 4? | |
| =================================== | |
| *Release date: 2019-05-06* | |
| Security | |
| -------- | |
| - bpo-36742: Fixes mishandling of pre-normalization characters in | |
| urlsplit(). | |
| - bpo-30458: Address CVE-2019-9740 by disallowing URL paths with embedded | |
| whitespace or control characters through into the underlying http client | |
| request. Such potentially malicious header injection URLs now cause an | |
| http.client.InvalidURL exception to be raised. | |
| - bpo-35755: :func:`shutil.which` now uses ``os.confstr("CS_PATH")`` if | |
| available and if the :envvar:`PATH` environment variable is not set. | |
| Remove also the current directory from :data:`posixpath.defpath`. On Unix, | |
| :func:`shutil.which` and the :mod:`subprocess` module no longer search the | |
| executable in the current directory if the :envvar:`PATH` environment | |
| variable is not set. | |
| Core and Builtins | |
| ----------------- | |
| - bpo-36722: In debug build, import now also looks for C extensions compiled | |
| in release mode and for C extensions compiled in the stable ABI. | |
| - bpo-32849: Fix Python Initialization code on FreeBSD to detect properly | |
| when stdin file descriptor (fd 0) is invalid. | |
| - bpo-36623: Remove parser headers and related function declarations that | |
| lack implementations after the removal of pgen. | |
| - bpo-20180: ``dict.pop()`` is now up to 33% faster thanks to Argument | |
| Clinic. Patch by Inada Naoki. | |
| - bpo-36611: Debug memory allocators: disable serialno field by default from | |
| debug hooks on Python memory allocators to reduce the memory footprint by | |
| 5%. Enable :mod:`tracemalloc` to get the traceback where a memory block | |
| has been allocated when a fatal memory error is logged to decide where to | |
| put a breakpoint. Compile Python with ``PYMEM_DEBUG_SERIALNO`` defined to | |
| get back the field. | |
| - bpo-36588: On AIX, :attr:`sys.platform` doesn't contain the major version | |
| anymore. Always return ``'aix'``, instead of ``'aix3'`` .. ``'aix7'``. | |
| Since older Python versions include the version number, it is recommended | |
| to always use ``sys.platform.startswith('aix')``. Contributed by M. Felt. | |
| - bpo-36549: Change str.capitalize to use titlecase for the first character | |
| instead of uppercase. | |
| - bpo-36540: Implement :pep:`570` (Python positional-only parameters). Patch | |
| by Pablo Galindo. | |
| - bpo-36475: :c:func:`PyEval_AcquireLock` and :c:func:`PyEval_AcquireThread` | |
| now terminate the current thread if called while the interpreter is | |
| finalizing, making them consistent with :c:func:`PyEval_RestoreThread`, | |
| :c:func:`Py_END_ALLOW_THREADS`, and :c:func:`PyGILState_Ensure`. | |
| - bpo-36504: Fix signed integer overflow in _ctypes.c's | |
| ``PyCArrayType_new()``. | |
| - bpo-20844: Fix running script with encoding cookie and LF line ending may | |
| fail on Windows. | |
| - bpo-24214: Fixed support of the surrogatepass error handler in the UTF-8 | |
| incremental decoder. | |
| - bpo-36452: Changing ``dict`` keys during iteration of the dict itself, | |
| ``keys()``, ``values()``, or ``items()`` will now be detected in certain | |
| corner cases where keys are deleted/added so that the number of keys isn't | |
| changed. A `RuntimeError` will be raised after ``len(dict)`` iterations. | |
| Contributed by Thomas Perl. | |
| - bpo-36459: Fix a possible double ``PyMem_FREE()`` due to tokenizer.c's | |
| ``tok_nextc()``. | |
| - bpo-36433: Fixed TypeError message in classmethoddescr_call. | |
| - bpo-36430: Fix a possible reference leak in :func:`itertools.count`. | |
| - bpo-36440: Include node names in ``ParserError`` messages, instead of | |
| numeric IDs. Patch by A. Skrobov. | |
| - bpo-36143: Regenerate :mod:`keyword` from the Grammar and Tokens file | |
| using pgen. Patch by Pablo Galindo. | |
| - bpo-18372: Add missing :c:func:`PyObject_GC_Track` calls in the | |
| :mod:`pickle` module. Patch by Zackery Spytz. | |
| Library | |
| ------- | |
| - bpo-35952: Fix pythoninfo when the compiler is missing. | |
| - bpo-28238: The ``.find*()`` methods of xml.etree.ElementTree can now | |
| search for wildcards like ``{*}tag`` and ``{ns}*`` that match a tag in any | |
| namespace or all tags in a namespace. Patch by Stefan Behnel. | |
| - bpo-26978: `pathlib.path.link_to()` is now implemented. It creates a hard | |
| link pointing to a path. | |
| - bpo-1613500: :class:`fileinput.FileInput` now uses the input file mode to | |
| correctly set the output file mode (previously it was hardcoded to | |
| ``'w'``) when ``inplace=True`` is passed to its constructor. | |
| - bpo-36734: Fix compilation of ``faulthandler.c`` on HP-UX. Initialize | |
| ``stack_t current_stack`` to zero using ``memset()``. | |
| - bpo-13611: The xml.etree.ElementTree packages gained support for C14N 2.0 | |
| serialisation. Patch by Stefan Behnel. | |
| - bpo-36669: Add missing matrix multiplication operator support to | |
| weakref.proxy. | |
| - bpo-36676: The XMLParser() in xml.etree.ElementTree provides namespace | |
| prefix context to the parser target if it defines the callback methods | |
| "start_ns()" and/or "end_ns()". Patch by Stefan Behnel. | |
| - bpo-36673: The TreeBuilder and XMLPullParser in xml.etree.ElementTree | |
| gained support for parsing comments and processing instructions. Patch by | |
| Stefan Behnel. | |
| - bpo-36650: The C version of functools.lru_cache() was treating calls with | |
| an empty ``**kwargs`` dictionary as being distinct from calls with no | |
| keywords at all. This did not result in an incorrect answer, but it did | |
| trigger an unexpected cache miss. | |
| - bpo-28552: Fix :mod:`distutils.sysconfig` if :data:`sys.executable` is | |
| ``None`` or an empty string: use :func:`os.getcwd` to initialize | |
| ``project_base``. Fix also the distutils build command: don't use | |
| :data:`sys.executable` if it is ``None`` or an empty string. | |
| - bpo-35755: :func:`shutil.which` and | |
| :func:`distutils.spawn.find_executable` now use ``os.confstr("CS_PATH")`` | |
| if available instead of :data:`os.defpath`, if the ``PATH`` environment | |
| variable is not set. Moreover, don't use ``os.confstr("CS_PATH")`` nor | |
| :data:`os.defpath` if the ``PATH`` environment variable is set to an empty | |
| string. | |
| - bpo-25430: improve performance of ``IPNetwork.__contains__()`` | |
| - bpo-30485: Path expressions in xml.etree.ElementTree can now avoid | |
| explicit namespace prefixes for tags (or the "{namespace}tag" notation) by | |
| passing a default namespace with an empty string prefix. | |
| - bpo-36613: Fix :mod:`asyncio` wait() not removing callback if exception | |
| - bpo-36598: Fix ``isinstance`` check for Mock objects with spec when the | |
| code is executed under tracing. Patch by Karthikeyan Singaravelan. | |
| - bpo-18748: In development mode (:option:`-X` ``dev``) and in debug build, | |
| the :class:`io.IOBase` destructor now logs ``close()`` exceptions. These | |
| exceptions are silent by default in release mode. | |
| - bpo-36575: The ``_lsprof`` module now uses internal timer same to | |
| ``time.perf_counter()`` by default. ``gettimeofday(2)`` was used on Unix. | |
| New timer has better resolution on most Unix platforms and timings are no | |
| longer impacted by system clock updates since ``perf_counter()`` is | |
| monotonic. Patch by Inada Naoki. | |
| - bpo-33461: ``json.loads`` now emits ``DeprecationWarning`` when | |
| ``encoding`` option is specified. Patch by Matthias Bussonnier. | |
| - bpo-36559: The random module now prefers the lean internal _sha512 module | |
| over hashlib for seed(version=2) to optimize import time. | |
| - bpo-17561: Set backlog=None as the default for socket.create_server. | |
| - bpo-34373: Fix :func:`time.mktime` error handling on AIX for year before | |
| 1970. | |
| - bpo-36232: Improve error message when trying to open existing DBM database | |
| that actually doesn't exist. Patch by Marco Rougeth. | |
| - bpo-36546: Add statistics.quantiles() | |
| - bpo-36050: Optimized ``http.client.HTTPResponse.read()`` for large | |
| response. Patch by Inada Naoki. | |
| - bpo-36522: If *debuglevel* is set to >0 in :mod:`http.client`, print all | |
| values for headers with multiple values for the same header name. Patch by | |
| Matt Houglum. | |
| - bpo-36492: Deprecated passing required arguments like *func* as keyword | |
| arguments in functions which should accept arbitrary keyword arguments and | |
| pass them to other function. Arbitrary keyword arguments (even with names | |
| "self" and "func") can now be passed to these functions if the required | |
| arguments are passed as positional arguments. | |
| - bpo-27181: Add statistics.geometric_mean(). | |
| - bpo-30427: ``os.path.normcase()`` relies on ``os.fspath()`` to check the | |
| type of its argument. Redundant checks have been removed from its | |
| ``posixpath.normcase()`` and ``ntpath.normcase()`` implementations. Patch | |
| by Wolfgang Maier. | |
| - bpo-36385: Stop rejecting IPv4 octets for being ambiguously octal. Leading | |
| zeros are ignored, and no longer are assumed to specify octal octets. | |
| Octets are always decimal numbers. Octets must still be no more than three | |
| digits, including leading zeroes. | |
| - bpo-36434: Errors during writing to a ZIP file no longer prevent to | |
| properly close it. | |
| - bpo-36407: Fixed wrong indentation writing for CDATA section in | |
| xml.dom.minidom. Patch by Vladimir Surjaninov. | |
| - bpo-36326: inspect.getdoc() can now find docstrings for member objects | |
| when __slots__ is a dictionary. | |
| - bpo-36366: Calling ``stop()`` on an unstarted or stopped | |
| :func:`unittest.mock.patch` object will now return `None` instead of | |
| raising :exc:`RuntimeError`, making the method idempotent. Patch by | |
| Karthikeyan Singaravelan. | |
| - bpo-36348: The :meth:`imap.IMAP4.logout` method no longer ignores silently | |
| arbitrary exceptions. | |
| - bpo-31904: Add time module support and fix test_time faiures for VxWorks. | |
| - bpo-36227: Added support for keyword arguments `default_namespace` and | |
| `xml_declaration` in functions ElementTree.tostring() and | |
| ElementTree.tostringlist(). | |
| - bpo-36004: Added new alternate constructors | |
| :meth:`datetime.date.fromisocalendar` and | |
| :meth:`datetime.datetime.fromisocalendar`, which construct date objects | |
| from ISO year, week number and weekday; these are the inverse of each | |
| class's ``isocalendar`` method. Patch by Paul Ganssle. | |
| - bpo-35936: :mod:`modulefinder` no longer depends on the deprecated | |
| :mod:`imp` module, and the initializer for | |
| :class:`modulefinder.ModuleFinder` now has immutable default arguments. | |
| Patch by Brandt Bucher. | |
| - bpo-35376: :mod:`modulefinder` correctly handles modules that have the | |
| same name as a bad package. Patch by Brandt Bucher. | |
| - bpo-17396: :mod:`modulefinder` no longer crashes when encountering syntax | |
| errors in followed imports. Patch by Brandt Bucher. | |
| - bpo-35934: Added :meth:`~socket.create_server()` and | |
| :meth:`~socket.has_dualstack_ipv6()` convenience functions to automate the | |
| necessary tasks usually involved when creating a server socket, including | |
| accepting both IPv4 and IPv6 connections on the same socket. (Contributed | |
| by Giampaolo Rodola in :issue:`17561`.) | |
| - bpo-23078: Add support for :func:`classmethod` and :func:`staticmethod` to | |
| :func:`unittest.mock.create_autospec`. Initial patch by Felipe Ochoa. | |
| - bpo-35416: Fix potential resource warnings in distutils. Patch by Mickaël | |
| Schoentgen. | |
| - bpo-25451: Add transparency methods to :class:`tkinter.PhotoImage`. Patch | |
| by Zackery Spytz. | |
| - bpo-35082: Don't return deleted attributes when calling dir on a | |
| :class:`unittest.mock.Mock`. | |
| - bpo-34547: :class:`wsgiref.handlers.BaseHandler` now handles abrupt client | |
| connection terminations gracefully. Patch by Petter Strandmark. | |
| - bpo-31658: :func:`xml.sax.parse` now supports :term:`path-like <path-like | |
| object>`. Patch by Mickaël Schoentgen. | |
| - bpo-34139: Remove stale unix datagram socket before binding | |
| - bpo-33530: Implemented Happy Eyeballs in `asyncio.create_connection()`. | |
| Added two new arguments, *happy_eyeballs_delay* and *interleave*, to | |
| specify Happy Eyeballs behavior. | |
| - bpo-33291: Do not raise AttributeError when calling the inspect functions | |
| isgeneratorfunction, iscoroutinefunction, isasyncgenfunction on a method | |
| created from an arbitrary callable. Instead, return False. | |
| - bpo-31310: Fix the multiprocessing.semaphore_tracker so it is reused by | |
| child processes | |
| - bpo-31292: Fix ``setup.py check --restructuredtext`` for files containing | |
| ``include`` directives. | |
| Documentation | |
| ------------- | |
| - bpo-36625: Remove obsolete comments from docstrings in fractions.Fraction | |
| - bpo-30840: Document relative imports | |
| - bpo-36523: Add docstring for io.IOBase.writelines(). | |
| - bpo-36425: New documentation translation: `Simplified Chinese | |
| <https://docs.python.org/zh-cn/>`_. | |
| - bpo-36345: Avoid the duplication of code from ``Tools/scripts/serve.py`` | |
| in using the :rst:dir:`literalinclude` directive for the basic | |
| wsgiref-based web server in the documentation of :mod:`wsgiref`. | |
| Contributed by Stéphane Wirtel. | |
| - bpo-36345: Using the code of the ``Tools/scripts/serve.py`` script as an | |
| example in the :mod:`wsgiref` documentation. Contributed by Stéphane | |
| Wirtel. | |
| - bpo-36157: Added Documention for PyInterpreterState_Main(). | |
| - bpo-33043: Updates the docs.python.org page with the addition of a | |
| 'Contributing to Docs' link at the end of the page (between 'Reporting | |
| Bugs' and 'About Documentation'). Updates the 'Found a Bug' page with | |
| additional links and information in the Documentation Bugs section. | |
| - bpo-35581: @typing.type_check_only now allows type stubs to mark functions | |
| and classes not available during runtime. | |
| - bpo-33832: Add glossary entry for 'magic method'. | |
| - bpo-32913: Added re.Match.groupdict example to regex HOWTO. | |
| Tests | |
| ----- | |
| - bpo-36719: regrtest now always detects uncollectable objects. Previously, | |
| the check was only enabled by ``--findleaks``. The check now also works | |
| with ``-jN/--multiprocess N``. ``--findleaks`` becomes a deprecated alias | |
| to ``--fail-env-changed``. | |
| - bpo-36725: When using multiprocessing mode (-jN), regrtest now better | |
| reports errors if a worker process fails, and it exits immediately on a | |
| worker thread failure or when interrupted. | |
| - bpo-36454: Change test_time.test_monotonic() to test only the lower bound | |
| of elapsed time after a sleep command rather than the upper bound. This | |
| prevents unnecessary test failures on slow buildbots. Patch by Victor | |
| Stinner. | |
| - bpo-32424: Improve test coverage for xml.etree.ElementTree. Patch by | |
| Gordon P. Hemsley. | |
| - bpo-32424: Fix typo in test_cyclic_gc() test for xml.etree.ElementTree. | |
| Patch by Gordon P. Hemsley. | |
| - bpo-36635: Add a new :mod:`_testinternalcapi` module to test the internal | |
| C API. | |
| - bpo-36629: Fix ``test_imap4_host_default_value()`` of ``test_imaplib``: | |
| catch also :data:`errno.ENETUNREACH` error. | |
| - bpo-36611: Fix ``test_sys.test_getallocatedblocks()`` when | |
| :mod:`tracemalloc` is enabled. | |
| - bpo-36560: Fix reference leak hunting in regrtest: compute also deltas (of | |
| reference count, allocated memory blocks, file descriptor count) during | |
| warmup, to ensure that everything is initialized before starting to hunt | |
| reference leaks. | |
| - bpo-36565: Fix reference hunting (``python3 -m test -R 3:3``) when Python | |
| has no built-in abc module. | |
| - bpo-31904: Port test_resource to VxWorks: skip tests cases setting | |
| RLIMIT_FSIZE and RLIMIT_CPU. | |
| - bpo-31904: Fix test_tabnanny on VxWorks: adjust ENOENT error message. | |
| - bpo-36436: Fix ``_testcapi.pymem_buffer_overflow()``: handle memory | |
| allocation failure. | |
| - bpo-31904: Fix test_utf8_mode on VxWorks: Python always use UTF-8 on | |
| VxWorks. | |
| - bpo-36341: Fix tests that may fail with PermissionError upon calling | |
| bind() on AF_UNIX sockets. | |
| Build | |
| ----- | |
| - bpo-36747: Remove the stale scriptsinstall Makefile target. | |
| - bpo-21536: On Unix, C extensions are no longer linked to libpython except | |
| on Android and Cygwin. | |
| It is now possible for a statically linked Python to load a C extension | |
| built using a shared library Python. | |
| When Python is embedded, ``libpython`` must not be loaded with | |
| ``RTLD_LOCAL``, but ``RTLD_GLOBAL`` instead. Previously, using | |
| ``RTLD_LOCAL``, it was already not possible to load C extensions which | |
| were not linked to ``libpython``, such as C extensions of the standard | |
| library built by the ``*shared*`` section of ``Modules/Setup``. | |
| distutils, python-config and python-config.py have been modified. | |
| - bpo-36707: ``./configure --with-pymalloc`` no longer adds the ``m`` flag | |
| to SOABI (sys.implementation.cache_tag). Enabling or disabling pymalloc | |
| has no impact on the ABI. | |
| - bpo-36635: Change ``PyAPI_FUNC(type)``, ``PyAPI_DATA(type)`` and | |
| ``PyMODINIT_FUNC`` macros of ``pyport.h`` when ``Py_BUILD_CORE_MODULE`` is | |
| defined. The ``Py_BUILD_CORE_MODULE`` define must be now be used to build | |
| a C extension as a dynamic library accessing Python internals: export the | |
| PyInit_xxx() function in DLL exports on Windows. | |
| - bpo-31904: Don't build the ``_crypt`` extension on VxWorks. | |
| - bpo-36618: Add ``-fmax-type-align=8`` to CFLAGS when clang compiler is | |
| detected. The pymalloc memory allocator aligns memory on 8 bytes. On | |
| x86-64, clang expects alignment on 16 bytes by default and so uses MOVAPS | |
| instruction which can lead to segmentation fault. Instruct clang that | |
| Python is limited to alignment on 8 bytes to use MOVUPS instruction | |
| instead: slower but don't trigger a SIGSEGV if the memory is not aligned | |
| on 16 bytes. Sadly, the flag must be added to ``CFLAGS`` and not just | |
| ``CFLAGS_NODIST``, since third party C extensions can have the same issue. | |
| - bpo-36605: ``make tags`` and ``make TAGS`` now also parse | |
| ``Modules/_io/*.c`` and ``Modules/_io/*.h``. | |
| - bpo-36465: Release builds and debug builds are now ABI compatible: | |
| defining the ``Py_DEBUG`` macro no longer implies the ``Py_TRACE_REFS`` | |
| macro, which introduces the only ABI incompatibility. The | |
| ``Py_TRACE_REFS`` macro, which adds the :func:`sys.getobjects` function | |
| and the :envvar:`PYTHONDUMPREFS` environment variable, can be set using | |
| the new ``./configure --with-trace-refs`` build option. | |
| - bpo-36577: setup.py now correctly reports missing OpenSSL headers and | |
| libraries again. | |
| - bpo-36544: Fix regression introduced in bpo-36146 refactoring setup.py | |
| - bpo-36508: ``python-config --ldflags`` no longer includes flags of the | |
| ``LINKFORSHARED`` variable. The ``LINKFORSHARED`` variable must only be | |
| used to build executables. | |
| - bpo-36503: Remove references to "aix3" and "aix4". Patch by M. Felt. | |
| Windows | |
| ------- | |
| - bpo-35920: Added platform.win32_edition() and platform.win32_is_iot(). | |
| Added support for cross-compiling packages for Windows ARM32. Skip tests | |
| that are not expected to work on Windows IoT Core ARM32. | |
| - bpo-36649: Remove trailing spaces for registry keys when installed via the | |
| Store. | |
| - bpo-34144: Fixed activate.bat to correctly update codepage when chcp.com | |
| returns dots in output. Patch by Lorenz Mende. | |
| - bpo-36509: Added preset-iot layout for Windows IoT ARM containers. This | |
| layout doesn't contain UI components like tkinter or IDLE. It also doesn't | |
| contain files to support on-target builds since Windows ARM32 builds must | |
| be cross-compiled when using MSVC. | |
| - bpo-35941: enum_certificates function of the ssl module now returns | |
| certificates from all available certificate stores inside windows in a | |
| query instead of returning only certificates from the system wide | |
| certificate store. This includes certificates from these certificate | |
| stores: local machine, local machine enterprise, local machine group | |
| policy, current user, current user group policy, services, users. | |
| ssl.enum_crls() function is changed in the same way to return all | |
| certificate revocation lists inside the windows certificate revocation | |
| list stores. | |
| - bpo-36441: Fixes creating a venv when debug binaries are installed. | |
| - bpo-36085: Enable better DLL resolution on Windows by using safe DLL | |
| search paths and adding :func:`os.add_dll_directory`. | |
| - bpo-36010: Add the venv standard library module to the nuget distribution | |
| for Windows. | |
| - bpo-29515: Add the following socket module constants on Windows: | |
| IPPROTO_AH IPPROTO_CBT IPPROTO_DSTOPTS IPPROTO_EGP IPPROTO_ESP | |
| IPPROTO_FRAGMENT IPPROTO_GGP IPPROTO_HOPOPTS IPPROTO_ICLFXBM | |
| IPPROTO_ICMPV6 IPPROTO_IDP IPPROTO_IGMP IPPROTO_IGP IPPROTO_IPV4 | |
| IPPROTO_IPV6 IPPROTO_L2TP IPPROTO_MAX IPPROTO_ND IPPROTO_NONE IPPROTO_PGM | |
| IPPROTO_PIM IPPROTO_PUP IPPROTO_RDP IPPROTO_ROUTING IPPROTO_SCTP | |
| IPPROTO_ST | |
| - bpo-35947: Added current version of libffi to cpython-source-deps. Change | |
| _ctypes to use current version of libffi on Windows. | |
| - bpo-34060: Report system load when running test suite on Windows. Patch by | |
| Ammar Askar. Based on prior work by Jeremy Kloth. | |
| - bpo-31512: With the Windows 10 Creators Update, non-elevated users can now | |
| create symlinks as long as the computer has Developer Mode enabled. | |
| macOS | |
| ----- | |
| - bpo-34602: Avoid failures setting macOS stack resource limit with | |
| resource.setrlimit. This reverts an earlier fix for bpo-18075 which forced | |
| a non-default stack size when building the interpreter executable on | |
| macOS. | |
| IDLE | |
| ---- | |
| - bpo-36429: Fix starting IDLE with pyshell. Add idlelib.pyshell alias at | |
| top; remove pyshell alias at bottom. Remove obsolete __name__=='__main__' | |
| command. | |
| Tools/Demos | |
| ----------- | |
| - bpo-14546: Fix the argument handling in Tools/scripts/lll.py. | |
| C API | |
| ----- | |
| - bpo-36763: Fix memory leak in :c:func:`Py_SetStandardStreamEncoding`: | |
| release memory if the function is called twice. | |
| - bpo-36641: :c:expr:`PyDoc_VAR(name)` and :c:expr:`PyDoc_STRVAR(name,str)` | |
| now create ``static const char name[]`` instead of ``static char name[]``. | |
| Patch by Inada Naoki. | |
| - bpo-36389: Change the value of ``CLEANBYTE``, ``DEADDYTE`` and | |
| ``FORBIDDENBYTE`` internal constants used by debug hooks on Python memory | |
| allocators (:c:func:`PyMem_SetupDebugHooks` function). Byte patterns | |
| ``0xCB``, ``0xDB`` and ``0xFB`` have been replaced with ``0xCD``, ``0xDD`` | |
| and ``0xFD`` to use the same values than Windows CRT debug ``malloc()`` | |
| and ``free()``. | |
| - bpo-36443: Since Python 3.7.0, calling :c:func:`Py_DecodeLocale` before | |
| :c:func:`Py_Initialize` produces mojibake if the ``LC_CTYPE`` locale is | |
| coerced and/or if the UTF-8 Mode is enabled by the user configuration. The | |
| LC_CTYPE coercion and UTF-8 Mode are now disabled by default to fix the | |
| mojibake issue. They must now be enabled explicitly (opt-in) using the new | |
| :c:func:`_Py_PreInitialize` API with ``_PyPreConfig``. | |
| - bpo-36025: Fixed an accidental change to the datetime C API where the | |
| arguments to the :c:func:`PyDate_FromTimestamp` function were incorrectly | |
| interpreted as a single timestamp rather than an arguments tuple, which | |
| causes existing code to start raising :exc:`TypeError`. The | |
| backwards-incompatible change was only present in alpha releases of Python | |
| 3.8. Patch by Paul Ganssle. | |
| - bpo-35810: Modify ``PyObject_Init`` to correctly increase the refcount of | |
| heap- allocated Type objects. Also fix the refcounts of the heap-allocated | |
| types that were either doing this manually or not decreasing the type's | |
| refcount in tp_dealloc | |
| What's New in Python 3.8.0 alpha 3? | |
| =================================== | |
| *Release date: 2019-03-25* | |
| Security | |
| -------- | |
| - bpo-36216: Changes urlsplit() to raise ValueError when the URL contains | |
| characters that decompose under IDNA encoding (NFKC-normalization) into | |
| characters that affect how the URL is parsed. | |
| - bpo-35121: Don't send cookies of domain A without Domain attribute to | |
| domain B when domain A is a suffix match of domain B while using a | |
| cookiejar with :class:`http.cookiejar.DefaultCookiePolicy` policy. Patch | |
| by Karthikeyan Singaravelan. | |
| Core and Builtins | |
| ----------------- | |
| - bpo-36421: Fix a possible double decref in _ctypes.c's | |
| ``PyCArrayType_new()``. | |
| - bpo-36412: Fix a possible crash when creating a new dictionary. | |
| - bpo-36398: Fix a possible crash in ``structseq_repr()``. | |
| - bpo-36256: Fix bug in parsermodule when parsing a state in a DFA that has | |
| two or more arcs with labels of the same type. Patch by Pablo Galindo. | |
| - bpo-36365: repr(structseq) is no longer limited to 512 bytes. | |
| - bpo-36374: Fix a possible null pointer dereference in | |
| ``merge_consts_recursive()``. Patch by Zackery Spytz. | |
| - bpo-36236: At Python initialization, the current directory is no longer | |
| prepended to :data:`sys.path` if it has been removed. | |
| - bpo-36352: Python initialization now fails with an error, rather than | |
| silently truncating paths, if a path is too long. | |
| - bpo-36301: Python initialization now fails if decoding ``pybuilddir.txt`` | |
| configuration file fails at startup. | |
| - bpo-36333: Fix leak in _PyRuntimeState_Fini. Contributed by Stéphane | |
| Wirtel. | |
| - bpo-36332: The builtin :func:`compile` can now handle AST objects that | |
| contain assignment expressions. Patch by Pablo Galindo. | |
| - bpo-36282: Improved error message for too much positional arguments in | |
| some builtin functions. | |
| - bpo-30040: New empty dict uses fewer memory for now. It used more memory | |
| than empty dict created by ``dict.clear()``. And empty dict creation and | |
| deletion is about 2x faster. Patch by Inada Naoki. | |
| - bpo-36262: Fix an unlikely memory leak on conversion from string to float | |
| in the function ``_Py_dg_strtod()`` used by ``float(str)``, | |
| ``complex(str)``, :func:`pickle.load`, :func:`marshal.load`, etc. | |
| - bpo-36252: Update Unicode databases to version 12.0.0. | |
| - bpo-36218: Fix a segfault occurring when sorting a list of heterogeneous | |
| values. Patch contributed by Rémi Lapeyre and Elliot Gorokhovsky. | |
| - bpo-36188: Cleaned up left-over vestiges of Python 2 unbound method | |
| handling in method objects and documentation. Patch by Martijn Pieters | |
| - bpo-36124: Add a new interpreter-specific dict and expose it in the C-API | |
| via PyInterpreterState_GetDict(). This parallels PyThreadState_GetDict(). | |
| However, extension modules should continue using PyModule_GetState() for | |
| their own internal per-interpreter state. | |
| - bpo-35975: Add a ``feature_version`` flag to ``ast.parse()`` (documented) | |
| and ``compile()`` (hidden) that allows tweaking the parser to support | |
| older versions of the grammar. In particular, if ``feature_version`` is 5 | |
| or 6, the hacks for the ``async`` and ``await`` keyword from PEP 492 are | |
| reinstated. (For 7 or higher, these are unconditionally treated as | |
| keywords, but they are still special tokens rather than ``NAME`` tokens | |
| that the parser driver recognizes.) | |
| - bpo-31904: Use UTF-8 as the system encoding on VxWorks. | |
| - bpo-36048: The :meth:`~object.__index__` special method will be used | |
| instead of :meth:`~object.__int__` for implicit conversion of Python | |
| numbers to C integers. Using the ``__int__()`` method in implicit | |
| conversions has been deprecated. | |
| - bpo-35808: Retire pgen and use a modified version of pgen2 to generate the | |
| parser. Patch by Pablo Galindo. | |
| Library | |
| ------- | |
| - bpo-36401: The class documentation created by pydoc now has a separate | |
| section for readonly properties. | |
| - bpo-36320: The typing.NamedTuple() class has deprecated the _field_types | |
| attribute in favor of the __annotations__ attribute which carried the same | |
| information. Also, both attributes were converted from OrderedDict to a | |
| regular dict. | |
| - bpo-34745: Fix :mod:`asyncio` ssl memory issues caused by circular | |
| references | |
| - bpo-36324: Add method to statistics.NormalDist for computing the inverse | |
| cumulative normal distribution. | |
| - bpo-36321: collections.namedtuple() misspelled the name of an attribute. | |
| To be consistent with typing.NamedTuple, the attribute name should have | |
| been "_field_defaults" instead of "_fields_defaults". For backwards | |
| compatibility, both spellings are now created. The misspelled version may | |
| be removed in the future. | |
| - bpo-36297: "unicode_internal" codec is removed. It was deprecated since | |
| Python 3.3. Patch by Inada Naoki. | |
| - bpo-36298: Raise ModuleNotFoundError in pyclbr when a module can't be | |
| found. Thanks to 'mental' for the bug report. | |
| - bpo-36268: Switch the default format used for writing tars with | |
| mod:`tarfile` to the modern POSIX.1-2001 pax standard, from the | |
| vendor-specific GNU. Contributed by C.A.M. Gerlach. | |
| - bpo-36285: Fix integer overflows in the array module. Patch by Stephan | |
| Hohe. | |
| - bpo-31904: Add _signal module support for VxWorks. | |
| - bpo-36272: :mod:`logging` does not silently ignore RecursionError anymore. | |
| Patch contributed by Rémi Lapeyre. | |
| - bpo-36280: Add a kind field to ast.Constant. It is 'u' if the literal has | |
| a 'u' prefix (i.e. a Python 2 style unicode literal), else None. | |
| - bpo-35931: The :mod:`pdb` ``debug`` command now gracefully handles all | |
| exceptions. | |
| - bpo-36251: Fix format strings used for stderrprinter and re.Match reprs. | |
| Patch by Stephan Hohe. | |
| - bpo-36235: Fix ``CFLAGS`` in ``customize_compiler()`` of | |
| ``distutils.sysconfig``: when the ``CFLAGS`` environment variable is | |
| defined, don't override ``CFLAGS`` variable with the ``OPT`` variable | |
| anymore. Initial patch written by David Malcolm. | |
| - bpo-35807: Update ensurepip to install pip 19.0.3 and setuptools 40.8.0. | |
| - bpo-36139: Release GIL when closing :class:`~mmap.mmap` objects. | |
| - bpo-36179: Fix two unlikely reference leaks in _hashopenssl. The leaks | |
| only occur in out-of-memory cases. | |
| - bpo-36169: Add overlap() method to statistics.NormalDist. Computes the | |
| overlapping coefficient for two normal distributions. | |
| - bpo-36103: Default buffer size used by ``shutil.copyfileobj()`` is changed | |
| from 16 KiB to 64 KiB on non-Windows platform to reduce system call | |
| overhead. Contributed by Inada Naoki. | |
| - bpo-36130: Fix ``pdb`` with ``skip=...`` when stepping into a frame | |
| without a ``__name__`` global. Patch by Anthony Sottile. | |
| - bpo-35652: shutil.copytree(copy_function=...) erroneously pass DirEntry | |
| instead of a path string. | |
| - bpo-35178: Ensure custom :func:`warnings.formatwarning` function can | |
| receive `line` as positional argument. Based on patch by Tashrif Billah. | |
| - bpo-36106: Resolve potential name clash with libm's sinpi(). Patch by | |
| Dmitrii Pasechnik. | |
| - bpo-36091: Clean up reference to async generator in Lib/types. Patch by | |
| Henry Chen. | |
| - bpo-36043: :class:`FileCookieJar` supports :term:`path-like object`. | |
| Contributed by Stéphane Wirtel | |
| - bpo-35899: Enum has been fixed to correctly handle empty strings and | |
| strings with non-Latin characters (ie. 'α', 'א') without crashing. | |
| Original patch contributed by Maxwell. Assisted by Stéphane Wirtel. | |
| - bpo-21269: Add ``args`` and ``kwargs`` properties to mock call objects. | |
| Contributed by Kumar Akshay. | |
| - bpo-30670: `pprint.pp` has been added to pretty-print objects with | |
| dictionary keys being sorted with their insertion order by default. | |
| Parameter *sort_dicts* has been added to `pprint.pprint`, `pprint.pformat` | |
| and `pprint.PrettyPrinter`. Contributed by Rémi Lapeyre. | |
| - bpo-35843: Implement ``__getitem__`` for ``_NamespacePath``. Patch by | |
| Anthony Sottile. | |
| - bpo-35802: Clean up code which checked presence of ``os.stat`` / | |
| ``os.lstat`` / ``os.chmod`` which are always present. Patch by Anthony | |
| Sottile. | |
| - bpo-35715: Librates the return value of a ProcessPoolExecutor | |
| _process_worker after it's no longer needed to free memory | |
| - bpo-35493: Use :func:`multiprocessing.connection.wait` instead of polling | |
| each 0.2 seconds for worker updates in :class:`multiprocessing.Pool`. | |
| Patch by Pablo Galindo. | |
| - bpo-35661: Store the venv prompt in pyvenv.cfg. | |
| - bpo-35121: Don't set cookie for a request when the request path is a | |
| prefix match of the cookie's path attribute but doesn't end with "/". | |
| Patch by Karthikeyan Singaravelan. | |
| - bpo-21478: Calls to a child function created with | |
| :func:`unittest.mock.create_autospec` should propagate to the parent. | |
| Patch by Karthikeyan Singaravelan. | |
| - bpo-35198: Fix C++ extension compilation on AIX | |
| Documentation | |
| ------------- | |
| - bpo-36329: Declare the path of the Python binary for the usage of | |
| ``Tools/scripts/serve.py`` when executing ``make -C Doc/ serve``. | |
| Contributed by Stéphane Wirtel | |
| - bpo-36138: Improve documentation about converting datetime.timedelta to | |
| scalars. | |
| - bpo-21314: A new entry was added to the Core Language Section of the | |
| Programming FAQ, which explaines the usage of slash(/) in the signature of | |
| a function. Patch by Lysandros Nikolaou | |
| Tests | |
| ----- | |
| - bpo-36234: test_posix.PosixUidGidTests: add tests for invalid uid/gid type | |
| (str). Initial patch written by David Malcolm. | |
| - bpo-29571: Fix ``test_re.test_locale_flag()``: use | |
| ``locale.getpreferredencoding()`` rather than ``locale.getlocale()`` to | |
| get the locale encoding. With some locales, ``locale.getlocale()`` returns | |
| the wrong encoding. | |
| - bpo-36123: Fix race condition in test_socket. | |
| Build | |
| ----- | |
| - bpo-36356: Fix leaks that led to build failure when configured with | |
| address sanitizer. | |
| - bpo-36146: Add ``TEST_EXTENSIONS`` constant to ``setup.py`` to allow to | |
| not build test extensions like ``_testcapi``. | |
| - bpo-36146: Fix setup.py on macOS: only add ``/usr/include/ffi`` to include | |
| directories of _ctypes, not for all extensions. | |
| - bpo-31904: Enable build system to cross-build for VxWorks RTOS. | |
| Windows | |
| ------- | |
| - bpo-36312: Fixed decoders for the following code pages: 50220, 50221, | |
| 50222, 50225, 50227, 50229, 57002 through 57011, 65000 and 42. | |
| - bpo-36264: Don't honor POSIX ``HOME`` in ``os.path.expanduser`` on | |
| windows. Patch by Anthony Sottile. | |
| - bpo-24643: Fix name collisions due to ``#define timezone _timezone`` in | |
| PC/pyconfig.h. | |
| IDLE | |
| ---- | |
| - bpo-36405: Use dict unpacking in idlelib. | |
| - bpo-36396: Remove fgBg param of idlelib.config.GetHighlight(). This param | |
| was only used twice and changed the return type. | |
| - bpo-36176: Fix IDLE autocomplete & calltip popup colors. Prevent conflicts | |
| with Linux dark themes (and slightly darken calltip background). | |
| - bpo-23205: For the grep module, add tests for findfiles, refactor | |
| findfiles to be a module-level function, and refactor findfiles to use | |
| os.walk. | |
| - bpo-23216: Add docstrings to IDLE search modules. | |
| - bpo-36152: Remove colorizer.ColorDelegator.close_when_done and the | |
| corresponding argument of .close(). In IDLE, both have always been None | |
| or False since 2007. | |
| - bpo-32129: Avoid blurry IDLE application icon on macOS with Tk 8.6. Patch | |
| by Kevin Walzer. | |
| - bpo-36096: Refactor class variables to instance variables in colorizer. | |
| - bpo-30348: Increase test coverage of idlelib.autocomplete by 30%. Patch by | |
| Louie Lu | |
| Tools/Demos | |
| ----------- | |
| - bpo-35132: Fix py-list and py-bt commands of python-gdb.py on gdb7. | |
| - bpo-32217: Fix freeze script on Windows. | |
| C API | |
| ----- | |
| - bpo-36381: Raise ``DeprecationWarning`` when '#' formats are used for | |
| building or parsing values without ``PY_SSIZE_T_CLEAN``. | |
| - bpo-36142: The whole coreconfig.h header is now excluded from | |
| Py_LIMITED_API. Move functions definitions into a new internal | |
| pycore_coreconfig.h header. | |
| What's New in Python 3.8.0 alpha 2? | |
| =================================== | |
| *Release date: 2019-02-25* | |
| Core and Builtins | |
| ----------------- | |
| - bpo-36052: Raise a :exc:`SyntaxError` when assigning a value to | |
| `__debug__` with the Assignment Operator. Contributed by Stéphane Wirtel | |
| and Pablo Galindo. | |
| - bpo-36012: Doubled the speed of class variable writes. When a non-dunder | |
| attribute was updated, there was an unnecessary call to update slots. | |
| - bpo-35942: The error message emitted when returning invalid types from | |
| ``__fspath__`` in interfaces that allow passing :class:`~os.PathLike` | |
| objects has been improved and now it does explain the origin of the error. | |
| - bpo-36016: ``gc.get_objects`` can now receive an optional parameter | |
| indicating a generation to get objects from. Patch by Pablo Galindo. | |
| - bpo-1054041: When the main interpreter exits due to an uncaught | |
| KeyboardInterrupt, the process now exits in the appropriate manner for its | |
| parent process to detect that a SIGINT or ^C terminated the process. This | |
| allows shells and batch scripts to understand that the user has asked them | |
| to stop. | |
| - bpo-35992: Fix ``__class_getitem__()`` not being called on a class with a | |
| custom non-subscriptable metaclass. | |
| - bpo-35993: Fix a crash on fork when using subinterpreters. Contributed by | |
| Stéphane Wirtel | |
| - bpo-35991: Fix a potential double free in Modules/_randommodule.c. | |
| - bpo-35961: Fix a crash in slice_richcompare(): use strong references | |
| rather than stolen references for the two temporary internal tuples. | |
| - bpo-35911: Enable the creation of cell objects by adding a | |
| ``cell.__new__`` method, and expose the type ``cell`` in ``Lib/types.py`` | |
| under the name CellType. Patch by Pierre Glaser. | |
| - bpo-12822: Use monotonic clock for ``pthread_cond_timedwait`` when | |
| ``pthread_condattr_setclock`` and ``CLOCK_MONOTONIC`` are available. | |
| - bpo-15248: The compiler emits now syntax warnings in the case when a comma | |
| is likely missed before tuple or list. | |
| - bpo-35886: The implementation of PyInterpreterState has been moved into | |
| the internal header files (guarded by Py_BUILD_CORE). | |
| - bpo-31506: Clarify the errors reported when ``object.__new__`` and | |
| ``object.__init__`` receive more than one argument. Contributed by Sanyam | |
| Khurana. | |
| - bpo-35724: Signal-handling is now guaranteed to happen relative to the | |
| main interpreter. | |
| - bpo-33608: We added a new internal _Py_AddPendingCall() that operates | |
| relative to the provided interpreter. This allows us to use the existing | |
| implementation to ask another interpreter to do work that cannot be done | |
| in the current interpreter, like decref an object the other interpreter | |
| owns. The existing Py_AddPendingCall() only operates relative to the main | |
| interpreter. | |
| - bpo-33989: Fix a possible crash in :meth:`list.sort` when sorting objects | |
| with ``ob_type->tp_richcompare == NULL``. Patch by Zackery Spytz. | |
| Library | |
| ------- | |
| - bpo-35512: :func:`unittest.mock.patch.dict` used as a decorator with | |
| string target resolves the target during function call instead of during | |
| decorator construction. Patch by Karthikeyan Singaravelan. | |
| - bpo-36018: Add statistics.NormalDist, a tool for creating and manipulating | |
| normal distributions of random variable. Features a composite class that | |
| treats the mean and standard deviation of measurement data as single | |
| entity. | |
| - bpo-35904: Added statistics.fmean() as a faster, floating point variant of | |
| the existing mean() function. | |
| - bpo-35918: Removed broken ``has_key`` method from | |
| multiprocessing.managers.SyncManager.dict. Contributed by Rémi Lapeyre. | |
| - bpo-18283: Add support for bytes to :func:`shutil.which`. | |
| - bpo-35960: Fix :func:`dataclasses.field` throwing away empty mapping | |
| objects passed as metadata. | |
| - bpo-35500: Write expected and actual call parameters on separate lines in | |
| :meth:`unittest.mock.Mock.assert_called_with` assertion errors. | |
| Contributed by Susan Su. | |
| - bpo-35931: The :mod:`pdb` ``debug`` command now gracefully handles syntax | |
| errors. | |
| - bpo-24209: In http.server script, rely on getaddrinfo to bind to preferred | |
| address based on the bind parameter. Now default bind or binding to a name | |
| may bind to IPv6 or dual-stack, depending on the environment. | |
| - bpo-35321: Set ``__spec__.origin`` of ``_frozen_importlib`` to frozen so | |
| that it matches the behavior of ``_frozen_importlib_external``. Patch by | |
| Nina Zakharenko. | |
| - bpo-35378: Fix a reference issue inside :class:`multiprocessing.Pool` that | |
| caused the pool to remain alive if it was deleted without being closed or | |
| terminated explicitly. A new strong reference is added to the pool | |
| iterators to link the lifetime of the pool to the lifetime of its | |
| iterators so the pool does not get destroyed if a pool iterator is still | |
| alive. | |
| - bpo-34294: re module, fix wrong capturing groups in rare cases. | |
| :func:`re.search`, :func:`re.findall`, :func:`re.sub` and other functions | |
| that scan through string looking for a match, should reset capturing | |
| groups between two match attempts. Patch by Ma Lin. | |
| - bpo-35615: :mod:`weakref`: Fix a RuntimeError when copying a | |
| WeakKeyDictionary or a WeakValueDictionary, due to some keys or values | |
| disappearing while iterating. | |
| - bpo-35606: Implement :func:`math.prod` as analogous function to | |
| :func:`sum` that returns the product of a 'start' value (default: 1) times | |
| an iterable of numbers. Patch by Pablo Galindo. | |
| - bpo-32417: Performing arithmetic between :class:`datetime.datetime` | |
| subclasses and :class:`datetime.timedelta` now returns an object of the | |
| same type as the :class:`datetime.datetime` subclass. As a result, | |
| :meth:`datetime.datetime.astimezone` and alternate constructors like | |
| :meth:`datetime.datetime.now` and :meth:`datetime.fromtimestamp` called | |
| with a ``tz`` argument now *also* retain their subclass. | |
| - bpo-35153: Add *headers* optional keyword-only parameter to | |
| :class:`xmlrpc.client.ServerProxy`, :class:`xmlrpc.client.Transport` and | |
| :class:`xmlrpc.client.SafeTransport`. Patch by Cédric Krier. | |
| - bpo-34572: Fix C implementation of pickle.loads to use importlib's locking | |
| mechanisms, and thereby avoid using partially loaded modules. Patch by Tim | |
| Burgess. | |
| Documentation | |
| ------------- | |
| - bpo-36083: Fix formatting of --check-hash-based-pycs options in the | |
| manpage Synopsis. | |
| - bpo-36007: Bump minimum sphinx version to 1.8. Patch by Anthony Sottile. | |
| - bpo-22062: Update documentation and docstrings for pathlib. Original patch | |
| by Mike Short. | |
| Tests | |
| ----- | |
| - bpo-27313: Avoid test_ttk_guionly ComboboxTest failure with macOS Cocoa | |
| Tk. | |
| - bpo-36019: Add test.support.TEST_HTTP_URL and replace references of | |
| http://www.example.com by this new constant. Contributed by Stéphane | |
| Wirtel. | |
| - bpo-36037: Fix test_ssl for strict OpenSSL configuration like RHEL8 strict | |
| crypto policy. Use older TLS version for minimum TLS version of the server | |
| SSL context if needed, to test TLS version older than default minimum TLS | |
| version. | |
| - bpo-35798: Added :func:`test.support.check_syntax_warning`. | |
| - bpo-35505: Make test_imap4_host_default_value independent on whether the | |
| local IMAP server is running. | |
| - bpo-35917: multiprocessing: provide unit tests for SyncManager and | |
| SharedMemoryManager classes + all the shareable types which are supposed | |
| to be supported by them. (patch by Giampaolo Rodola) | |
| - bpo-35704: Skip ``test_shutil.test_unpack_archive_xztar`` to prevent a | |
| MemoryError on 32-bit AIX when MAXDATA setting is less than 0x20000000. | |
| Patch by Michael Felt (aixtools) | |
| - bpo-34720: Assert m_state != NULL to mimic GC traversal functions that do | |
| not correctly handle module creation when the module state has not been | |
| created. | |
| Windows | |
| ------- | |
| - bpo-35976: Added ARM build support to Windows build files in PCBuild. | |
| - bpo-35692: ``pathlib`` no longer raises when checking file and directory | |
| existence on drives that are not ready | |
| - bpo-35872: Uses the base Python executable when invoking venv in a virtual | |
| environment | |
| - bpo-35873: Prevents venv paths being inherited by child processes | |
| - bpo-35299: Fix sysconfig detection of the source directory and distutils | |
| handling of pyconfig.h during PGO profiling | |
| IDLE | |
| ---- | |
| - bpo-24310: IDLE -- Document settings dialog font tab sample. | |
| - bpo-35833: Revise IDLE doc for control codes sent to Shell. Add a code | |
| example block. | |
| - bpo-35689: Add docstrings and unittests for colorizer.py. | |
| What's New in Python 3.8.0 alpha 1? | |
| =================================== | |
| *Release date: 2019-02-03* | |
| Security | |
| -------- | |
| - bpo-35746: [CVE-2019-5010] Fix a NULL pointer deref in ssl module. The | |
| cert parser did not handle CRL distribution points with empty DP or URI | |
| correctly. A malicious or buggy certificate can result into segfault. | |
| Vulnerability (TALOS-2018-0758) reported by Colin Read and Nicolas Edet of | |
| Cisco. | |
| - bpo-34812: The :option:`-I` command line option (run Python in isolated | |
| mode) is now also copied by the :mod:`multiprocessing` and | |
| :mod:`distutils` modules when spawning child processes. Previously, only | |
| :option:`-E` and :option:`-s` options (enabled by :option:`-I`) were | |
| copied. | |
| - bpo-34791: The xml.sax and xml.dom.domreg no longer use environment | |
| variables to override parser implementations when | |
| sys.flags.ignore_environment is set by -E or -I arguments. | |
| - bpo-17239: The xml.sax and xml.dom.minidom parsers no longer processes | |
| external entities by default. External DTD and ENTITY declarations no | |
| longer load files or create network connections. | |
| - bpo-34623: CVE-2018-14647: The C accelerated _elementtree module now | |
| initializes hash randomization salt from _Py_HashSecret instead of | |
| libexpat's default CSPRNG. | |
| - bpo-34405: Updated to OpenSSL 1.1.0i for Windows builds. | |
| - bpo-33871: Fixed sending the part of the file in :func:`os.sendfile` on | |
| macOS. Using the *trailers* argument could cause sending more bytes from | |
| the input file than was specified. | |
| - bpo-32533: Fixed thread-safety of error handling in _ssl. | |
| - bpo-33136: Harden ssl module against LibreSSL CVE-2018-8970. | |
| X509_VERIFY_PARAM_set1_host() is called with an explicit namelen. A new | |
| test ensures that NULL bytes are not allowed. | |
| - bpo-33001: Minimal fix to prevent buffer overrun in os.symlink on Windows | |
| - bpo-32981: Regexes in difflib and poplib were vulnerable to catastrophic | |
| backtracking. These regexes formed potential DOS vectors (REDOS). They | |
| have been refactored. This resolves CVE-2018-1060 and CVE-2018-1061. Patch | |
| by Jamie Davis. | |
| - bpo-28414: The ssl module now allows users to perform their own IDN | |
| en/decoding when using SNI. | |
| Core and Builtins | |
| ----------------- | |
| - bpo-35877: Make parenthesis optional for named expressions in while | |
| statement. Patch by Karthikeyan Singaravelan. | |
| - bpo-35814: Allow same right hand side expressions in annotated assignments | |
| as in normal ones. In particular, ``x: Tuple[int, int] = 1, 2`` (without | |
| parentheses on the right) is now allowed. | |
| - bpo-35766: Add the option to parse PEP 484 type comments in the ast | |
| module. (Off by default.) This is merging the key functionality of the | |
| third party fork thereof, | |
| [typed_ast](https://github.com/python/typed_ast). | |
| - bpo-35713: Reorganize Python initialization to get working exceptions and | |
| sys.stderr earlier. | |
| - bpo-33416: Add end line and end column position information to the Python | |
| AST nodes. This is a C-level backwards incompatible change. | |
| - bpo-35720: Fixed a minor memory leak in pymain_parse_cmdline_impl function | |
| in Modules/main.c | |
| - bpo-35634: ``func(**kwargs)`` will now raise an error when ``kwargs`` is a | |
| mapping containing multiple entries with the same key. An error was | |
| already raised when other keyword arguments are passed before ``**kwargs`` | |
| since Python 3.6. | |
| - bpo-35623: Fix a crash when sorting very long lists. Patch by Stephan | |
| Hohe. | |
| - bpo-35214: clang Memory Sanitizer build instrumentation was added to work | |
| around false positives from posix, socket, time, test_io, and | |
| test_faulthandler. | |
| - bpo-35560: Fix an assertion error in :func:`format` in debug build for | |
| floating point formatting with "n" format, zero padding and small width. | |
| Release build is not impacted. Patch by Karthikeyan Singaravelan. | |
| - bpo-35552: Format characters ``%s`` and ``%V`` in | |
| :c:func:`PyUnicode_FromFormat` and ``%s`` in :c:func:`PyBytes_FromFormat` | |
| no longer read memory past the limit if *precision* is specified. | |
| - bpo-35504: Fix segfaults and :exc:`SystemError`\ s when deleting certain | |
| attributes. Patch by Zackery Spytz. | |
| - bpo-35504: Fixed a SystemError when delete the characters_written | |
| attribute of an OSError. | |
| - bpo-35494: Improved syntax error messages for unbalanced parentheses in | |
| f-string. | |
| - bpo-35444: Fixed error handling in pickling methods when fail to look up | |
| builtin "getattr". Sped up pickling iterators. | |
| - bpo-35436: Fix various issues with memory allocation error handling. | |
| Patch by Zackery Spytz. | |
| - bpo-35423: Separate the signal handling trigger in the eval loop from the | |
| "pending calls" machinery. There is no semantic change and the difference | |
| in performance is insignificant. | |
| - bpo-35357: Internal attributes' names of unittest.mock._Call and | |
| unittest.mock.MagicProxy (name, parent & from_kall) are now prefixed with | |
| _mock_ in order to prevent clashes with widely used object attributes. | |
| Fixed minor typo in test function name. | |
| - bpo-35372: Fixed the code page decoder for input longer than 2 GiB | |
| containing undecodable bytes. | |
| - bpo-35336: Fix PYTHONCOERCECLOCALE=1 environment variable: only coerce the | |
| C locale if the LC_CTYPE locale is "C". | |
| - bpo-31241: The *lineno* and *col_offset* attributes of AST nodes for list | |
| comprehensions, generator expressions and tuples are now point to the | |
| opening parenthesis or square brace. For tuples without parenthesis they | |
| point to the position of the first item. | |
| - bpo-33954: For :meth:`str.format`, :meth:`float.__format__` and | |
| :meth:`complex.__format__` methods for non-ASCII decimal point when using | |
| the "n" formatter. | |
| - bpo-35269: Fix a possible segfault involving a newly created coroutine. | |
| Patch by Zackery Spytz. | |
| - bpo-35224: Implement :pep:`572` (assignment expressions). Patch by Emily | |
| Morehouse. | |
| - bpo-32492: Speed up :class:`namedtuple` attribute access by 1.6x using a C | |
| fast-path for the name descriptors. Patch by Pablo Galindo. | |
| - bpo-35214: Fixed an out of bounds memory access when parsing a truncated | |
| unicode escape sequence at the end of a string such as ``'\N'``. It would | |
| read one byte beyond the end of the memory allocation. | |
| - bpo-35214: The interpreter and extension modules have had annotations | |
| added so that they work properly under clang's Memory Sanitizer. A new | |
| configure flag --with-memory-sanitizer has been added to make test builds | |
| of this nature easier to perform. | |
| - bpo-35193: Fix an off by one error in the bytecode peephole optimizer | |
| where it could read bytes beyond the end of bounds of an array when | |
| removing unreachable code. This bug was present in every release of Python | |
| 3.6 and 3.7 until now. | |
| - bpo-35169: Improved error messages for forbidden assignments. | |
| - bpo-34022: Fix handling of hash-based bytecode files in :mod:`zipimport`. | |
| Patch by Elvis Pranskevichus. | |
| - bpo-28401: Debug builds will no longer to attempt to import extension | |
| modules built for the ABI as they were never compatible to begin with. | |
| Patch by Stefano Rivera. | |
| - bpo-29341: Clarify in the docstrings of :mod:`os` methods that path-like | |
| objects are also accepted as input parameters. | |
| - bpo-35050: :mod:`socket`: Fix off-by-one bug in length check for | |
| ``AF_ALG`` name and type. | |
| - bpo-29743: Raise :exc:`ValueError` instead of :exc:`OverflowError` in case | |
| of a negative ``_length_`` in a :class:`ctypes.Array` subclass. Also | |
| raise :exc:`TypeError` instead of :exc:`AttributeError` for non-integer | |
| ``_length_``. Original patch by Oren Milman. | |
| - bpo-16806: Fix ``lineno`` and ``col_offset`` for multi-line string tokens. | |
| - bpo-35029: :exc:`SyntaxWarning` raised as an exception at code generation | |
| time will be now replaced with a :exc:`SyntaxError` for better error | |
| reporting. | |
| - bpo-34983: Expose :meth:`symtable.Symbol.is_nonlocal` in the symtable | |
| module. Patch by Pablo Galindo. | |
| - bpo-34974: :class:`bytes` and :class:`bytearray` constructors no longer | |
| convert unexpected exceptions (e.g. :exc:`MemoryError` and | |
| :exc:`KeyboardInterrupt`) to :exc:`TypeError`. | |
| - bpo-34939: Allow annotated names in module namespace that are declared | |
| global before the annotation happens. Patch by Pablo Galindo. | |
| - bpo-34973: Fixed crash in :func:`bytes` when the :class:`list` argument is | |
| mutated while it is iterated. | |
| - bpo-34876: The *lineno* and *col_offset* attributes of the AST for | |
| decorated function and class refer now to the position of the | |
| corresponding ``def``, ``async def`` and ``class`` instead of the position | |
| of the first decorator. This leads to more correct line reporting in | |
| tracing. This is the only case when the position of child AST nodes can | |
| precede the position of the parent AST node. | |
| - bpo-34879: Fix a possible null pointer dereference in bytesobject.c. | |
| Patch by Zackery Spytz. | |
| - bpo-34784: Fix the implementation of PyStructSequence_NewType in order to | |
| create heap allocated StructSequences. | |
| - bpo-32912: A :exc:`SyntaxWarning` is now emitted instead of a | |
| :exc:`DeprecationWarning` for invalid escape sequences in string and bytes | |
| literals. | |
| - bpo-34854: Fixed a crash in compiling string annotations containing a | |
| lambda with a keyword-only argument that doesn't have a default value. | |
| - bpo-34850: The compiler now produces a :exc:`SyntaxWarning` when identity | |
| checks (``is`` and ``is not``) are used with certain types of literals | |
| (e.g. strings, ints). These can often work by accident in CPython, but | |
| are not guaranteed by the language spec. The warning advises users to use | |
| equality tests (``==`` and ``!=``) instead. | |
| - bpo-34824: Fix a possible null pointer dereference in Modules/_ssl.c. | |
| Patch by Zackery Spytz. | |
| - bpo-30156: The C function ``property_descr_get()`` uses a "cached" tuple | |
| to optimize function calls. But this tuple can be discovered in debug mode | |
| with :func:`sys.getobjects()`. Remove the optimization, it's not really | |
| worth it and it causes 3 different crashes last years. | |
| - bpo-34762: Fix contextvars C API to use PyObject* pointer types. | |
| - bpo-34751: The hash function for tuples is now based on xxHash which gives | |
| better collision results on (formerly) pathological cases. Additionally, | |
| on 64-bit systems it improves tuple hashes in general. Patch by Jeroen | |
| Demeyer with substantial contributions by Tim Peters. | |
| - bpo-34735: Fix a memory leak in Modules/timemodule.c. Patch by Zackery | |
| Spytz. | |
| - bpo-34683: Fixed a bug where some SyntaxError error pointed to locations | |
| that were off-by-one. | |
| - bpo-34651: Only allow the main interpreter to fork. The avoids the | |
| possibility of affecting the main interpreter, which is critical to | |
| operation of the runtime. | |
| - bpo-34653: Remove unused function PyParser_SimpleParseStringFilename. | |
| - bpo-32236: Warn that line buffering is not supported if :func:`open` is | |
| called with binary mode and ``buffering=1``. | |
| - bpo-34641: Further restrict the syntax of the left-hand side of keyword | |
| arguments in function calls. In particular, ``f((keyword)=arg)`` is now | |
| disallowed. | |
| - bpo-34637: Make the *start* argument to *sum()* visible as a keyword | |
| argument. | |
| - bpo-1621: Do not assume signed integer overflow behavior (C undefined | |
| behavior) when performing set hash table resizing. | |
| - bpo-34588: Fix an off-by-one in the recursive call pruning feature of | |
| traceback formatting. | |
| - bpo-34485: On Windows, the LC_CTYPE is now set to the user preferred | |
| locale at startup. Previously, the LC_CTYPE locale was "C" at startup, but | |
| changed when calling setlocale(LC_CTYPE, "") or setlocale(LC_ALL, ""). | |
| - bpo-34485: Standard streams like sys.stdout now use the "surrogateescape" | |
| error handler, instead of "strict", on the POSIX locale (when the C locale | |
| is not coerced and the UTF-8 Mode is disabled). | |
| - bpo-34485: Fix the error handler of standard streams like sys.stdout: | |
| PYTHONIOENCODING=":" is now ignored instead of setting the error handler | |
| to "strict". | |
| - bpo-34485: Python now gets the locale encoding with C code to initialize | |
| the encoding of standard streams like sys.stdout. Moreover, the encoding | |
| is now initialized to the Python codec name to get a normalized encoding | |
| name and to ensure that the codec is loaded. The change avoids importing | |
| _bootlocale and _locale modules at startup by default. | |
| - bpo-34527: On FreeBSD, Py_DecodeLocale() and Py_EncodeLocale() now also | |
| forces the ASCII encoding if the LC_CTYPE locale is "POSIX", not only if | |
| the LC_CTYPE locale is "C". | |
| - bpo-34527: The UTF-8 Mode is now also enabled by the "POSIX" locale, not | |
| only by the "C" locale. | |
| - bpo-34403: On HP-UX with C or POSIX locale, sys.getfilesystemencoding() | |
| now returns "ascii" instead of "roman8" (when the UTF-8 Mode is disabled | |
| and the C locale is not coerced). | |
| - bpo-34523: The Python filesystem encoding is now read earlier during the | |
| Python initialization. | |
| - bpo-12458: Tracebacks show now correct line number for subexpressions in | |
| multiline expressions. Tracebacks show now the line number of the first | |
| line for multiline expressions instead of the line number of the last | |
| subexpression. | |
| - bpo-34408: Prevent a null pointer dereference and resource leakage in | |
| ``PyInterpreterState_New()``. | |
| - bpo-34400: Fix undefined behavior in parsetok.c. Patch by Zackery Spytz. | |
| - bpo-33073: Added as_integer_ratio to ints to make them more interoperable | |
| with floats. | |
| - bpo-34377: Update valgrind suppression list to use | |
| ``_PyObject_Free``/``_PyObject_Realloc`` instead of | |
| ``PyObject_Free``/``PyObject_Realloc``. | |
| - bpo-34353: Added the "socket" option in the `stat.filemode()` Python | |
| implementation to match the C implementation. | |
| - bpo-34320: Fix ``dict(od)`` didn't copy iteration order of OrderedDict. | |
| - bpo-34113: Fixed crash on debug builds when opcode stack was adjusted with | |
| negative numbers. Patch by Constantin Petrisor. | |
| - bpo-34100: Compiler now merges constants in tuples and frozensets | |
| recursively. Code attributes like ``co_names`` are merged too. | |
| - bpo-34151: Performance of list concatenation, repetition and slicing | |
| operations is slightly improved. Patch by Sergey Fedoseev. | |
| - bpo-34170: -X dev: it is now possible to override the memory allocator | |
| using PYTHONMALLOC even if the developer mode is enabled. | |
| - bpo-33237: Improved :exc:`AttributeError` message for partially | |
| initialized module. | |
| - bpo-34149: Fix min and max functions to get default behavior when key is | |
| None. | |
| - bpo-34125: Profiling of unbound built-in methods now works when | |
| ``**kwargs`` is given. | |
| - bpo-34141: Optimized pickling atomic types (None, bool, int, float, bytes, | |
| str). | |
| - bpo-34126: Fix crashes when profiling certain invalid calls of unbound | |
| methods. Patch by Jeroen Demeyer. | |
| - bpo-24618: Fixed reading invalid memory when create the code object with | |
| too small varnames tuple or too large argument counts. | |
| - bpo-34068: In :meth:`io.IOBase.close`, ensure that the | |
| :attr:`~io.IOBase.closed` attribute is not set with a live exception. | |
| Patch by Zackery Spytz and Serhiy Storchaka. | |
| - bpo-34087: Fix buffer overflow while converting unicode to numeric values. | |
| - bpo-34080: Fixed a memory leak in the compiler when it raised some | |
| uncommon errors during tokenizing. | |
| - bpo-34066: Disabled interruption by Ctrl-C between calling ``open()`` and | |
| entering a **with** block in ``with open()``. | |
| - bpo-34042: Fix dict.copy() to maintain correct total refcount (as reported | |
| by sys.gettotalrefcount()). | |
| - bpo-33418: Fix potential memory leak in function object when it creates | |
| reference cycle. | |
| - bpo-33985: Implement contextvars.ContextVar.name attribute. | |
| - bpo-33956: Update vendored Expat library copy to version 2.2.5. | |
| - bpo-24596: Decref the module object in :c:func:`PyRun_SimpleFileExFlags` | |
| before calling :c:func:`PyErr_Print()`. Patch by Zackery Spytz. | |
| - bpo-33451: Close directly executed pyc files before calling | |
| ``PyEval_EvalCode()``. | |
| - bpo-1617161: The hash of :class:`BuiltinMethodType` instances (methods of | |
| built-in classes) now depends on the hash of the identity of *__self__* | |
| instead of its value. The hash and equality of :class:`ModuleType` and | |
| :class:`MethodWrapperType` instances (methods of user-defined classes and | |
| some methods of built-in classes like ``str.__add__``) now depend on the | |
| hash and equality of the identity of *__self__* instead of its value. | |
| :class:`MethodWrapperType` instances no longer support ordering. | |
| - bpo-33824: Fix "LC_ALL=C python3.7 -V": reset properly the command line | |
| parser when the encoding changes after reading the Python configuration. | |
| - bpo-33803: Fix a crash in hamt.c caused by enabling GC tracking for an | |
| object that hadn't all of its fields set to NULL. | |
| - bpo-33738: Seven macro incompatibilities with the Limited API were fixed, | |
| and the macros :c:func:`PyIter_Check`, :c:func:`PyIndex_Check` and | |
| :c:func:`PyExceptionClass_Name` were added as functions. A script for | |
| automatic macro checks was added. | |
| - bpo-33786: Fix asynchronous generators to handle GeneratorExit in athrow() | |
| correctly | |
| - bpo-30167: ``PyRun_SimpleFileExFlags`` removes ``__cached__`` from module | |
| in addition to ``__file__``. | |
| - bpo-33706: Fix a crash in Python initialization when parsing the command | |
| line options. Thanks Christoph Gohlke for the bug report and the fix! | |
| - bpo-33597: Reduce ``PyGC_Head`` size from 3 words to 2 words. | |
| - bpo-30654: Fixed reset of the SIGINT handler to SIG_DFL on interpreter | |
| shutdown even when there was a custom handler set previously. Patch by | |
| Philipp Kerling. | |
| - bpo-33622: Fixed a leak when the garbage collector fails to add an object | |
| with the ``__del__`` method or referenced by it into the | |
| :data:`gc.garbage` list. :c:func:`PyGC_Collect` can now be called when an | |
| exception is set and preserves it. | |
| - bpo-33462: Make dict and dict views reversible. Patch by Rémi Lapeyre. | |
| - bpo-23722: A :exc:`RuntimeError` is now raised when the custom metaclass | |
| doesn't provide the ``__classcell__`` entry in the namespace passed to | |
| ``type.__new__``. A :exc:`DeprecationWarning` was emitted in Python | |
| 3.6--3.7. | |
| - bpo-33499: Add :envvar:`PYTHONPYCACHEPREFIX` environment variable and | |
| :option:`-X` ``pycache_prefix`` command-line option to set an alternate | |
| root directory for writing module bytecode cache files. | |
| - bpo-25711: The :mod:`zipimport` module has been rewritten in pure Python. | |
| - bpo-33509: Fix module_globals parameter of warnings.warn_explicit(): don't | |
| crash if module_globals is not a dict. | |
| - bpo-31849: Fix signed/unsigned comparison warning in pyhash.c. | |
| - bpo-33475: Fixed miscellaneous bugs in converting annotations to strings | |
| and optimized parentheses in the string representation. | |
| - bpo-20104: Added support for the `setpgroup`, `resetids`, `setsigmask`, | |
| `setsigdef` and `scheduler` parameters of `posix_spawn`. Patch by Pablo | |
| Galindo. | |
| - bpo-33391: Fix a leak in set_symmetric_difference(). | |
| - bpo-33363: Raise a SyntaxError for ``async with`` and ``async for`` | |
| statements outside of async functions. | |
| - bpo-28055: Fix unaligned accesses in siphash24(). Patch by Rolf Eike Beer. | |
| - bpo-33128: Fix a bug that causes PathFinder to appear twice on | |
| sys.meta_path. Patch by Pablo Galindo Salgado. | |
| - bpo-33331: Modules imported last are now cleared first at interpreter | |
| shutdown. | |
| - bpo-33312: Fixed clang ubsan (undefined behavior sanitizer) warnings in | |
| dictobject.c by adjusting how the internal struct _dictkeysobject shared | |
| keys structure is declared. | |
| - bpo-33305: Improved syntax error messages for invalid numerical literals. | |
| - bpo-33306: Improved syntax error messages for unbalanced parentheses. | |
| - bpo-33234: The list constructor will pre-size and not over-allocate when | |
| the input length is known. | |
| - bpo-33270: Intern the names for all anonymous code objects. Patch by | |
| Zackery Spytz. | |
| - bpo-30455: The C and Python code and the documentation related to tokens | |
| are now generated from a single source file :file:`Grammar/Tokens`. | |
| - bpo-33176: Add a ``toreadonly()`` method to memoryviews. | |
| - bpo-33231: Fix potential memory leak in ``normalizestring()``. | |
| - bpo-33205: Change dict growth function from | |
| ``round_up_to_power_2(used*2+hashtable_size/2)`` to | |
| ``round_up_to_power_2(used*3)``. Previously, dict is shrinked only when | |
| ``used == 0``. Now dict has more chance to be shrinked. | |
| - bpo-29922: Improved error messages in 'async with' when ``__aenter__()`` | |
| or ``__aexit__()`` return non-awaitable object. | |
| - bpo-33199: Fix ``ma_version_tag`` in dict implementation is uninitialized | |
| when copying from key-sharing dict. | |
| - bpo-33053: When using the -m switch, sys.path[0] is now explicitly | |
| expanded as the *starting* working directory, rather than being left as | |
| the empty path (which allows imports from the current working directory at | |
| the time of the import) | |
| - bpo-33138: Changed standard error message for non-pickleable and | |
| non-copyable types. It now says "cannot pickle" instead of "can't pickle" | |
| or "cannot serialize". | |
| - bpo-33018: Improve consistency of errors raised by ``issubclass()`` when | |
| called with a non-class and an abstract base class as the first and second | |
| arguments, respectively. Patch by Josh Bronson. | |
| - bpo-33083: ``math.factorial`` no longer accepts arguments that are not | |
| int-like. Patch by Pablo Galindo. | |
| - bpo-33041: Added new opcode :opcode:`END_ASYNC_FOR` and fixes the | |
| following issues: | |
| * Setting global :exc:`StopAsyncIteration` no longer breaks ``async for`` | |
| loops. | |
| * Jumping into an ``async for`` loop is now disabled. | |
| * Jumping out of an ``async for`` loop no longer corrupts the stack. | |
| - bpo-25750: Fix rare Python crash due to bad refcounting in | |
| ``type_getattro()`` if a descriptor deletes itself from the class. Patch | |
| by Jeroen Demeyer. | |
| - bpo-33041: Fixed bytecode generation for "async for" with a complex | |
| target. A StopAsyncIteration raised on assigning or unpacking will be now | |
| propagated instead of stopping the iteration. | |
| - bpo-33026: Fixed jumping out of "with" block by setting f_lineno. | |
| - bpo-33005: Fix a crash on fork when using a custom memory allocator (ex: | |
| using PYTHONMALLOC env var). _PyGILState_Reinit() and | |
| _PyInterpreterState_Enable() now use the default RAW memory allocator to | |
| allocate a new interpreters mutex on fork. | |
| - bpo-32911: Due to unexpected compatibility issues discovered during | |
| downstream beta testing, reverted :issue:`29463`. ``docstring`` field is | |
| removed from Module, ClassDef, FunctionDef, and AsyncFunctionDef ast nodes | |
| which was added in 3.7a1. Docstring expression is restored as a first | |
| statement in their body. Based on patch by Inada Naoki. | |
| - bpo-17288: Prevent jumps from 'return' and 'exception' trace events. | |
| - bpo-32946: Importing names from already imported module with "from ... | |
| import ..." is now 30% faster if the module is not a package. | |
| - bpo-32932: Make error message more revealing when there are non-str | |
| objects in ``__all__``. | |
| - bpo-32925: Optimized iterating and containing test for literal lists | |
| consisting of non-constants: ``x in [a, b]`` and ``for x in [a, b]``. The | |
| case of all constant elements already was optimized. | |
| - bpo-32889: Update Valgrind suppression list to account for the rename of | |
| ``Py_ADDRESS_IN_RANG`` to ``address_in_range``. | |
| - bpo-32836: Don't use temporary variables in cases of list/dict/set | |
| comprehensions | |
| - bpo-31356: Remove the new API added in bpo-31356 (gc.ensure_disabled() | |
| context manager). | |
| - bpo-32305: For namespace packages, ensure that both ``__file__`` and | |
| ``__spec__.origin`` are set to None. | |
| - bpo-32303: Make sure ``__spec__.loader`` matches ``__loader__`` for | |
| namespace packages. | |
| - bpo-32711: Fix the warning messages for Python/ast_unparse.c. Patch by | |
| Stéphane Wirtel | |
| - bpo-32583: Fix possible crashing in builtin Unicode decoders caused by | |
| write out-of-bound errors when using customized decode error handlers. | |
| - bpo-32489: A :keyword:`continue` statement is now allowed in the | |
| :keyword:`finally` clause. | |
| - bpo-17611: Simplified the interpreter loop by moving the logic of | |
| unrolling the stack of blocks into the compiler. The compiler emits now | |
| explicit instructions for adjusting the stack of values and calling the | |
| cleaning up code for :keyword:`break`, :keyword:`continue` and | |
| :keyword:`return`. | |
| Removed opcodes :opcode:`BREAK_LOOP`, :opcode:`CONTINUE_LOOP`, | |
| :opcode:`SETUP_LOOP` and :opcode:`SETUP_EXCEPT`. Added new opcodes | |
| :opcode:`ROT_FOUR`, :opcode:`BEGIN_FINALLY` and :opcode:`CALL_FINALLY` and | |
| :opcode:`POP_FINALLY`. Changed the behavior of :opcode:`END_FINALLY` and | |
| :opcode:`WITH_CLEANUP_START`. | |
| - bpo-32285: New function unicodedata.is_normalized, which can check whether | |
| a string is in a specific normal form. | |
| - bpo-10544: Yield expressions are now disallowed in comprehensions and | |
| generator expressions except the expression for the outermost iterable. | |
| - bpo-32117: Iterable unpacking is now allowed without parentheses in yield | |
| and return statements, e.g. ``yield 1, 2, 3, *rest``. Thanks to David | |
| Cuthbert for the change and Jordan Chapman for added tests. | |
| - bpo-31902: Fix the ``col_offset`` attribute for ast nodes | |
| ``ast.AsyncFor``, ``ast.AsyncFunctionDef``, and ``ast.AsyncWith``. | |
| Previously, ``col_offset`` pointed to the keyword after ``async``. | |
| - bpo-25862: Fix assertion failures in the ``tell()`` method of | |
| ``io.TextIOWrapper``. Patch by Zackery Spytz. | |
| - bpo-21983: Fix a crash in `ctypes.cast()` in case the type argument is a | |
| ctypes structured data type. Patch by Eryk Sun and Oren Milman. | |
| - bpo-31577: Fix a crash in `os.utime()` in case of a bad ns argument. Patch | |
| by Oren Milman. | |
| - bpo-29832: Remove references to 'getsockaddrarg' from various socket error | |
| messages. Patch by Oren Milman. | |
| Library | |
| ------- | |
| - bpo-35845: Add 'order' parameter to memoryview.tobytes(). | |
| - bpo-35864: The _asdict() method for collections.namedtuple now returns a | |
| regular dict instead of an OrderedDict. | |
| - bpo-35537: An ExitStack is now used internally within subprocess.Popen to | |
| clean up pipe file handles. No behavior change in normal operation. But if | |
| closing one handle were ever to cause an exception, the others will now be | |
| closed instead of leaked. (patch by Giampaolo Rodola) | |
| - bpo-35847: RISC-V needed the CTYPES_PASS_BY_REF_HACK. Fixes ctypes | |
| Structure test_pass_by_value. | |
| - bpo-35813: Shared memory submodule added to multiprocessing to avoid need | |
| for serialization between processes | |
| - bpo-35780: Fix lru_cache() errors arising in recursive, reentrant, or | |
| multi-threaded code. These errors could result in orphan links and in the | |
| cache being trapped in a state with fewer than the specified maximum | |
| number of links. Fix handling of negative maxsize which should have been | |
| treated as zero. Fix errors in toggling the "full" status flag. Fix | |
| misordering of links when errors are encountered. Sync-up the C code and | |
| pure Python code for the space saving path in functions with a single | |
| positional argument. In this common case, the space overhead of an lru | |
| cache entry is reduced by almost half. Fix counting of cache misses. In | |
| error cases, the miss count was out of sync with the actual number of | |
| times the underlying user function was called. | |
| - bpo-35537: :func:`os.posix_spawn` and :func:`os.posix_spawnp` now have a | |
| *setsid* parameter. | |
| - bpo-23846: :class:`asyncio.ProactorEventLoop` now catches and logs send | |
| errors when the self-pipe is full. | |
| - bpo-34323: :mod:`asyncio`: Enhance ``IocpProactor.close()`` log: wait 1 | |
| second before the first log, then log every second. Log also the number of | |
| seconds since ``close()`` was called. | |
| - bpo-35674: Add a new :func:`os.posix_spawnp` function. Patch by Joannah | |
| Nanjekye. | |
| - bpo-35733: ``ast.Constant(boolean)`` no longer an instance of | |
| :class:`ast.Num`. Patch by Anthony Sottile. | |
| - bpo-35726: QueueHandler.prepare() now makes a copy of the record before | |
| modifying and enqueueing it, to avoid affecting other handlers in the | |
| chain. | |
| - bpo-35719: Sped up multi-argument :mod:`math` functions atan2(), | |
| copysign(), remainder() and hypot() by 1.3--2.5 times. | |
| - bpo-35717: Fix KeyError exception raised when using enums and compile. | |
| Patch contributed by Rémi Lapeyre. | |
| - bpo-35699: Fixed detection of Visual Studio Build Tools 2017 in distutils | |
| - bpo-32710: Fix memory leaks in asyncio ProactorEventLoop on overlapped | |
| operation failure. | |
| - bpo-35702: The :data:`time.CLOCK_UPTIME_RAW` constant is now available for | |
| macOS 10.12. | |
| - bpo-32710: Fix a memory leak in asyncio in the ProactorEventLoop when | |
| ``ReadFile()`` or ``WSASend()`` overlapped operation fail immediately: | |
| release the internal buffer. | |
| - bpo-35682: Fix ``asyncio.ProactorEventLoop.sendfile()``: don't attempt to | |
| set the result of an internal future if it's already done. | |
| - bpo-35283: Add a deprecated warning for the | |
| :meth:`threading.Thread.isAlive` method. Patch by Dong-hee Na. | |
| - bpo-35664: Improve operator.itemgetter() performance by 33% with optimized | |
| argument handling and with adding a fast path for the common case of a | |
| single non-negative integer index into a tuple (which is the typical use | |
| case in the standard library). | |
| - bpo-35643: Fixed a SyntaxWarning: invalid escape sequence in | |
| Modules/_sha3/cleanup.py. Patch by Mickaël Schoentgen. | |
| - bpo-35619: Improved support of custom data descriptors in :func:`help` and | |
| :mod:`pydoc`. | |
| - bpo-28503: The `crypt` module now internally uses the `crypt_r()` library | |
| function instead of `crypt()` when available. | |
| - bpo-35614: Fixed help() on metaclasses. Patch by Sanyam Khurana. | |
| - bpo-35568: Expose ``raise(signum)`` as `raise_signal` | |
| - bpo-35588: The floor division and modulo operations and the :func:`divmod` | |
| function on :class:`fractions.Fraction` types are 2--4x faster. Patch by | |
| Stefan Behnel. | |
| - bpo-35585: Speed-up building enums by value, e.g. http.HTTPStatus(200). | |
| - bpo-30561: random.gammavariate(1.0, beta) now computes the same result as | |
| random.expovariate(1.0 / beta). This synchronizes the two algorithms and | |
| eliminates some idiosyncrasies in the old implementation. It does however | |
| produce a difference stream of random variables than it used to. | |
| - bpo-35537: The :mod:`subprocess` module can now use the | |
| :func:`os.posix_spawn` function in some cases for better performance. | |
| - bpo-35526: Delaying the 'joke' of barry_as_FLUFL.mandatory to Python | |
| version 4.0 | |
| - bpo-35523: Remove :mod:`ctypes` callback workaround: no longer create a | |
| callback at startup. Avoid SELinux alert on ``import ctypes`` and ``import | |
| uuid``. | |
| - bpo-31784: :func:`uuid.uuid1` now calls :func:`time.time_ns` rather than | |
| ``int(time.time() * 1e9)``. | |
| - bpo-35513: :class:`~unittest.runner.TextTestRunner` of | |
| :mod:`unittest.runner` now uses :func:`time.perf_counter` rather than | |
| :func:`time.time` to measure the execution time of a test: | |
| :func:`time.time` can go backwards, whereas :func:`time.perf_counter` is | |
| monotonic. | |
| - bpo-35502: Fixed reference leaks in | |
| :class:`xml.etree.ElementTree.TreeBuilder` in case of unfinished building | |
| of the tree (in particular when an error was raised during parsing XML). | |
| - bpo-35348: Make :func:`platform.architecture` parsing of ``file`` command | |
| output more reliable: add the ``-b`` option to the ``file`` command to | |
| omit the filename, force the usage of the C locale, and search also the | |
| "shared object" pattern. | |
| - bpo-35491: :mod:`multiprocessing`: Add ``Pool.__repr__()`` and enhance | |
| ``BaseProcess.__repr__()`` (add pid and parent pid) to ease debugging. | |
| Pool state constant values are now strings instead of integers, for | |
| example ``RUN`` value becomes ``'RUN'`` instead of ``0``. | |
| - bpo-35477: :meth:`multiprocessing.Pool.__enter__` now fails if the pool is | |
| not running: ``with pool:`` fails if used more than once. | |
| - bpo-31446: Copy command line that was passed to CreateProcessW since this | |
| function can change the content of the input buffer. | |
| - bpo-35471: Python 2.4 dropped MacOS 9 support. The macpath module was | |
| deprecated in Python 3.7. The module is now removed. | |
| - bpo-23057: Unblock Proactor event loop when keyboard interrupt is received | |
| on Windows | |
| - bpo-35052: Fix xml.dom.minidom cloneNode() on a document with an entity: | |
| pass the correct arguments to the user data handler of an entity. | |
| - bpo-20239: Allow repeated assignment deletion of | |
| :class:`unittest.mock.Mock` attributes. Patch by Pablo Galindo. | |
| - bpo-17185: Set ``__signature__`` on mock for :mod:`inspect` to get | |
| signature. Patch by Karthikeyan Singaravelan. | |
| - bpo-35445: Memory errors during creating posix.environ no longer ignored. | |
| - bpo-35415: Validate fileno= argument to socket.socket(). | |
| - bpo-35424: :class:`multiprocessing.Pool` destructor now emits | |
| :exc:`ResourceWarning` if the pool is still running. | |
| - bpo-35330: When a :class:`Mock` instance was used to wrap an object, if | |
| `side_effect` is used in one of the mocks of it methods, don't call the | |
| original implementation and return the result of using the side effect the | |
| same way that it is done with return_value. | |
| - bpo-35346: Drop Mac OS 9 and Rhapsody support from the :mod:`platform` | |
| module. Rhapsody last release was in 2000. Mac OS 9 last release was in | |
| 2001. | |
| - bpo-10496: :func:`~distutils.utils.check_environ` of | |
| :mod:`distutils.utils` now catches :exc:`KeyError` on calling | |
| :func:`pwd.getpwuid`: don't create the ``HOME`` environment variable in | |
| this case. | |
| - bpo-10496: :func:`posixpath.expanduser` now returns the input *path* | |
| unchanged if the ``HOME`` environment variable is not set and the current | |
| user has no home directory (if the current user identifier doesn't exist | |
| in the password database). This change fix the :mod:`site` module if the | |
| current user doesn't exist in the password database (if the user has no | |
| home directory). | |
| - bpo-35389: :func:`platform.libc_ver` now uses | |
| ``os.confstr('CS_GNU_LIBC_VERSION')`` if available and the *executable* | |
| parameter is not set. | |
| - bpo-35394: Add empty slots to asyncio abstract protocols. | |
| - bpo-35310: Fix a bug in :func:`select.select` where, in some cases, the | |
| file descriptor sequences were returned unmodified after a signal | |
| interruption, even though the file descriptors might not be ready yet. | |
| :func:`select.select` will now always return empty lists if a timeout has | |
| occurred. Patch by Oran Avraham. | |
| - bpo-35380: Enable TCP_NODELAY on Windows for proactor asyncio event loop. | |
| - bpo-35341: Add generic version of ``collections.OrderedDict`` to the | |
| ``typing`` module. Patch by Ismo Toijala. | |
| - bpo-35371: Fixed possible crash in ``os.utime()`` on Windows when pass | |
| incorrect arguments. | |
| - bpo-35346: :func:`platform.uname` now redirects ``stderr`` to | |
| :data:`os.devnull` when running external programs like ``cmd /c ver``. | |
| - bpo-35066: Previously, calling the strftime() method on a datetime object | |
| with a trailing '%' in the format string would result in an exception. | |
| However, this only occurred when the datetime C module was being used; the | |
| python implementation did not match this behavior. Datetime is now PEP-399 | |
| compliant, and will not throw an exception on a trailing '%'. | |
| - bpo-35345: The function `platform.popen` has been removed, it was | |
| deprecated since Python 3.3: use :func:`os.popen` instead. | |
| - bpo-35344: On macOS, :func:`platform.platform` now uses | |
| :func:`platform.mac_ver`, if it returns a non-empty release string, to get | |
| the macOS version rather than the darwin version. | |
| - bpo-35312: Make ``lib2to3.pgen2.parse.ParseError`` round-trip pickle-able. | |
| Patch by Anthony Sottile. | |
| - bpo-35308: Fix regression in ``webbrowser`` where default browsers may be | |
| preferred over browsers in the ``BROWSER`` environment variable. | |
| - bpo-24746: Avoid stripping trailing whitespace in doctest fancy diff. | |
| Original patch by R. David Murray & Jairo Trad. Enhanced by Sanyam | |
| Khurana. | |
| - bpo-28604: :func:`locale.localeconv` now sets temporarily the ``LC_CTYPE`` | |
| locale to the ``LC_MONETARY`` locale if the two locales are different and | |
| monetary strings are non-ASCII. This temporary change affects other | |
| threads. | |
| - bpo-35277: Update ensurepip to install pip 18.1 and setuptools 40.6.2. | |
| - bpo-24209: Adds IPv6 support when invoking http.server directly. | |
| - bpo-35226: Recursively check arguments when testing for equality of | |
| :class:`unittest.mock.call` objects and add note that tracking of | |
| parameters used to create ancestors of mocks in ``mock_calls`` is not | |
| possible. | |
| - bpo-29564: The warnings module now suggests to enable tracemalloc if the | |
| source is specified, the tracemalloc module is available, but tracemalloc | |
| is not tracing memory allocations. | |
| - bpo-35189: Modify the following fnctl function to retry if interrupted by | |
| a signal (EINTR): flock, lockf, fnctl | |
| - bpo-30064: Use add_done_callback() in sock_* asyncio API to unsubscribe | |
| reader/writer early on calcellation. | |
| - bpo-35186: Removed the "built with" comment added when ``setup.py upload`` | |
| is used with either ``bdist_rpm`` or ``bdist_dumb``. | |
| - bpo-35152: Allow sending more than 2 GB at once on a multiprocessing | |
| connection on non-Windows systems. | |
| - bpo-35062: Fix incorrect parsing of | |
| :class:`_io.IncrementalNewlineDecoder`'s *translate* argument. | |
| - bpo-35065: Remove `StreamReaderProtocol._untrack_reader`. The call to | |
| `_untrack_reader` is currently performed too soon, causing the protocol to | |
| forget about the reader before `connection_lost` can run and feed the EOF | |
| to the reader. | |
| - bpo-34160: ElementTree and minidom now preserve the attribute order | |
| specified by the user. | |
| - bpo-35079: Improve difflib.SequenceManager.get_matching_blocks doc by | |
| adding 'non-overlapping' and changing '!=' to '<'. | |
| - bpo-33710: Deprecated ``l*gettext()`` functions and methods in the | |
| :mod:`gettext` module. They return encoded bytes instead of Unicode | |
| strings and are artifacts from Python 2 times. Also deprecated functions | |
| and methods related to setting the charset for ``l*gettext()`` functions | |
| and methods. | |
| - bpo-35017: :meth:`socketserver.BaseServer.serve_forever` now exits | |
| immediately if it's :meth:`~socketserver.BaseServer.shutdown` method is | |
| called while it is polling for new events. | |
| - bpo-35024: `importlib` no longer logs `wrote <bytecode path>` redundantly | |
| after `(created|could not create) <bytecode path>` is already logged. | |
| Patch by Quentin Agren. | |
| - bpo-35047: ``unittest.mock`` now includes mock calls in exception messages | |
| if ``assert_not_called``, ``assert_called_once``, or | |
| ``assert_called_once_with`` fails. Patch by Petter Strandmark. | |
| - bpo-31047: Fix ``ntpath.abspath`` regression where it didn't remove a | |
| trailing separator on Windows. Patch by Tim Graham. | |
| - bpo-35053: tracemalloc now tries to update the traceback when an object is | |
| reused from a "free list" (optimization for faster object creation, used | |
| by the builtin list type for example). | |
| - bpo-31553: Add the --json-lines option to json.tool. Patch by hongweipeng. | |
| - bpo-34794: Fixed a leak in Tkinter when pass the Python wrapper around | |
| Tcl_Obj back to Tcl/Tk. | |
| - bpo-34909: Enum: fix grandchildren subclassing when parent mixed with | |
| concrete data types. | |
| - bpo-35022: :class:`unittest.mock.MagicMock` now supports the | |
| ``__fspath__`` method (from :class:`os.PathLike`). | |
| - bpo-35008: Fixed references leaks when call the ``__setstate__()`` method | |
| of :class:`xml.etree.ElementTree.Element` in the C implementation for | |
| already initialized element. | |
| - bpo-23420: Verify the value for the parameter '-s' of the cProfile CLI. | |
| Patch by Robert Kuska | |
| - bpo-33947: dataclasses now handle recursive reprs without raising | |
| RecursionError. | |
| - bpo-34890: Make :func:`inspect.iscoroutinefunction`, | |
| :func:`inspect.isgeneratorfunction` and :func:`inspect.isasyncgenfunction` | |
| work with :func:`functools.partial`. Patch by Pablo Galindo. | |
| - bpo-34521: Use :func:`socket.CMSG_SPACE` to calculate ancillary data size | |
| instead of :func:`socket.CMSG_LEN` in | |
| :func:`multiprocessing.reduction.recvfds` as :rfc:`3542` requires the use | |
| of the former for portable applications. | |
| - bpo-31522: The `mailbox.mbox.get_string` function *from_* parameter can | |
| now successfully be set to a non-default value. | |
| - bpo-34970: Protect tasks weak set manipulation in ``asyncio.all_tasks()`` | |
| - bpo-34969: gzip: Add --fast, --best on the gzip CLI, these parameters will | |
| be used for the fast compression method (quick) or the best method | |
| compress (slower, but smaller file). Also, change the default compression | |
| level to 6 (tradeoff). | |
| - bpo-16965: The :term:`2to3` :2to3fixer:`execfile` fixer now opens the file | |
| with mode ``'rb'``. Patch by Zackery Spytz. | |
| - bpo-34966: :mod:`pydoc` now supports aliases not only to methods defined | |
| in the end class, but also to inherited methods. The docstring is not | |
| duplicated for aliases. | |
| - bpo-34926: :meth:`mimetypes.MimeTypes.guess_type` now accepts | |
| :term:`path-like object` in addition to url strings. Patch by Mayank | |
| Asthana. | |
| - bpo-23831: Add ``moveto()`` method to the ``tkinter.Canvas`` widget. Patch | |
| by Juliette Monsel. | |
| - bpo-34941: Methods ``find()``, ``findtext()`` and ``findall()`` of the | |
| ``Element`` class in the :mod:`xml.etree.ElementTree` module are now able | |
| to find children which are instances of ``Element`` subclasses. | |
| - bpo-32680: :class:`smtplib.SMTP` objects now always have a `sock` | |
| attribute present | |
| - bpo-34769: Fix for async generators not finalizing when event loop is in | |
| debug mode and garbage collector runs in another thread. | |
| - bpo-34936: Fix ``TclError`` in ``tkinter.Spinbox.selection_element()``. | |
| Patch by Juliette Monsel. | |
| - bpo-34829: Add methods ``selection_from``, ``selection_range``, | |
| ``selection_present`` and ``selection_to`` to the ``tkinter.Spinbox`` for | |
| consistency with the ``tkinter.Entry`` widget. Patch by Juliette Monsel. | |
| - bpo-34911: Added *secure_protocols* argument to | |
| *http.cookiejar.DefaultCookiePolicy* to allow for tweaking of protocols | |
| and also to add support by default for *wss*, the secure websocket | |
| protocol. | |
| - bpo-34922: Fixed integer overflow in the :meth:`~hashlib.shake.digest()` | |
| and :meth:`~hashlib.shake.hexdigest()` methods for the SHAKE algorithm in | |
| the :mod:`hashlib` module. | |
| - bpo-34925: 25% speedup in argument parsing for the functions in the bisect | |
| module. | |
| - bpo-34900: Fixed :meth:`unittest.TestCase.debug` when used to call test | |
| methods with subtests. Patch by Bruno Oliveira. | |
| - bpo-34844: logging.Formatter enhancement - Ensure styles and fmt matches | |
| in logging.Formatter - Added validate method in each format style class: | |
| StrFormatStyle, PercentStyle, StringTemplateStyle. - This method is called | |
| in the constructor of logging.Formatter class - Also re-raise the KeyError | |
| in the format method of each style class, so it would a bit clear that | |
| it's an error with the invalid format fields. | |
| - bpo-34897: Adjust test.support.missing_compiler_executable check so that a | |
| nominal command name of "" is ignored. Patch by Michael Felt. | |
| - bpo-34871: Fix inspect module polluted ``sys.modules`` when parsing | |
| ``__text_signature__`` of callable. | |
| - bpo-34898: Add `mtime` argument to `gzip.compress` for reproducible | |
| output. Patch by Guo Ci Teo. | |
| - bpo-28441: On Cygwin and MinGW, ensure that ``sys.executable`` always | |
| includes the full filename in the path, including the ``.exe`` suffix | |
| (unless it is a symbolic link). | |
| - bpo-34866: Adding ``max_num_fields`` to ``cgi.FieldStorage`` to make DOS | |
| attacks harder by limiting the number of ``MiniFieldStorage`` objects | |
| created by ``FieldStorage``. | |
| - bpo-34711: http.server ensures it reports HTTPStatus.NOT_FOUND when the | |
| local path ends with "/" and is not a directory, even if the underlying OS | |
| (e.g. AIX) accepts such paths as a valid file reference. Patch by Michael | |
| Felt. | |
| - bpo-34872: Fix self-cancellation in C implementation of asyncio.Task | |
| - bpo-34849: Don't log waiting for ``selector.select`` in asyncio loop | |
| iteration. The waiting is pretty normal for any asyncio program, logging | |
| its time just adds a noise to logs without any useful information | |
| provided. | |
| - bpo-34022: The :envvar:`SOURCE_DATE_EPOCH` environment variable no longer | |
| overrides the value of the *invalidation_mode* argument to | |
| :func:`py_compile.compile`, and determines its default value instead. | |
| - bpo-34819: Use a monotonic clock to compute timeouts in | |
| :meth:`Executor.map` and :func:`as_completed`, in order to prevent | |
| timeouts from deviating when the system clock is adjusted. | |
| - bpo-34758: Add .wasm -> application/wasm to list of recognized file types | |
| and content type headers | |
| - bpo-34789: :func:`xml.sax.make_parser` now accepts any iterable as its | |
| *parser_list* argument. Patch by Andrés Delfino. | |
| - bpo-34334: In :class:`QueueHandler`, clear `exc_text` from | |
| :class:`LogRecord` to prevent traceback from being written twice. | |
| - bpo-34687: On Windows, asyncio now uses ProactorEventLoop, instead of | |
| SelectorEventLoop, by default. | |
| - bpo-5950: Support reading zip files with archive comments in | |
| :mod:`zipimport`. | |
| - bpo-32892: The parser now represents all constants as | |
| :class:`ast.Constant` instead of using specific constant AST types | |
| (``Num``, ``Str``, ``Bytes``, ``NameConstant`` and ``Ellipsis``). These | |
| classes are considered deprecated and will be removed in future Python | |
| versions. | |
| - bpo-34728: Add deprecation warning when `loop` is used in methods: | |
| `asyncio.sleep`, `asyncio.wait` and `asyncio.wait_for`. | |
| - bpo-34738: ZIP files created by :mod:`distutils` will now include entries | |
| for directories. | |
| - bpo-34659: Add an optional *initial* argument to itertools.accumulate(). | |
| - bpo-29577: Support multiple mixin classes when creating Enums. | |
| - bpo-34670: Add SSLContext.post_handshake_auth and | |
| SSLSocket.verify_client_post_handshake for TLS 1.3's post handshake | |
| authentication feature. | |
| - bpo-32718: The Activate.ps1 script from venv works with PowerShell Core | |
| 6.1 and is now available under all operating systems. | |
| - bpo-31177: Fix bug that prevented using :meth:`reset_mock | |
| <unittest.mock.Mock.reset_mock>` on mock instances with deleted attributes | |
| - bpo-34672: Add a workaround, so the ``'Z'`` :func:`time.strftime` | |
| specifier on the musl C library can work in some cases. | |
| - bpo-34666: Implement ``asyncio.StreamWriter.awrite`` and | |
| ``asyncio.StreamWriter.aclose()`` coroutines. Methods are needed for | |
| providing a consistent stream API with control flow switched on by | |
| default. | |
| - bpo-6721: Acquire the logging module's commonly used internal locks while | |
| fork()ing to avoid deadlocks in the child process. | |
| - bpo-34658: Fix a rare interpreter unhandled exception state SystemError | |
| only seen when using subprocess with a preexec_fn while an after_parent | |
| handler has been registered with os.register_at_fork and the fork system | |
| call fails. | |
| - bpo-34652: Ensure :func:`os.lchmod` is never defined on Linux. | |
| - bpo-34638: Store a weak reference to stream reader to break strong | |
| references loop between reader and protocol. It allows to detect and | |
| close the socket if the stream is deleted (garbage collected) without | |
| ``close()`` call. | |
| - bpo-34536: `Enum._missing_`: raise `ValueError` if None returned and | |
| `TypeError` if non-member is returned. | |
| - bpo-34636: Speed up re scanning of many non-matching characters for \s \w | |
| and \d within bytes objects. (microoptimization) | |
| - bpo-24412: Add :func:`~unittest.addModuleCleanup()` and | |
| :meth:`~unittest.TestCase.addClassCleanup()` to unittest to support | |
| cleanups for :func:`~unittest.setUpModule()` and | |
| :meth:`~unittest.TestCase.setUpClass()`. Patch by Lisa Roach. | |
| - bpo-34630: Don't log SSL certificate errors in asyncio code (connection | |
| error logging is skipped already). | |
| - bpo-32490: Prevent filename duplication in :mod:`subprocess` exception | |
| messages. Patch by Zackery Spytz. | |
| - bpo-34363: dataclasses.asdict() and .astuple() now handle namedtuples | |
| correctly. | |
| - bpo-34625: Update vendorized expat library version to 2.2.6. | |
| - bpo-32270: The subprocess module no longer mistakenly closes redirected | |
| fds even when they were in pass_fds when outside of the default {0, 1, 2} | |
| set. | |
| - bpo-34622: Create a dedicated ``asyncio.CancelledError``, | |
| ``asyncio.InvalidStateError`` and ``asyncio.TimeoutError`` exception | |
| classes. Inherit them from corresponding exceptions from | |
| ``concurrent.futures`` package. Extract ``asyncio`` exceptions into a | |
| separate file. | |
| - bpo-34610: Fixed iterator of :class:`multiprocessing.managers.DictProxy`. | |
| - bpo-34421: Fix distutils logging for non-ASCII strings. This caused | |
| installation issues on Windows. | |
| - bpo-34604: Fix possible mojibake in the error message of `pwd.getpwnam` | |
| and `grp.getgrnam` using string representation because of invisible | |
| characters or trailing whitespaces. Patch by William Grzybowski. | |
| - bpo-30977: Make uuid.UUID use ``__slots__`` to reduce its memory | |
| footprint. Based on original patch by Wouter Bolsterlee. | |
| - bpo-34574: OrderedDict iterators are not exhausted during pickling | |
| anymore. Patch by Sergey Fedoseev. | |
| - bpo-8110: Refactored :mod:`subprocess` to check for Windows-specific | |
| modules rather than ``sys.platform == 'win32'``. | |
| - bpo-34530: ``distutils.spawn.find_executable()`` now falls back on | |
| :data:`os.defpath` if the ``PATH`` environment variable is not set. | |
| - bpo-34563: On Windows, fix multiprocessing.Connection for very large read: | |
| fix _winapi.PeekNamedPipe() and _winapi.ReadFile() for read larger than | |
| INT_MAX (usually ``2**31-1``). | |
| - bpo-34558: Correct typo in Lib/ctypes/_aix.py | |
| - bpo-34282: Move ``Enum._convert`` to ``EnumMeta._convert_`` and fix enum | |
| members getting shadowed by parent attributes. | |
| - bpo-22872: When the queue is closed, :exc:`ValueError` is now raised by | |
| :meth:`multiprocessing.Queue.put` and :meth:`multiprocessing.Queue.get` | |
| instead of :exc:`AssertionError` and :exc:`OSError`, respectively. Patch | |
| by Zackery Spytz. | |
| - bpo-34515: Fix parsing non-ASCII identifiers in | |
| :mod:`lib2to3.pgen2.tokenize` (PEP 3131). | |
| - bpo-13312: Avoids a possible integer underflow (undefined behavior) in the | |
| time module's year handling code when passed a very low negative year | |
| value. | |
| - bpo-34472: Improved compatibility for streamed files in :mod:`zipfile`. | |
| Previously an optional signature was not being written and certain ZIP | |
| applications were not supported. Patch by Silas Sewell. | |
| - bpo-34454: Fix the .fromisoformat() methods of datetime types crashing | |
| when given unicode with non-UTF-8-encodable code points. Specifically, | |
| datetime.fromisoformat() now accepts surrogate unicode code points used as | |
| the separator. Report and tests by Alexey Izbyshev, patch by Paul Ganssle. | |
| - bpo-6700: Fix inspect.getsourcelines for module level frames/tracebacks. | |
| Patch by Vladimir Matveev. | |
| - bpo-34171: Running the :mod:`trace` module no longer creates the | |
| ``trace.cover`` file. | |
| - bpo-34441: Fix crash when an ``ABC``-derived class with invalid | |
| ``__subclasses__`` is passed as the second argument to | |
| :func:`issubclass()`. Patch by Alexey Izbyshev. | |
| - bpo-34427: Fix infinite loop in ``a.extend(a)`` for ``MutableSequence`` | |
| subclasses. | |
| - bpo-34412: Make :func:`signal.strsignal` work on HP-UX. Patch by Michael | |
| Osipov. | |
| - bpo-20849: shutil.copytree now accepts a new ``dirs_exist_ok`` keyword | |
| argument. Patch by Josh Bronson. | |
| - bpo-31715: Associate ``.mjs`` file extension with | |
| ``application/javascript`` MIME Type. | |
| - bpo-34384: :func:`os.readlink` now accepts :term:`path-like <path-like | |
| object>` and :class:`bytes` objects on Windows. | |
| - bpo-22602: The UTF-7 decoder now raises :exc:`UnicodeDecodeError` for | |
| ill-formed sequences starting with "+" (as specified in RFC 2152). Patch | |
| by Zackery Spytz. | |
| - bpo-2122: The :meth:`mmap.flush() <mmap.mmap.flush>` method now returns | |
| ``None`` on success, raises an exception on error under all platforms. | |
| - bpo-34341: Appending to the ZIP archive with the ZIP64 extension no longer | |
| grows the size of extra fields of existing entries. | |
| - bpo-34333: Fix %-formatting in :meth:`pathlib.PurePath.with_suffix` when | |
| formatting an error message. | |
| - bpo-18540: The :class:`imaplib.IMAP4` and :class:`imaplib.IMAP4_SSL` | |
| classes now resolve to the local host IP correctly when the default value | |
| of *host* parameter (``''``) is used. | |
| - bpo-26502: Implement ``traceback.FrameSummary.__len__()`` method to | |
| preserve compatibility with the old tuple API. | |
| - bpo-34318: :func:`~unittest.TestCase.assertRaises`, | |
| :func:`~unittest.TestCase.assertRaisesRegex`, | |
| :func:`~unittest.TestCase.assertWarns` and | |
| :func:`~unittest.TestCase.assertWarnsRegex` no longer success if the | |
| passed callable is None. They no longer ignore unknown keyword arguments | |
| in the context manager mode. A DeprecationWarning was raised in these | |
| cases since Python 3.5. | |
| - bpo-9372: Deprecate :meth:`__getitem__` methods of | |
| :class:`xml.dom.pulldom.DOMEventStream`, :class:`wsgiref.util.FileWrapper` | |
| and :class:`fileinput.FileInput`. | |
| - bpo-33613: Fix a race condition in ``multiprocessing.semaphore_tracker`` | |
| when the tracker receives SIGINT before it can register signal handlers | |
| for ignoring it. | |
| - bpo-34248: Report filename in the exception raised when the database file | |
| cannot be opened by :func:`dbm.gnu.open` and :func:`dbm.ndbm.open` due to | |
| OS-related error. Patch by Zsolt Cserna. | |
| - bpo-33089: Add math.dist() to compute the Euclidean distance between two | |
| points. | |
| - bpo-34246: :meth:`smtplib.SMTP.send_message` no longer modifies the | |
| content of the *mail_options* argument. Patch by Pablo S. Blum de Aguiar. | |
| - bpo-31047: Fix ``ntpath.abspath`` for invalid paths on windows. Patch by | |
| Franz Woellert. | |
| - bpo-32321: Add pure Python fallback for functools.reduce. Patch by Robert | |
| Wright. | |
| - bpo-34270: The default asyncio task class now always has a name which can | |
| be get or set using two new methods (:meth:`~asyncio.Task.get_name()` and | |
| :meth:`~asyncio.Task.set_name`) and is visible in the :func:`repr` output. | |
| An initial name can also be set using the new ``name`` keyword argument to | |
| :func:`asyncio.create_task` or the | |
| :meth:`~asyncio.AbstractEventLoop.create_task` method of the event loop. | |
| If no initial name is set, the default Task implementation generates a | |
| name like ``Task-1`` using a monotonic counter. | |
| - bpo-34263: asyncio's event loop will not pass timeouts longer than one day | |
| to epoll/select etc. | |
| - bpo-34035: Fix several AttributeError in zipfile seek() methods. Patch by | |
| Mickaël Schoentgen. | |
| - bpo-32215: Fix performance regression in :mod:`sqlite3` when a DML | |
| statement appeared in a different line than the rest of the SQL query. | |
| - bpo-34075: Deprecate passing non-ThreadPoolExecutor instances to | |
| :meth:`AbstractEventLoop.set_default_executor`. | |
| - bpo-34251: Restore ``msilib.Win64`` to preserve backwards compatibility | |
| since it's already used by :mod:`distutils`' ``bdist_msi`` command. | |
| - bpo-19891: Ignore errors caused by missing / non-writable homedir while | |
| writing history during exit of an interactive session. Patch by Anthony | |
| Sottile. | |
| - bpo-33089: Enhanced math.hypot() to support more than two dimensions. | |
| - bpo-34228: tracemalloc: PYTHONTRACEMALLOC=0 environment variable and -X | |
| tracemalloc=0 command line option are now allowed to disable explicitly | |
| tracemalloc at startup. | |
| - bpo-13041: Use :func:`shutil.get_terminal_size` to calculate the terminal | |
| width correctly in the ``argparse.HelpFormatter`` class. Initial patch by | |
| Zbyszek Jędrzejewski-Szmek. | |
| - bpo-34213: Allow frozen dataclasses to have a field named "object". | |
| Previously this conflicted with an internal use of "object". | |
| - bpo-34052: :meth:`sqlite3.Connection.create_aggregate`, | |
| :meth:`sqlite3.Connection.create_function`, | |
| :meth:`sqlite3.Connection.set_authorizer`, | |
| :meth:`sqlite3.Connection.set_progress_handler` methods raises TypeError | |
| when unhashable objects are passed as callable. These methods now don't | |
| pass such objects to SQLite API. Previous behavior could lead to | |
| segfaults. Patch by Sergey Fedoseev. | |
| - bpo-34197: Attributes *skipinitialspace*, *doublequote* and *strict* of | |
| the *dialect* attribute of the :mod:`csv` reader are now :class:`bool` | |
| instances instead of integers 0 or 1. | |
| - bpo-32788: Errors other than :exc:`TypeError` raised in methods | |
| ``__adapt__()`` and ``__conform__()`` in the :mod:`sqlite3` module are now | |
| propagated to the user. | |
| - bpo-21446: The :2to3fixer:`reload` fixer now uses :func:`importlib.reload` | |
| instead of deprecated :func:`imp.reload`. | |
| - bpo-940286: pydoc's ``Helper.showtopic()`` method now prints the cross | |
| references of a topic correctly. | |
| - bpo-34164: :func:`base64.b32decode` could raise UnboundLocalError or | |
| OverflowError for incorrect padding. Now it always raises | |
| :exc:`base64.Error` in these cases. | |
| - bpo-33729: Fixed issues with arguments parsing in :mod:`hashlib`. | |
| - bpo-34097: ZipFile can zip files older than 1980-01-01 and newer than | |
| 2107-12-31 using a new ``strict_timestamps`` parameter at the cost of | |
| setting the timestamp to the limit. | |
| - bpo-34108: Remove extraneous CR in 2to3 refactor. | |
| - bpo-34070: Make sure to only check if the handle is a tty, when opening a | |
| file with ``buffering=-1``. | |
| - bpo-27494: Reverted :issue:`27494`. 2to3 rejects now a trailing comma in | |
| generator expressions. | |
| - bpo-33967: functools.singledispatch now raises TypeError instead of | |
| IndexError when no positional arguments are passed. | |
| - bpo-34041: Add the parameter *deterministic* to the | |
| :meth:`sqlite3.Connection.create_function` method. Patch by Sergey | |
| Fedoseev. | |
| - bpo-34056: Ensure the loader shim created by ``imp.load_module`` always | |
| returns bytes from its ``get_data()`` function. This fixes using | |
| ``imp.load_module`` with :pep:`552` hash-based pycs. | |
| - bpo-34054: The multiprocessing module now uses the monotonic clock | |
| :func:`time.monotonic` instead of the system clock :func:`time.time` to | |
| implement timeout. | |
| - bpo-34043: Optimize tarfile uncompress performance about 15% when gzip is | |
| used. | |
| - bpo-34044: ``subprocess.Popen`` now copies the *startupinfo* argument to | |
| leave it unchanged: it will modify the copy, so that the same | |
| ``STARTUPINFO`` object can be used multiple times. | |
| - bpo-34010: Fixed a performance regression for reading streams with | |
| tarfile. The buffered read should use a list, instead of appending to a | |
| bytes object. | |
| - bpo-34019: webbrowser: Correct the arguments passed to Opera Browser when | |
| opening a new URL using the ``webbrowser`` module. Patch by Bumsik Kim. | |
| - bpo-34003: csv.DictReader now creates dicts instead of OrderedDicts. Patch | |
| by Michael Selik. | |
| - bpo-33978: Closed existing logging handlers before reconfiguration via | |
| fileConfig and dictConfig. Patch by Karthikeyan Singaravelan. | |
| - bpo-14117: Make minor tweaks to turtledemo. The 'wikipedia' example is now | |
| 'rosette', describing what it draws. The 'penrose' print output is | |
| reduced. The'1024' output of 'tree' is eliminated. | |
| - bpo-33974: Fixed passing lists and tuples of strings containing special | |
| characters ``"``, ``\``, ``{``, ``}`` and ``\n`` as options to | |
| :mod:`~tkinter.ttk` widgets. | |
| - bpo-27500: Fix getaddrinfo to resolve IPv6 addresses correctly. | |
| - bpo-24567: Improve random.choices() to handle subnormal input weights that | |
| could occasionally trigger an IndexError. | |
| - bpo-33871: Fixed integer overflow in :func:`os.readv`, :func:`os.writev`, | |
| :func:`os.preadv` and :func:`os.pwritev` and in :func:`os.sendfile` with | |
| *headers* or *trailers* arguments (on BSD-based OSes and macOS). | |
| - bpo-25007: Add :func:`copy.copy` and :func:`copy.deepcopy` support to zlib | |
| compressors and decompressors. Patch by Zackery Spytz. | |
| - bpo-33929: multiprocessing: Fix a race condition in Popen of | |
| multiprocessing.popen_spawn_win32. The child process now duplicates the | |
| read end of pipe instead of "stealing" it. Previously, the read end of | |
| pipe was "stolen" by the child process, but it leaked a handle if the | |
| child process had been terminated before it could steal the handle from | |
| the parent process. | |
| - bpo-33899: Tokenize module now implicitly emits a NEWLINE when provided | |
| with input that does not have a trailing new line. This behavior now | |
| matches what the C tokenizer does internally. Contributed by Ammar Askar. | |
| - bpo-33897: Added a 'force' keyword argument to logging.basicConfig(). | |
| - bpo-33695: :func:`shutil.copytree` uses :func:`os.scandir` function and | |
| all copy functions depending from it use cached :func:`os.stat` values. | |
| The speedup for copying a directory with 8000 files is around +9% on | |
| Linux, +20% on Windows and + 30% on a Windows SMB share. Also the number | |
| of :func:`os.stat` syscalls is reduced by 38% making | |
| :func:`shutil.copytree` especially faster on network filesystems. | |
| (Contributed by Giampaolo Rodola' in :issue:`33695`.) | |
| - bpo-33916: bz2 and lzma: When Decompressor.__init__() is called twice, | |
| free the old lock to not leak memory. | |
| - bpo-32568: Make select.epoll() and its documentation consistent regarding | |
| *sizehint* and *flags*. | |
| - bpo-33833: Fixed bug in asyncio where ProactorSocketTransport logs | |
| AssertionError if force closed during write. | |
| - bpo-33663: Convert content length to string before putting to header. | |
| - bpo-33721: :mod:`os.path` functions that return a boolean result like | |
| :func:`~os.path.exists`, :func:`~os.path.lexists`, :func:`~os.path.isdir`, | |
| :func:`~os.path.isfile`, :func:`~os.path.islink`, and | |
| :func:`~os.path.ismount`, and :mod:`pathlib.Path` methods that return a | |
| boolean result like :meth:`~pathlib.Path.exists()`, | |
| :meth:`~pathlib.Path.is_dir()`, :meth:`~pathlib.Path.is_file()`, | |
| :meth:`~pathlib.Path.is_mount()`, :meth:`~pathlib.Path.is_symlink()`, | |
| :meth:`~pathlib.Path.is_block_device()`, | |
| :meth:`~pathlib.Path.is_char_device()`, :meth:`~pathlib.Path.is_fifo()`, | |
| :meth:`~pathlib.Path.is_socket()` now return ``False`` instead of raising | |
| :exc:`ValueError` or its subclasses :exc:`UnicodeEncodeError` and | |
| :exc:`UnicodeDecodeError` for paths that contain characters or bytes | |
| unrepresentable at the OS level. | |
| - bpo-26544: Fixed implementation of :func:`platform.libc_ver`. It almost | |
| always returned version '2.9' for glibc. | |
| - bpo-33843: Remove deprecated ``cgi.escape``, ``cgi.parse_qs`` and | |
| ``cgi.parse_qsl``. | |
| - bpo-33842: Remove ``tarfile.filemode`` which is deprecated since Python | |
| 3.3. | |
| - bpo-30167: Prevent site.main() exception if PYTHONSTARTUP is set. Patch by | |
| Steve Weber. | |
| - bpo-33805: Improve error message of dataclasses.replace() when an InitVar | |
| is not specified | |
| - bpo-33687: Fix the call to ``os.chmod()`` for ``uu.decode()`` if a mode is | |
| given or decoded. Patch by Timo Furrer. | |
| - bpo-33812: Datetime instance d with non-None tzinfo, but with | |
| d.tzinfo.utcoffset(d) returning None is now treated as naive by the | |
| astimezone() method. | |
| - bpo-32108: In configparser, don't clear section when it is assigned to | |
| itself. | |
| - bpo-27397: Make email module properly handle invalid-length base64 | |
| strings. | |
| - bpo-33578: Implement multibyte encoder/decoder state methods | |
| - bpo-30805: Avoid race condition with debug logging | |
| - bpo-33476: Fix _header_value_parser.py when address group is missing final | |
| ';'. Contributed by Enrique Perez-Terron | |
| - bpo-33694: asyncio: Fix a race condition causing data loss on | |
| pause_reading()/resume_reading() when using the ProactorEventLoop. | |
| - bpo-32493: Correct test for ``uuid_enc_be`` availability in | |
| ``configure.ac``. Patch by Michael Felt. | |
| - bpo-33792: Add asyncio.WindowsSelectorEventLoopPolicy and | |
| asyncio.WindowsProactorEventLoopPolicy. | |
| - bpo-33274: W3C DOM Level 1 specifies return value of | |
| Element.removeAttributeNode() as "The Attr node that was removed." | |
| xml.dom.minidom now complies with this requirement. | |
| - bpo-33778: Update ``unicodedata``'s database to Unicode version 11.0.0. | |
| - bpo-33165: Added a stacklevel parameter to logging calls to allow use of | |
| wrapper/helper functions for logging APIs. | |
| - bpo-33770: improve base64 exception message for encoded inputs of invalid | |
| length | |
| - bpo-33769: asyncio/start_tls: Fix error message; cancel callbacks in case | |
| of an unhandled error; mark SSLTransport as closed if it is aborted. | |
| - bpo-33767: The concatenation (``+``) and repetition (``*``) sequence | |
| operations now raise :exc:`TypeError` instead of :exc:`SystemError` when | |
| performed on :class:`mmap.mmap` objects. Patch by Zackery Spytz. | |
| - bpo-33734: asyncio/ssl: Fix AttributeError, increase default handshake | |
| timeout | |
| - bpo-31014: Fixed creating a controller for :mod:`webbrowser` when a user | |
| specifies a path to an entry in the BROWSER environment variable. Based | |
| on patch by John Still. | |
| - bpo-2504: Add gettext.pgettext() and variants. | |
| - bpo-33197: Add description property for _ParameterKind | |
| - bpo-32751: When cancelling the task due to a timeout, | |
| :meth:`asyncio.wait_for` will now wait until the cancellation is complete. | |
| - bpo-32684: Fix gather to propagate cancellation of itself even with | |
| return_exceptions. | |
| - bpo-33654: Support protocol type switching in SSLTransport.set_protocol(). | |
| - bpo-33674: Pause the transport as early as possible to further reduce the | |
| risk of data_received() being called before connection_made(). | |
| - bpo-33671: :func:`shutil.copyfile`, :func:`shutil.copy`, | |
| :func:`shutil.copy2`, :func:`shutil.copytree` and :func:`shutil.move` use | |
| platform-specific fast-copy syscalls on Linux and macOS in order to copy | |
| the file more efficiently. On Windows :func:`shutil.copyfile` uses a | |
| bigger default buffer size (1 MiB instead of 16 KiB) and a | |
| :func:`memoryview`-based variant of :func:`shutil.copyfileobj` is used. | |
| The speedup for copying a 512MiB file is about +26% on Linux, +50% on | |
| macOS and +40% on Windows. Also, much less CPU cycles are consumed. | |
| (Contributed by Giampaolo Rodola' in :issue:`25427`.) | |
| - bpo-33674: Fix a race condition in SSLProtocol.connection_made() of | |
| asyncio.sslproto: start immediately the handshake instead of using | |
| call_soon(). Previously, data_received() could be called before the | |
| handshake started, causing the handshake to hang or fail. | |
| - bpo-31647: Fixed bug where calling write_eof() on a | |
| _SelectorSocketTransport after it's already closed raises AttributeError. | |
| - bpo-32610: Make asyncio.all_tasks() return only pending tasks. | |
| - bpo-32410: Avoid blocking on file IO in sendfile fallback code | |
| - bpo-33469: Fix RuntimeError after closing loop that used run_in_executor | |
| - bpo-33672: Fix Task.__repr__ crash with Cython's bogus coroutines | |
| - bpo-33654: Fix transport.set_protocol() to support switching between | |
| asyncio.Protocol and asyncio.BufferedProtocol. Fix loop.start_tls() to | |
| work with asyncio.BufferedProtocols. | |
| - bpo-33652: Pickles of type variables and subscripted generics are now | |
| future-proof and compatible with older Python versions. | |
| - bpo-32493: Fixed :func:`uuid.uuid1` on FreeBSD. | |
| - bpo-33238: Add ``InvalidStateError`` to :mod:`concurrent.futures`. | |
| ``Future.set_result`` and ``Future.set_exception`` now raise | |
| ``InvalidStateError`` if the futures are not pending or running. Patch by | |
| Jason Haydaman. | |
| - bpo-33618: Finalize and document preliminary and experimental TLS 1.3 | |
| support with OpenSSL 1.1.1 | |
| - bpo-33625: Release GIL on `grp.getgrnam`, `grp.getgrgid`, `pwd.getpwnam` | |
| and `pwd.getpwuid` if reentrant variants of these functions are available. | |
| Patch by William Grzybowski. | |
| - bpo-33623: Fix possible SIGSGV when asyncio.Future is created in __del__ | |
| - bpo-11874: Use a better regex when breaking usage into wrappable parts. | |
| Avoids bogus assertion errors from custom metavar strings. | |
| - bpo-30877: Fixed a bug in the Python implementation of the JSON decoder | |
| that prevented the cache of parsed strings from clearing after finishing | |
| the decoding. Based on patch by c-fos. | |
| - bpo-33604: Remove HMAC default to md5 marked for removal in 3.8 (removal | |
| originally planned in 3.6, bump to 3.8 in PR 7062). | |
| - bpo-33582: Emit a deprecation warning for inspect.formatargspec | |
| - bpo-21145: Add ``functools.cached_property`` decorator, for computed | |
| properties cached for the life of the instance. | |
| - bpo-33570: Change TLS 1.3 cipher suite settings for compatibility with | |
| OpenSSL 1.1.1-pre6 and newer. OpenSSL 1.1.1 will have TLS 1.3 ciphers | |
| enabled by default. | |
| - bpo-28556: Do not simplify arguments to `typing.Union`. Now | |
| `Union[Manager, Employee]` is not simplified to `Employee` at runtime. | |
| Such simplification previously caused several bugs and limited | |
| possibilities for introspection. | |
| - bpo-12486: :func:`tokenize.generate_tokens` is now documented as a public | |
| API to tokenize unicode strings. It was previously present but | |
| undocumented. | |
| - bpo-33540: Add a new ``block_on_close`` class attribute to | |
| ``ForkingMixIn`` and ``ThreadingMixIn`` classes of :mod:`socketserver`. | |
| - bpo-33548: tempfile._candidate_tempdir_list should consider common TEMP | |
| locations | |
| - bpo-33109: argparse subparsers are once again not required by default, | |
| reverting the change in behavior introduced by bpo-26510 in 3.7.0a2. | |
| - bpo-33541: Remove unused private method ``_strptime.LocaleTime.__pad`` | |
| (a.k.a. ``_LocaleTime__pad``). | |
| - bpo-33536: dataclasses.make_dataclass now checks for invalid field names | |
| and duplicate fields. Also, added a check for invalid field | |
| specifications. | |
| - bpo-33542: Prevent ``uuid.get_node`` from using a DUID instead of a MAC on | |
| Windows. Patch by Zvi Effron | |
| - bpo-26819: Fix race condition with `ReadTransport.resume_reading` in | |
| Windows proactor event loop. | |
| - Fix failure in `typing.get_type_hints()` when ClassVar was provided as a | |
| string forward reference. | |
| - bpo-33516: :class:`unittest.mock.MagicMock` now supports the ``__round__`` | |
| magic method. | |
| - bpo-28612: Added support for Site Maps to urllib's ``RobotFileParser`` as | |
| :meth:`RobotFileParser.site_maps() | |
| <urllib.robotparser.RobotFileParser.site_maps>`. Patch by Lady Red, based | |
| on patch by Peter Wirtz. | |
| - bpo-28167: Remove platform.linux_distribution, which was deprecated since | |
| 3.5. | |
| - bpo-33504: Switch the default dictionary implementation for | |
| :mod:`configparser` from :class:`collections.OrderedDict` to the standard | |
| :class:`dict` type. | |
| - bpo-33505: Optimize asyncio.ensure_future() by reordering if checks: 1.17x | |
| faster. | |
| - bpo-33497: Add errors param to cgi.parse_multipart and make an encoding in | |
| FieldStorage use the given errors (needed for Twisted). Patch by Amber | |
| Brown. | |
| - bpo-29235: The :class:`cProfile.Profile` class can now be used as a | |
| context manager. Patch by Scott Sanderson. | |
| - bpo-33495: Change dataclasses.Fields repr to use the repr of each of its | |
| members, instead of str. This makes it more clear what each field | |
| actually represents. This is especially true for the 'type' member. | |
| - bpo-26103: Correct ``inspect.isdatadescriptor`` to look for ``__set__`` or | |
| ``__delete__``. Patch by Aaron Hall. | |
| - bpo-29209: Removed the ``doctype()`` method and the *html* parameter of | |
| the constructor of :class:`~xml.etree.ElementTree.XMLParser`. The | |
| ``doctype()`` method defined in a subclass will no longer be called. | |
| Deprecated methods ``getchildren()`` and ``getiterator()`` in the | |
| :mod:`~xml.etree.ElementTree` module emit now a :exc:`DeprecationWarning` | |
| instead of :exc:`PendingDeprecationWarning`. | |
| - bpo-33453: Fix dataclasses to work if using literal string type | |
| annotations or if using PEP 563 "Postponed Evaluation of Annotations". | |
| Only specific string prefixes are detected for both ClassVar ("ClassVar" | |
| and "typing.ClassVar") and InitVar ("InitVar" and "dataclasses.InitVar"). | |
| - bpo-28556: Minor fixes in typing module: add annotations to | |
| ``NamedTuple.__new__``, pass ``*args`` and ``**kwds`` in | |
| ``Generic.__new__``. Original PRs by Paulius Šarka and Chad Dombrova. | |
| - bpo-33365: Print the header values besides the header keys instead just | |
| the header keys if *debuglevel* is set to >0 in :mod:`http.client`. Patch | |
| by Marco Strigl. | |
| - bpo-20087: Updated alias mapping with glibc 2.27 supported locales. | |
| - bpo-33422: Fix trailing quotation marks getting deleted when looking up | |
| byte/string literals on pydoc. Patch by Andrés Delfino. | |
| - bpo-28167: The function ``platform.linux_distribution`` and | |
| ``platform.dist`` now trigger a ``DeprecationWarning`` and have been | |
| marked for removal in Python 3.8 | |
| - bpo-33281: Fix ctypes.util.find_library regression on macOS. | |
| - bpo-33311: Text and html output generated by cgitb does not display | |
| parentheses if the current call is done directly in the module. Patch by | |
| Stéphane Blondon. | |
| - bpo-27300: The file classes in *tempfile* now accept an *errors* parameter | |
| that complements the already existing *encoding*. Patch by Stephan Hohe. | |
| - bpo-32933: :func:`unittest.mock.mock_open` now supports iteration over the | |
| file contents. Patch by Tony Flury. | |
| - bpo-33217: Raise :exc:`TypeError` when looking up non-Enum objects in Enum | |
| classes and Enum members. | |
| - bpo-33197: Update error message when constructing invalid | |
| inspect.Parameters Patch by Dong-hee Na. | |
| - bpo-33383: Fixed crash in the get() method of the :mod:`dbm.ndbm` database | |
| object when it is called with a single argument. | |
| - bpo-33375: The warnings module now finds the Python file associated with a | |
| warning from the code object, rather than the frame's global namespace. | |
| This is consistent with how tracebacks and pdb find filenames, and should | |
| work better for dynamically executed code. | |
| - bpo-33336: ``imaplib`` now allows ``MOVE`` command in ``IMAP4.uid()`` (RFC | |
| 6851: IMAP MOVE Extension) and potentially as a name of supported method | |
| of ``IMAP4`` object. | |
| - bpo-32455: Added *jump* parameter to :func:`dis.stack_effect`. | |
| - bpo-27485: Rename and deprecate undocumented functions in | |
| :func:`urllib.parse`. | |
| - bpo-33332: Add ``signal.valid_signals()`` to expose the POSIX sigfillset() | |
| functionality. | |
| - bpo-33251: `ConfigParser.items()` was fixed so that key-value pairs passed | |
| in via `vars` are not included in the resulting output. | |
| - bpo-33329: Fix multiprocessing regression on newer glibcs | |
| - bpo-33334: :func:`dis.stack_effect` now supports all defined opcodes | |
| including NOP and EXTENDED_ARG. | |
| - bpo-991266: Fix quoting of the ``Comment`` attribute of | |
| :class:`http.cookies.SimpleCookie`. | |
| - bpo-33131: Upgrade bundled version of pip to 10.0.1. | |
| - bpo-33308: Fixed a crash in the :mod:`parser` module when converting an ST | |
| object to a tree of tuples or lists with ``line_info=False`` and | |
| ``col_info=True``. | |
| - bpo-23403: lib2to3 now uses pickle protocol 4 for pre-computed grammars. | |
| - bpo-33266: lib2to3 now recognizes ``rf'...'`` strings. | |
| - bpo-11594: Ensure line-endings are respected when using lib2to3. | |
| - bpo-33254: Have :func:`importlib.resources.contents` and | |
| :meth:`importlib.abc.ResourceReader.contents` return an :term:`iterable` | |
| instead of an :term:`iterator`. | |
| - bpo-33265: ``contextlib.ExitStack`` and ``contextlib.AsyncExitStack`` now | |
| use a method instead of a wrapper function for exit callbacks. | |
| - bpo-33263: Fix FD leak in `_SelectorSocketTransport` Patch by Vlad | |
| Starostin. | |
| - bpo-33256: Fix display of ``<module>`` call in the html produced by | |
| ``cgitb.html()``. Patch by Stéphane Blondon. | |
| - bpo-33144: ``random.Random()`` and its subclassing mechanism got optimized | |
| to check only once at class/subclass instantiation time whether its | |
| ``getrandbits()`` method can be relied on by other methods, including | |
| ``randrange()``, for the generation of arbitrarily large random integers. | |
| Patch by Wolfgang Maier. | |
| - bpo-33185: Fixed regression when running pydoc with the :option:`-m` | |
| switch. (The regression was introduced in 3.7.0b3 by the resolution of | |
| :issue:`33053`) | |
| This fix also changed pydoc to add ``os.getcwd()`` to :data:`sys.path` | |
| when necessary, rather than adding ``"."``. | |
| - bpo-29613: Added support for the ``SameSite`` cookie flag to the | |
| ``http.cookies`` module. | |
| - bpo-33169: Delete entries of ``None`` in :data:`sys.path_importer_cache` | |
| when :meth:`importlib.machinery.invalidate_caches` is called. | |
| - bpo-33203: ``random.Random.choice()`` now raises ``IndexError`` for empty | |
| sequences consistently even when called from subclasses without a | |
| ``getrandbits()`` implementation. | |
| - bpo-33224: Update difflib.mdiff() for :pep:`479`. Convert an uncaught | |
| StopIteration in a generator into a return-statement. | |
| - bpo-33209: End framing at the end of C implementation of | |
| :func:`pickle.Pickler.dump`. | |
| - bpo-32861: The urllib.robotparser's ``__str__`` representation now | |
| includes wildcard entries and the "Crawl-delay" and "Request-rate" fields. | |
| Also removes extra newlines that were being appended to the end of the | |
| string. Patch by Michael Lazar. | |
| - bpo-23403: ``DEFAULT_PROTOCOL`` in :mod:`pickle` was bumped to 4. Protocol | |
| 4 is described in :pep:`3154` and available since Python 3.4. It offers | |
| better performance and smaller size compared to protocol 3 introduced in | |
| Python 3.0. | |
| - bpo-20104: Improved error handling and fixed a reference leak in | |
| :func:`os.posix_spawn()`. | |
| - bpo-33106: Deleting a key from a read-only dbm database raises module | |
| specific error instead of KeyError. | |
| - bpo-33175: In dataclasses, Field.__set_name__ now looks up the | |
| __set_name__ special method on the class, not the instance, of the default | |
| value. | |
| - bpo-32380: Create functools.singledispatchmethod to support generic single | |
| dispatch on descriptors and methods. | |
| - bpo-33141: Have Field objects pass through __set_name__ to their default | |
| values, if they have their own __set_name__. | |
| - bpo-33096: Allow ttk.Treeview.insert to insert iid that has a false | |
| boolean value. Note iid=0 and iid=False would be same. Patch by Garvit | |
| Khatri. | |
| - bpo-32873: Treat type variables and special typing forms as immutable by | |
| copy and pickle. This fixes several minor issues and inconsistencies, and | |
| improves backwards compatibility with Python 3.6. | |
| - bpo-33134: When computing dataclass's __hash__, use the lookup table to | |
| contain the function which returns the __hash__ value. This is an | |
| improvement over looking up a string, and then testing that string to see | |
| what to do. | |
| - bpo-33127: The ssl module now compiles with LibreSSL 2.7.1. | |
| - bpo-32505: Raise TypeError if a member variable of a dataclass is of type | |
| Field, but doesn't have a type annotation. | |
| - bpo-33078: Fix the failure on OSX caused by the tests relying on | |
| sem_getvalue | |
| - bpo-33116: Add 'Field' to dataclasses.__all__. | |
| - bpo-32896: Fix an error where subclassing a dataclass with a field that | |
| uses a default_factory would generate an incorrect class. | |
| - bpo-33100: Dataclasses: If a field has a default value that's a | |
| MemberDescriptorType, then it's from that field being in __slots__, not an | |
| actual default value. | |
| - bpo-32953: If a non-dataclass inherits from a frozen dataclass, allow | |
| attributes to be added to the derived class. Only attributes from the | |
| frozen dataclass cannot be assigned to. Require all dataclasses in a | |
| hierarchy to be either all frozen or all non-frozen. | |
| - bpo-33097: Raise RuntimeError when ``executor.submit`` is called during | |
| interpreter shutdown. | |
| - bpo-32968: Modulo and floor division involving Fraction and float should | |
| return float. | |
| - bpo-33061: Add missing ``NoReturn`` to ``__all__`` in typing.py | |
| - bpo-33078: Fix the size handling in multiprocessing.Queue when a pickling | |
| error occurs. | |
| - bpo-33064: lib2to3 now properly supports trailing commas after ``*args`` | |
| and ``**kwargs`` in function signatures. | |
| - bpo-33056: FIX properly close leaking fds in | |
| concurrent.futures.ProcessPoolExecutor. | |
| - bpo-33021: Release the GIL during fstat() calls, avoiding hang of all | |
| threads when calling mmap.mmap(), os.urandom(), and random.seed(). Patch | |
| by Nir Soffer. | |
| - bpo-31804: Avoid failing in multiprocessing.Process if the standard | |
| streams are closed or None at exit. | |
| - bpo-33034: Providing an explicit error message when casting the port | |
| property to anything that is not an integer value using ``urlparse()`` and | |
| ``urlsplit()``. Patch by Matt Eaton. | |
| - bpo-30249: Improve struct.unpack_from() exception messages for problems | |
| with the buffer size and offset. | |
| - bpo-33037: Skip sending/receiving data after SSL transport closing. | |
| - bpo-27683: Fix a regression in :mod:`ipaddress` that result of | |
| :meth:`hosts` is empty when the network is constructed by a tuple | |
| containing an integer mask and only 1 bit left for addresses. | |
| - bpo-22674: Add the strsignal() function in the signal module that returns | |
| the system description of the given signal, as returned by strsignal(3). | |
| - bpo-32999: Fix C implementation of ``ABC.__subclasscheck__(cls, | |
| subclass)`` crashed when ``subclass`` is not a type object. | |
| - bpo-33009: Fix inspect.signature() for single-parameter partialmethods. | |
| - bpo-32969: Expose several missing constants in zlib and fix corresponding | |
| documentation. | |
| - bpo-32056: Improved exceptions raised for invalid number of channels and | |
| sample width when read an audio file in modules :mod:`aifc`, :mod:`wave` | |
| and :mod:`sunau`. | |
| - bpo-32970: Improved disassembly of the MAKE_FUNCTION instruction. | |
| - bpo-32844: Fix wrong redirection of a low descriptor (0 or 1) to stderr in | |
| subprocess if another low descriptor is closed. | |
| - bpo-32960: For dataclasses, disallow inheriting frozen from non-frozen | |
| classes, and also disallow inheriting non-frozen from frozen classes. This | |
| restriction will be relaxed at a future date. | |
| - bpo-32713: Fixed tarfile.itn handling of out-of-bounds float values. Patch | |
| by Joffrey Fuhrer. | |
| - bpo-32257: The ssl module now contains OP_NO_RENEGOTIATION constant, | |
| available with OpenSSL 1.1.0h or 1.1.1. | |
| - bpo-32951: Direct instantiation of SSLSocket and SSLObject objects is now | |
| prohibited. The constructors were never documented, tested, or designed as | |
| public constructors. Users were suppose to use ssl.wrap_socket() or | |
| SSLContext. | |
| - bpo-32929: Remove the tri-state parameter "hash", and add the boolean | |
| "unsafe_hash". If unsafe_hash is True, add a __hash__ function, but if a | |
| __hash__ exists, raise TypeError. If unsafe_hash is False, add a __hash__ | |
| based on the values of eq= and frozen=. The unsafe_hash=False behavior is | |
| the same as the old hash=None behavior. unsafe_hash=False is the default, | |
| just as hash=None used to be. | |
| - bpo-32947: Add OP_ENABLE_MIDDLEBOX_COMPAT and test workaround for TLSv1.3 | |
| for future compatibility with OpenSSL 1.1.1. | |
| - bpo-32146: Document the interaction between frozen executables and the | |
| spawn and forkserver start methods in multiprocessing. | |
| - bpo-30622: The ssl module now detects missing NPN support in LibreSSL. | |
| - bpo-32922: dbm.open() now encodes filename with the filesystem encoding | |
| rather than default encoding. | |
| - bpo-32759: Free unused arenas in multiprocessing.heap. | |
| - bpo-32859: In ``os.dup2``, don't check every call whether the ``dup3`` | |
| syscall exists or not. | |
| - bpo-32556: nt._getfinalpathname, nt._getvolumepathname and | |
| nt._getdiskusage now correctly convert from bytes. | |
| - bpo-21060: Rewrite confusing message from setup.py upload from "No dist | |
| file created in earlier command" to the more helpful "Must create and | |
| upload files in one command". | |
| - bpo-32857: In :mod:`tkinter`, ``after_cancel(None)`` now raises a | |
| :exc:`ValueError` instead of canceling the first scheduled function. | |
| Patch by Cheryl Sabella. | |
| - bpo-32852: Make sure sys.argv remains as a list when running trace. | |
| - bpo-31333: ``_abc`` module is added. It is a speedup module with C | |
| implementations for various functions and methods in ``abc``. Creating an | |
| ABC subclass and calling ``isinstance`` or ``issubclass`` with an ABC | |
| subclass are up to 1.5x faster. In addition, this makes Python start-up up | |
| to 10% faster. | |
| Note that the new implementation hides internal registry and caches, | |
| previously accessible via private attributes ``_abc_registry``, | |
| ``_abc_cache``, and ``_abc_negative_cache``. There are three debugging | |
| helper methods that can be used instead ``_dump_registry``, | |
| ``_abc_registry_clear``, and ``_abc_caches_clear``. | |
| - bpo-32841: Fixed `asyncio.Condition` issue which silently ignored | |
| cancellation after notifying and cancelling a conditional lock. Patch by | |
| Bar Harel. | |
| - bpo-32819: ssl.match_hostname() has been simplified and no longer depends | |
| on re and ipaddress module for wildcard and IP addresses. Error reporting | |
| for invalid wildcards has been improved. | |
| - bpo-19675: ``multiprocessing.Pool`` no longer leaks processes if its | |
| initialization fails. | |
| - bpo-32394: socket: Remove | |
| TCP_FASTOPEN,TCP_KEEPCNT,TCP_KEEPIDLE,TCP_KEEPINTVL flags on older version | |
| Windows during run-time. | |
| - bpo-31787: Fixed refleaks of ``__init__()`` methods in various modules. | |
| (Contributed by Oren Milman) | |
| - bpo-30157: Fixed guessing quote and delimiter in csv.Sniffer.sniff() when | |
| only the last field is quoted. Patch by Jake Davis. | |
| - bpo-30688: Added support of ``\N{name}`` escapes in regular expressions. | |
| Based on patch by Jonathan Eunice. | |
| - bpo-32792: collections.ChainMap() preserves the order of the underlying | |
| mappings. | |
| - bpo-32775: :func:`fnmatch.translate()` no longer produces patterns which | |
| contain set operations. Sets starting with '[' or containing '--', '&&', | |
| '~~' or '||' will be interpreted differently in regular expressions in | |
| future versions. Currently they emit warnings. fnmatch.translate() now | |
| avoids producing patterns containing such sets by accident. | |
| - bpo-32622: Implement native fast sendfile for Windows proactor event loop. | |
| - bpo-32777: Fix a rare but potential pre-exec child process deadlock in | |
| subprocess on POSIX systems when marking file descriptors inheritable on | |
| exec in the child process. This bug appears to have been introduced in | |
| 3.4. | |
| - bpo-32647: The ctypes module used to depend on indirect linking for | |
| dlopen. The shared extension is now explicitly linked against libdl on | |
| platforms with dl. | |
| - bpo-32749: A :mod:`dbm.dumb` database opened with flags 'r' is now | |
| read-only. :func:`dbm.dumb.open` with flags 'r' and 'w' no longer creates | |
| a database if it does not exist. | |
| - bpo-32741: Implement ``asyncio.TimerHandle.when()`` method. | |
| - bpo-32691: Use mod_spec.parent when running modules with pdb | |
| - bpo-32734: Fixed ``asyncio.Lock()`` safety issue which allowed acquiring | |
| and locking the same lock multiple times, without it being free. Patch by | |
| Bar Harel. | |
| - bpo-32727: Do not include name field in SMTP envelope from address. Patch | |
| by Stéphane Wirtel | |
| - bpo-31453: Add TLSVersion constants and SSLContext.maximum_version / | |
| minimum_version attributes. The new API wraps OpenSSL 1.1 | |
| https://web.archive.org/web/20180309043602/https://www.openssl.org/docs/man1.1.0/ssl/SSL_CTX_set_min_proto_version.html | |
| feature. | |
| - bpo-24334: Internal implementation details of ssl module were cleaned up. | |
| The SSLSocket has one less layer of indirection. Owner and session | |
| information are now handled by the SSLSocket and SSLObject constructor. | |
| Channel binding implementation has been simplified. | |
| - bpo-31848: Fix the error handling in Aifc_read.initfp() when the SSND | |
| chunk is not found. Patch by Zackery Spytz. | |
| - bpo-32585: Add Ttk spinbox widget to :mod:`tkinter.ttk`. Patch by Alan D | |
| Moore. | |
| - bpo-32512: :mod:`profile` CLI accepts `-m module_name` as an alternative | |
| to script path. | |
| - bpo-8525: help() on a type now displays builtin subclasses. This is | |
| intended primarily to help with notification of more specific exception | |
| subclasses. | |
| Patch by Sanyam Khurana. | |
| - bpo-31639: http.server now exposes a ThreadingHTTPServer class and uses it | |
| when the module is run with ``-m`` to cope with web browsers pre-opening | |
| sockets. | |
| - bpo-29877: compileall: import ProcessPoolExecutor only when needed, | |
| preventing hangs on low resource platforms | |
| - bpo-32221: Various functions returning tuple containing IPv6 addresses now | |
| omit ``%scope`` part since the same information is already encoded in | |
| *scopeid* tuple item. Especially this speeds up :func:`socket.recvfrom` | |
| when it receives multicast packet since useless resolving of network | |
| interface name is omitted. | |
| - bpo-32147: :func:`binascii.unhexlify` is now up to 2 times faster. Patch | |
| by Sergey Fedoseev. | |
| - bpo-30693: The TarFile class now recurses directories in a reproducible | |
| way. | |
| - bpo-30693: The ZipFile class now recurses directories in a reproducible | |
| way. | |
| - bpo-31680: Added :data:`curses.ncurses_version`. | |
| - bpo-31908: Fix output of cover files for ``trace`` module command-line | |
| tool. Previously emitted cover files only when ``--missing`` option was | |
| used. Patch by Michael Selik. | |
| - bpo-31608: Raise a ``TypeError`` instead of crashing if a | |
| ``collections.deque`` subclass returns a non-deque from ``__new__``. Patch | |
| by Oren Milman. | |
| - bpo-31425: Add support for sockets of the AF_QIPCRTR address family, | |
| supported by the Linux kernel. This is used to communicate with services, | |
| such as GPS or radio, running on Qualcomm devices. Patch by Bjorn | |
| Andersson. | |
| - bpo-22005: Implemented unpickling instances of | |
| :class:`~datetime.datetime`, :class:`~datetime.date` and | |
| :class:`~datetime.time` pickled by Python 2. ``encoding='latin1'`` should | |
| be used for successful decoding. | |
| - bpo-27645: :class:`sqlite3.Connection` now exposes a | |
| :class:`~sqlite3.Connection.backup` method, if the underlying SQLite | |
| library is at version 3.6.11 or higher. Patch by Lele Gaifax. | |
| - bpo-16865: Support arrays >=2GiB in :mod:`ctypes`. Patch by Segev Finer. | |
| - bpo-31508: Removed support of arguments in | |
| `tkinter.ttk.Treeview.selection`. It was deprecated in 3.6. Use | |
| specialized methods like `selection_set` for changing the selection. | |
| - bpo-29456: Fix bugs in hangul normalization: u1176, u11a7 and u11c3 | |
| Documentation | |
| ------------- | |
| - bpo-21257: Document :func:`http.client.parse_headers`. | |
| - bpo-34764: Improve example of iter() with 2nd sentinel argument. | |
| - bpo-35564: Explicitly set master_doc variable in conf.py for compliance | |
| with Sphinx 2.0 | |
| - bpo-35511: Specified that profile.Profile class doesn't not support enable | |
| or disable methods. Also, elaborated that Profile object as a context | |
| manager is only supported in cProfile module. | |
| - bpo-10536: Enhance the gettext docs. Patch by Éric Araujo | |
| - bpo-35089: Remove mention of ``typing.io`` and ``typing.re``. Their types | |
| should be imported from ``typing`` directly. | |
| - bpo-35038: Fix the documentation about an unexisting `f_restricted` | |
| attribute in the frame object. Patch by Stéphane Wirtel | |
| - bpo-35042: Replace PEP XYZ by the pep role and allow to use the direct | |
| links to the PEPs. | |
| - bpo-35044: Fix the documentation with the role ``exc`` for the | |
| appropriated exception. Patch by Stéphane Wirtel | |
| - bpo-35035: Rename documentation for :mod:`email.utils` to | |
| ``email.utils.rst``. | |
| - bpo-34967: Use app.add_object_type() instead of the deprecated Sphinx | |
| function app.description_unit() | |
| - bpo-34913: Add documentation about the new command line interface of the | |
| gzip module. | |
| - bpo-32174: chm document displays non-ASCII charaters properly on some MBCS | |
| Windows systems. | |
| - bpo-11233: Create availability directive for documentation. Original | |
| patch by Georg Brandl. | |
| - bpo-34790: Document how passing coroutines to asyncio.wait() can be | |
| confusing. | |
| - bpo-34552: Make clear that ``==`` operator sometimes is equivalent to | |
| `is`. The ``<``, ``<=``, ``>`` and ``>=`` operators are only defined where | |
| they make sense. | |
| - bpo-28617: Fixed info in the stdtypes docs concerning the types that | |
| support membership tests. | |
| - bpo-20177: Migrate datetime.date.fromtimestamp to Argument Clinic. Patch | |
| by Tim Hoffmann. | |
| - bpo-34065: Fix wrongly written basicConfig documentation markup syntax | |
| - bpo-33460: replaced ellipsis with correct error codes in tutorial chapter | |
| 3. | |
| - bpo-33847: Add '@' operator entry to index. | |
| - bpo-33409: Clarified the relationship between :pep:`538`'s | |
| PYTHONCOERCECLOCALE and PEP 540's PYTHONUTF8 mode. | |
| - bpo-33197: Add versionadded tag to the documentation of | |
| ParameterKind.description | |
| - bpo-17045: Improve the C-API doc for PyTypeObject. This includes adding | |
| several quick-reference tables and a lot of missing slot/typedef entries. | |
| The existing entries were also cleaned up with a slightly more consistent | |
| format. | |
| - bpo-33736: Improve the documentation of :func:`asyncio.open_connection`, | |
| :func:`asyncio.start_server` and their UNIX socket counterparts. | |
| - bpo-23859: Document that `asyncio.wait()` does not cancel its futures on | |
| timeout. | |
| - bpo-32436: Document :pep:`567` changes to asyncio. | |
| - bpo-33604: Update HMAC md5 default to a DeprecationWarning, bump removal | |
| to 3.8. | |
| - bpo-33594: Document ``getargspec``, ``from_function`` and ``from_builtin`` | |
| as deprecated in their respective docstring, and include version since | |
| deprecation in DeprecationWarning message. | |
| - bpo-33503: Fix broken pypi link | |
| - bpo-33421: Add missing documentation for ``typing.AsyncContextManager``. | |
| - bpo-33487: BZ2file now emit a DeprecationWarning when buffering=None is | |
| passed, the deprecation message and documentation also now explicitly | |
| state it is deprecated since 3.0. | |
| - bpo-33378: Add Korean language switcher for https://docs.python.org/3/ | |
| - bpo-33276: Clarify that the ``__path__`` attribute on modules cannot be | |
| just any value. | |
| - bpo-33201: Modernize documentation for writing C extension types. | |
| - bpo-33195: Deprecate ``Py_UNICODE`` usage in ``c-api/arg`` document. | |
| ``Py_UNICODE`` related APIs are deprecated since Python 3.3, but it is | |
| missed in the document. | |
| - bpo-33126: Document PyBuffer_ToContiguous(). | |
| - bpo-27212: Modify documentation for the :func:`islice` recipe to consume | |
| initial values up to the start index. | |
| - bpo-28247: Update :mod:`zipapp` documentation to describe how to make | |
| standalone applications. | |
| - bpo-18802: Documentation changes for ipaddress. Patch by Jon Foster and | |
| Berker Peksag. | |
| - bpo-27428: Update documentation to clarify that ``WindowsRegistryFinder`` | |
| implements ``MetaPathFinder``. (Patch by Himanshu Lakhara) | |
| - bpo-28124: The ssl module function ssl.wrap_socket() has been | |
| de-emphasized and deprecated in favor of the more secure and efficient | |
| SSLContext.wrap_socket() method. | |
| - bpo-17232: Clarify docs for -O and -OO. Patch by Terry Reedy. | |
| - bpo-32436: Add documentation for the contextvars module (PEP 567). | |
| - bpo-32800: Update link to w3c doc for xml default namespaces. | |
| - bpo-11015: Update :mod:`test.support` documentation. | |
| - bpo-32613: Update the faq/windows.html to use the py command from PEP 397 | |
| instead of python. | |
| - bpo-8722: Document :meth:`__getattr__` behavior when property :meth:`get` | |
| method raises :exc:`AttributeError`. | |
| - bpo-32614: Modify RE examples in documentation to use raw strings to | |
| prevent :exc:`DeprecationWarning` and add text to REGEX HOWTO to highlight | |
| the deprecation. | |
| - bpo-20709: Remove the paragraph where we explain that os.utime() does not | |
| support a directory as path under Windows. Patch by Jan-Philip Gehrcke | |
| - bpo-32722: Remove the bad example in the tutorial of the Generator | |
| Expression. Patch by Stéphane Wirtel | |
| - bpo-31972: Improve docstrings for `pathlib.PurePath` subclasses. | |
| - bpo-30607: Use the externalized ``python-docs-theme`` package when | |
| building the documentation. | |
| - bpo-8243: Add a note about curses.addch and curses.addstr exception | |
| behavior when writing outside a window, or pad. | |
| - bpo-32337: Update documentation related with ``dict`` order. | |
| - bpo-25041: Document ``AF_PACKET`` in the :mod:`socket` module. | |
| - bpo-31432: Clarify meaning of CERT_NONE, CERT_OPTIONAL, and CERT_REQUIRED | |
| flags for ssl.SSLContext.verify_mode. | |
| Tests | |
| ----- | |
| - bpo-35772: Fix sparse file tests of test_tarfile on ppc64 with the tmpfs | |
| filesystem. Fix the function testing if the filesystem supports sparse | |
| files: create a file which contains data and "holes", instead of creating | |
| a file which contains no data. tmpfs effective block size is a page size | |
| (tmpfs lives in the page cache). RHEL uses 64 KiB pages on aarch64, ppc64, | |
| ppc64le, only s390x and x86_64 use 4 KiB pages, whereas the test punch | |
| holes of 4 KiB. | |
| - bpo-35045: Make ssl tests less strict and also accept TLSv1 as system | |
| default. The changes unbreaks test_min_max_version on Fedora 29. | |
| - bpo-32710: ``test_asyncio/test_sendfile.py`` now resets the event loop | |
| policy using :func:`tearDownModule` as done in other tests, to prevent a | |
| warning when running tests on Windows. | |
| - bpo-33717: test.pythoninfo now logs information of all clocks, not only | |
| time.time() and time.perf_counter(). | |
| - bpo-35488: Add a test to pathlib's Path.match() to verify it does not | |
| support glob-style ** recursive pattern matching. | |
| - bpo-31731: Fix a race condition in ``check_interrupted_write()`` of | |
| test_io: create directly the thread with SIGALRM signal blocked, rather | |
| than blocking the signal later from the thread. Previously, it was | |
| possible that the thread gets the signal before the signal is blocked. | |
| - bpo-35424: Fix test_multiprocessing_main_handling: use | |
| :class:`multiprocessing.Pool` with a context manager and then explicitly | |
| join the pool. | |
| - bpo-35519: Rename :mod:`test.bisect` module to :mod:`test.bisect_cmd` to | |
| avoid conflict with :mod:`bisect` module when running directly a test like | |
| ``./python Lib/test/test_xmlrpc.py``. | |
| - bpo-35513: Replace :func:`time.time` with :func:`time.monotonic` in tests | |
| to measure time delta. | |
| - bpo-34279: :func:`test.support.run_unittest` no longer raise | |
| :exc:`TestDidNotRun` if the test result contains skipped tests. The | |
| exception is now only raised if no test have been run and no test have | |
| been skipped. | |
| - bpo-35412: Add testcase to ``test_future4``: check unicode literal. | |
| - bpo-26704: Added test demonstrating double-patching of an instance method. | |
| Patch by Anthony Sottile. | |
| - bpo-33725: test_multiprocessing_fork may crash on recent versions of | |
| macOS. Until the issue is resolved, skip the test on macOS. | |
| - bpo-35352: Modify test_asyncio to use the certificate set from the test | |
| directory. | |
| - bpo-35317: Fix ``mktime()`` overflow error in ``test_email``: run | |
| ``test_localtime_daylight_true_dst_true()`` and | |
| ``test_localtime_daylight_false_dst_true()`` with a specific timezone. | |
| - bpo-21263: After several reports that test_gdb does not work properly on | |
| macOS and since gdb is not shipped by default anymore, test_gdb is now | |
| skipped on macOS when LLVM Clang has been used to compile Python. Patch by | |
| Lysandros Nikolaou | |
| - bpo-34279: regrtest issue a warning when no tests have been executed in a | |
| particular test file. Also, a new final result state is issued if no test | |
| have been executed across all test files. Patch by Pablo Galindo. | |
| - bpo-34962: make docstest in Doc now passes., and is enforced in CI | |
| - bpo-23596: Use argparse for the command line of the gzip module. Patch by | |
| Antony Lee | |
| - bpo-34537: Fix ``test_gdb.test_strings()`` when ``LC_ALL=C`` and GDB was | |
| compiled with Python 3.6 or earlier. | |
| - bpo-34587: test_socket: Remove RDSTest.testCongestion(). The test tries to | |
| fill the receiver's socket buffer and expects an error. But the RDS | |
| protocol doesn't require that. Moreover, the Linux implementation of RDS | |
| expects that the producer of the messages reduces its rate, it's not the | |
| role of the receiver to trigger an error. The test fails on Fedora 28 by | |
| design, so just remove it. | |
| - bpo-34661: Fix test_shutil if unzip doesn't support -t. | |
| - bpo-34200: Fixed non-deterministic flakiness of test_pkg by not using the | |
| scary test.support.module_cleanup() logic to save and restore sys.modules | |
| contents between test cases. | |
| - bpo-34569: The experimental PEP 554 data channels now correctly pass | |
| negative PyLong objects between subinterpreters on 32-bit systems. Patch | |
| by Michael Felt. | |
| - bpo-34594: Fix usage of hardcoded ``errno`` values in the tests. | |
| - bpo-34579: Fix test_embed for AIX Patch by Michael Felt | |
| - bpo-34542: Use 3072 RSA keys and SHA-256 signature for test certs and | |
| keys. | |
| - bpo-11193: Remove special condition for AIX in | |
| `test_subprocess.test_undecodable_env` | |
| - bpo-34347: Fix `test_utf8_mode.test_cmd_line` for AIX | |
| - bpo-34490: On AIX with AF_UNIX family sockets getsockname() does not | |
| provide 'sockname', so skip calls to transport.get_extra_info('sockname') | |
| - bpo-34391: Fix ftplib test for TLS 1.3 by reading from data socket. | |
| - bpo-11192: Fix `test_socket` on AIX 6.1 and later IPv6 zone id supports | |
| only supported by inet_pton6_zone() Switch to runtime-based | |
| platform.system() to establish current platform rather than build-time | |
| based sys.platform() | |
| - bpo-34399: Update all RSA keys and DH params to use at least 2048 bits. | |
| - bpo-34373: Fix ``test_mktime`` and ``test_pthread_getcpuclickid`` tests | |
| for AIX Add range checking for ``_PyTime_localtime`` for AIX Patch by | |
| Michael Felt | |
| - bpo-11191: Skip the distutils test 'test_search_cpp' when using XLC as | |
| compiler patch by aixtools (Michael Felt) | |
| - Improved an error message when mock assert_has_calls fails. | |
| - bpo-33746: Fix test_unittest when run in verbose mode. | |
| - bpo-33901: Fix test_dbm_gnu on macOS with gdbm 1.15: add a larger value to | |
| make sure that the file size changes. | |
| - bpo-33873: Fix a bug in ``regrtest`` that caused an extra test to run if | |
| --huntrleaks/-R was used. Exit with error in case that invalid parameters | |
| are specified to --huntrleaks/-R (at least one warmup run and one | |
| repetition must be used). | |
| - bpo-33562: Check that a global asyncio event loop policy is not left | |
| behind by any tests. | |
| - bpo-33655: Ignore test_posix_fallocate failures on BSD platforms that | |
| might be due to running on ZFS. | |
| - bpo-32962: Fixed test_gdb when Python is compiled with flags -mcet | |
| -fcf-protection -O0. | |
| - bpo-33358: Fix ``test_embed.test_pre_initialization_sys_options()`` when | |
| the interpreter is built with ``--enable-shared``. | |
| - bpo-32872: Avoid regrtest compatibility issue with namespace packages. | |
| - bpo-32517: Fix failing ``test_asyncio`` on macOS 10.12.2+ due to transport | |
| of ``KqueueSelector`` loop was not being closed. | |
| - bpo-32663: Making sure the `SMTPUTF8SimTests` class of tests gets run in | |
| test_smtplib.py. | |
| - bpo-27643: Test_C test case needs "signed short" bitfields, but the IBM | |
| XLC compiler (on AIX) does not support this Skip the code and test when | |
| AIX and XLC are used | |
| Applicable to Python2-2.7 and later | |
| - bpo-19417: Add test_bdb.py. | |
| - bpo-31809: Add tests to verify connection with secp ECDH curves. | |
| Build | |
| ----- | |
| - bpo-34691: The _contextvars module is now built into the core Python | |
| library on Windows. | |
| - bpo-35683: Improved Azure Pipelines build steps and now verifying layouts | |
| correctly | |
| - bpo-35642: Remove asynciomodule.c from pythoncore.vcxproj | |
| - bpo-35550: Fix incorrect Solaris #ifdef checks to look for __sun && __SVR4 | |
| instead of sun when compiling. | |
| - bpo-35499: ``make profile-opt`` no longer replaces ``CFLAGS_NODIST`` with | |
| ``CFLAGS``. It now adds profile-guided optimization (PGO) flags to | |
| ``CFLAGS_NODIST``: existing ``CFLAGS_NODIST`` flags are kept. | |
| - bpo-35257: Avoid leaking the linker flags from Link Time Optimizations | |
| (LTO) into distutils when compiling C extensions. | |
| - bpo-35351: When building Python with clang and LTO, LTO flags are no | |
| longer passed into CFLAGS to build third-party C extensions through | |
| distutils. | |
| - bpo-35139: Fix a compiler error when statically linking `pyexpat` in | |
| `Modules/Setup`. | |
| - bpo-35059: PCbuild: Set InlineFunctionExpansion to OnlyExplicitInline | |
| ("/Ob1" option) in pyproject.props in Debug mode to expand functions | |
| marked as inline. This change should make Python compiled in Debug mode a | |
| little bit faster on Windows. | |
| - bpo-35011: Restores the use of pyexpatns.h to isolate our embedded copy of | |
| the expat C library so that its symbols do not conflict at link or dynamic | |
| loading time with an embedding application or other extension modules with | |
| their own version of libexpat. | |
| - bpo-28015: Have --with-lto works correctly with clang. | |
| - bpo-34765: Update the outdated install-sh file to the latest revision from | |
| automake v1.16.1 | |
| - bpo-34585: Check for floating-point byte order in configure.ac using | |
| compilation tests instead of executing code, so that these checks work in | |
| cross-compiled builds. | |
| - bpo-34710: Fixed SSL module build with OpenSSL & pedantic CFLAGS. | |
| - bpo-34582: Add JUnit XML output for regression tests and update Azure | |
| DevOps builds. | |
| - bpo-34081: Make Sphinx warnings as errors in the Docs Makefile. | |
| - bpo-34555: Fix for case where it was not possible to have both | |
| ``HAVE_LINUX_VM_SOCKETS_H`` and ``HAVE_SOCKADDR_ALG`` be undefined. | |
| - bpo-33015: Fix an undefined behaviour in the pthread implementation of | |
| :c:func:`PyThread_start_new_thread`: add a function wrapper to always | |
| return ``NULL``. | |
| - bpo-34245: The Python shared library is now installed with write | |
| permission (mode 0755), which is the standard way of installing such | |
| libraries. | |
| - bpo-34121: Fix detection of C11 atomic support on clang. | |
| - bpo-32430: Rename Modules/Setup.dist to Modules/Setup, and remove the | |
| necessity to copy the former manually to the latter when updating the | |
| local source tree. | |
| - bpo-30345: Add -g to LDFLAGS when compiling with LTO to get debug symbols. | |
| - bpo-5755: Move ``-Wstrict-prototypes`` option to ``CFLAGS_NODIST`` from | |
| ``OPT``. This option emitted annoying warnings when building extension | |
| modules written in C++. | |
| - bpo-33614: Ensures module definition files for the stable ABI on Windows | |
| are correctly regenerated. | |
| - bpo-33648: The --with-c-locale-warning configuration flag has been | |
| removed. It has had no effect for about a year. | |
| - bpo-33522: Enable CI builds on Visual Studio Team Services at | |
| https://python.visualstudio.com/cpython | |
| - bpo-33512: configure's check for "long double" has been simplified | |
| - bpo-33483: C compiler is now correctly detected from the standard | |
| environment variables. --without-gcc and --with-icc options have been | |
| removed. | |
| - bpo-33394: Enable the verbose build for extension modules, when GNU make | |
| is passed macros on the command line. | |
| - bpo-33393: Update config.guess and config.sub files. | |
| - bpo-33377: Add new triplets for mips r6 and riscv variants (used in | |
| extension suffixes). | |
| - bpo-32232: By default, modules configured in `Modules/Setup` are no longer | |
| built with `-DPy_BUILD_CORE`. Instead, modules that specifically need that | |
| preprocessor definition include it in their individual entries. | |
| - bpo-33182: The embedding tests can once again be built with clang 6.0 | |
| - bpo-33163: Upgrade pip to 9.0.3 and setuptools to v39.0.1. | |
| - bpo-33012: gcc 8 has added a new warning heuristic to detect invalid | |
| function casts and a stock python build seems to hit that warning quite | |
| often. The most common is the cast of a METH_NOARGS function (that uses | |
| just one argument) to a PyCFunction. Fix this by adding a dummy argument | |
| to all functions that implement METH_NOARGS. | |
| - bpo-32898: Fix the python debug build when using COUNT_ALLOCS. | |
| - bpo-29442: Replace optparse with argparse in setup.py | |
| Windows | |
| ------- | |
| - bpo-35890: Fix API calling consistency of GetVersionEx and wcstok. | |
| - bpo-32560: The ``py`` launcher now forwards its ``STARTUPINFO`` structure | |
| to child processes. | |
| - bpo-35854: Fix EnvBuilder and --symlinks in venv on Windows | |
| - bpo-35811: Avoid propagating venv settings when launching via py.exe | |
| - bpo-35797: Fix default executable used by the multiprocessing module | |
| - bpo-35758: Allow building on ARM with MSVC. | |
| - bpo-29734: Fix handle leaks in os.stat on Windows. | |
| - bpo-35596: Use unchecked PYCs for the embeddable distro to avoid zipimport | |
| restrictions. | |
| - bpo-35596: Fix vcruntime140.dll being added to embeddable distro multiple | |
| times. | |
| - bpo-35402: Update Windows build to use Tcl and Tk 8.6.9 | |
| - bpo-35401: Updates Windows build to OpenSSL 1.1.0j | |
| - bpo-34977: venv on Windows will now use a python.exe redirector rather | |
| than copying the actual binaries from the base environment. | |
| - bpo-34977: Adds support for building a Windows App Store package | |
| - bpo-35067: Remove _distutils_findvs module and use vswhere.exe instead. | |
| - bpo-32557: Allow shutil.disk_usage to take a file path on Windows | |
| - bpo-34770: Fix a possible null pointer dereference in pyshellext.cpp. | |
| - bpo-34603: Fix returning structs from functions produced by MSVC | |
| - bpo-34581: Guard MSVC-specific code in socketmodule.c with ``#ifdef | |
| _MSC_VER``. | |
| - bpo-34532: Fixes exit code of list version arguments for py.exe. | |
| - bpo-34062: Fixed the '--list' and '--list-paths' arguments for the py.exe | |
| launcher | |
| - bpo-34225: Ensure INCLUDE and LIB directories do not end with a backslash. | |
| - bpo-34011: A suite of code has been changed which copied across DLLs and | |
| init.tcl from the running Python location into a venv being created. These | |
| copies are needed only when running from a Python source build, and the | |
| copying code is now only run when that is the case, rather than whenever a | |
| venv is created. | |
| - bpo-34006: Revert line length limit for Windows help docs. The line-length | |
| limit is not needed because the pages appear in a separate app rather than | |
| on a browser tab. It can also interact badly with the DPI setting. | |
| - bpo-31546: Restore running PyOS_InputHook while waiting for user input at | |
| the prompt. The restores integration of interactive GUI windows (such as | |
| Matplotlib figures) with the prompt on Windows. | |
| - bpo-30237: Output error when ReadConsole is canceled by | |
| CancelSynchronousIo instead of crashing. | |
| - bpo-33895: GIL is released while calling functions that acquire Windows | |
| loader lock. | |
| - bpo-33720: Reduces maximum marshal recursion depth on release builds. | |
| - bpo-29097: Fix bug where :meth:`datetime.fromtimestamp` erroneously throws | |
| an :exc:`OSError` on Windows for values between 0 and 86400. Patch by | |
| Ammar Askar. | |
| - bpo-33316: PyThread_release_lock always fails | |
| - bpo-33184: Update Windows installer to use OpenSSL 1.1.0h. | |
| - bpo-32890: Fix usage of GetLastError() instead of errno in os.execve() and | |
| os.truncate(). | |
| - bpo-33016: Fix potential use of uninitialized memory in | |
| nt._getfinalpathname | |
| - bpo-32903: Fix a memory leak in os.chdir() on Windows if the current | |
| directory is set to a UNC path. | |
| - bpo-32901: Update Tcl and Tk versions to 8.6.8 | |
| - bpo-31966: Fixed WindowsConsoleIO.write() for writing empty data. | |
| - bpo-32409: Ensures activate.bat can handle Unicode contents. | |
| - bpo-32457: Improves handling of denormalized executable path when | |
| launching Python. | |
| - bpo-32370: Use the correct encoding for ipconfig output in the uuid | |
| module. Patch by Segev Finer. | |
| - bpo-29248: Fix :func:`os.readlink` on Windows, which was mistakenly | |
| treating the ``PrintNameOffset`` field of the reparse data buffer as a | |
| number of characters instead of bytes. Patch by Craig Holmquist and SSE4. | |
| - bpo-1104: Correctly handle string length in | |
| ``msilib.SummaryInfo.GetProperty()`` to prevent it from truncating the | |
| last character. | |
| macOS | |
| ----- | |
| - bpo-35401: Update macOS installer to use OpenSSL 1.1.0j. | |
| - bpo-35025: Properly guard the use of the ``CLOCK_GETTIME`` et al. macros | |
| in ``timemodule`` on macOS. | |
| - bpo-24658: On macOS, fix reading from and writing into a file with a size | |
| larger than 2 GiB. | |
| - bpo-34405: Update to OpenSSL 1.1.0i for macOS installer builds. | |
| - bpo-33635: In macOS stat on some file descriptors (/dev/fd/3 f.e) will | |
| result in bad file descriptor OSError. Guard against this exception was | |
| added in is_dir, is_file and similar methods. DirEntry.is_dir can also | |
| throw this exception so _RecursiveWildcardSelector._iterate_directories | |
| was also extended with the same error ignoring pattern. | |
| - bpo-13631: The .editrc file in user's home directory is now processed | |
| correctly during the readline initialization through editline emulation on | |
| macOS. | |
| - bpo-33184: Update macOS installer build to use OpenSSL 1.1.0h. | |
| - bpo-32726: Build and link with private copy of Tcl/Tk 8.6 for the macOS | |
| 10.6+ installer. The 10.9+ installer variant already does this. This | |
| means that the Python 3.7 provided by the python.org macOS installers no | |
| longer need or use any external versions of Tcl/Tk, either system-provided | |
| or user-installed, such as ActiveTcl. | |
| - bpo-32901: Update macOS 10.9+ installer to Tcl/Tk 8.6.8. | |
| - bpo-31903: In :mod:`_scproxy`, drop the GIL when calling into | |
| ``SystemConfiguration`` to avoid deadlocks. | |
| IDLE | |
| ---- | |
| - bpo-35770: IDLE macosx deletes Options => Configure IDLE. It previously | |
| deleted Window => Zoom Height by mistake. (Zoom Height is now on the | |
| Options menu). On Mac, the settings dialog is accessed via Preferences on | |
| the IDLE menu. | |
| - bpo-35769: Change IDLE's new file name from 'Untitled' to 'untitled' | |
| - bpo-35660: Fix imports in idlelib.window. | |
| - bpo-35641: Proper format `calltip` when the function has no docstring. | |
| - bpo-33987: Use ttk Frame for ttk widgets. | |
| - bpo-34055: Fix erroneous 'smart' indents and newlines in IDLE Shell. | |
| - bpo-35591: Find Selection now works when selection not found. | |
| - bpo-35196: Speed up squeezer line counting. | |
| - bpo-35598: Update config_key: use PEP 8 names and ttk widgets, make some | |
| objects global, and add tests. | |
| - bpo-28097: Add Previous/Next History entries to Shell menu. | |
| - bpo-35208: Squeezer now properly counts wrapped lines before newlines. | |
| - bpo-35555: Gray out Code Context menu entry when it's not applicable. | |
| - bpo-35521: Document the IDLE editor code context feature. Add some | |
| internal references within the IDLE doc. | |
| - bpo-22703: The Code Context menu label now toggles between Show/Hide Code | |
| Context. The Zoom Height menu now toggles between Zoom/Restore Height. | |
| Zoom Height has moved from the Window menu to the Options menu. | |
| - bpo-35213: Where appropriate, use 'macOS' in idlelib. | |
| - bpo-34864: On macOS, warn if the system preference "Prefer tabs when | |
| opening documents" is set to "Always". | |
| - bpo-34864: Document two IDLE on MacOS issues. The System Preferences Dock | |
| "prefer tabs always" setting disables some IDLE features. Menus are a bit | |
| different than as described for Windows and Linux. | |
| - bpo-35202: Remove unused imports from lib/idlelib | |
| - bpo-33000: Document that IDLE's shell has no line limit. A program that | |
| runs indefinitely can overfill memory. | |
| - bpo-23220: Explain how IDLE's Shell displays output. | |
| - bpo-35099: Improve the doc about IDLE running user code. The section is | |
| renamed from "IDLE -- console differences" is renamed "Running user code". | |
| It mostly covers the implications of using custom sys.stdxxx objects. | |
| - bpo-35097: Add IDLE doc subsection explaining editor windows. Topics | |
| include opening, title and status bar, .py* extension, and running. | |
| - bpo-35093: Document the IDLE document viewer in the IDLE doc. Add a | |
| paragraph in "Help and preferences", "Help sources" subsection. | |
| - bpo-35088: Update idlelib.help.copy_string docstring. We now use git and | |
| backporting instead of hg and forward merging. | |
| - bpo-35087: Update idlelib help files for the current doc build. The main | |
| change is the elimination of chapter-section numbers. | |
| - bpo-34548: Use configured color theme for read-only text views. | |
| - bpo-1529353: Enable "squeezing" of long outputs in the shell, to avoid | |
| performance degradation and to clean up the history without losing it. | |
| Squeezed outputs may be copied, viewed in a separate window, and | |
| "unsqueezed". | |
| - bpo-34047: Fixed mousewheel scrolling direction on macOS. | |
| - bpo-34275: Make IDLE calltips always visible on Mac. Some MacOS-tk | |
| combinations need .update_idletasks(). Patch by Kevin Walzer. | |
| - bpo-34120: Fix unresponsiveness after closing certain windows and dialogs. | |
| - bpo-33975: Avoid small type when running htests. Since part of the purpose | |
| of human-viewed tests is to determine that widgets look right, it is | |
| important that they look the same for testing as when running IDLE. | |
| - bpo-33905: Add test for idlelib.stackview.StackBrowser. | |
| - bpo-33924: Change mainmenu.menudefs key 'windows' to 'window'. Every other | |
| menudef key is lowercase version of main menu entry. | |
| - bpo-33906: Rename idlelib.windows as window Match Window on the main menu | |
| and remove last plural module name. | |
| - bpo-33917: Fix and document idlelib/idle_test/template.py. The revised | |
| file compiles, runs, and tests OK. idle_test/README.txt explains how to | |
| use it to create new IDLE test files. | |
| - bpo-33904: IDLE: In rstrip, rename class RstripExtension as Rstrip | |
| - bpo-33907: For consistency and clarity, rename an IDLE module and classes. | |
| Module calltips and its class CallTips are now calltip and Calltip. In | |
| module calltip_w, class CallTip is now CalltipWindow. | |
| - bpo-33856: Add "help" in the welcome message of IDLE | |
| - bpo-33839: IDLE: refactor ToolTip and CallTip and add documentation and | |
| tests | |
| - bpo-33855: Minimally test all IDLE modules. Add missing files, import | |
| module, instantiate classes, and check coverage. Check existing files. | |
| - bpo-33656: On Windows, add API call saying that tk scales for DPI. On | |
| Windows 8.1+ or 10, with DPI compatibility properties of the Python binary | |
| unchanged, and a monitor resolution greater than 96 DPI, this should make | |
| text and lines sharper. It should otherwise have no effect. | |
| - bpo-33768: Clicking on a context line moves that line to the top of the | |
| editor window. | |
| - bpo-33763: IDLE: Use read-only text widget for code context instead of | |
| label widget. | |
| - bpo-33664: Scroll IDLE editor text by lines. Previously, the mouse wheel | |
| and scrollbar slider moved text by a fixed number of pixels, resulting in | |
| partial lines at the top of the editor box. The change also applies to | |
| the shell and grep output windows, but not to read-only text views. | |
| - bpo-33679: Enable theme-specific color configuration for Code Context. Use | |
| the Highlights tab to see the setting for built-in themes or add settings | |
| to custom themes. | |
| - bpo-33642: Display up to maxlines non-blank lines for Code Context. If | |
| there is no current context, show a single blank line. | |
| - bpo-33628: IDLE: Cleanup codecontext.py and its test. | |
| - bpo-33564: IDLE's code context now recognizes async as a block opener. | |
| - bpo-21474: Update word/identifier definition from ascii to unicode. In | |
| text and entry boxes, this affects selection by double-click, movement | |
| left/right by control-left/right, and deletion left/right by | |
| control-BACKSPACE/DEL. | |
| - bpo-33204: IDLE: consistently color invalid string prefixes. A 'u' string | |
| prefix cannot be paired with either 'r' or 'f'. Consistently color as much | |
| of the prefix, starting at the right, as is valid. Revise and extend | |
| colorizer test. | |
| - bpo-32984: Set ``__file__`` while running a startup file. Like Python, | |
| IDLE optionally runs one startup file in the Shell window before | |
| presenting the first interactive input prompt. For IDLE, ``-s`` runs a | |
| file named in environmental variable :envvar:`IDLESTARTUP` or | |
| :envvar:`PYTHONSTARTUP`; ``-r file`` runs ``file``. Python sets | |
| ``__file__`` to the startup file name before running the file and unsets | |
| it before the first prompt. IDLE now does the same when run normally, | |
| without the ``-n`` option. | |
| - bpo-32940: Simplify and rename StringTranslatePseudoMapping in pyparse. | |
| - bpo-32916: Change ``str`` to ``code`` in pyparse. | |
| - bpo-32905: Remove unused code in pyparse module. | |
| - bpo-32874: Add tests for pyparse. | |
| - bpo-32837: Using the system and place-dependent default encoding for | |
| open() is a bad idea for IDLE's system and location-independent files. | |
| - bpo-32826: Add "encoding=utf-8" to open() in IDLE's test_help_about. GUI | |
| test test_file_buttons() only looks at initial ascii-only lines, but | |
| failed on systems where open() defaults to 'ascii' because readline() | |
| internally reads and decodes far enough ahead to encounter a non-ascii | |
| character in CREDITS.txt. | |
| - bpo-32831: Add docstrings and tests for codecontext. | |
| - bpo-32765: Update configdialog General tab docstring to add new widgets to | |
| the widget list. | |
| Tools/Demos | |
| ----------- | |
| - bpo-35884: Add a benchmark script for timing various ways to access | |
| variables: ``Tools/scripts/var_access_benchmark.py``. | |
| - bpo-34989: python-gdb.py now handles errors on computing the line number | |
| of a Python frame. | |
| - bpo-20260: Argument Clinic now has non-bitwise unsigned int converters. | |
| - bpo-32962: python-gdb now catches ``UnicodeDecodeError`` exceptions when | |
| calling ``string()``. | |
| - bpo-32962: python-gdb now catches ValueError on read_var(): when Python | |
| has no debug symbols for example. | |
| - bpo-33189: :program:`pygettext.py` now recognizes only literal strings as | |
| docstrings and translatable strings, and rejects bytes literals and | |
| f-string expressions. | |
| - bpo-31920: Fixed handling directories as arguments in the ``pygettext`` | |
| script. Based on patch by Oleg Krasnikov. | |
| - bpo-29673: Fix pystackv and pystack gdbinit macros. | |
| - bpo-25427: Remove the pyvenv script in favor of ``python3 -m venv`` in | |
| order to lower confusion as to what Python interpreter a virtual | |
| environment will be created for. | |
| - bpo-32885: Add an ``-n`` flag for ``Tools/scripts/pathfix.py`` to disable | |
| automatic backup creation (files with ``~`` suffix). | |
| - bpo-32222: Fix pygettext not extracting docstrings for functions with type | |
| annotated arguments. Patch by Toby Harradine. | |
| - bpo-31583: Fix 2to3 for using with --add-suffix option but without | |
| --output-dir option for relative path to files in current directory. | |
| C API | |
| ----- | |
| - bpo-35713: The :c:func:`PyByteArray_Init` and :c:func:`PyByteArray_Fini` | |
| functions have been removed. They did nothing since Python 2.7.4 and | |
| Python 3.2.0, were excluded from the limited API (stable ABI), and were | |
| not documented. | |
| - bpo-33817: Fixed :c:func:`_PyBytes_Resize` for empty bytes objects. | |
| - bpo-35322: Fix memory leak in :c:func:`PyUnicode_EncodeLocale` and | |
| :c:func:`PyUnicode_EncodeFSDefault` on error handling. | |
| - bpo-35059: The following C macros have been converted to static inline | |
| functions: :c:func:`Py_INCREF`, :c:func:`Py_DECREF`, :c:func:`Py_XINCREF`, | |
| :c:func:`Py_XDECREF`, :c:func:`PyObject_INIT`, | |
| :c:func:`PyObject_INIT_VAR`. | |
| - bpo-35296: ``make install`` now also installs the internal API: | |
| ``Include/internal/*.h`` header files. | |
| - bpo-35081: Internal APIs surrounded by ``#ifdef Py_BUILD_CORE`` have been | |
| moved from ``Include/*.h`` headers to new header files | |
| ``Include/internal/pycore_*.h``. | |
| - bpo-35259: Conditionally declare :c:func:`Py_FinalizeEx()` (new in 3.6) | |
| based on Py_LIMITED_API. Patch by Arthur Neufeld. | |
| - bpo-35081: The :c:func:`_PyObject_GC_TRACK` and | |
| :c:func:`_PyObject_GC_UNTRACK` macros have been removed from the public C | |
| API. | |
| - bpo-35134: Creation of a new ``Include/cpython/`` subdirectory. | |
| - bpo-34725: Adds _Py_SetProgramFullPath so embedders may override | |
| sys.executable | |
| - bpo-34910: Ensure that :c:func:`PyObject_Print` always returns ``-1`` on | |
| error. Patch by Zackery Spytz. | |
| - bpo-34523: Py_DecodeLocale() and Py_EncodeLocale() now use the UTF-8 | |
| encoding on Windows if Py_LegacyWindowsFSEncodingFlag is zero. | |
| - bpo-34193: Fix pluralization in TypeError messages in getargs.c and | |
| typeobject.c: '1 argument' instead of '1 arguments' and '1 element' | |
| instead of '1 elements'. | |
| - bpo-34127: Return grammatically correct error message based on argument | |
| count. Patch by Karthikeyan Singaravelan. | |
| - bpo-23927: Fixed :exc:`SystemError` in | |
| :c:func:`PyArg_ParseTupleAndKeywords` when the ``w*`` format unit is used | |
| for optional parameter. | |
| - bpo-32455: Added :c:func:`PyCompile_OpcodeStackEffectWithJump`. | |
| - bpo-34008: Py_Main() can again be called after Py_Initialize(), as in | |
| Python 3.6. | |
| - bpo-32500: Fixed error messages for :c:func:`PySequence_Size`, | |
| :c:func:`PySequence_GetItem`, :c:func:`PySequence_SetItem` and | |
| :c:func:`PySequence_DelItem` called with a mapping and | |
| :c:func:`PyMapping_Size` called with a sequence. | |
| - bpo-33818: :c:func:`PyExceptionClass_Name` will now return ``const char | |
| *`` instead of ``char *``. | |
| - bpo-33042: Embedding applications may once again call | |
| PySys_ResetWarnOptions, PySys_AddWarnOption, and PySys_AddXOption prior to | |
| calling Py_Initialize. | |
| - bpo-32374: Document that m_traverse for multi-phase initialized modules | |
| can be called with m_state=NULL, and add a sanity check | |
| - bpo-30863: :c:func:`PyUnicode_AsWideChar` and | |
| :c:func:`PyUnicode_AsWideCharString` no longer cache the ``wchar_t*`` | |
| representation of string objects. | |
| What's New in Python 3.7.0 final? | |
| ================================= | |
| *Release date: 2018-06-27* | |
| Library | |
| ------- | |
| - bpo-33851: Fix :func:`ast.get_docstring` for a node that lacks a | |
| docstring. | |
| C API | |
| ----- | |
| - bpo-33932: Calling Py_Initialize() twice does nothing, instead of failing | |
| with a fatal error: restore the Python 3.6 behaviour. | |
| What's New in Python 3.7.0 release candidate 1? | |
| =============================================== | |
| *Release date: 2018-06-12* | |
| Core and Builtins | |
| ----------------- | |
| - bpo-33803: Fix a crash in hamt.c caused by enabling GC tracking for an | |
| object that hadn't all of its fields set to NULL. | |
| - bpo-33706: Fix a crash in Python initialization when parsing the command | |
| line options. Thanks Christoph Gohlke for the bug report and the fix! | |
| - bpo-30654: Fixed reset of the SIGINT handler to SIG_DFL on interpreter | |
| shutdown even when there was a custom handler set previously. Patch by | |
| Philipp Kerling. | |
| - bpo-31849: Fix signed/unsigned comparison warning in pyhash.c. | |
| Library | |
| ------- | |
| - bpo-30167: Prevent site.main() exception if PYTHONSTARTUP is set. Patch by | |
| Steve Weber. | |
| - bpo-33812: Datetime instance d with non-None tzinfo, but with | |
| d.tzinfo.utcoffset(d) returning None is now treated as naive by the | |
| astimezone() method. | |
| - bpo-30805: Avoid race condition with debug logging | |
| - bpo-33694: asyncio: Fix a race condition causing data loss on | |
| pause_reading()/resume_reading() when using the ProactorEventLoop. | |
| - bpo-32493: Correct test for ``uuid_enc_be`` availability in | |
| ``configure.ac``. Patch by Michael Felt. | |
| - bpo-33792: Add asyncio.WindowsSelectorEventLoopPolicy and | |
| asyncio.WindowsProactorEventLoopPolicy. | |
| - bpo-33778: Update ``unicodedata``'s database to Unicode version 11.0.0. | |
| - bpo-33770: improve base64 exception message for encoded inputs of invalid | |
| length | |
| - bpo-33769: asyncio/start_tls: Fix error message; cancel callbacks in case | |
| of an unhandled error; mark SSLTransport as closed if it is aborted. | |
| - bpo-33767: The concatenation (``+``) and repetition (``*``) sequence | |
| operations now raise :exc:`TypeError` instead of :exc:`SystemError` when | |
| performed on :class:`mmap.mmap` objects. Patch by Zackery Spytz. | |
| - bpo-33734: asyncio/ssl: Fix AttributeError, increase default handshake | |
| timeout | |
| - bpo-11874: Use a better regex when breaking usage into wrappable parts. | |
| Avoids bogus assertion errors from custom metavar strings. | |
| - bpo-33582: Emit a deprecation warning for inspect.formatargspec | |
| Documentation | |
| ------------- | |
| - bpo-33409: Clarified the relationship between :pep:`538`'s | |
| PYTHONCOERCECLOCALE and PEP 540's PYTHONUTF8 mode. | |
| - bpo-33736: Improve the documentation of :func:`asyncio.open_connection`, | |
| :func:`asyncio.start_server` and their UNIX socket counterparts. | |
| - bpo-31432: Clarify meaning of CERT_NONE, CERT_OPTIONAL, and CERT_REQUIRED | |
| flags for ssl.SSLContext.verify_mode. | |
| Build | |
| ----- | |
| - bpo-5755: Move ``-Wstrict-prototypes`` option to ``CFLAGS_NODIST`` from | |
| ``OPT``. This option emitted annoying warnings when building extension | |
| modules written in C++. | |
| Windows | |
| ------- | |
| - bpo-33720: Reduces maximum marshal recursion depth on release builds. | |
| IDLE | |
| ---- | |
| - bpo-33656: On Windows, add API call saying that tk scales for DPI. On | |
| Windows 8.1+ or 10, with DPI compatibility properties of the Python binary | |
| unchanged, and a monitor resolution greater than 96 DPI, this should make | |
| text and lines sharper. It should otherwise have no effect. | |
| - bpo-33768: Clicking on a context line moves that line to the top of the | |
| editor window. | |
| - bpo-33763: IDLE: Use read-only text widget for code context instead of | |
| label widget. | |
| - bpo-33664: Scroll IDLE editor text by lines. Previously, the mouse wheel | |
| and scrollbar slider moved text by a fixed number of pixels, resulting in | |
| partial lines at the top of the editor box. The change also applies to | |
| the shell and grep output windows, but not to read-only text views. | |
| - bpo-33679: Enable theme-specific color configuration for Code Context. Use | |
| the Highlights tab to see the setting for built-in themes or add settings | |
| to custom themes. | |
| - bpo-33642: Display up to maxlines non-blank lines for Code Context. If | |
| there is no current context, show a single blank line. | |
| What's New in Python 3.7.0 beta 5? | |
| ================================== | |
| *Release date: 2018-05-30* | |
| Core and Builtins | |
| ----------------- | |
| - bpo-33622: Fixed a leak when the garbage collector fails to add an object | |
| with the ``__del__`` method or referenced by it into the | |
| :data:`gc.garbage` list. :c:func:`PyGC_Collect` can now be called when an | |
| exception is set and preserves it. | |
| - bpo-33509: Fix module_globals parameter of warnings.warn_explicit(): don't | |
| crash if module_globals is not a dict. | |
| - bpo-20104: The new `os.posix_spawn` added in 3.7.0b1 was removed as we are | |
| still working on what the API should look like. Expect this in 3.8 | |
| instead. | |
| - bpo-33475: Fixed miscellaneous bugs in converting annotations to strings | |
| and optimized parentheses in the string representation. | |
| - bpo-33391: Fix a leak in set_symmetric_difference(). | |
| - bpo-28055: Fix unaligned accesses in siphash24(). Patch by Rolf Eike Beer. | |
| - bpo-32911: Due to unexpected compatibility issues discovered during | |
| downstream beta testing, reverted :issue:`29463`. ``docstring`` field is | |
| removed from Module, ClassDef, FunctionDef, and AsyncFunctionDef ast nodes | |
| which was added in 3.7a1. Docstring expression is restored as a first | |
| statement in their body. Based on patch by Inada Naoki. | |
| - bpo-21983: Fix a crash in `ctypes.cast()` in case the type argument is a | |
| ctypes structured data type. Patch by Eryk Sun and Oren Milman. | |
| Library | |
| ------- | |
| - bpo-32751: When cancelling the task due to a timeout, | |
| :meth:`asyncio.wait_for` will now wait until the cancellation is complete. | |
| - bpo-32684: Fix gather to propagate cancellation of itself even with | |
| return_exceptions. | |
| - bpo-33654: Support protocol type switching in SSLTransport.set_protocol(). | |
| - bpo-33674: Pause the transport as early as possible to further reduce the | |
| risk of data_received() being called before connection_made(). | |
| - bpo-33674: Fix a race condition in SSLProtocol.connection_made() of | |
| asyncio.sslproto: start immediately the handshake instead of using | |
| call_soon(). Previously, data_received() could be called before the | |
| handshake started, causing the handshake to hang or fail. | |
| - bpo-31647: Fixed bug where calling write_eof() on a | |
| _SelectorSocketTransport after it's already closed raises AttributeError. | |
| - bpo-32610: Make asyncio.all_tasks() return only pending tasks. | |
| - bpo-32410: Avoid blocking on file IO in sendfile fallback code | |
| - bpo-33469: Fix RuntimeError after closing loop that used run_in_executor | |
| - bpo-33672: Fix Task.__repr__ crash with Cython's bogus coroutines | |
| - bpo-33654: Fix transport.set_protocol() to support switching between | |
| asyncio.Protocol and asyncio.BufferedProtocol. Fix loop.start_tls() to | |
| work with asyncio.BufferedProtocols. | |
| - bpo-33652: Pickles of type variables and subscripted generics are now | |
| future-proof and compatible with older Python versions. | |
| - bpo-32493: Fixed :func:`uuid.uuid1` on FreeBSD. | |
| - bpo-33618: Finalize and document preliminary and experimental TLS 1.3 | |
| support with OpenSSL 1.1.1 | |
| - bpo-33623: Fix possible SIGSGV when asyncio.Future is created in __del__ | |
| - bpo-30877: Fixed a bug in the Python implementation of the JSON decoder | |
| that prevented the cache of parsed strings from clearing after finishing | |
| the decoding. Based on patch by c-fos. | |
| - bpo-33570: Change TLS 1.3 cipher suite settings for compatibility with | |
| OpenSSL 1.1.1-pre6 and newer. OpenSSL 1.1.1 will have TLS 1.3 ciphers | |
| enabled by default. | |
| - bpo-28556: Do not simplify arguments to `typing.Union`. Now | |
| `Union[Manager, Employee]` is not simplified to `Employee` at runtime. | |
| Such simplification previously caused several bugs and limited | |
| possibilities for introspection. | |
| - bpo-33540: Add a new ``block_on_close`` class attribute to | |
| ``ForkingMixIn`` and ``ThreadingMixIn`` classes of :mod:`socketserver`. | |
| - bpo-33548: tempfile._candidate_tempdir_list should consider common TEMP | |
| locations | |
| - bpo-33109: argparse subparsers are once again not required by default, | |
| reverting the change in behavior introduced by bpo-26510 in 3.7.0a2. | |
| - bpo-33536: dataclasses.make_dataclass now checks for invalid field names | |
| and duplicate fields. Also, added a check for invalid field | |
| specifications. | |
| - bpo-33542: Prevent ``uuid.get_node`` from using a DUID instead of a MAC on | |
| Windows. Patch by Zvi Effron | |
| - bpo-26819: Fix race condition with `ReadTransport.resume_reading` in | |
| Windows proactor event loop. | |
| - Fix failure in `typing.get_type_hints()` when ClassVar was provided as a | |
| string forward reference. | |
| - bpo-33505: Optimize asyncio.ensure_future() by reordering if checks: 1.17x | |
| faster. | |
| - bpo-33497: Add errors param to cgi.parse_multipart and make an encoding in | |
| FieldStorage use the given errors (needed for Twisted). Patch by Amber | |
| Brown. | |
| - bpo-33495: Change dataclasses.Fields repr to use the repr of each of its | |
| members, instead of str. This makes it more clear what each field | |
| actually represents. This is especially true for the 'type' member. | |
| - bpo-33453: Fix dataclasses to work if using literal string type | |
| annotations or if using PEP 563 "Postponed Evaluation of Annotations". | |
| Only specific string prefixes are detected for both ClassVar ("ClassVar" | |
| and "typing.ClassVar") and InitVar ("InitVar" and "dataclasses.InitVar"). | |
| - bpo-28556: Minor fixes in typing module: add annotations to | |
| ``NamedTuple.__new__``, pass ``*args`` and ``**kwds`` in | |
| ``Generic.__new__``. Original PRs by Paulius Šarka and Chad Dombrova. | |
| - bpo-20087: Updated alias mapping with glibc 2.27 supported locales. | |
| - bpo-33422: Fix trailing quotation marks getting deleted when looking up | |
| byte/string literals on pydoc. Patch by Andrés Delfino. | |
| - bpo-28167: The function ``platform.linux_distribution`` and | |
| ``platform.dist`` now trigger a ``DeprecationWarning`` and have been | |
| marked for removal in Python 3.8 | |
| - bpo-33197: Update error message when constructing invalid | |
| inspect.Parameters Patch by Dong-hee Na. | |
| - bpo-33263: Fix FD leak in `_SelectorSocketTransport` Patch by Vlad | |
| Starostin. | |
| - bpo-32861: The urllib.robotparser's ``__str__`` representation now | |
| includes wildcard entries and the "Crawl-delay" and "Request-rate" fields. | |
| Patch by Michael Lazar. | |
| - bpo-32257: The ssl module now contains OP_NO_RENEGOTIATION constant, | |
| available with OpenSSL 1.1.0h or 1.1.1. | |
| - bpo-16865: Support arrays >=2GiB in :mod:`ctypes`. Patch by Segev Finer. | |
| Documentation | |
| ------------- | |
| - bpo-23859: Document that `asyncio.wait()` does not cancel its futures on | |
| timeout. | |
| - bpo-32436: Document :pep:`567` changes to asyncio. | |
| - bpo-33604: Update HMAC md5 default to a DeprecationWarning, bump removal | |
| to 3.8. | |
| - bpo-33503: Fix broken pypi link | |
| - bpo-33421: Add missing documentation for ``typing.AsyncContextManager``. | |
| Tests | |
| ----- | |
| - bpo-33655: Ignore test_posix_fallocate failures on BSD platforms that | |
| might be due to running on ZFS. | |
| - bpo-32604: Remove the _xxsubinterpreters module (meant for testing) and | |
| associated helpers. This module was originally added recently in 3.7b1. | |
| Build | |
| ----- | |
| - bpo-33614: Ensures module definition files for the stable ABI on Windows | |
| are correctly regenerated. | |
| - bpo-33522: Enable CI builds on Visual Studio Team Services at | |
| https://python.visualstudio.com/cpython | |
| - bpo-33012: Add ``-Wno-cast-function-type`` for gcc 8 for silencing | |
| warnings about function casts like casting to PyCFunction in method | |
| definition lists. | |
| macOS | |
| ----- | |
| - bpo-13631: The .editrc file in user's home directory is now processed | |
| correctly during the readline initialization through editline emulation on | |
| macOS. | |
| IDLE | |
| ---- | |
| - bpo-33628: IDLE: Cleanup codecontext.py and its test. | |
| - bpo-33564: IDLE's code context now recognizes async as a block opener. | |
| - bpo-32831: Add docstrings and tests for codecontext. | |
| What's New in Python 3.7.0 beta 4? | |
| ================================== | |
| *Release date: 2018-05-02* | |
| Core and Builtins | |
| ----------------- | |
| - bpo-33363: Raise a SyntaxError for ``async with`` and ``async for`` | |
| statements outside of async functions. | |
| - bpo-33128: Fix a bug that causes PathFinder to appear twice on | |
| sys.meta_path. Patch by Pablo Galindo Salgado. | |
| - bpo-33312: Fixed clang ubsan (undefined behavior sanitizer) warnings in | |
| dictobject.c by adjusting how the internal struct _dictkeysobject shared | |
| keys structure is declared. | |
| - bpo-33231: Fix potential memory leak in ``normalizestring()``. | |
| - bpo-33205: Change dict growth function from | |
| ``round_up_to_power_2(used*2+hashtable_size/2)`` to | |
| ``round_up_to_power_2(used*3)``. Previously, dict is shrinked only when | |
| ``used == 0``. Now dict has more chance to be shrinked. | |
| - bpo-29922: Improved error messages in 'async with' when ``__aenter__()`` | |
| or ``__aexit__()`` return non-awaitable object. | |
| - bpo-33199: Fix ``ma_version_tag`` in dict implementation is uninitialized | |
| when copying from key-sharing dict. | |
| Library | |
| ------- | |
| - bpo-33281: Fix ctypes.util.find_library regression on macOS. | |
| - bpo-33383: Fixed crash in the get() method of the :mod:`dbm.ndbm` database | |
| object when it is called with a single argument. | |
| - bpo-33329: Fix multiprocessing regression on newer glibcs | |
| - bpo-991266: Fix quoting of the ``Comment`` attribute of | |
| :class:`http.cookies.SimpleCookie`. | |
| - bpo-33131: Upgrade bundled version of pip to 10.0.1. | |
| - bpo-33308: Fixed a crash in the :mod:`parser` module when converting an ST | |
| object to a tree of tuples or lists with ``line_info=False`` and | |
| ``col_info=True``. | |
| - bpo-33266: lib2to3 now recognizes ``rf'...'`` strings. | |
| - bpo-11594: Ensure line-endings are respected when using lib2to3. | |
| - bpo-33254: Have :func:`importlib.resources.contents` and | |
| :meth:`importlib.abc.ResourceReader.contents` return an :term:`iterable` | |
| instead of an :term:`iterator`. | |
| - bpo-33256: Fix display of ``<module>`` call in the html produced by | |
| ``cgitb.html()``. Patch by Stéphane Blondon. | |
| - bpo-33185: Fixed regression when running pydoc with the :option:`-m` | |
| switch. (The regression was introduced in 3.7.0b3 by the resolution of | |
| :issue:`33053`) This fix also changed pydoc to add ``os.getcwd()`` to | |
| :data:`sys.path` when necessary, rather than adding ``"."``. | |
| - bpo-33169: Delete entries of ``None`` in :data:`sys.path_importer_cache` | |
| when :meth:`importlib.machinery.invalidate_caches` is called. | |
| - bpo-33217: Deprecate looking up non-Enum objects in Enum classes and Enum | |
| members (will raise :exc:`TypeError` in 3.8+). | |
| - bpo-33203: ``random.Random.choice()`` now raises ``IndexError`` for empty | |
| sequences consistently even when called from subclasses without a | |
| ``getrandbits()`` implementation. | |
| - bpo-33224: Update difflib.mdiff() for :pep:`479`. Convert an uncaught | |
| StopIteration in a generator into a return-statement. | |
| - bpo-33209: End framing at the end of C implementation of | |
| :func:`pickle.Pickler.dump`. | |
| - bpo-20104: Improved error handling and fixed a reference leak in | |
| :func:`os.posix_spawn()`. | |
| - bpo-33175: In dataclasses, Field.__set_name__ now looks up the | |
| __set_name__ special method on the class, not the instance, of the default | |
| value. | |
| - bpo-33097: Raise RuntimeError when ``executor.submit`` is called during | |
| interpreter shutdown. | |
| - bpo-31908: Fix output of cover files for ``trace`` module command-line | |
| tool. Previously emitted cover files only when ``--missing`` option was | |
| used. Patch by Michael Selik. | |
| Documentation | |
| ------------- | |
| - bpo-33378: Add Korean language switcher for https://docs.python.org/3/ | |
| - bpo-33276: Clarify that the ``__path__`` attribute on modules cannot be | |
| just any value. | |
| - bpo-33201: Modernize documentation for writing C extension types. | |
| - bpo-33195: Deprecate ``Py_UNICODE`` usage in ``c-api/arg`` document. | |
| ``Py_UNICODE`` related APIs are deprecated since Python 3.3, but it is | |
| missed in the document. | |
| - bpo-8243: Add a note about curses.addch and curses.addstr exception | |
| behavior when writing outside a window, or pad. | |
| - bpo-32337: Update documentation related with ``dict`` order. | |
| Tests | |
| ----- | |
| - bpo-33358: Fix ``test_embed.test_pre_initialization_sys_options()`` when | |
| the interpreter is built with ``--enable-shared``. | |
| Build | |
| ----- | |
| - bpo-33394: Enable the verbose build for extension modules, when GNU make | |
| is passed macros on the command line. | |
| - bpo-33393: Update config.guess and config.sub files. | |
| - bpo-33377: Add new triplets for mips r6 and riscv variants (used in | |
| extension suffixes). | |
| - bpo-32232: By default, modules configured in `Modules/Setup` are no longer | |
| built with `-DPy_BUILD_CORE`. Instead, modules that specifically need that | |
| preprocessor definition include it in their individual entries. | |
| - bpo-33182: The embedding tests can once again be built with clang 6.0 | |
| Windows | |
| ------- | |
| - bpo-33184: Update Windows installer to use OpenSSL 1.1.0h. | |
| macOS | |
| ----- | |
| - bpo-33184: Update macOS installer build to use OpenSSL 1.1.0h. | |
| IDLE | |
| ---- | |
| - bpo-21474: Update word/identifier definition from ascii to unicode. In | |
| text and entry boxes, this affects selection by double-click, movement | |
| left/right by control-left/right, and deletion left/right by | |
| control-BACKSPACE/DEL. | |
| - bpo-33204: IDLE: consistently color invalid string prefixes. A 'u' string | |
| prefix cannot be paired with either 'r' or 'f'. Consistently color as much | |
| of the prefix, starting at the right, as is valid. Revise and extend | |
| colorizer test. | |
| Tools/Demos | |
| ----------- | |
| - bpo-33189: :program:`pygettext.py` now recognizes only literal strings as | |
| docstrings and translatable strings, and rejects bytes literals and | |
| f-string expressions. | |
| - bpo-31920: Fixed handling directories as arguments in the ``pygettext`` | |
| script. Based on patch by Oleg Krasnikov. | |
| - bpo-29673: Fix pystackv and pystack gdbinit macros. | |
| - bpo-31583: Fix 2to3 for using with --add-suffix option but without | |
| --output-dir option for relative path to files in current directory. | |
| What's New in Python 3.7.0 beta 3? | |
| ================================== | |
| *Release date: 2018-03-29* | |
| Security | |
| -------- | |
| - bpo-33136: Harden ssl module against LibreSSL CVE-2018-8970. | |
| X509_VERIFY_PARAM_set1_host() is called with an explicit namelen. A new | |
| test ensures that NULL bytes are not allowed. | |
| - bpo-33001: Minimal fix to prevent buffer overrun in os.symlink on Windows | |
| - bpo-32981: Regexes in difflib and poplib were vulnerable to catastrophic | |
| backtracking. These regexes formed potential DOS vectors (REDOS). They | |
| have been refactored. This resolves CVE-2018-1060 and CVE-2018-1061. Patch | |
| by Jamie Davis. | |
| Core and Builtins | |
| ----------------- | |
| - bpo-33053: When using the -m switch, sys.path[0] is now explicitly | |
| expanded as the *starting* working directory, rather than being left as | |
| the empty path (which allows imports from the current working directory at | |
| the time of the import) | |
| - bpo-33018: Improve consistency of errors raised by ``issubclass()`` when | |
| called with a non-class and an abstract base class as the first and second | |
| arguments, respectively. Patch by Josh Bronson. | |
| - bpo-33041: Fixed jumping when the function contains an ``async for`` loop. | |
| - bpo-33026: Fixed jumping out of "with" block by setting f_lineno. | |
| - bpo-33005: Fix a crash on fork when using a custom memory allocator (ex: | |
| using PYTHONMALLOC env var). _PyGILState_Reinit() and | |
| _PyInterpreterState_Enable() now use the default RAW memory allocator to | |
| allocate a new interpreters mutex on fork. | |
| - bpo-17288: Prevent jumps from 'return' and 'exception' trace events. | |
| - bpo-32836: Don't use temporary variables in cases of list/dict/set | |
| comprehensions | |
| Library | |
| ------- | |
| - bpo-33141: Have Field objects pass through __set_name__ to their default | |
| values, if they have their own __set_name__. | |
| - bpo-33096: Allow ttk.Treeview.insert to insert iid that has a false | |
| boolean value. Note iid=0 and iid=False would be same. Patch by Garvit | |
| Khatri. | |
| - bpo-32873: Treat type variables and special typing forms as immutable by | |
| copy and pickle. This fixes several minor issues and inconsistencies, and | |
| improves backwards compatibility with Python 3.6. | |
| - bpo-33134: When computing dataclass's __hash__, use the lookup table to | |
| contain the function which returns the __hash__ value. This is an | |
| improvement over looking up a string, and then testing that string to see | |
| what to do. | |
| - bpo-33127: The ssl module now compiles with LibreSSL 2.7.1. | |
| - bpo-32505: Raise TypeError if a member variable of a dataclass is of type | |
| Field, but doesn't have a type annotation. | |
| - bpo-33078: Fix the failure on OSX caused by the tests relying on | |
| sem_getvalue | |
| - bpo-33116: Add 'Field' to dataclasses.__all__. | |
| - bpo-32896: Fix an error where subclassing a dataclass with a field that | |
| uses a default_factory would generate an incorrect class. | |
| - bpo-33100: Dataclasses: If a field has a default value that's a | |
| MemberDescriptorType, then it's from that field being in __slots__, not an | |
| actual default value. | |
| - bpo-32953: If a non-dataclass inherits from a frozen dataclass, allow | |
| attributes to be added to the derived class. Only attributes from the | |
| frozen dataclass cannot be assigned to. Require all dataclasses in a | |
| hierarchy to be either all frozen or all non-frozen. | |
| - bpo-33061: Add missing ``NoReturn`` to ``__all__`` in typing.py | |
| - bpo-33078: Fix the size handling in multiprocessing.Queue when a pickling | |
| error occurs. | |
| - bpo-33064: lib2to3 now properly supports trailing commas after ``*args`` | |
| and ``**kwargs`` in function signatures. | |
| - bpo-33056: FIX properly close leaking fds in | |
| concurrent.futures.ProcessPoolExecutor. | |
| - bpo-33021: Release the GIL during fstat() calls, avoiding hang of all | |
| threads when calling mmap.mmap(), os.urandom(), and random.seed(). Patch | |
| by Nir Soffer. | |
| - bpo-31804: Avoid failing in multiprocessing.Process if the standard | |
| streams are closed or None at exit. | |
| - bpo-33037: Skip sending/receiving data after SSL transport closing. | |
| - bpo-27683: Fix a regression in :mod:`ipaddress` that result of | |
| :meth:`hosts` is empty when the network is constructed by a tuple | |
| containing an integer mask and only 1 bit left for addresses. | |
| - bpo-32999: Fix C implementation of ``ABC.__subclasscheck__(cls, | |
| subclass)`` crashed when ``subclass`` is not a type object. | |
| - bpo-33009: Fix inspect.signature() for single-parameter partialmethods. | |
| - bpo-32969: Expose several missing constants in zlib and fix corresponding | |
| documentation. | |
| - bpo-32056: Improved exceptions raised for invalid number of channels and | |
| sample width when read an audio file in modules :mod:`aifc`, :mod:`wave` | |
| and :mod:`sunau`. | |
| - bpo-32844: Fix wrong redirection of a low descriptor (0 or 1) to stderr in | |
| subprocess if another low descriptor is closed. | |
| - bpo-32857: In :mod:`tkinter`, ``after_cancel(None)`` now raises a | |
| :exc:`ValueError` instead of canceling the first scheduled function. | |
| Patch by Cheryl Sabella. | |
| - bpo-31639: http.server now exposes a ThreadedHTTPServer class and uses it | |
| when the module is run with ``-m`` to cope with web browsers pre-opening | |
| sockets. | |
| - bpo-27645: :class:`sqlite3.Connection` now exposes a | |
| :class:`~sqlite3.Connection.backup` method, if the underlying SQLite | |
| library is at version 3.6.11 or higher. Patch by Lele Gaifax. | |
| Documentation | |
| ------------- | |
| - bpo-33126: Document PyBuffer_ToContiguous(). | |
| - bpo-27212: Modify documentation for the :func:`islice` recipe to consume | |
| initial values up to the start index. | |
| - bpo-28247: Update :mod:`zipapp` documentation to describe how to make | |
| standalone applications. | |
| - bpo-18802: Documentation changes for ipaddress. Patch by Jon Foster and | |
| Berker Peksag. | |
| - bpo-27428: Update documentation to clarify that ``WindowsRegistryFinder`` | |
| implements ``MetaPathFinder``. (Patch by Himanshu Lakhara) | |
| Tests | |
| ----- | |
| - bpo-32872: Avoid regrtest compatibility issue with namespace packages. | |
| - bpo-32517: Fix failing ``test_asyncio`` on macOS 10.12.2+ due to transport | |
| of ``KqueueSelector`` loop was not being closed. | |
| - bpo-19417: Add test_bdb.py. | |
| Build | |
| ----- | |
| - bpo-33163: Upgrade pip to 9.0.3 and setuptools to v39.0.1. | |
| Windows | |
| ------- | |
| - bpo-33016: Fix potential use of uninitialized memory in | |
| nt._getfinalpathname | |
| - bpo-32903: Fix a memory leak in os.chdir() on Windows if the current | |
| directory is set to a UNC path. | |
| macOS | |
| ----- | |
| - bpo-32726: Build and link with private copy of Tcl/Tk 8.6 for the macOS | |
| 10.6+ installer. The 10.9+ installer variant already does this. This | |
| means that the Python 3.7 provided by the python.org macOS installers no | |
| longer need or use any external versions of Tcl/Tk, either system-provided | |
| or user-installed, such as ActiveTcl. | |
| IDLE | |
| ---- | |
| - bpo-32984: Set ``__file__`` while running a startup file. Like Python, | |
| IDLE optionally runs one startup file in the Shell window before | |
| presenting the first interactive input prompt. For IDLE, ``-s`` runs a | |
| file named in environmental variable :envvar:`IDLESTARTUP` or | |
| :envvar:`PYTHONSTARTUP`; ``-r file`` runs ``file``. Python sets | |
| ``__file__`` to the startup file name before running the file and unsets | |
| it before the first prompt. IDLE now does the same when run normally, | |
| without the ``-n`` option. | |
| - bpo-32940: Simplify and rename StringTranslatePseudoMapping in pyparse. | |
| Tools/Demos | |
| ----------- | |
| - bpo-32885: Add an ``-n`` flag for ``Tools/scripts/pathfix.py`` to disable | |
| automatic backup creation (files with ``~`` suffix). | |
| C API | |
| ----- | |
| - bpo-33042: Embedding applications may once again call | |
| PySys_ResetWarnOptions, PySys_AddWarnOption, and PySys_AddXOption prior to | |
| calling Py_Initialize. | |
| - bpo-32374: Document that m_traverse for multi-phase initialized modules | |
| can be called with m_state=NULL, and add a sanity check | |
| What's New in Python 3.7.0 beta 2? | |
| ================================== | |
| *Release date: 2018-02-27* | |
| Security | |
| -------- | |
| - bpo-28414: The ssl module now allows users to perform their own IDN | |
| en/decoding when using SNI. | |
| Core and Builtins | |
| ----------------- | |
| - bpo-32889: Update Valgrind suppression list to account for the rename of | |
| ``Py_ADDRESS_IN_RANG`` to ``address_in_range``. | |
| - bpo-31356: Remove the new API added in bpo-31356 (gc.ensure_disabled() | |
| context manager). | |
| - bpo-32305: For namespace packages, ensure that both ``__file__`` and | |
| ``__spec__.origin`` are set to None. | |
| - bpo-32303: Make sure ``__spec__.loader`` matches ``__loader__`` for | |
| namespace packages. | |
| - bpo-32711: Fix the warning messages for Python/ast_unparse.c. Patch by | |
| Stéphane Wirtel | |
| - bpo-32583: Fix possible crashing in builtin Unicode decoders caused by | |
| write out-of-bound errors when using customized decode error handlers. | |
| Library | |
| ------- | |
| - bpo-32960: For dataclasses, disallow inheriting frozen from non-frozen | |
| classes, and also disallow inheriting non-frozen from frozen classes. This | |
| restriction will be relaxed at a future date. | |
| - bpo-32713: Fixed tarfile.itn handling of out-of-bounds float values. Patch | |
| by Joffrey Fuhrer. | |
| - bpo-32951: Direct instantiation of SSLSocket and SSLObject objects is now | |
| prohibited. The constructors were never documented, tested, or designed as | |
| public constructors. Users were suppose to use ssl.wrap_socket() or | |
| SSLContext. | |
| - bpo-32929: Remove the tri-state parameter "hash", and add the boolean | |
| "unsafe_hash". If unsafe_hash is True, add a __hash__ function, but if a | |
| __hash__ exists, raise TypeError. If unsafe_hash is False, add a __hash__ | |
| based on the values of eq= and frozen=. The unsafe_hash=False behavior is | |
| the same as the old hash=None behavior. unsafe_hash=False is the default, | |
| just as hash=None used to be. | |
| - bpo-32947: Add OP_ENABLE_MIDDLEBOX_COMPAT and test workaround for TLSv1.3 | |
| for future compatibility with OpenSSL 1.1.1. | |
| - bpo-30622: The ssl module now detects missing NPN support in LibreSSL. | |
| - bpo-32922: dbm.open() now encodes filename with the filesystem encoding | |
| rather than default encoding. | |
| - bpo-32859: In ``os.dup2``, don't check every call whether the ``dup3`` | |
| syscall exists or not. | |
| - bpo-32556: nt._getfinalpathname, nt._getvolumepathname and | |
| nt._getdiskusage now correctly convert from bytes. | |
| - bpo-25988: Emit a :exc:`DeprecationWarning` when using or importing an ABC | |
| directly from :mod:`collections` rather than from :mod:`collections.abc`. | |
| - bpo-21060: Rewrite confusing message from setup.py upload from "No dist | |
| file created in earlier command" to the more helpful "Must create and | |
| upload files in one command". | |
| - bpo-32852: Make sure sys.argv remains as a list when running trace. | |
| - bpo-31333: ``_abc`` module is added. It is a speedup module with C | |
| implementations for various functions and methods in ``abc``. Creating an | |
| ABC subclass and calling ``isinstance`` or ``issubclass`` with an ABC | |
| subclass are up to 1.5x faster. In addition, this makes Python start-up up | |
| to 10% faster. Note that the new implementation hides internal registry | |
| and caches, previously accessible via private attributes | |
| ``_abc_registry``, ``_abc_cache``, and ``_abc_negative_cache``. There are | |
| three debugging helper methods that can be used instead | |
| ``_dump_registry``, ``_abc_registry_clear``, and ``_abc_caches_clear``. | |
| - bpo-32841: Fixed `asyncio.Condition` issue which silently ignored | |
| cancellation after notifying and cancelling a conditional lock. Patch by | |
| Bar Harel. | |
| - bpo-32819: ssl.match_hostname() has been simplified and no longer depends | |
| on re and ipaddress module for wildcard and IP addresses. Error reporting | |
| for invalid wildcards has been improved. | |
| - bpo-32394: socket: Remove | |
| TCP_FASTOPEN,TCP_KEEPCNT,TCP_KEEPIDLE,TCP_KEEPINTVL flags on older version | |
| Windows during run-time. | |
| - bpo-31787: Fixed refleaks of ``__init__()`` methods in various modules. | |
| (Contributed by Oren Milman) | |
| - bpo-30157: Fixed guessing quote and delimiter in csv.Sniffer.sniff() when | |
| only the last field is quoted. Patch by Jake Davis. | |
| - bpo-32792: collections.ChainMap() preserves the order of the underlying | |
| mappings. | |
| - bpo-32775: :func:`fnmatch.translate()` no longer produces patterns which | |
| contain set operations. Sets starting with '[' or containing '--', '&&', | |
| '~~' or '||' will be interpreted differently in regular expressions in | |
| future versions. Currently they emit warnings. fnmatch.translate() now | |
| avoids producing patterns containing such sets by accident. | |
| - bpo-32622: Implement native fast sendfile for Windows proactor event loop. | |
| - bpo-32777: Fix a rare but potential pre-exec child process deadlock in | |
| subprocess on POSIX systems when marking file descriptors inheritable on | |
| exec in the child process. This bug appears to have been introduced in | |
| 3.4. | |
| - bpo-32647: The ctypes module used to depend on indirect linking for | |
| dlopen. The shared extension is now explicitly linked against libdl on | |
| platforms with dl. | |
| - bpo-32741: Implement ``asyncio.TimerHandle.when()`` method. | |
| - bpo-32691: Use mod_spec.parent when running modules with pdb | |
| - bpo-32734: Fixed ``asyncio.Lock()`` safety issue which allowed acquiring | |
| and locking the same lock multiple times, without it being free. Patch by | |
| Bar Harel. | |
| - bpo-32727: Do not include name field in SMTP envelope from address. Patch | |
| by Stéphane Wirtel | |
| - bpo-31453: Add TLSVersion constants and SSLContext.maximum_version / | |
| minimum_version attributes. The new API wraps OpenSSL 1.1 | |
| https://web.archive.org/web/20180309043602/https://www.openssl.org/docs/man1.1.0/ssl/SSL_CTX_set_min_proto_version.html | |
| feature. | |
| - bpo-24334: Internal implementation details of ssl module were cleaned up. | |
| The SSLSocket has one less layer of indirection. Owner and session | |
| information are now handled by the SSLSocket and SSLObject constructor. | |
| Channel binding implementation has been simplified. | |
| - bpo-31848: Fix the error handling in Aifc_read.initfp() when the SSND | |
| chunk is not found. Patch by Zackery Spytz. | |
| - bpo-32585: Add Ttk spinbox widget to :mod:`tkinter.ttk`. Patch by Alan D | |
| Moore. | |
| - bpo-32221: Various functions returning tuple containing IPv6 addresses now | |
| omit ``%scope`` part since the same information is already encoded in | |
| *scopeid* tuple item. Especially this speeds up :func:`socket.recvfrom` | |
| when it receives multicast packet since useless resolving of network | |
| interface name is omitted. | |
| - bpo-30693: The TarFile class now recurses directories in a reproducible | |
| way. | |
| - bpo-30693: The ZipFile class now recurses directories in a reproducible | |
| way. | |
| Documentation | |
| ------------- | |
| - bpo-28124: The ssl module function ssl.wrap_socket() has been | |
| de-emphasized and deprecated in favor of the more secure and efficient | |
| SSLContext.wrap_socket() method. | |
| - bpo-17232: Clarify docs for -O and -OO. Patch by Terry Reedy. | |
| - bpo-32436: Add documentation for the contextvars module (PEP 567). | |
| - bpo-32800: Update link to w3c doc for xml default namespaces. | |
| - bpo-11015: Update :mod:`test.support` documentation. | |
| - bpo-8722: Document :meth:`__getattr__` behavior when property :meth:`get` | |
| method raises :exc:`AttributeError`. | |
| - bpo-32614: Modify RE examples in documentation to use raw strings to | |
| prevent :exc:`DeprecationWarning` and add text to REGEX HOWTO to highlight | |
| the deprecation. | |
| - bpo-31972: Improve docstrings for `pathlib.PurePath` subclasses. | |
| Tests | |
| ----- | |
| - bpo-31809: Add tests to verify connection with secp ECDH curves. | |
| Build | |
| ----- | |
| - bpo-32898: Fix the python debug build when using COUNT_ALLOCS. | |
| Windows | |
| ------- | |
| - bpo-32901: Update Tcl and Tk versions to 8.6.8 | |
| - bpo-31966: Fixed WindowsConsoleIO.write() for writing empty data. | |
| - bpo-32409: Ensures activate.bat can handle Unicode contents. | |
| - bpo-32457: Improves handling of denormalized executable path when | |
| launching Python. | |
| - bpo-32370: Use the correct encoding for ipconfig output in the uuid | |
| module. Patch by Segev Finer. | |
| - bpo-29248: Fix :func:`os.readlink` on Windows, which was mistakenly | |
| treating the ``PrintNameOffset`` field of the reparse data buffer as a | |
| number of characters instead of bytes. Patch by Craig Holmquist and SSE4. | |
| macOS | |
| ----- | |
| - bpo-32901: Update macOS 10.9+ installer to Tcl/Tk 8.6.8. | |
| IDLE | |
| ---- | |
| - bpo-32916: Change ``str`` to ``code`` in pyparse. | |
| - bpo-32905: Remove unused code in pyparse module. | |
| - bpo-32874: Add tests for pyparse. | |
| - bpo-32837: Using the system and place-dependent default encoding for | |
| open() is a bad idea for IDLE's system and location-independent files. | |
| - bpo-32826: Add "encoding=utf-8" to open() in IDLE's test_help_about. GUI | |
| test test_file_buttons() only looks at initial ascii-only lines, but | |
| failed on systems where open() defaults to 'ascii' because readline() | |
| internally reads and decodes far enough ahead to encounter a non-ascii | |
| character in CREDITS.txt. | |
| - bpo-32765: Update configdialog General tab docstring to add new widgets to | |
| the widget list. | |
| Tools/Demos | |
| ----------- | |
| - bpo-32222: Fix pygettext not extracting docstrings for functions with type | |
| annotated arguments. Patch by Toby Harradine. | |
| What's New in Python 3.7.0 beta 1? | |
| ================================== | |
| *Release date: 2018-01-30* | |
| Core and Builtins | |
| ----------------- | |
| - bpo-32703: Fix coroutine's ResourceWarning when there's an active error | |
| set when it's being finalized. | |
| - bpo-32650: Pdb and other debuggers dependent on bdb.py will correctly step | |
| over (next command) native coroutines. Patch by Pablo Galindo. | |
| - bpo-28685: Optimize list.sort() and sorted() by using type specialized | |
| comparisons when possible. | |
| - bpo-32685: Improve suggestion when the Python 2 form of print statement is | |
| either present on the same line as the header of a compound statement or | |
| else terminated by a semi-colon instead of a newline. Patch by Nitish | |
| Chandra. | |
| - bpo-32697: Python now explicitly preserves the definition order of | |
| keyword-only parameters. It's always preserved their order, but this | |
| behavior was never guaranteed before; this behavior is now guaranteed and | |
| tested. | |
| - bpo-32690: The locals() dictionary now displays in the lexical order that | |
| variables were defined. Previously, the order was reversed. | |
| - bpo-32677: Add ``.isascii()`` method to ``str``, ``bytes`` and | |
| ``bytearray``. It can be used to test that string contains only ASCII | |
| characters. | |
| - bpo-32670: Enforce :pep:`479` for all code. This means that manually | |
| raising a StopIteration exception from a generator is prohibited for all | |
| code, regardless of whether 'from __future__ import generator_stop' was | |
| used or not. | |
| - bpo-32591: Added built-in support for tracking the origin of coroutine | |
| objects; see sys.set_coroutine_origin_tracking_depth and | |
| CoroutineType.cr_origin. This replaces the asyncio debug mode's use of | |
| coroutine wrapping for native coroutine objects. | |
| - bpo-31368: Expose preadv and pwritev system calls in the os module. Patch | |
| by Pablo Galindo | |
| - bpo-32544: ``hasattr(obj, name)`` and ``getattr(obj, name, default)`` are | |
| about 4 times faster than before when ``name`` is not found and ``obj`` | |
| doesn't override ``__getattr__`` or ``__getattribute__``. | |
| - bpo-26163: Improved frozenset() hash to create more distinct hash values | |
| when faced with datasets containing many similar values. | |
| - bpo-32550: Remove the STORE_ANNOTATION bytecode. | |
| - bpo-20104: Expose posix_spawn as a low level API in the os module. | |
| (removed before 3.7.0rc1) | |
| - bpo-24340: Fixed estimation of the code stack size. | |
| - bpo-32436: Implement :pep:`567` Context Variables. | |
| - bpo-18533: ``repr()`` on a dict containing its own ``values()`` or | |
| ``items()`` no longer raises ``RecursionError``; OrderedDict similarly. | |
| Instead, use ``...``, as for other recursive structures. Patch by Ben | |
| North. | |
| - bpo-20891: Py_Initialize() now creates the GIL. The GIL is no longer | |
| created "on demand" to fix a race condition when PyGILState_Ensure() is | |
| called in a non-Python thread. | |
| - bpo-32028: Leading whitespace is now correctly ignored when generating | |
| suggestions for converting Py2 print statements to Py3 builtin print | |
| function calls. Patch by Sanyam Khurana. | |
| - bpo-31179: Make dict.copy() up to 5.5 times faster. | |
| - bpo-31113: Get rid of recursion in the compiler for normal control flow. | |
| Library | |
| ------- | |
| - bpo-25988: Deprecate exposing the contents of collections.abc in the | |
| regular collections module. | |
| - bpo-31429: The default cipher suite selection of the ssl module now uses a | |
| blacklist approach rather than a hard-coded whitelist. Python no longer | |
| re-enables ciphers that have been blocked by OpenSSL security update. | |
| Default cipher suite selection can be configured on compile time. | |
| - bpo-30306: contextlib.contextmanager now releases the arguments passed to | |
| the underlying generator as soon as the context manager is entered. | |
| Previously it would keep them alive for as long as the context manager was | |
| alive, even when not being used as a function decorator. Patch by Martin | |
| Teichmann. | |
| - bpo-21417: Added support for setting the compression level for | |
| zipfile.ZipFile. | |
| - bpo-32251: Implement asyncio.BufferedProtocol (provisional API). | |
| - bpo-32513: In dataclasses, allow easier overriding of dunder methods | |
| without specifying decorator parameters. | |
| - bpo-32660: :mod:`termios` makes available ``FIONREAD``, ``FIONCLEX``, | |
| ``FIOCLEX``, ``FIOASYNC`` and ``FIONBIO`` also under Solaris/derivatives. | |
| - bpo-27931: Fix email address header parsing error when the username is an | |
| empty quoted string. Patch by Xiang Zhang. | |
| - bpo-32659: Under Solaris and derivatives, :class:`os.stat_result` provides | |
| a st_fstype attribute. | |
| - bpo-32662: Implement Server.start_serving(), Server.serve_forever(), and | |
| Server.is_serving() methods. Add 'start_serving' keyword parameter to | |
| loop.create_server() and loop.create_unix_server(). | |
| - bpo-32391: Implement :meth:`asyncio.StreamWriter.wait_closed` and | |
| :meth:`asyncio.StreamWriter.is_closing` methods | |
| - bpo-32643: Make Task._step, Task._wakeup and Future._schedule_callbacks | |
| methods private. | |
| - bpo-32630: Refactor decimal module to use contextvars to store decimal | |
| context. | |
| - bpo-32622: Add :meth:`asyncio.AbstractEventLoop.sendfile` method. | |
| - bpo-32304: distutils' upload command no longer corrupts tar files ending | |
| with a CR byte, and no longer tries to convert CR to CRLF in any of the | |
| upload text fields. | |
| - bpo-32502: uuid.uuid1 no longer raises an exception if a 64-bit hardware | |
| address is encountered. | |
| - bpo-32596: ``concurrent.futures`` imports ``ThreadPoolExecutor`` and | |
| ``ProcessPoolExecutor`` lazily (using :pep:`562`). It makes ``import | |
| asyncio`` about 15% faster because asyncio uses only | |
| ``ThreadPoolExecutor`` by default. | |
| - bpo-31801: Add ``_ignore_`` to ``Enum`` so temporary variables can be used | |
| during class construction without being turned into members. | |
| - bpo-32576: Use queue.SimpleQueue() in places where it can be invoked from | |
| a weakref callback. | |
| - bpo-32574: Fix memory leak in asyncio.Queue, when the queue has limited | |
| size and it is full, the cancelation of queue.put() can cause a memory | |
| leak. Patch by: José Melero. | |
| - bpo-32521: The nis module is now compatible with new libnsl and headers | |
| location. | |
| - bpo-32467: collections.abc.ValuesView now inherits from | |
| collections.abc.Collection. | |
| - bpo-32473: Improve ABCMeta._dump_registry() output readability | |
| - bpo-32102: New argument ``capture_output`` for subprocess.run | |
| - bpo-32521: glibc has removed Sun RPC. Use replacement libtirpc headers and | |
| library in nis module. | |
| - bpo-32493: UUID module fixes build for FreeBSD/OpenBSD | |
| - bpo-32503: Pickling with protocol 4 no longer creates too small frames. | |
| - bpo-29237: Create enum for pstats sorting options | |
| - bpo-32454: Add close(fd) function to the socket module. | |
| - bpo-25942: The subprocess module is now more graceful when handling a | |
| Ctrl-C KeyboardInterrupt during subprocess.call, subprocess.run, or a | |
| Popen context manager. It now waits a short amount of time for the child | |
| (presumed to have also gotten the SIGINT) to exit, before continuing the | |
| KeyboardInterrupt exception handling. This still includes a SIGKILL in | |
| the call() and run() APIs, but at least the child had a chance first. | |
| - bpo-32433: The hmac module now has hmac.digest(), which provides an | |
| optimized HMAC digest. | |
| - bpo-28134: Sockets now auto-detect family, type and protocol from file | |
| descriptor by default. | |
| - bpo-32404: Fix bug where :meth:`datetime.datetime.fromtimestamp` did not | |
| call __new__ in :class:`datetime.datetime` subclasses. | |
| - bpo-32403: Improved speed of :class:`datetime.date` and | |
| :class:`datetime.datetime` alternate constructors. | |
| - bpo-32228: Ensure that ``truncate()`` preserves the file position (as | |
| reported by ``tell()``) after writes longer than the buffer size. | |
| - bpo-32410: Implement ``loop.sock_sendfile`` for asyncio event loop. | |
| - bpo-22908: Added seek and tell to the ZipExtFile class. This only works if | |
| the file object used to open the zipfile is seekable. | |
| - bpo-32373: Add socket.getblocking() method. | |
| - bpo-32248: Add :mod:`importlib.resources` and | |
| :class:`importlib.abc.ResourceReader` as the unified API for reading | |
| resources contained within packages. Loaders wishing to support resource | |
| reading must implement the :meth:`get_resource_reader()` method. | |
| File-based and zipimport-based loaders both implement these APIs. | |
| :class:`importlib.abc.ResourceLoader` is deprecated in favor of these new | |
| APIs. | |
| - bpo-32320: collections.namedtuple() now supports default values. | |
| - bpo-29302: Add contextlib.AsyncExitStack. Patch by Alexander Mohr and Ilya | |
| Kulakov. | |
| - bpo-31961: *Removed in Python 3.7.0b2.* The *args* argument of | |
| subprocess.Popen can now be a :term:`path-like object`. If *args* is given | |
| as a sequence, it's first element can now be a :term:`path-like object` as | |
| well. | |
| - bpo-31900: The :func:`locale.localeconv` function now sets temporarily the | |
| ``LC_CTYPE`` locale to the ``LC_NUMERIC`` locale to decode | |
| ``decimal_point`` and ``thousands_sep`` byte strings if they are non-ASCII | |
| or longer than 1 byte, and the ``LC_NUMERIC`` locale is different than the | |
| ``LC_CTYPE`` locale. This temporary change affects other threads. Same | |
| change for the :meth:`str.format` method when formatting a number | |
| (:class:`int`, :class:`float`, :class:`float` and subclasses) with the | |
| ``n`` type (ex: ``'{:n}'.format(1234)``). | |
| - bpo-31853: Use super().method instead of socket.method in SSLSocket. They | |
| were there most likely for legacy reasons. | |
| - bpo-31399: The ssl module now uses OpenSSL's X509_VERIFY_PARAM_set1_host() | |
| and X509_VERIFY_PARAM_set1_ip() API to verify hostname and IP addresses. | |
| Subject common name fallback can be disabled with | |
| SSLContext.hostname_checks_common_name. | |
| - bpo-14976: Add a queue.SimpleQueue class, an unbounded FIFO queue with a | |
| reentrant C implementation of put(). | |
| Documentation | |
| ------------- | |
| - bpo-32724: Add references to some commands in the documentation of Pdb. | |
| Patch by Stéphane Wirtel | |
| - bpo-32649: Complete the C API documentation, profiling and tracing part | |
| with the newly added per-opcode events. | |
| - bpo-17799: Explain real behaviour of sys.settrace and sys.setprofile and | |
| their C-API counterparts regarding which type of events are received in | |
| each function. Patch by Pablo Galindo Salgado. | |
| Tests | |
| ----- | |
| - bpo-32721: Fix test_hashlib to not fail if the _md5 module is not built. | |
| - bpo-28414: Add test cases for IDNA 2003 and 2008 host names. IDNA 2003 | |
| internationalized host names are working since bpo-31399 has landed. IDNA | |
| 2008 are still broken. | |
| - bpo-32604: Add a new "_xxsubinterpreters" extension module that exposes | |
| the existing subinterpreter C-API and a new cross-interpreter data sharing | |
| mechanism. The module is primarily intended for more thorough testing of | |
| the existing subinterpreter support. Note that the _xxsubinterpreters | |
| module has been removed in 3.7.0rc1. | |
| - bpo-32602: Add test certs and test for ECDSA cert and EC/RSA dual mode. | |
| - bpo-32549: On Travis CI, Python now Compiles and uses a local copy of | |
| OpenSSL 1.1.0g for testing. | |
| Build | |
| ----- | |
| - bpo-32635: Fix segfault of the crypt module when libxcrypt is provided | |
| instead of libcrypt at the system. | |
| - bpo-32598: Use autoconf to detect OpenSSL libs, headers and supported | |
| features. The ax_check_openssl M4 macro uses pkg-config to locate OpenSSL | |
| and falls back to manual search. | |
| - bpo-32593: Drop support of FreeBSD 9 and older. | |
| - bpo-29708: If the :envvar:`SOURCE_DATE_EPOCH` environment variable is set, | |
| :mod:`py_compile` will always create hash-based ``.pyc`` files. | |
| Windows | |
| ------- | |
| - bpo-32588: Create standalone _distutils_findvs module and add missing | |
| _queue module to installer. | |
| - bpo-29911: Ensure separate Modify and Uninstall buttons are displayed. | |
| - bpo-32507: Use app-local UCRT install rather than the proper update for | |
| old versions of Windows. | |
| macOS | |
| ----- | |
| - bpo-32726: Provide an additional, more modern macOS installer variant that | |
| supports macOS 10.9+ systems in 64-bit mode only. Upgrade the supplied | |
| third-party libraries to OpenSSL 1.1.0g and to SQLite 3.22.0. The 10.9+ | |
| installer now links with and supplies its own copy of Tcl/Tk 8.6. | |
| - bpo-28440: No longer add /Library/Python/3.x/site-packages to sys.path for | |
| macOS framework builds to avoid future conflicts. | |
| C API | |
| ----- | |
| - bpo-32681: Fix uninitialized variable 'res' in the C implementation of | |
| os.dup2. Patch by Stéphane Wirtel | |
| - bpo-10381: Add C API access to the ``datetime.timezone`` constructor and | |
| ``datetime.timzone.UTC`` singleton. | |
| What's New in Python 3.7.0 alpha 4? | |
| =================================== | |
| *Release date: 2018-01-08* | |
| Core and Builtins | |
| ----------------- | |
| - bpo-31975: The default warning filter list now starts with a | |
| "default::DeprecationWarning:__main__" entry, so deprecation warnings are | |
| once again shown by default in single-file scripts and at the interactive | |
| prompt. | |
| - bpo-32226: ``__class_getitem__`` is now an automatic class method. | |
| - bpo-32399: Add AIX uuid library support for RFC4122 using uuid_create() in | |
| libc.a | |
| - bpo-32390: Fix the compilation failure on AIX after the f_fsid field has | |
| been added to the object returned by os.statvfs() (issue #32143). Original | |
| patch by Michael Felt. | |
| - bpo-32379: Make MRO computation faster when a class inherits from a single | |
| base. | |
| - bpo-32259: The error message of a TypeError raised when unpack | |
| non-iterable is now more specific. | |
| - bpo-27169: The ``__debug__`` constant is now optimized out at compile | |
| time. This fixes also bpo-22091. | |
| - bpo-32329: The :option:`-R` option now turns on hash randomization when | |
| the :envvar:`PYTHONHASHSEED` environment variable is set to ``0``. | |
| Previously, the option was ignored. Moreover, | |
| ``sys.flags.hash_randomization`` is now properly set to 0 when hash | |
| randomization is turned off by ``PYTHONHASHSEED=0``. | |
| - bpo-30416: The optimizer is now protected from spending much time doing | |
| complex calculations and consuming much memory for creating large | |
| constants in constant folding. Increased limits for constants that can be | |
| produced in constant folding. | |
| - bpo-32282: Fix an unnecessary ifdef in the include of VersionHelpers.h in | |
| socketmodule on Windows. | |
| - bpo-30579: Implement TracebackType.__new__ to allow Python-level creation | |
| of traceback objects, and make TracebackType.tb_next mutable. | |
| - bpo-32260: Don't byte swap the input keys to the SipHash algorithm on | |
| big-endian platforms. This should ensure siphash gives consistent results | |
| across platforms. | |
| - bpo-31506: Improve the error message logic for object.__new__ and | |
| object.__init__. Patch by Sanyam Khurana. | |
| - bpo-20361: ``-b`` and ``-bb`` now inject ``'default::BytesWarning'`` and | |
| ``error::BytesWarning`` entries into ``sys.warnoptions``, ensuring that | |
| they take precedence over any other warning filters configured via the | |
| ``-W`` option or the ``PYTHONWARNINGS`` environment variable. | |
| - bpo-32230: `-X dev` now injects a ``'default'`` entry into | |
| sys.warnoptions, ensuring that it behaves identically to actually passing | |
| ``-Wdefault`` at the command line. | |
| - bpo-29240: Add a new UTF-8 mode: implementation of the :pep:`540`. | |
| - bpo-32226: :pep:`560`: Add support for ``__mro_entries__`` and | |
| ``__class_getitem__``. Implemented by Ivan Levkivskyi. | |
| - bpo-32225: :pep:`562`: Add support for module ``__getattr__`` and | |
| ``__dir__``. Implemented by Ivan Levkivskyi. | |
| - bpo-31901: The `atexit` module now has its callback stored per | |
| interpreter. | |
| - bpo-31650: Implement :pep:`552` (Deterministic pycs). Python now supports | |
| invalidating bytecode cache files bashed on a source content hash rather | |
| than source last-modified time. | |
| - bpo-29469: Move constant folding from bytecode layer to AST layer. | |
| Original patch by Eugene Toder. | |
| Library | |
| ------- | |
| - bpo-32506: Now that dict is defined as keeping insertion order, drop | |
| OrderedDict and just use plain dict. | |
| - bpo-32279: Add params to dataclasses.make_dataclasses(): init, repr, eq, | |
| order, hash, and frozen. Pass them through to dataclass(). | |
| - bpo-32278: Make type information optional on dataclasses.make_dataclass(). | |
| If omitted, the string 'typing.Any' is used. | |
| - bpo-32499: Add dataclasses.is_dataclass(obj), which returns True if obj is | |
| a dataclass or an instance of one. | |
| - bpo-32468: Improve frame repr() to mention filename, code name and current | |
| line number. | |
| - bpo-23749: asyncio: Implement loop.start_tls() | |
| - bpo-32441: Return the new file descriptor (i.e., the second argument) from | |
| ``os.dup2``. Previously, ``None`` was always returned. | |
| - bpo-32422: ``functools.lru_cache`` uses less memory (3 words for each | |
| cached key) and takes about 1/3 time for cyclic GC. | |
| - bpo-31721: Prevent Python crash from happening when Future._log_traceback | |
| is set to True manually. Now it can only be set to False, or a ValueError | |
| is raised. | |
| - bpo-32415: asyncio: Add Task.get_loop() and Future.get_loop() | |
| - bpo-26133: Don't unsubscribe signals in asyncio UNIX event loop on | |
| interpreter shutdown. | |
| - bpo-32363: Make asyncio.Task.set_exception() and set_result() raise | |
| NotImplementedError. Task._step() and Future.__await__() raise proper | |
| exceptions when they are in an invalid state, instead of raising an | |
| AssertionError. | |
| - bpo-32357: Optimize asyncio.iscoroutine() and loop.create_task() for | |
| non-native coroutines (e.g. async/await compiled with Cython). | |
| 'loop.create_task(python_coroutine)' used to be 20% faster than | |
| 'loop.create_task(cython_coroutine)'. Now, the latter is as fast. | |
| - bpo-32356: asyncio.transport.resume_reading() and pause_reading() are now | |
| idempotent. New transport.is_reading() method is added. | |
| - bpo-32355: Optimize asyncio.gather(); now up to 15% faster. | |
| - bpo-32351: Use fastpath in asyncio.sleep if delay<0 (2x boost) | |
| - bpo-32348: Optimize asyncio.Future schedule/add/remove callback. The | |
| optimization shows 3-6% performance improvements of async/await code. | |
| - bpo-32331: Fix socket.settimeout() and socket.setblocking() to keep | |
| socket.type as is. Fix socket.socket() constructor to reset any bit flags | |
| applied to socket's type. This change only affects OSes that have | |
| SOCK_NONBLOCK and/or SOCK_CLOEXEC. | |
| - bpo-32248: Add :class:`importlib.abc.ResourceReader` as an ABC for loaders | |
| to provide a unified API for reading resources contained within packages. | |
| Also add :mod:`importlib.resources` as the port of | |
| ``importlib_resources``. | |
| - bpo-32311: Implement asyncio.create_task(coro) shortcut | |
| - bpo-32327: Convert asyncio functions that were documented as coroutines to | |
| coroutines. Affected functions: loop.sock_sendall, loop.sock_recv, | |
| loop.sock_accept, loop.getaddrinfo, loop.getnameinfo. | |
| - bpo-32323: :func:`urllib.parse.urlsplit()` does not convert zone-id | |
| (scope) to lower case for scoped IPv6 addresses in hostnames now. | |
| - bpo-32302: Fix bdist_wininst of distutils for CRT v142: it binary | |
| compatible with CRT v140. | |
| - bpo-29711: Fix ``stop_serving`` in asyncio proactor loop kill all | |
| listening servers | |
| - bpo-32308: :func:`re.sub()` now replaces empty matches adjacent to a | |
| previous non-empty match. | |
| - bpo-29970: Abort asyncio SSLProtocol connection if handshake not complete | |
| within 10 seconds. | |
| - bpo-32314: Implement asyncio.run(). | |
| - bpo-17852: Revert incorrect fix based on misunderstanding of | |
| _Py_PyAtExit() semantics. | |
| - bpo-32296: Implement asyncio._get_running_loop() and get_event_loop() in | |
| C. This makes them 4x faster. | |
| - bpo-32250: Implement ``asyncio.current_task()`` and | |
| ``asyncio.all_tasks()``. Add helpers intended to be used by alternative | |
| task implementations: ``asyncio._register_task``, ``asyncio._enter_task``, | |
| ``asyncio._leave_task`` and ``asyncio._unregister_task``. Deprecate | |
| ``asyncio.Task.current_task()`` and ``asyncio.Task.all_tasks()``. | |
| - bpo-32255: A single empty field is now always quoted when written into a | |
| CSV file. This allows to distinguish an empty row from a row consisting of | |
| a single empty field. Patch by Licht Takeuchi. | |
| - bpo-32277: Raise ``NotImplementedError`` instead of ``SystemError`` on | |
| platforms where ``chmod(..., follow_symlinks=False)`` is not supported. | |
| Patch by Anthony Sottile. | |
| - bpo-30050: New argument warn_on_full_buffer to signal.set_wakeup_fd lets | |
| you control whether Python prints a warning on stderr when the wakeup fd | |
| buffer overflows. | |
| - bpo-29137: The ``fpectl`` library has been removed. It was never enabled | |
| by default, never worked correctly on x86-64, and it changed the Python | |
| ABI in ways that caused unexpected breakage of C extensions. | |
| - bpo-32273: Move asyncio.test_utils to test.test_asyncio. | |
| - bpo-32272: Remove asyncio.async() function. | |
| - bpo-32269: Add asyncio.get_running_loop() function. | |
| - bpo-32265: All class and static methods of builtin types now are correctly | |
| classified by inspect.classify_class_attrs() and grouped in pydoc ouput. | |
| Added types.ClassMethodDescriptorType for unbound class methods of builtin | |
| types. | |
| - bpo-32253: Deprecate ``yield from lock``, ``await lock``, ``with (yield | |
| from lock)`` and ``with await lock`` for asyncio synchronization | |
| primitives. | |
| - bpo-22589: Changed MIME type of .bmp from 'image/x-ms-bmp' to 'image/bmp' | |
| - bpo-32193: Convert asyncio to use *async/await* syntax. Old styled ``yield | |
| from`` is still supported too. | |
| - bpo-32206: Add support to run modules with pdb | |
| - bpo-32227: ``functools.singledispatch`` now supports registering | |
| implementations using type annotations. | |
| - bpo-15873: Added new alternate constructors | |
| :meth:`datetime.datetime.fromisoformat`, | |
| :meth:`datetime.time.fromisoformat` and | |
| :meth:`datetime.date.fromisoformat` as the inverse operation of each | |
| classes's respective ``isoformat`` methods. | |
| - bpo-32199: The getnode() ip getter now uses 'ip link' instead of 'ip link | |
| list'. | |
| - bpo-32143: os.statvfs() includes the f_fsid field from statvfs(2) | |
| - bpo-26439: Fix ctypes.util.find_library() for AIX by implementing | |
| ctypes._aix.find_library() Patch by: Michael Felt | |
| - bpo-31993: The pickler now uses less memory when serializing large bytes | |
| and str objects into a file. Pickles created with protocol 4 will require | |
| less memory for unpickling large bytes and str objects. | |
| - bpo-27456: Ensure TCP_NODELAY is set on Linux. Tests by Victor Stinner. | |
| - bpo-31778: ast.literal_eval() is now more strict. Addition and subtraction | |
| of arbitrary numbers no longer allowed. | |
| - bpo-31802: Importing native path module (``posixpath``, ``ntpath``) now | |
| works even if the ``os`` module still is not imported. | |
| - bpo-30241: Add contextlib.AbstractAsyncContextManager. Patch by Jelle | |
| Zijlstra. | |
| - bpo-31699: Fix deadlocks in | |
| :class:`concurrent.futures.ProcessPoolExecutor` when task arguments or | |
| results cause pickling or unpickling errors. This should make sure that | |
| calls to the :class:`ProcessPoolExecutor` API always eventually return. | |
| - bpo-15216: ``TextIOWrapper.reconfigure()`` supports changing *encoding*, | |
| *errors*, and *newline*. | |
| Documentation | |
| ------------- | |
| - bpo-32418: Add get_loop() method to Server and AbstractServer classes. | |
| Tests | |
| ----- | |
| - bpo-32252: Fix faulthandler_suppress_crash_report() used to prevent core | |
| dump files when testing crashes. getrlimit() returns zero on success. | |
| - bpo-32002: Adjust C locale coercion testing for the empty locale and POSIX | |
| locale cases to more readily adjust to platform dependent behaviour. | |
| Windows | |
| ------- | |
| - bpo-19764: Implement support for `subprocess.Popen(close_fds=True)` on | |
| Windows. Patch by Segev Finer. | |
| Tools/Demos | |
| ----------- | |
| - bpo-24960: 2to3 and lib2to3 can now read pickled grammar files using | |
| pkgutil.get_data() rather than probing the filesystem. This lets 2to3 and | |
| lib2to3 work when run from a zipfile. | |
| C API | |
| ----- | |
| - bpo-32030: Py_Initialize() doesn't reset the memory allocators to default | |
| if the ``PYTHONMALLOC`` environment variable is not set. | |
| - bpo-29084: Undocumented C API for OrderedDict has been excluded from the | |
| limited C API. It was added by mistake and actually never worked in the | |
| limited C API. | |
| - bpo-32264: Moved the pygetopt.h header into internal/, since it has no | |
| public APIs. | |
| - bpo-32241: :c:func:`Py_SetProgramName` and :c:func:`Py_SetPythonHome` now | |
| take the ``const wchar *`` arguments instead of ``wchar *``. | |
| What's New in Python 3.7.0 alpha 3? | |
| =================================== | |
| *Release date: 2017-12-05* | |
| Core and Builtins | |
| ----------------- | |
| - bpo-32176: co_flags.CO_NOFREE is now always set correctly by the code | |
| object constructor based on freevars and cellvars, rather than needing to | |
| be set correctly by the caller. This ensures it will be cleared | |
| automatically when additional cell references are injected into a modified | |
| code object and function. | |
| - bpo-10544: Yield expressions are now deprecated in comprehensions and | |
| generator expressions. They are still permitted in the definition of the | |
| outermost iterable, as that is evaluated directly in the enclosing scope. | |
| - bpo-32137: The repr of deeply nested dict now raises a RecursionError | |
| instead of crashing due to a stack overflow. | |
| - bpo-32096: Revert memory allocator changes in the C API: move structures | |
| back from _PyRuntime to Objects/obmalloc.c. The memory allocators are once | |
| again initialized statically, and so PyMem_RawMalloc() and | |
| Py_DecodeLocale() can be called before _PyRuntime_Initialize(). | |
| - bpo-32043: Add a new "developer mode": new "-X dev" command line option to | |
| enable debug checks at runtime. | |
| - bpo-32023: SyntaxError is now correctly raised when a generator expression | |
| without parenthesis is used instead of an inheritance list in a class | |
| definition. The duplication of the parentheses can be omitted only on | |
| calls. | |
| - bpo-32012: SyntaxError is now correctly raised when a generator expression | |
| without parenthesis is passed as an argument, but followed by a trailing | |
| comma. A generator expression always needs to be directly inside a set of | |
| parentheses and cannot have a comma on either side. | |
| - bpo-28180: A new internal ``_Py_SetLocaleFromEnv(category)`` helper | |
| function has been added in order to improve the consistency of behaviour | |
| across different ``libc`` implementations (e.g. Android doesn't support | |
| setting the locale from the environment by default). | |
| - bpo-31949: Fixed several issues in printing tracebacks | |
| (PyTraceBack_Print()). Setting sys.tracebacklimit to 0 or less now | |
| suppresses printing tracebacks. Setting sys.tracebacklimit to None now | |
| causes using the default limit. Setting sys.tracebacklimit to an integer | |
| larger than LONG_MAX now means using the limit LONG_MAX rather than the | |
| default limit. Fixed integer overflows in the case of more than ``2**31`` | |
| traceback items on Windows. Fixed output errors handling. | |
| - bpo-30696: Fix the interactive interpreter looping endlessly when no | |
| memory. | |
| - bpo-20047: Bytearray methods partition() and rpartition() now accept only | |
| bytes-like objects as separator, as documented. In particular they now | |
| raise TypeError rather of returning a bogus result when an integer is | |
| passed as a separator. | |
| - bpo-21720: BytesWarning no longer emitted when the *fromlist* argument of | |
| ``__import__()`` or the ``__all__`` attribute of the module contain bytes | |
| instances. | |
| - bpo-31845: Environment variables are once more read correctly at | |
| interpreter startup. | |
| - bpo-28936: Ensure that lexically first syntax error involving a parameter | |
| and ``global`` or ``nonlocal`` is detected first at a given scope. Patch | |
| by Ivan Levkivskyi. | |
| - bpo-31825: Fixed OverflowError in the 'unicode-escape' codec and in | |
| codecs.escape_decode() when decode an escaped non-ascii byte. | |
| - bpo-31618: The per-frame tracing logic added in 3.7a1 has been altered so | |
| that ``frame->f_lineno`` is updated before either ``"line"`` or | |
| ``"opcode"`` events are emitted. Previously, opcode events were emitted | |
| first, and therefore would occasionally see stale line numbers on the | |
| frame. The behavior of this feature has changed slightly as a result: when | |
| both ``f_trace_lines`` and ``f_trace_opcodes`` are enabled, line events | |
| now occur first. | |
| - bpo-28603: Print the full context/cause chain of exceptions on interpreter | |
| exit, even if an exception in the chain is unhashable or compares equal to | |
| later ones. Patch by Zane Bitter. | |
| - bpo-31786: Fix timeout rounding in the select module to round correctly | |
| negative timeouts between -1.0 and 0.0. The functions now block waiting | |
| for events as expected. Previously, the call was incorrectly non-blocking. | |
| Patch by Pablo Galindo. | |
| - bpo-31781: Prevent crashes when calling methods of an uninitialized | |
| ``zipimport.zipimporter`` object. Patch by Oren Milman. | |
| - bpo-30399: Standard repr() of BaseException with a single argument no | |
| longer contains redundant trailing comma. | |
| - bpo-31626: Fixed a bug in debug memory allocator. There was a write to | |
| freed memory after shrinking a memory block. | |
| - bpo-30817: `PyErr_PrintEx()` clears now the ignored exception that may be | |
| raised by `_PySys_SetObjectId()`, for example when no memory. | |
| Library | |
| ------- | |
| - bpo-28556: Two minor fixes for ``typing`` module: allow shallow copying | |
| instances of generic classes, improve interaction of ``__init_subclass__`` | |
| with generics. Original PRs by Ivan Levkivskyi. | |
| - bpo-32214: PEP 557, Data Classes. Provides a decorator which adds | |
| boilerplate methods to classes which use type annotations so specify | |
| fields. | |
| - bpo-27240: The header folding algorithm for the new email policies has | |
| been rewritten, which also fixes bpo-30788, bpo-31831, and bpo-32182. In | |
| particular, RFC2231 folding is now done correctly. | |
| - bpo-32186: io.FileIO.readall() and io.FileIO.read() now release the GIL | |
| when getting the file size. Fixed hang of all threads with inaccessible | |
| NFS server. Patch by Nir Soffer. | |
| - bpo-32101: Add :attr:`sys.flags.dev_mode` flag | |
| - bpo-32154: The ``asyncio.windows_utils.socketpair()`` function has been | |
| removed: use directly :func:`socket.socketpair` which is available on all | |
| platforms since Python 3.5 (before, it wasn't available on Windows). | |
| ``asyncio.windows_utils.socketpair()`` was just an alias to | |
| ``socket.socketpair`` on Python 3.5 and newer. | |
| - bpo-32089: warnings: In development (-X dev) and debug mode (pydebug | |
| build), use the "default" action for ResourceWarning, rather than the | |
| "always" action, in the default warnings filters. | |
| - bpo-32107: ``uuid.getnode()`` now preferentially returns universally | |
| administered MAC addresses if available, over locally administered MAC | |
| addresses. This makes a better guarantee for global uniqueness of UUIDs | |
| returned from ``uuid.uuid1()``. If only locally administered MAC | |
| addresses are available, the first such one found is returned. | |
| - bpo-23033: Wildcard is now supported in hostname when it is one and only | |
| character in the left most segment of hostname in second argument of | |
| :meth:`ssl.match_hostname`. Patch by Mandeep Singh. | |
| - bpo-12239: Make :meth:`msilib.SummaryInformation.GetProperty` return | |
| ``None`` when the value of property is ``VT_EMPTY``. Initial patch by | |
| Mark Mc Mahon. | |
| - bpo-28334: Use :func:`os.path.expanduser` to find the ``~/.netrc`` file in | |
| :class:`netrc.netrc`. If it does not exist, :exc:`FileNotFoundError` is | |
| raised. Patch by Dimitri Merejkowsky. | |
| - bpo-32121: Made ``tracemalloc.Traceback`` behave more like the traceback | |
| module, sorting the frames from oldest to most recent. | |
| ``Traceback.format()`` now accepts negative *limit*, truncating the result | |
| to the ``abs(limit)`` oldest frames. To get the old behaviour, one can use | |
| the new *most_recent_first* argument to ``Traceback.format()``. (Patch by | |
| Jesse Bakker.) | |
| - bpo-31325: Fix wrong usage of :func:`collections.namedtuple` in the | |
| :meth:`RobotFileParser.parse() <urllib.robotparser.RobotFileParser.parse>` | |
| method. Initial patch by Robin Wellner. | |
| - bpo-12382: :func:`msilib.OpenDatabase` now raises a better exception | |
| message when it couldn't open or create an MSI file. Initial patch by | |
| William Tisäter. | |
| - bpo-19610: ``setup()`` now warns about invalid types for some fields. The | |
| ``distutils.dist.Distribution`` class now warns when ``classifiers``, | |
| ``keywords`` and ``platforms`` fields are not specified as a list or a | |
| string. | |
| - bpo-32071: Added the ``-k`` command-line option to ``python -m unittest`` | |
| to run only tests that match the given pattern(s). | |
| - bpo-10049: Added *nullcontext* no-op context manager to contextlib. This | |
| provides a simpler and faster alternative to ExitStack() when handling | |
| optional context managers. | |
| - bpo-28684: The new test.support.skip_unless_bind_unix_socket() decorator | |
| is used here to skip asyncio tests that fail because the platform lacks a | |
| functional bind() function for unix domain sockets (as it is the case for | |
| non root users on the recent Android versions that run now SELinux in | |
| enforcing mode). | |
| - bpo-32110: ``codecs.StreamReader.read(n)`` now returns not more than *n* | |
| characters/bytes for non-negative *n*. This makes it compatible with | |
| ``read()`` methods of other file-like objects. | |
| - bpo-27535: The warnings module doesn't leak memory anymore in the hidden | |
| warnings registry for the "ignore" action of warnings filters. | |
| warn_explicit() function doesn't add the warning key to the registry | |
| anymore for the "ignore" action. | |
| - bpo-32088: warnings: When Python is build is debug mode (``Py_DEBUG``), | |
| :exc:`DeprecationWarning`, :exc:`PendingDeprecationWarning` and | |
| :exc:`ImportWarning` warnings are now displayed by default. | |
| - bpo-1647489: Fixed searching regular expression patterns that could match | |
| an empty string. Non-empty string can now be correctly found after | |
| matching an empty string. | |
| - bpo-25054: Added support of splitting on a pattern that could match an | |
| empty string. | |
| - bpo-32072: Fixed issues with binary plists: Fixed saving bytearrays. | |
| Identical objects will be saved only once. Equal references will be load | |
| as identical objects. Added support for saving and loading recursive data | |
| structures. | |
| - bpo-32069: Drop legacy SSL transport from asyncio, ssl.MemoryBIO is always | |
| used anyway. | |
| - bpo-32066: asyncio: Support pathlib.Path in create_unix_connection; sock | |
| arg should be optional | |
| - bpo-32046: Updates 2to3 to convert from operator.isCallable(obj) to | |
| callable(obj). Patch by Dong-hee Na. | |
| - bpo-32018: inspect.signature should follow :pep:`8`, if the parameter has | |
| an annotation and a default value. Patch by Dong-hee Na. | |
| - bpo-32025: Add time.thread_time() and time.thread_time_ns() | |
| - bpo-32037: Integers that fit in a signed 32-bit integer will be now | |
| pickled with protocol 0 using the INT opcode. This will decrease the size | |
| of a pickle, speed up pickling and unpickling, and make these integers be | |
| unpickled as int instances in Python 2. | |
| - bpo-32034: Make asyncio.IncompleteReadError and LimitOverrunError | |
| pickleable. | |
| - bpo-32015: Fixed the looping of asyncio in the case of reconnection the | |
| socket during waiting async read/write from/to the socket. | |
| - bpo-32011: Restored support of loading marshal files with the TYPE_INT64 | |
| code. These files can be produced in Python 2.7. | |
| - bpo-28369: Enhance add_reader/writer check that socket is not used by some | |
| transport. Before, only cases when add_reader/writer were called with an | |
| int FD were supported. Now the check is implemented correctly for all | |
| file-like objects. | |
| - bpo-31976: Fix race condition when flushing a file is slow, which can | |
| cause a segfault if closing the file from another thread. | |
| - bpo-31985: Formally deprecated aifc.openfp, sunau.openfp, and wave.openfp. | |
| Since change 7bc817d5ba917528e8bd07ec461c635291e7b06a in 1993, openfp in | |
| each of the three modules had been pointing to that module's open function | |
| as a matter of backwards compatibility, though it had been both untested | |
| and undocumented. | |
| - bpo-21862: cProfile command line now accepts `-m module_name` as an | |
| alternative to script path. Patch by Sanyam Khurana. | |
| - bpo-31970: Reduce performance overhead of asyncio debug mode. | |
| - bpo-31843: *database* argument of sqlite3.connect() now accepts a | |
| :term:`path-like object`, instead of just a string. | |
| - bpo-31945: Add Configurable *blocksize* to ``HTTPConnection`` and | |
| ``HTTPSConnection`` for improved upload throughput. Patch by Nir Soffer. | |
| - bpo-31943: Add a ``cancelled()`` method to :class:`asyncio.Handle`. Patch | |
| by Marat Sharafutdinov. | |
| - bpo-9678: Fixed determining the MAC address in the uuid module: Using | |
| ifconfig on NetBSD and OpenBSD. Using arp on Linux, FreeBSD, NetBSD and | |
| OpenBSD. Based on patch by Takayuki Shimizukawa. | |
| - bpo-30057: Fix potential missed signal in signal.signal(). | |
| - bpo-31933: Fix Blake2 params leaf_size and node_offset on big endian | |
| platforms. Patch by Jack O'Connor. | |
| - bpo-21423: Add an initializer argument to {Process,Thread}PoolExecutor | |
| - bpo-31927: Fixed compilation of the socket module on NetBSD 8. Fixed | |
| assertion failure or reading arbitrary data when parse a AF_BLUETOOTH | |
| address on NetBSD and DragonFly BSD. | |
| - bpo-27666: Fixed stack corruption in curses.box() and curses.ungetmouse() | |
| when the size of types chtype or mmask_t is less than the size of C long. | |
| curses.box() now accepts characters as arguments. Based on patch by Steve | |
| Fink. | |
| - bpo-31917: Add 3 new clock identifiers: :data:`time.CLOCK_BOOTTIME`, | |
| :data:`time.CLOCK_PROF` and :data:`time.CLOCK_UPTIME`. | |
| - bpo-31897: plistlib now catches more errors when read binary plists and | |
| raises InvalidFileException instead of unexpected exceptions. | |
| - bpo-25720: Fix the method for checking pad state of curses WINDOW. Patch | |
| by Masayuki Yamamoto. | |
| - bpo-31893: Fixed the layout of the kqueue_event structure on OpenBSD and | |
| NetBSD. Fixed the comparison of the kqueue_event objects. | |
| - bpo-31891: Fixed building the curses module on NetBSD. | |
| - bpo-31884: added required constants to subprocess module for setting | |
| priority on windows | |
| - bpo-28281: Remove year (1-9999) limits on the Calendar.weekday() function. | |
| Patch by Mark Gollahon. | |
| - bpo-31702: crypt.mksalt() now allows to specify the number of rounds for | |
| SHA-256 and SHA-512 hashing. | |
| - bpo-30639: :func:`inspect.getfile` no longer computes the repr of unknown | |
| objects to display in an error message, to protect against badly behaved | |
| custom reprs. | |
| - bpo-30768: Fix the pthread+semaphore implementation of | |
| PyThread_acquire_lock_timed() when called with timeout > 0 and | |
| intr_flag=0: recompute the timeout if sem_timedwait() is interrupted by a | |
| signal (EINTR). See also the :pep:`475`. | |
| - bpo-31854: Add ``mmap.ACCESS_DEFAULT`` constant. | |
| - bpo-31834: Use optimized code for BLAKE2 only with SSSE3+. The pure SSE2 | |
| implementation is slower than the pure C reference implementation. | |
| - bpo-28292: Calendar.itermonthdates() will now consistently raise an | |
| exception when a date falls outside of the 0001-01-01 through 9999-12-31 | |
| range. To support applications that cannot tolerate such exceptions, the | |
| new methods itermonthdays3() and itermonthdays4() are added. The new | |
| methods return tuples and are not restricted by the range supported by | |
| datetime.date. | |
| - bpo-28564: The shutil.rmtree() function has been sped up to 20--40%. This | |
| was done using the os.scandir() function. | |
| - bpo-28416: Instances of pickle.Pickler subclass with the persistent_id() | |
| method and pickle.Unpickler subclass with the persistent_load() method no | |
| longer create reference cycles. | |
| - bpo-31653: Don't release the GIL if we can acquire a multiprocessing | |
| semaphore immediately. | |
| - bpo-28326: Fix multiprocessing.Process when stdout and/or stderr is closed | |
| or None. | |
| - bpo-20825: Add `subnet_of` and `superset_of` containment tests to | |
| :class:`ipaddress.IPv6Network` and :class:`ipaddress.IPv4Network`. Patch | |
| by Michel Albert and Cheryl Sabella. | |
| - bpo-31827: Remove the os.stat_float_times() function. It was introduced in | |
| Python 2.3 for backward compatibility with Python 2.2, and was deprecated | |
| since Python 3.1. | |
| - bpo-31756: Add a ``subprocess.Popen(text=False)`` keyword argument to | |
| `subprocess` functions to be more explicit about when the library should | |
| attempt to decode outputs into text. Patch by Andrew Clegg. | |
| - bpo-31819: Add AbstractEventLoop.sock_recv_into(). | |
| - bpo-31457: If nested log adapters are used, the inner ``process()`` | |
| methods are no longer omitted. | |
| - bpo-31457: The ``manager`` property on LoggerAdapter objects is now | |
| properly settable. | |
| - bpo-31806: Fix timeout rounding in time.sleep(), threading.Lock.acquire() | |
| and socket.socket.settimeout() to round correctly negative timeouts | |
| between -1.0 and 0.0. The functions now block waiting for events as | |
| expected. Previously, the call was incorrectly non-blocking. Patch by | |
| Pablo Galindo. | |
| - bpo-31803: time.clock() and time.get_clock_info('clock') now emit a | |
| DeprecationWarning warning. | |
| - bpo-31800: Extended support for parsing UTC offsets. strptime '%z' can now | |
| parse the output generated by datetime.isoformat, including seconds and | |
| microseconds. | |
| - bpo-28603: traceback: Fix a TypeError that occurred during printing of | |
| exception tracebacks when either the current exception or an exception in | |
| its context/cause chain is unhashable. Patch by Zane Bitter. | |
| - bpo-30541: Add new function to seal a mock and prevent the automatically | |
| creation of child mocks. Patch by Mario Corchero. | |
| - bpo-31784: Implement the :pep:`564`, add new 6 new functions with | |
| nanosecond resolution to the :mod:`time` module: | |
| :func:`~time.clock_gettime_ns`, :func:`~time.clock_settime_ns`, | |
| :func:`~time.monotonic_ns`, :func:`~time.perf_counter_ns`, | |
| :func:`~time.process_time_ns`, :func:`~time.time_ns`. | |
| - bpo-30143: 2to3 now generates a code that uses abstract collection classes | |
| from collections.abc rather than collections. | |
| - bpo-31770: Prevent a crash when calling the ``__init__()`` method of a | |
| ``sqlite3.Cursor`` object more than once. Patch by Oren Milman. | |
| - bpo-31764: Prevent a crash in ``sqlite3.Cursor.close()`` in case the | |
| ``Cursor`` object is uninitialized. Patch by Oren Milman. | |
| - bpo-31752: Fix possible crash in timedelta constructor called with custom | |
| integers. | |
| - bpo-31620: an empty asyncio.Queue now doesn't leak memory when queue.get | |
| pollers timeout | |
| - bpo-31690: Allow the flags re.ASCII, re.LOCALE, and re.UNICODE to be used | |
| as group flags for regular expressions. | |
| - bpo-30349: FutureWarning is now emitted if a regular expression contains | |
| character set constructs that will change semantically in the future | |
| (nested sets and set operations). | |
| - bpo-31664: Added support for the Blowfish hashing in the crypt module. | |
| - bpo-31632: Fix method set_protocol() of class _SSLProtocolTransport in | |
| asyncio module. This method was previously modifying a wrong reference to | |
| the protocol. | |
| - bpo-15037: Added a workaround for getkey() in curses for ncurses 5.7 and | |
| earlier. | |
| - bpo-31307: Allow use of bytes objects for arguments to | |
| :meth:`configparser.ConfigParser.read`. Patch by Vincent Michel. | |
| - bpo-31334: Fix ``poll.poll([timeout])`` in the ``select`` module for | |
| arbitrary negative timeouts on all OSes where it can only be a | |
| non-negative integer or -1. Patch by Riccardo Coccioli. | |
| - bpo-31310: multiprocessing's semaphore tracker should be launched again if | |
| crashed. | |
| - bpo-31308: Make multiprocessing's forkserver process immune to Ctrl-C and | |
| other user interruptions. If it crashes, restart it when necessary. | |
| - bpo-31245: Added support for AF_UNIX socket in asyncio | |
| `create_datagram_endpoint`. | |
| - bpo-30553: Add HTTP/2 status code 421 (Misdirected Request) to | |
| :class:`http.HTTPStatus`. Patch by Vitor Pereira. | |
| Documentation | |
| ------------- | |
| - bpo-32105: Added asyncio.BaseEventLoop.connect_accepted_socket | |
| versionadded marker. | |
| Tests | |
| ----- | |
| - bpo-31380: Skip test_httpservers test_undecodable_file on macOS: fails on | |
| APFS. | |
| - bpo-31705: Skip test_socket.test_sha256() on Linux kernel older than 4.5. | |
| The test fails with ENOKEY on kernel 3.10 (on ppc64le). A fix was merged | |
| into the kernel 4.5. | |
| - bpo-32138: Skip on Android test_faulthandler tests that raise SIGSEGV and | |
| remove the test.support.requires_android_level decorator. | |
| - bpo-32136: The runtime embedding tests have been split out from | |
| ``Lib/test/test_capi.py`` into a new ``Lib/test/test_embed.py`` file. | |
| - bpo-28668: test.support.requires_multiprocessing_queue is removed. Skip | |
| tests with test.support.import_module('multiprocessing.synchronize') | |
| instead when the semaphore implementation is broken or missing. | |
| - bpo-32126: Skip test_get_event_loop_new_process in | |
| test.test_asyncio.test_events when sem_open() is not functional. | |
| - bpo-31174: Fix test_tools.test_unparse: DirectoryTestCase now stores the | |
| names sample to always test the same files. It prevents false alarms when | |
| hunting reference leaks. | |
| Build | |
| ----- | |
| - bpo-28538: Revert the previous changes, the if_nameindex structure is | |
| defined by Unified Headers. | |
| - bpo-28762: Revert the last commit, the F_LOCK macro is defined by Android | |
| Unified Headers. | |
| - bpo-29040: Support building Android with Unified Headers. The first NDK | |
| release to support Unified Headers is android-ndk-r14. | |
| - bpo-32059: ``detect_modules()`` in ``setup.py`` now also searches the | |
| sysroot paths when cross-compiling. | |
| - bpo-31957: Fixes Windows SDK version detection when building for Windows. | |
| - bpo-31609: Fixes quotes in PCbuild/clean.bat | |
| - bpo-31934: Abort the build when building out of a not clean source tree. | |
| - bpo-31926: Fixed Argument Clinic sometimes causing compilation errors when | |
| there was more than one function and/or method in a .c file with the same | |
| name. | |
| - bpo-28791: Update Windows builds to use SQLite 3.21.0. | |
| - bpo-28791: Update OS X installer to use SQLite 3.21.0. | |
| - bpo-28643: Record profile-opt build progress with stamp files. | |
| - bpo-31866: Finish removing support for AtheOS. | |
| Windows | |
| ------- | |
| - bpo-1102: Return ``None`` when ``View.Fetch()`` returns | |
| ``ERROR_NO_MORE_ITEMS`` instead of raising ``MSIError``. Initial patch by | |
| Anthony Tuininga. | |
| - bpo-31944: Fixes Modify button in Apps and Features dialog. | |
| - bpo-20486: Implement the ``Database.Close()`` method to help closing MSI | |
| database objects. | |
| - bpo-31857: Make the behavior of USE_STACKCHECK deterministic in a | |
| multi-threaded environment. | |
| macOS | |
| ----- | |
| - bpo-31392: Update macOS installer to use OpenSSL 1.0.2m | |
| IDLE | |
| ---- | |
| - bpo-32207: Improve tk event exception tracebacks in IDLE. When tk event | |
| handling is driven by IDLE's run loop, a confusing and distracting | |
| queue.EMPTY traceback context is no longer added to tk event exception | |
| tracebacks. The traceback is now the same as when event handling is | |
| driven by user code. Patch based on a suggestion by Serhiy Storchaka. | |
| - bpo-32164: Delete unused file idlelib/tabbedpages.py. Use of TabbedPageSet | |
| in configdialog was replaced by ttk.Notebook. | |
| - bpo-32100: IDLE: Fix old and new bugs in pathbrowser; improve tests. Patch | |
| mostly by Cheryl Sabella. | |
| - bpo-31858: IDLE -- Restrict shell prompt manipulation to the shell. Editor | |
| and output windows only see an empty last prompt line. This simplifies | |
| the code and fixes a minor bug when newline is inserted. Sys.ps1, if | |
| present, is read on Shell start-up, but is not set or changed. | |
| - bpo-31860: The font sample in the IDLE configuration dialog is now | |
| editable. Changes persist while IDLE remains open | |
| - bpo-31836: Test_code_module now passes if run after test_idle, which sets | |
| ps1. The code module uses sys.ps1 if present or sets it to '>>> ' if not. | |
| Test_code_module now properly tests both behaviors. Ditto for ps2. | |
| - bpo-28603: Fix a TypeError that caused a shell restart when printing a | |
| traceback that includes an exception that is unhashable. Patch by Zane | |
| Bitter. | |
| - bpo-13802: Use non-Latin characters in the IDLE's Font settings sample. | |
| Even if one selects a font that defines a limited subset of the unicode | |
| Basic Multilingual Plane, tcl/tk will use other fonts that define a | |
| character. The expanded example give users of non-Latin characters a | |
| better idea of what they might see in IDLE's shell and editors. To make | |
| room for the expanded sample, frames on the Font tab are re-arranged. The | |
| Font/Tabs help explains a bit about the additions. | |
| Tools/Demos | |
| ----------- | |
| - bpo-32159: Remove CVS and Subversion tools: remove svneol.py and | |
| treesync.py scripts. CPython migrated from CVS to Subversion, to | |
| Mercurial, and then to Git. CVS and Subversion are no longer used to | |
| develop CPython. | |
| - bpo-30722: Make redemo work with Python 3.6 and newer versions. Also, | |
| remove the ``LOCALE`` option since it doesn't work with string patterns in | |
| Python 3. Patch by Christoph Sarnowski. | |
| C API | |
| ----- | |
| - bpo-20891: Fix PyGILState_Ensure(). When PyGILState_Ensure() is called in | |
| a non-Python thread before PyEval_InitThreads(), only call | |
| PyEval_InitThreads() after calling PyThreadState_New() to fix a crash. | |
| - bpo-32125: The ``Py_UseClassExceptionsFlag`` flag has been removed. It was | |
| deprecated and wasn't used anymore since Python 2.0. | |
| - bpo-25612: Move the current exception state from the frame object to the | |
| co-routine. This simplifies the interpreter and fixes a couple of obscure | |
| bugs caused by having swap exception state when entering or exiting a | |
| generator. | |
| - bpo-23699: Add Py_RETURN_RICHCOMPARE macro to reduce boilerplate code in | |
| rich comparison functions. | |
| - bpo-30697: The `PyExc_RecursionErrorInst` singleton is removed and | |
| `PyErr_NormalizeException()` does not use it anymore. This singleton is | |
| persistent and its members being never cleared may cause a segfault during | |
| finalization of the interpreter. See also issue #22898. | |
| What's New in Python 3.7.0 alpha 2? | |
| =================================== | |
| *Release date: 2017-10-16* | |
| Core and Builtins | |
| ----------------- | |
| - bpo-31558: ``gc.freeze()`` is a new API that allows for moving all objects | |
| currently tracked by the garbage collector to a permanent generation, | |
| effectively removing them from future collection events. This can be used | |
| to protect those objects from having their PyGC_Head mutated. In effect, | |
| this enables great copy-on-write stability at fork(). | |
| - bpo-31642: Restored blocking "from package import module" by setting | |
| sys.modules["package.module"] to None. | |
| - bpo-31708: Allow use of asynchronous generator expressions in synchronous | |
| functions. | |
| - bpo-31709: Drop support of asynchronous __aiter__. | |
| - bpo-30404: The -u option now makes the stdout and stderr streams | |
| unbuffered rather than line-buffered. | |
| - bpo-31619: Fixed a ValueError when convert a string with large number of | |
| underscores to integer with binary base. | |
| - bpo-31602: Fix an assertion failure in `zipimporter.get_source()` in case | |
| of a bad `zlib.decompress()`. Patch by Oren Milman. | |
| - bpo-31592: Fixed an assertion failure in Python parser in case of a bad | |
| `unicodedata.normalize()`. Patch by Oren Milman. | |
| - bpo-31588: Raise a `TypeError` with a helpful error message when class | |
| creation fails due to a metaclass with a bad ``__prepare__()`` method. | |
| Patch by Oren Milman. | |
| - bpo-31574: Importlib was instrumented with two dtrace probes to profile | |
| import timing. | |
| - bpo-31566: Fix an assertion failure in `_warnings.warn()` in case of a bad | |
| ``__name__`` global. Patch by Oren Milman. | |
| - bpo-31506: Improved the error message logic for object.__new__ and | |
| object.__init__. | |
| - bpo-31505: Fix an assertion failure in `json`, in case | |
| `_json.make_encoder()` received a bad `encoder()` argument. Patch by Oren | |
| Milman. | |
| - bpo-31492: Fix assertion failures in case of failing to import from a | |
| module with a bad ``__name__`` attribute, and in case of failing to access | |
| an attribute of such a module. Patch by Oren Milman. | |
| - bpo-31478: Fix an assertion failure in `_random.Random.seed()` in case the | |
| argument has a bad ``__abs__()`` method. Patch by Oren Milman. | |
| - bpo-31336: Speed up class creation by 10-20% by reducing the overhead in | |
| the necessary special method lookups. Patch by Stefan Behnel. | |
| - bpo-31415: Add ``-X importtime`` option to show how long each import | |
| takes. It can be used to optimize application's startup time. Support the | |
| :envvar:`PYTHONPROFILEIMPORTTIME` as an equivalent way to enable this. | |
| - bpo-31410: Optimized calling wrapper and classmethod descriptors. | |
| - bpo-31353: :pep:`553` - Add a new built-in called ``breakpoint()`` which | |
| calls ``sys.breakpointhook()``. By default this imports ``pdb`` and calls | |
| ``pdb.set_trace()``, but users may override ``sys.breakpointhook()`` to | |
| call whatever debugger they want. The original value of the hook is saved | |
| in ``sys.__breakpointhook__``. | |
| - bpo-17852: Maintain a list of open buffered files, flush them before | |
| exiting the interpreter. Based on a patch from Armin Rigo. | |
| - bpo-31315: Fix an assertion failure in imp.create_dynamic(), when | |
| spec.name is not a string. Patch by Oren Milman. | |
| - bpo-31311: Fix a crash in the ``__setstate__()`` method of | |
| `ctypes._CData`, in case of a bad ``__dict__``. Patch by Oren Milman. | |
| - bpo-31293: Fix crashes in true division and multiplication of a timedelta | |
| object by a float with a bad as_integer_ratio() method. Patch by Oren | |
| Milman. | |
| - bpo-31285: Fix an assertion failure in `warnings.warn_explicit`, when the | |
| return value of the received loader's get_source() has a bad splitlines() | |
| method. Patch by Oren Milman. | |
| - bpo-30406: Make ``async`` and ``await`` proper keywords, as specified in | |
| :pep:`492`. | |
| Library | |
| ------- | |
| - bpo-30058: Fixed buffer overflow in select.kqueue.control(). | |
| - bpo-31672: ``idpattern`` in ``string.Template`` matched some non-ASCII | |
| characters. Now it uses ``-i`` regular expression local flag to avoid | |
| non-ASCII characters. | |
| - bpo-31701: On Windows, faulthandler.enable() now ignores MSC and COM | |
| exceptions. | |
| - bpo-31728: Prevent crashes in `_elementtree` due to unsafe cleanup of | |
| `Element.text` and `Element.tail`. Patch by Oren Milman. | |
| - bpo-31671: Now ``re.compile()`` converts passed RegexFlag to normal int | |
| object before compiling. bm_regex_compile benchmark shows 14% performance | |
| improvements. | |
| - bpo-30397: The types of compiled regular objects and match objects are now | |
| exposed as `re.Pattern` and `re.Match`. This adds information in pydoc | |
| output for the re module. | |
| - bpo-31675: Fixed memory leaks in Tkinter's methods splitlist() and split() | |
| when pass a string larger than 2 GiB. | |
| - bpo-31673: Fixed typo in the name of Tkinter's method adderrorinfo(). | |
| - bpo-31648: Improvements to path predicates in ElementTree: Allow | |
| whitespace around predicate parts, i.e. "[a = 'text']" instead of | |
| requiring the less readable "[a='text']". Add support for text comparison | |
| of the current node, like "[.='text']". Patch by Stefan Behnel. | |
| - bpo-30806: Fix the string representation of a netrc object. | |
| - bpo-31638: Add optional argument ``compressed`` to | |
| ``zipapp.create_archive``, and add option ``--compress`` to the command | |
| line interface of ``zipapp``. | |
| - bpo-25351: Avoid venv activate failures with undefined variables | |
| - bpo-20519: Avoid ctypes use (if possible) and improve import time for | |
| uuid. | |
| - bpo-28293: The regular expression cache is no longer completely dumped | |
| when it is full. | |
| - bpo-31596: Added pthread_getcpuclockid() to the time module | |
| - bpo-27494: Make 2to3 accept a trailing comma in generator expressions. For | |
| example, ``set(x for x in [],)`` is now allowed. | |
| - bpo-30347: Stop crashes when concurrently iterate over itertools.groupby() | |
| iterators. | |
| - bpo-30346: An iterator produced by itertools.groupby() iterator now | |
| becomes exhausted after advancing the groupby iterator. | |
| - bpo-31556: Cancel asyncio.wait_for future faster if timeout <= 0 | |
| - bpo-31540: Allow passing a context object in | |
| :class:`concurrent.futures.ProcessPoolExecutor` constructor. Also, free | |
| job resources in :class:`concurrent.futures.ProcessPoolExecutor` earlier | |
| to improve memory usage when a worker waits for new jobs. | |
| - bpo-31516: ``threading.current_thread()`` should not return a dummy thread | |
| at shutdown. | |
| - bpo-31525: In the sqlite module, require the sqlite3_prepare_v2 API. Thus, | |
| the sqlite module now requires sqlite version at least 3.3.9. | |
| - bpo-26510: argparse subparsers are now required by default. This matches | |
| behaviour in Python 2. For optional subparsers, use the new parameter | |
| ``add_subparsers(required=False)``. Patch by Anthony Sottile. (As of | |
| 3.7.0rc1, the default was changed to not required as had been the case | |
| since Python 3.3.) | |
| - bpo-27541: Reprs of subclasses of some collection and iterator classes | |
| (`bytearray`, `array.array`, `collections.deque`, | |
| `collections.defaultdict`, `itertools.count`, `itertools.repeat`) now | |
| contain actual type name insteads of hardcoded name of the base class. | |
| - bpo-31351: python -m ensurepip now exits with non-zero exit code if pip | |
| bootstrapping has failed. | |
| - bpo-31389: ``pdb.set_trace()`` now takes an optional keyword-only argument | |
| ``header``. If given, this is printed to the console just before debugging | |
| begins. | |
| Documentation | |
| ------------- | |
| - bpo-31537: Fix incorrect usage of ``get_history_length`` in readline | |
| documentation example code. Patch by Brad Smith. | |
| - bpo-30085: The operator functions without double underscores are preferred | |
| for clarity. The one with underscores are only kept for | |
| back-compatibility. | |
| Build | |
| ----- | |
| - bpo-31696: Improve compiler version information in :data:`sys.version` | |
| when Python is built with Clang. | |
| - bpo-31625: Stop using ranlib on static libraries. Instead, we assume ar | |
| supports the 's' flag. | |
| - bpo-31624: Remove support for BSD/OS. | |
| - bpo-22140: Prevent double substitution of prefix in python-config.sh. | |
| - bpo-31569: Correct PCBuild/ case to PCbuild/ in build scripts and | |
| documentation. | |
| - bpo-31536: Avoid wholesale rebuild after `make regen-all` if nothing | |
| changed. | |
| IDLE | |
| ---- | |
| - bpo-31460: Simplify the API of IDLE's Module Browser. Passing a widget | |
| instead of an flist with a root widget opens the option of creating a | |
| browser frame that is only part of a window. Passing a full file name | |
| instead of pieces assumed to come from a .py file opens the possibility of | |
| browsing python files that do not end in .py. | |
| - bpo-31649: IDLE - Make _htest, _utest parameters keyword only. | |
| - bpo-31559: Remove test order dependence in idle_test.test_browser. | |
| - bpo-31459: Rename IDLE's module browser from Class Browser to Module | |
| Browser. The original module-level class and method browser became a | |
| module browser, with the addition of module-level functions, years ago. | |
| Nested classes and functions were added yesterday. For | |
| back-compatibility, the virtual event <<open-class-browser>>, which | |
| appears on the Keys tab of the Settings dialog, is not changed. Patch by | |
| Cheryl Sabella. | |
| - bpo-31500: Default fonts now are scaled on HiDPI displays. | |
| - bpo-1612262: IDLE module browser now shows nested classes and functions. | |
| Original patches for code and tests by Guilherme Polo and Cheryl Sabella, | |
| respectively. | |
| C API | |
| ----- | |
| - bpo-28280: Make `PyMapping_Keys()`, `PyMapping_Values()` and | |
| `PyMapping_Items()` always return a `list` (rather than a `list` or a | |
| `tuple`). Patch by Oren Milman. | |
| - bpo-31532: Fix memory corruption due to allocator mix in getpath.c between | |
| Py_GetPath() and Py_SetPath() | |
| - bpo-25658: Implement :pep:`539` for Thread Specific Storage (TSS) API: it | |
| is a new Thread Local Storage (TLS) API to CPython which would supersede | |
| use of the existing TLS API within the CPython interpreter, while | |
| deprecating the existing API. PEP written by Erik M. Bray, patch by | |
| Masayuki Yamamoto. | |
| What's New in Python 3.7.0 alpha 1? | |
| =================================== | |
| *Release date: 2017-09-19* | |
| Security | |
| -------- | |
| - bpo-29781: SSLObject.version() now correctly returns None when handshake | |
| over BIO has not been performed yet. | |
| - bpo-29505: Add fuzz tests for float(str), int(str), unicode(str); for | |
| oss-fuzz. | |
| - bpo-30947: Upgrade libexpat embedded copy from version 2.2.1 to 2.2.3 to | |
| get security fixes. | |
| - bpo-30730: Prevent environment variables injection in subprocess on | |
| Windows. Prevent passing other environment variables and command | |
| arguments. | |
| - bpo-30694: Upgrade expat copy from 2.2.0 to 2.2.1 to get fixes of multiple | |
| security vulnerabilities including: CVE-2017-9233 (External entity | |
| infinite loop DoS), CVE-2016-9063 (Integer overflow, re-fix), | |
| CVE-2016-0718 (Fix regression bugs from 2.2.0's fix to CVE-2016-0718) and | |
| CVE-2012-0876 (Counter hash flooding with SipHash). Note: the | |
| CVE-2016-5300 (Use os-specific entropy sources like getrandom) doesn't | |
| impact Python, since Python already gets entropy from the OS to set the | |
| expat secret using ``XML_SetHashSalt()``. | |
| - bpo-30500: Fix urllib.parse.splithost() to correctly parse fragments. For | |
| example, ``splithost('//127.0.0.1#@evil.com/')`` now correctly returns the | |
| ``127.0.0.1`` host, instead of treating ``@evil.com`` as the host in an | |
| authentication (``login@host``). | |
| - bpo-29591: Update expat copy from 2.1.1 to 2.2.0 to get fixes of | |
| CVE-2016-0718 and CVE-2016-4472. See | |
| https://sourceforge.net/p/expat/bugs/537/ for more information. | |
| Core and Builtins | |
| ----------------- | |
| - bpo-31490: Fix an assertion failure in `ctypes` class definition, in case | |
| the class has an attribute whose name is specified in ``_anonymous_`` but | |
| not in ``_fields_``. Patch by Oren Milman. | |
| - bpo-31471: Fix an assertion failure in `subprocess.Popen()` on Windows, in | |
| case the env argument has a bad keys() method. Patch by Oren Milman. | |
| - bpo-31418: Fix an assertion failure in `PyErr_WriteUnraisable()` in case | |
| of an exception with a bad ``__module__`` attribute. Patch by Oren Milman. | |
| - bpo-31416: Fix assertion failures in case of a bad warnings.filters or | |
| warnings.defaultaction. Patch by Oren Milman. | |
| - bpo-28411: Change direct usage of PyInterpreterState.modules to | |
| PyImport_GetModuleDict(). Also introduce more uniformity in other code | |
| that deals with sys.modules. This helps reduce complications when working | |
| on sys.modules. | |
| - bpo-28411: Switch to the abstract API when dealing with | |
| ``PyInterpreterState.modules``. This allows later support for all dict | |
| subclasses and other Mapping implementations. Also add a | |
| ``PyImport_GetModule()`` function to reduce a bunch of duplicated code. | |
| - bpo-31411: Raise a TypeError instead of SystemError in case | |
| warnings.onceregistry is not a dictionary. Patch by Oren Milman. | |
| - bpo-31344: For finer control of tracing behaviour when testing the | |
| interpreter, two new frame attributes have been added to control the | |
| emission of particular trace events: ``f_trace_lines`` (``True`` by | |
| default) to turn off per-line trace events; and ``f_trace_opcodes`` | |
| (``False`` by default) to turn on per-opcode trace events. | |
| - bpo-31373: Fix several possible instances of undefined behavior due to | |
| floating-point demotions. | |
| - bpo-30465: Location information (``lineno`` and ``col_offset``) in | |
| f-strings is now (mostly) correct. This fixes tools like flake8 from | |
| showing warnings on the wrong line (typically the first line of the file). | |
| - bpo-30860: Consolidate CPython's global runtime state under a single | |
| struct. This improves discoverability of the runtime state. | |
| - bpo-31347: Fix possible undefined behavior in _PyObject_FastCall_Prepend. | |
| - bpo-31343: Include sys/sysmacros.h for major(), minor(), and makedev(). | |
| GNU C libray plans to remove the functions from sys/types.h. | |
| - bpo-31291: Fix an assertion failure in `zipimport.zipimporter.get_data` on | |
| Windows, when the return value of ``pathname.replace('/','\\')`` isn't a | |
| string. Patch by Oren Milman. | |
| - bpo-31271: Fix an assertion failure in the write() method of | |
| `io.TextIOWrapper`, when the encoder doesn't return a bytes object. Patch | |
| by Oren Milman. | |
| - bpo-31243: Fix a crash in some methods of `io.TextIOWrapper`, when the | |
| decoder's state is invalid. Patch by Oren Milman. | |
| - bpo-30721: ``print`` now shows correct usage hint for using Python 2 | |
| redirection syntax. Patch by Sanyam Khurana. | |
| - bpo-31070: Fix a race condition in importlib _get_module_lock(). | |
| - bpo-30747: Add a non-dummy implementation of _Py_atomic_store and | |
| _Py_atomic_load on MSVC. | |
| - bpo-31095: Fix potential crash during GC caused by ``tp_dealloc`` which | |
| doesn't call ``PyObject_GC_UnTrack()``. | |
| - bpo-31071: Avoid masking original TypeError in call with * unpacking when | |
| other arguments are passed. | |
| - bpo-30978: str.format_map() now passes key lookup exceptions through. | |
| Previously any exception was replaced with a KeyError exception. | |
| - bpo-30808: Use _Py_atomic API for concurrency-sensitive signal state. | |
| - bpo-30876: Relative import from unloaded package now reimports the package | |
| instead of failing with SystemError. Relative import from non-package now | |
| fails with ImportError rather than SystemError. | |
| - bpo-30703: Improve signal delivery. Avoid using Py_AddPendingCall from | |
| signal handler, to avoid calling signal-unsafe functions. The tests I'm | |
| adding here fail without the rest of the patch, on Linux and OS X. This | |
| means our signal delivery logic had defects (some signals could be lost). | |
| - bpo-30765: Avoid blocking in pthread_mutex_lock() when | |
| PyThread_acquire_lock() is asked not to block. | |
| - bpo-31161: Make sure the 'Missing parentheses' syntax error message is | |
| only applied to SyntaxError, not to subclasses. Patch by Martijn Pieters. | |
| - bpo-30814: Fixed a race condition when import a submodule from a package. | |
| - bpo-30736: The internal unicodedata database has been upgraded to Unicode | |
| 10.0. | |
| - bpo-30604: Move co_extra_freefuncs from per-thread to per-interpreter to | |
| avoid crashes. | |
| - bpo-30597: ``print`` now shows expected input in custom error message when | |
| used as a Python 2 statement. Patch by Sanyam Khurana. | |
| - bpo-30682: Removed a too-strict assertion that failed for certain | |
| f-strings, such as eval("f'\\\n'") and eval("f'\\\r'"). | |
| - bpo-30501: The compiler now produces more optimal code for complex | |
| condition expressions in the "if", "while" and "assert" statement, the | |
| "if" expression, and generator expressions and comprehensions. | |
| - bpo-28180: Implement :pep:`538` (legacy C locale coercion). This means | |
| that when a suitable coercion target locale is available, both the core | |
| interpreter and locale-aware C extensions will assume the use of UTF-8 as | |
| the default text encoding, rather than ASCII. | |
| - bpo-30486: Allows setting cell values for __closure__. Patch by Lisa | |
| Roach. | |
| - bpo-30537: itertools.islice now accepts integer-like objects (having an | |
| __index__ method) as start, stop, and slice arguments | |
| - bpo-25324: Tokens needed for parsing in Python moved to C. ``COMMENT``, | |
| ``NL`` and ``ENCODING``. This way the tokens and tok_names in the token | |
| module don't get changed when you import the tokenize module. | |
| - bpo-29104: Fixed parsing backslashes in f-strings. | |
| - bpo-27945: Fixed various segfaults with dict when input collections are | |
| mutated during searching, inserting or comparing. Based on patches by | |
| Duane Griffin and Tim Mitchell. | |
| - bpo-25794: Fixed type.__setattr__() and type.__delattr__() for | |
| non-interned attribute names. Based on patch by Eryk Sun. | |
| - bpo-30039: If a KeyboardInterrupt happens when the interpreter is in the | |
| middle of resuming a chain of nested 'yield from' or 'await' calls, it's | |
| now correctly delivered to the innermost frame. | |
| - bpo-28974: ``object.__format__(x, '')`` is now equivalent to ``str(x)`` | |
| rather than ``format(str(self), '')``. | |
| - bpo-30024: Circular imports involving absolute imports with binding a | |
| submodule to a name are now supported. | |
| - bpo-12414: sys.getsizeof() on a code object now returns the sizes which | |
| includes the code struct and sizes of objects which it references. Patch | |
| by Dong-hee Na. | |
| - bpo-29839: len() now raises ValueError rather than OverflowError if | |
| __len__() returned a large negative integer. | |
| - bpo-11913: README.rst is now included in the list of distutils standard | |
| READMEs and therefore included in source distributions. | |
| - bpo-29914: Fixed default implementations of __reduce__ and | |
| __reduce_ex__(). object.__reduce__() no longer takes arguments, | |
| object.__reduce_ex__() now requires one argument. | |
| - bpo-29949: Fix memory usage regression of set and frozenset object. | |
| - bpo-29935: Fixed error messages in the index() method of tuple, list and | |
| deque when pass indices of wrong type. | |
| - bpo-29816: Shift operation now has less opportunity to raise | |
| OverflowError. ValueError always is raised rather than OverflowError for | |
| negative counts. Shifting zero with non-negative count always returns | |
| zero. | |
| - bpo-24821: Fixed the slowing down to 25 times in the searching of some | |
| unlucky Unicode characters. | |
| - bpo-29102: Add a unique ID to PyInterpreterState. This makes it easier to | |
| identify each subinterpreter. | |
| - bpo-29894: The deprecation warning is emitted if __complex__ returns an | |
| instance of a strict subclass of complex. In a future versions of Python | |
| this can be an error. | |
| - bpo-29859: Show correct error messages when any of the pthread_* calls in | |
| thread_pthread.h fails. | |
| - bpo-29849: Fix a memory leak when an ImportError is raised during from | |
| import. | |
| - bpo-28856: Fix an oversight that %b format for bytes should support | |
| objects follow the buffer protocol. | |
| - bpo-29723: The ``sys.path[0]`` initialization change for bpo-29139 caused | |
| a regression by revealing an inconsistency in how sys.path is initialized | |
| when executing ``__main__`` from a zipfile, directory, or other import | |
| location. The interpreter now consistently avoids ever adding the import | |
| location's parent directory to ``sys.path``, and ensures no other | |
| ``sys.path`` entries are inadvertently modified when inserting the import | |
| location named on the command line. | |
| - bpo-29568: Escaped percent "%%" in the format string for classic string | |
| formatting no longer allows any characters between two percents. | |
| - bpo-29714: Fix a regression that bytes format may fail when containing | |
| zero bytes inside. | |
| - bpo-29695: bool(), float(), list() and tuple() no longer take keyword | |
| arguments. The first argument of int() can now be passes only as | |
| positional argument. | |
| - bpo-28893: Set correct __cause__ for errors about invalid awaitables | |
| returned from __aiter__ and __anext__. | |
| - bpo-28876: ``bool(range)`` works even if ``len(range)`` raises | |
| :exc:`OverflowError`. | |
| - bpo-29683: Fixes to memory allocation in _PyCode_SetExtra. Patch by Brian | |
| Coleman. | |
| - bpo-29684: Fix minor regression of PyEval_CallObjectWithKeywords. It | |
| should raise TypeError when kwargs is not a dict. But it might cause segv | |
| when args=NULL and kwargs is not a dict. | |
| - bpo-28598: Support __rmod__ for subclasses of str being called before | |
| str.__mod__. Patch by Martijn Pieters. | |
| - bpo-29607: Fix stack_effect computation for CALL_FUNCTION_EX. Patch by | |
| Matthieu Dartiailh. | |
| - bpo-29602: Fix incorrect handling of signed zeros in complex constructor | |
| for complex subclasses and for inputs having a __complex__ method. Patch | |
| by Serhiy Storchaka. | |
| - bpo-29347: Fixed possibly dereferencing undefined pointers when creating | |
| weakref objects. | |
| - bpo-29463: Add ``docstring`` field to Module, ClassDef, FunctionDef, and | |
| AsyncFunctionDef ast nodes. docstring is not first stmt in their body | |
| anymore. It affects ``co_firstlineno`` and ``co_lnotab`` of code object | |
| for module and class. (Reverted in :issue:`32911`.) | |
| - bpo-29438: Fixed use-after-free problem in key sharing dict. | |
| - bpo-29546: Set the 'path' and 'name' attribute on ImportError for ``from | |
| ... import ...``. | |
| - bpo-29546: Improve from-import error message with location | |
| - bpo-29478: If max_line_length=None is specified while using the Compat32 | |
| policy, it is no longer ignored. Patch by Mircea Cosbuc. | |
| - bpo-29319: Prevent RunMainFromImporter overwriting sys.path[0]. | |
| - bpo-29337: Fixed possible BytesWarning when compare the code objects. | |
| Warnings could be emitted at compile time. | |
| - bpo-29327: Fixed a crash when pass the iterable keyword argument to | |
| sorted(). | |
| - bpo-29034: Fix memory leak and use-after-free in os module | |
| (path_converter). | |
| - bpo-29159: Fix regression in bytes(x) when x.__index__() raises Exception. | |
| - bpo-29049: Call _PyObject_GC_TRACK() lazily when calling Python function. | |
| Calling function is up to 5% faster. | |
| - bpo-28927: bytes.fromhex() and bytearray.fromhex() now ignore all ASCII | |
| whitespace, not only spaces. Patch by Robert Xiao. | |
| - bpo-28932: Do not include <sys/random.h> if it does not exist. | |
| - bpo-25677: Correct the positioning of the syntax error caret for indented | |
| blocks. Based on patch by Michael Layzell. | |
| - bpo-29000: Fixed bytes formatting of octals with zero padding in alternate | |
| form. | |
| - bpo-18896: Python function can now have more than 255 parameters. | |
| collections.namedtuple() now supports tuples with more than 255 elements. | |
| - bpo-28596: The preferred encoding is UTF-8 on Android. Patch written by | |
| Chi Hsuan Yen. | |
| - bpo-22257: Clean up interpreter startup (see :pep:`432`). | |
| - bpo-26919: On Android, operating system data is now always encoded/decoded | |
| to/from UTF-8, instead of the locale encoding to avoid inconsistencies | |
| with os.fsencode() and os.fsdecode() which are already using UTF-8. | |
| - bpo-28991: functools.lru_cache() was susceptible to an obscure reentrancy | |
| bug triggerable by a monkey-patched len() function. | |
| - bpo-28147: Fix a memory leak in split-table dictionaries: setattr() must | |
| not convert combined table into split table. Patch written by INADA Naoki. | |
| - bpo-28739: f-string expressions are no longer accepted as docstrings and | |
| by ast.literal_eval() even if they do not include expressions. | |
| - bpo-28512: Fixed setting the offset attribute of SyntaxError by | |
| PyErr_SyntaxLocationEx() and PyErr_SyntaxLocationObject(). | |
| - bpo-28918: Fix the cross compilation of xxlimited when Python has been | |
| built with Py_DEBUG defined. | |
| - bpo-23722: Rather than silently producing a class that doesn't support | |
| zero-argument ``super()`` in methods, failing to pass the new | |
| ``__classcell__`` namespace entry up to ``type.__new__`` now results in a | |
| ``DeprecationWarning`` and a class that supports zero-argument | |
| ``super()``. | |
| - bpo-28797: Modifying the class __dict__ inside the __set_name__ method of | |
| a descriptor that is used inside that class no longer prevents calling the | |
| __set_name__ method of other descriptors. | |
| - bpo-28799: Remove the ``PyEval_GetCallStats()`` function and deprecate the | |
| untested and undocumented ``sys.callstats()`` function. Remove the | |
| ``CALL_PROFILE`` special build: use the :func:`sys.setprofile` function, | |
| :mod:`cProfile` or :mod:`profile` to profile function calls. | |
| - bpo-12844: More than 255 arguments can now be passed to a function. | |
| - bpo-28782: Fix a bug in the implementation ``yield from`` when checking if | |
| the next instruction is YIELD_FROM. Regression introduced by WORDCODE | |
| (issue #26647). | |
| - bpo-28774: Fix error position of the unicode error in ASCII and Latin1 | |
| encoders when a string returned by the error handler contains multiple | |
| non-encodable characters (non-ASCII for the ASCII codec, characters out of | |
| the U+0000-U+00FF range for Latin1). | |
| - bpo-28731: Optimize _PyDict_NewPresized() to create correct size dict. | |
| Improve speed of dict literal with constant keys up to 30%. | |
| - bpo-28532: Show sys.version when -V option is supplied twice. | |
| - bpo-27100: The with-statement now checks for __enter__ before it checks | |
| for __exit__. This gives less confusing error messages when both methods | |
| are missing. Patch by Jonathan Ellington. | |
| - bpo-28746: Fix the set_inheritable() file descriptor method on platforms | |
| that do not have the ioctl FIOCLEX and FIONCLEX commands. | |
| - bpo-26920: Fix not getting the locale's charset upon initializing the | |
| interpreter, on platforms that do not have langinfo. | |
| - bpo-28648: Fixed crash in Py_DecodeLocale() in debug build on Mac OS X | |
| when decode astral characters. Patch by Xiang Zhang. | |
| - bpo-28665: Improve speed of the STORE_DEREF opcode by 40%. | |
| - bpo-19398: Extra slash no longer added to sys.path components in case of | |
| empty compile-time PYTHONPATH components. | |
| - bpo-28621: Sped up converting int to float by reusing faster bits counting | |
| implementation. Patch by Adrian Wielgosik. | |
| - bpo-28580: Optimize iterating split table values. Patch by Xiang Zhang. | |
| - bpo-28583: PyDict_SetDefault didn't combine split table when needed. Patch | |
| by Xiang Zhang. | |
| - bpo-28128: Deprecation warning for invalid str and byte escape sequences | |
| now prints better information about where the error occurs. Patch by | |
| Serhiy Storchaka and Eric Smith. | |
| - bpo-28509: dict.update() no longer allocate unnecessary large memory. | |
| - bpo-28426: Fixed potential crash in PyUnicode_AsDecodedObject() in debug | |
| build. | |
| - bpo-28517: Fixed of-by-one error in the peephole optimizer that caused | |
| keeping unreachable code. | |
| - bpo-28214: Improved exception reporting for problematic __set_name__ | |
| attributes. | |
| - bpo-23782: Fixed possible memory leak in _PyTraceback_Add() and exception | |
| loss in PyTraceBack_Here(). | |
| - bpo-28183: Optimize and cleanup dict iteration. | |
| - bpo-26081: Added C implementation of asyncio.Future. Original patch by | |
| Yury Selivanov. | |
| - bpo-28379: Added sanity checks and tests for PyUnicode_CopyCharacters(). | |
| Patch by Xiang Zhang. | |
| - bpo-28376: The type of long range iterator is now registered as Iterator. | |
| Patch by Oren Milman. | |
| - bpo-28376: Creating instances of range_iterator by calling range_iterator | |
| type now is disallowed. Calling iter() on range instance is the only way. | |
| Patch by Oren Milman. | |
| - bpo-26906: Resolving special methods of uninitialized type now causes | |
| implicit initialization of the type instead of a fail. | |
| - bpo-18287: PyType_Ready() now checks that tp_name is not NULL. Original | |
| patch by Niklas Koep. | |
| - bpo-24098: Fixed possible crash when AST is changed in process of | |
| compiling it. | |
| - bpo-28201: Dict reduces possibility of 2nd conflict in hash table when | |
| hashes have same lower bits. | |
| - bpo-28350: String constants with null character no longer interned. | |
| - bpo-26617: Fix crash when GC runs during weakref callbacks. | |
| - bpo-27942: String constants now interned recursively in tuples and | |
| frozensets. | |
| - bpo-28289: ImportError.__init__ now resets not specified attributes. | |
| - bpo-21578: Fixed misleading error message when ImportError called with | |
| invalid keyword args. | |
| - bpo-28203: Fix incorrect type in complex(1.0, {2:3}) error message. Patch | |
| by Soumya Sharma. | |
| - bpo-28086: Single var-positional argument of tuple subtype was passed | |
| unscathed to the C-defined function. Now it is converted to exact tuple. | |
| - bpo-28214: Now __set_name__ is looked up on the class instead of the | |
| instance. | |
| - bpo-27955: Fallback on reading /dev/urandom device when the getrandom() | |
| syscall fails with EPERM, for example when blocked by SECCOMP. | |
| - bpo-28192: Don't import readline in isolated mode. | |
| - bpo-27441: Remove some redundant assignments to ob_size in longobject.c. | |
| Thanks Oren Milman. | |
| - bpo-27222: Clean up redundant code in long_rshift function. Thanks Oren | |
| Milman. | |
| - Upgrade internal unicode databases to Unicode version 9.0.0. | |
| - bpo-28131: Fix a regression in zipimport's compile_source(). zipimport | |
| should use the same optimization level as the interpreter. | |
| - bpo-28126: Replace Py_MEMCPY with memcpy(). Visual Studio can properly | |
| optimize memcpy(). | |
| - bpo-28120: Fix dict.pop() for splitted dictionary when trying to remove a | |
| "pending key" (Not yet inserted in split-table). Patch by Xiang Zhang. | |
| - bpo-26182: Raise DeprecationWarning when async and await keywords are used | |
| as variable/attribute/class/function name. | |
| - bpo-26182: Fix a refleak in code that raises DeprecationWarning. | |
| - bpo-28721: Fix asynchronous generators aclose() and athrow() to handle | |
| StopAsyncIteration propagation properly. | |
| - bpo-26110: Speed-up method calls: add LOAD_METHOD and CALL_METHOD opcodes. | |
| Library | |
| ------- | |
| - bpo-31499: xml.etree: Fix a crash when a parser is part of a reference | |
| cycle. | |
| - bpo-31482: ``random.seed()`` now works with bytes in version=1 | |
| - bpo-28556: typing.get_type_hints now finds the right globalns for classes | |
| and modules by default (when no ``globalns`` was specified by the caller). | |
| - bpo-28556: Speed improvements to the ``typing`` module. Original PRs by | |
| Ivan Levkivskyi and Mitar. | |
| - bpo-31544: The C accelerator module of ElementTree ignored exceptions | |
| raised when looking up TreeBuilder target methods in XMLParser(). | |
| - bpo-31234: socket.create_connection() now fixes manually a reference | |
| cycle: clear the variable storing the last exception on success. | |
| - bpo-31457: LoggerAdapter objects can now be nested. | |
| - bpo-31431: SSLContext.check_hostname now automatically sets | |
| SSLContext.verify_mode to ssl.CERT_REQUIRED instead of failing with a | |
| ValueError. | |
| - bpo-31233: socketserver.ThreadingMixIn now keeps a list of non-daemonic | |
| threads to wait until all these threads complete in server_close(). | |
| - bpo-28638: Changed the implementation strategy for | |
| collections.namedtuple() to substantially reduce the use of exec() in | |
| favor of precomputed methods. As a result, the *verbose* parameter and | |
| *_source* attribute are no longer supported. The benefits include 1) | |
| having a smaller memory footprint for applications using multiple named | |
| tuples, 2) faster creation of the named tuple class (approx 4x to 6x | |
| depending on how it is measured), and 3) minor speed-ups for instance | |
| creation using __new__, _make, and _replace. (The primary patch | |
| contributor is Jelle Zijlstra with further improvements by INADA Naoki, | |
| Serhiy Storchaka, and Raymond Hettinger.) | |
| - bpo-31400: Improves SSL error handling to avoid losing error numbers. | |
| - bpo-27629: Make return types of SSLContext.wrap_bio() and | |
| SSLContext.wrap_socket() customizable. | |
| - bpo-28958: ssl.SSLContext() now uses OpenSSL error information when a | |
| context cannot be instantiated. | |
| - bpo-28182: The SSL module now raises SSLCertVerificationError when OpenSSL | |
| fails to verify the peer's certificate. The exception contains more | |
| information about the error. | |
| - bpo-27340: SSLSocket.sendall() now uses memoryview to create slices of | |
| data. This fixes support for all bytes-like object. It is also more | |
| efficient and avoids costly copies. | |
| - bpo-14191: A new function | |
| ``argparse.ArgumentParser.parse_intermixed_args`` provides the ability to | |
| parse command lines where there user intermixes options and positional | |
| arguments. | |
| - bpo-31178: Fix string concatenation bug in rare error path in the | |
| subprocess module | |
| - bpo-31350: Micro-optimize :func:`asyncio._get_running_loop` to become up | |
| to 10% faster. | |
| - bpo-31170: expat: Update libexpat from 2.2.3 to 2.2.4. Fix copying of | |
| partial characters for UTF-8 input (libexpat bug 115): | |
| https://github.com/libexpat/libexpat/issues/115 | |
| - bpo-29136: Add TLS 1.3 cipher suites and OP_NO_TLSv1_3. | |
| - bpo-1198569: ``string.Template`` subclasses can optionally define | |
| ``braceidpattern`` if they want to specify different placeholder patterns | |
| inside and outside the braces. If None (the default) it falls back to | |
| ``idpattern``. | |
| - bpo-31326: concurrent.futures.ProcessPoolExecutor.shutdown() now | |
| explicitly closes the call queue. Moreover, shutdown(wait=True) now also | |
| join the call queue thread, to prevent leaking a dangling thread. | |
| - bpo-27144: The ``map()`` and ``as_completed()`` iterators in | |
| ``concurrent.futures`` now avoid keeping a reference to yielded objects. | |
| - bpo-31281: Fix ``fileinput.FileInput(files, inplace=True)`` when ``files`` | |
| contain ``pathlib.Path`` objects. | |
| - bpo-10746: Fix ctypes producing wrong :pep:`3118` type codes for integer | |
| types. | |
| - bpo-27584: ``AF_VSOCK`` has been added to the socket interface which | |
| allows communication between virtual machines and their host. | |
| - bpo-22536: The subprocess module now sets the filename when | |
| FileNotFoundError is raised on POSIX systems due to the executable or cwd | |
| not being found. | |
| - bpo-29741: Update some methods in the _pyio module to also accept integer | |
| types. Patch by Oren Milman. | |
| - bpo-31249: concurrent.futures: WorkItem.run() used by ThreadPoolExecutor | |
| now breaks a reference cycle between an exception object and the WorkItem | |
| object. | |
| - bpo-31247: xmlrpc.server now explicitly breaks reference cycles when using | |
| sys.exc_info() in code handling exceptions. | |
| - bpo-23835: configparser: reading defaults in the ``ConfigParser()`` | |
| constructor is now using ``read_dict()``, making its behavior consistent | |
| with the rest of the parser. Non-string keys and values in the defaults | |
| dictionary are now being implicitly converted to strings. Patch by James | |
| Tocknell. | |
| - bpo-31238: pydoc: the stop() method of the private ServerThread class now | |
| waits until DocServer.serve_until_quit() completes and then explicitly | |
| sets its docserver attribute to None to break a reference cycle. | |
| - bpo-5001: Many asserts in `multiprocessing` are now more informative, and | |
| some error types have been changed to more specific ones. | |
| - bpo-31109: Convert zipimport to use Argument Clinic. | |
| - bpo-30102: The ssl and hashlib modules now call | |
| OPENSSL_add_all_algorithms_noconf() on OpenSSL < 1.1.0. The function | |
| detects CPU features and enables optimizations on some CPU architectures | |
| such as POWER8. Patch is based on research from Gustavo Serra Scalet. | |
| - bpo-18966: Non-daemonic threads created by a multiprocessing.Process are | |
| now joined on child exit. | |
| - bpo-31183: `dis` now works with asynchronous generator and coroutine | |
| objects. Patch by George Collins based on diagnosis by Luciano Ramalho. | |
| - bpo-5001: There are a number of uninformative asserts in the | |
| `multiprocessing` module, as noted in issue 5001. This change fixes two of | |
| the most potentially problematic ones, since they are in error-reporting | |
| code, in the `multiprocessing.managers.convert_to_error` function. (It | |
| also makes more informative a ValueError message.) The only potentially | |
| problematic change is that the AssertionError is now a TypeError; however, | |
| this should also help distinguish it from an AssertionError being | |
| *reported* by the function/its caller (such as in issue 31169). - Patch by | |
| Allen W. Smith (drallensmith on github). | |
| - bpo-31185: Fixed miscellaneous errors in asyncio speedup module. | |
| - bpo-31151: socketserver.ForkingMixIn.server_close() now waits until all | |
| child processes completed to prevent leaking zombie processes. | |
| - bpo-31072: Add an ``include_file`` parameter to | |
| ``zipapp.create_archive()`` | |
| - bpo-24700: Optimize array.array comparison. It is now from 10x up to 70x | |
| faster when comparing arrays holding values of the same integer type. | |
| - bpo-31135: ttk: fix the destroy() method of LabeledScale and OptionMenu | |
| classes. Call the parent destroy() method even if the used attribute | |
| doesn't exist. The LabeledScale.destroy() method now also explicitly | |
| clears label and scale attributes to help the garbage collector to destroy | |
| all widgets. | |
| - bpo-31107: Fix `copyreg._slotnames()` mangled attribute calculation for | |
| classes whose name begins with an underscore. Patch by Shane Harvey. | |
| - bpo-31080: Allow `logging.config.fileConfig` to accept kwargs and/or args. | |
| - bpo-30897: ``pathlib.Path`` objects now include an ``is_mount()`` method | |
| (only implemented on POSIX). This is similar to ``os.path.ismount(p)``. | |
| Patch by Cooper Ry Lees. | |
| - bpo-31061: Fixed a crash when using asyncio and threads. | |
| - bpo-30987: Added support for CAN ISO-TP protocol in the socket module. | |
| - bpo-30522: Added a ``setStream`` method to ``logging.StreamHandler`` to | |
| allow the stream to be set after creation. | |
| - bpo-30502: Fix handling of long oids in ssl. Based on patch by Christian | |
| Heimes. | |
| - bpo-5288: Support tzinfo objects with sub-minute offsets. | |
| - bpo-30919: Fix shared memory performance regression in multiprocessing in | |
| 3.x. Shared memory used anonymous memory mappings in 2.x, while 3.x mmaps | |
| actual files. Try to be careful to do as little disk I/O as possible. | |
| - bpo-26732: Fix too many fds in processes started with the "forkserver" | |
| method. A child process would inherit as many fds as the number of | |
| still-running children. | |
| - bpo-29403: Fix ``unittest.mock``'s autospec to not fail on method-bound | |
| builtin functions. Patch by Aaron Gallagher. | |
| - bpo-30961: Fix decrementing a borrowed reference in tracemalloc. | |
| - bpo-19896: Fix multiprocessing.sharedctypes to recognize typecodes ``'q'`` | |
| and ``'Q'``. | |
| - bpo-30946: Remove obsolete code in readline module for platforms where GNU | |
| readline is older than 2.1 or where select() is not available. | |
| - bpo-25684: Change ``ttk.OptionMenu`` radiobuttons to be unique across | |
| instances of ``OptionMenu``. | |
| - bpo-30886: Fix multiprocessing.Queue.join_thread(): it now waits until the | |
| thread completes, even if the thread was started by the same process which | |
| created the queue. | |
| - bpo-29854: Fix segfault in readline when using readline's history-size | |
| option. Patch by Nir Soffer. | |
| - bpo-30794: Added multiprocessing.Process.kill method to terminate using | |
| the SIGKILL signal on Unix. | |
| - bpo-30319: socket.close() now ignores ECONNRESET error. | |
| - bpo-30828: Fix out of bounds write in | |
| `asyncio.CFuture.remove_done_callback()`. | |
| - bpo-30302: Use keywords in the ``repr`` of ``datetime.timedelta``. | |
| - bpo-30807: signal.setitimer() may disable the timer when passed a tiny | |
| value. Tiny values (such as 1e-6) are valid non-zero values for | |
| setitimer(), which is specified as taking microsecond-resolution | |
| intervals. However, on some platform, our conversion routine could convert | |
| 1e-6 into a zero interval, therefore disabling the timer instead of | |
| (re-)scheduling it. | |
| - bpo-30441: Fix bug when modifying os.environ while iterating over it | |
| - bpo-29585: Avoid importing ``sysconfig`` from ``site`` to improve startup | |
| speed. Python startup is about 5% faster on Linux and 30% faster on macOS. | |
| - bpo-29293: Add missing parameter "n" on | |
| multiprocessing.Condition.notify(). The doc claims | |
| multiprocessing.Condition behaves like threading.Condition, but its | |
| notify() method lacked the optional "n" argument (to specify the number of | |
| sleepers to wake up) that threading.Condition.notify() accepts. | |
| - bpo-30532: Fix email header value parser dropping folding white space in | |
| certain cases. | |
| - bpo-30596: Add a ``close()`` method to ``multiprocessing.Process``. | |
| - bpo-9146: Fix a segmentation fault in _hashopenssl when standard hash | |
| functions such as md5 are not available in the linked OpenSSL library. As | |
| in some special FIPS-140 build environments. | |
| - bpo-29169: Update zlib to 1.2.11. | |
| - bpo-30119: ftplib.FTP.putline() now throws ValueError on commands that | |
| contains CR or LF. Patch by Dong-hee Na. | |
| - bpo-30879: os.listdir() and os.scandir() now emit bytes names when called | |
| with bytes-like argument. | |
| - bpo-30746: Prohibited the '=' character in environment variable names in | |
| ``os.putenv()`` and ``os.spawn*()``. | |
| - bpo-30664: The description of a unittest subtest now preserves the order | |
| of keyword arguments of TestCase.subTest(). | |
| - bpo-21071: struct.Struct.format type is now :class:`str` instead of | |
| :class:`bytes`. | |
| - bpo-29212: Fix concurrent.futures.thread.ThreadPoolExecutor threads to | |
| have a non repr() based thread name by default when no thread_name_prefix | |
| is supplied. They will now identify themselves as | |
| "ThreadPoolExecutor-y_n". | |
| - bpo-29755: Fixed the lgettext() family of functions in the gettext module. | |
| They now always return bytes. | |
| - bpo-30616: Functional API of enum allows to create empty enums. Patched by | |
| Dong-hee Na | |
| - bpo-30038: Fix race condition between signal delivery and wakeup file | |
| descriptor. Patch by Nathaniel Smith. | |
| - bpo-23894: lib2to3 now recognizes ``rb'...'`` and ``f'...'`` strings. | |
| - bpo-24744: pkgutil.walk_packages function now raises ValueError if *path* | |
| is a string. Patch by Sanyam Khurana. | |
| - bpo-24484: Avoid race condition in multiprocessing cleanup. | |
| - bpo-30589: Fix multiprocessing.Process.exitcode to return the opposite of | |
| the signal number when the process is killed by a signal (instead of 255) | |
| when using the "forkserver" method. | |
| - bpo-28994: The traceback no longer displayed for SystemExit raised in a | |
| callback registered by atexit. | |
| - bpo-30508: Don't log exceptions if Task/Future "cancel()" method was | |
| called. | |
| - bpo-30645: Fix path calculation in `imp.load_package()`, fixing it for | |
| cases when a package is only shipped with bytecodes. Patch by Alexandru | |
| Ardelean. | |
| - bpo-11822: The dis.dis() function now is able to disassemble nested code | |
| objects. | |
| - bpo-30624: selectors does not take KeyboardInterrupt and SystemExit into | |
| account, leaving a fd in a bad state in case of error. Patch by Giampaolo | |
| Rodola'. | |
| - bpo-30595: multiprocessing.Queue.get() with a timeout now polls its reader | |
| in non-blocking mode if it succeeded to acquire the lock but the acquire | |
| took longer than the timeout. | |
| - bpo-28556: Updates to typing module: Add generic AsyncContextManager, add | |
| support for ContextManager on all versions. Original PRs by Jelle Zijlstra | |
| and Ivan Levkivskyi | |
| - bpo-30605: re.compile() no longer raises a BytesWarning when compiling a | |
| bytes instance with misplaced inline modifier. Patch by Roy Williams. | |
| - bpo-29870: Fix ssl sockets leaks when connection is aborted in asyncio/ssl | |
| implementation. Patch by Michaël Sghaïer. | |
| - bpo-29743: Closing transport during handshake process leaks open socket. | |
| Patch by Nikolay Kim | |
| - bpo-27585: Fix waiter cancellation in asyncio.Lock. Patch by Mathieu | |
| Sornay. | |
| - bpo-30014: modify() method of poll(), epoll() and devpoll() based classes | |
| of selectors module is around 10% faster. Patch by Giampaolo Rodola'. | |
| - bpo-30418: On Windows, subprocess.Popen.communicate() now also ignore | |
| EINVAL on stdin.write() if the child process is still running but closed | |
| the pipe. | |
| - bpo-30463: Addded empty __slots__ to abc.ABC. This allows subclassers to | |
| deny __dict__ and __weakref__ creation. Patch by Aaron Hall. | |
| - bpo-30520: Loggers are now pickleable. | |
| - bpo-30557: faulthandler now correctly filters and displays exception codes | |
| on Windows | |
| - bpo-30526: Add TextIOWrapper.reconfigure() and a | |
| TextIOWrapper.write_through attribute. | |
| - bpo-30245: Fix possible overflow when organize struct.pack_into error | |
| message. Patch by Yuan Liu. | |
| - bpo-30378: Fix the problem that logging.handlers.SysLogHandler cannot | |
| handle IPv6 addresses. | |
| - bpo-16500: Allow registering at-fork handlers. | |
| - bpo-30470: Deprecate invalid ctypes call protection on Windows. Patch by | |
| Mariatta Wijaya. | |
| - bpo-30414: multiprocessing.Queue._feed background running thread do not | |
| break from main loop on exception. | |
| - bpo-30003: Fix handling escape characters in HZ codec. Based on patch by | |
| Ma Lin. | |
| - bpo-30149: inspect.signature() now supports callables with | |
| variable-argument parameters wrapped with partialmethod. Patch by Dong-hee | |
| Na. | |
| - bpo-30436: importlib.find_spec() raises ModuleNotFoundError instead of | |
| AttributeError if the specified parent module is not a package (i.e. lacks | |
| a __path__ attribute). | |
| - bpo-30301: Fix AttributeError when using SimpleQueue.empty() under *spawn* | |
| and *forkserver* start methods. | |
| - bpo-30375: Warnings emitted when compile a regular expression now always | |
| point to the line in the user code. Previously they could point into | |
| inners of the re module if emitted from inside of groups or conditionals. | |
| - bpo-30329: imaplib and poplib now catch the Windows socket WSAEINVAL error | |
| (code 10022) on shutdown(SHUT_RDWR): An invalid operation was attempted. | |
| This error occurs sometimes on SSL connections. | |
| - bpo-29196: Removed previously deprecated in Python 2.4 classes Plist, Dict | |
| and _InternalDict in the plistlib module. Dict values in the result of | |
| functions readPlist() and readPlistFromBytes() are now normal dicts. You | |
| no longer can use attribute access to access items of these dictionaries. | |
| - bpo-9850: The :mod:`macpath` is now deprecated and will be removed in | |
| Python 3.8. | |
| - bpo-30299: Compiling regular expression in debug mode on CPython now | |
| displays the compiled bytecode in human readable form. | |
| - bpo-30048: Fixed ``Task.cancel()`` can be ignored when the task is running | |
| coroutine and the coroutine returned without any more ``await``. | |
| - bpo-30266: contextlib.AbstractContextManager now supports | |
| anti-registration by setting __enter__ = None or __exit__ = None, | |
| following the pattern introduced in bpo-25958. Patch by Jelle Zijlstra. | |
| - bpo-30340: Enhanced regular expressions optimization. This increased the | |
| performance of matching some patterns up to 25 times. | |
| - bpo-30298: Weaken the condition of deprecation warnings for inline | |
| modifiers. Now allowed several subsequential inline modifiers at the start | |
| of the pattern (e.g. ``'(?i)(?s)...'``). In verbose mode whitespaces and | |
| comments now are allowed before and between inline modifiers (e.g. ``'(?x) | |
| (?i) (?s)...'``). | |
| - bpo-30285: Optimized case-insensitive matching and searching of regular | |
| expressions. | |
| - bpo-29990: Fix range checking in GB18030 decoder. Original patch by Ma | |
| Lin. | |
| - bpo-29979: rewrite cgi.parse_multipart, reusing the FieldStorage class and | |
| making its results consistent with those of FieldStorage for | |
| multipart/form-data requests. Patch by Pierre Quentel. | |
| - bpo-30243: Removed the __init__ methods of _json's scanner and encoder. | |
| Misusing them could cause memory leaks or crashes. Now scanner and | |
| encoder objects are completely initialized in the __new__ methods. | |
| - bpo-30215: Compiled regular expression objects with the re.LOCALE flag no | |
| longer depend on the locale at compile time. Only the locale at matching | |
| time affects the result of matching. | |
| - bpo-30185: Avoid KeyboardInterrupt tracebacks in forkserver helper process | |
| when Ctrl-C is received. | |
| - bpo-30103: binascii.b2a_uu() and uu.encode() now support using ``'`'`` as | |
| zero instead of space. | |
| - bpo-28556: Various updates to typing module: add typing.NoReturn type, use | |
| WrapperDescriptorType, minor bug-fixes. Original PRs by Jim | |
| Fasarakis-Hilliard and Ivan Levkivskyi. | |
| - bpo-30205: Fix getsockname() for unbound AF_UNIX sockets on Linux. | |
| - bpo-30228: The seek() and tell() methods of io.FileIO now set the internal | |
| seekable attribute to avoid one syscall on open() (in buffered or text | |
| mode). | |
| - bpo-30190: unittest's assertAlmostEqual and assertNotAlmostEqual provide a | |
| better message in case of failure which includes the difference between | |
| left and right arguments. (patch by Giampaolo Rodola') | |
| - bpo-30101: Add support for curses.A_ITALIC. | |
| - bpo-29822: inspect.isabstract() now works during __init_subclass__. Patch | |
| by Nate Soares. | |
| - bpo-29960: Preserve generator state when _random.Random.setstate() raises | |
| an exception. Patch by Bryan Olson. | |
| - bpo-30070: Fixed leaks and crashes in errors handling in the parser | |
| module. | |
| - bpo-22352: Column widths in the output of dis.dis() are now adjusted for | |
| large line numbers and instruction offsets. | |
| - bpo-30061: Fixed crashes in IOBase methods __next__() and readlines() when | |
| readline() or __next__() respectively return non-sizeable object. Fixed | |
| possible other errors caused by not checking results of PyObject_Size(), | |
| PySequence_Size(), or PyMapping_Size(). | |
| - bpo-30218: Fix PathLike support for shutil.unpack_archive. Patch by Jelle | |
| Zijlstra. | |
| - bpo-10076: Compiled regular expression and match objects in the re module | |
| now support copy.copy() and copy.deepcopy() (they are considered atomic). | |
| - bpo-30068: _io._IOBase.readlines will check if it's closed first when hint | |
| is present. | |
| - bpo-29694: Fixed race condition in pathlib mkdir with flags parents=True. | |
| Patch by Armin Rigo. | |
| - bpo-29692: Fixed arbitrary unchaining of RuntimeError exceptions in | |
| contextlib.contextmanager. Patch by Siddharth Velankar. | |
| - bpo-26187: Test that sqlite3 trace callback is not called multiple times | |
| when schema is changing. Indirectly fixed by switching to use | |
| sqlite3_prepare_v2() in bpo-9303. Patch by Aviv Palivoda. | |
| - bpo-30017: Allowed calling the close() method of the zip entry writer | |
| object multiple times. Writing to a closed writer now always produces a | |
| ValueError. | |
| - bpo-29998: Pickling and copying ImportError now preserves name and path | |
| attributes. | |
| - bpo-29995: re.escape() now escapes only regex special characters. | |
| - bpo-29962: Add math.remainder operation, implementing remainder as | |
| specified in IEEE 754. | |
| - bpo-29649: Improve struct.pack_into() exception messages for problems with | |
| the buffer size and offset. Patch by Andrew Nester. | |
| - bpo-29654: Support If-Modified-Since HTTP header (browser cache). Patch | |
| by Pierre Quentel. | |
| - bpo-29931: Fixed comparison check for ipaddress.ip_interface objects. | |
| Patch by Sanjay Sundaresan. | |
| - bpo-29953: Fixed memory leaks in the replace() method of datetime and time | |
| objects when pass out of bound fold argument. | |
| - bpo-29942: Fix a crash in itertools.chain.from_iterable when encountering | |
| long runs of empty iterables. | |
| - bpo-10030: Sped up reading encrypted ZIP files by 2 times. | |
| - bpo-29204: Element.getiterator() and the html parameter of XMLParser() | |
| were deprecated only in the documentation (since Python 3.2 and 3.4 | |
| correspondingly). Now using them emits a deprecation warning. | |
| - bpo-27863: Fixed multiple crashes in ElementTree caused by race conditions | |
| and wrong types. | |
| - bpo-25996: Added support of file descriptors in os.scandir() on Unix. | |
| os.fwalk() is sped up by 2 times by using os.scandir(). | |
| - bpo-28699: Fixed a bug in pools in multiprocessing.pool that raising an | |
| exception at the very first of an iterable may swallow the exception or | |
| make the program hang. Patch by Davin Potts and Xiang Zhang. | |
| - bpo-23890: unittest.TestCase.assertRaises() now manually breaks a | |
| reference cycle to not keep objects alive longer than expected. | |
| - bpo-29901: The zipapp module now supports general path-like objects, not | |
| just pathlib.Path. | |
| - bpo-25803: Avoid incorrect errors raised by Path.mkdir(exist_ok=True) when | |
| the OS gives priority to errors such as EACCES over EEXIST. | |
| - bpo-29861: Release references to tasks, their arguments and their results | |
| as soon as they are finished in multiprocessing.Pool. | |
| - bpo-19930: The mode argument of os.makedirs() no longer affects the file | |
| permission bits of newly created intermediate-level directories. | |
| - bpo-29884: faulthandler: Restore the old sigaltstack during teardown. | |
| Patch by Christophe Zeitouny. | |
| - bpo-25455: Fixed crashes in repr of recursive buffered file-like objects. | |
| - bpo-29800: Fix crashes in partial.__repr__ if the keys of partial.keywords | |
| are not strings. Patch by Michael Seifert. | |
| - bpo-8256: Fixed possible failing or crashing input() if attributes | |
| "encoding" or "errors" of sys.stdin or sys.stdout are not set or are not | |
| strings. | |
| - bpo-28692: Using non-integer value for selecting a plural form in gettext | |
| is now deprecated. | |
| - bpo-26121: Use C library implementation for math functions erf() and | |
| erfc(). | |
| - bpo-29619: os.stat() and os.DirEntry.inode() now convert inode (st_ino) | |
| using unsigned integers. | |
| - bpo-28298: Fix a bug that prevented array 'Q', 'L' and 'I' from accepting | |
| big intables (objects that have __int__) as elements. | |
| - bpo-29645: Speed up importing the webbrowser module. | |
| webbrowser.register() is now thread-safe. | |
| - bpo-28231: The zipfile module now accepts path-like objects for external | |
| paths. | |
| - bpo-26915: index() and count() methods of collections.abc.Sequence now | |
| check identity before checking equality when do comparisons. | |
| - bpo-28682: Added support for bytes paths in os.fwalk(). | |
| - bpo-29728: Add new :data:`socket.TCP_NOTSENT_LOWAT` (Linux 3.12) constant. | |
| Patch by Nathaniel J. Smith. | |
| - bpo-29623: Allow use of path-like object as a single argument in | |
| ConfigParser.read(). Patch by David Ellis. | |
| - bpo-9303: Migrate sqlite3 module to _v2 API. Patch by Aviv Palivoda. | |
| - bpo-28963: Fix out of bound iteration in | |
| asyncio.Future.remove_done_callback implemented in C. | |
| - bpo-29704: asyncio.subprocess.SubprocessStreamProtocol no longer closes | |
| before all pipes are closed. | |
| - bpo-29271: Fix Task.current_task and Task.all_tasks implemented in C to | |
| accept None argument as their pure Python implementation. | |
| - bpo-29703: Fix asyncio to support instantiation of new event loops in | |
| child processes. | |
| - bpo-29615: SimpleXMLRPCDispatcher no longer chains KeyError (or any other | |
| exception) to exception(s) raised in the dispatched methods. Patch by Petr | |
| Motejlek. | |
| - bpo-7769: Method register_function() of | |
| xmlrpc.server.SimpleXMLRPCDispatcher and its subclasses can now be used as | |
| a decorator. | |
| - bpo-29376: Fix assertion error in threading._DummyThread.is_alive(). | |
| - bpo-28624: Add a test that checks that cwd parameter of Popen() accepts | |
| PathLike objects. Patch by Sayan Chowdhury. | |
| - bpo-28518: Start a transaction implicitly before a DML statement. Patch by | |
| Aviv Palivoda. | |
| - bpo-29742: get_extra_info() raises exception if get called on closed ssl | |
| transport. Patch by Nikolay Kim. | |
| - bpo-16285: urllib.parse.quote is now based on RFC 3986 and hence includes | |
| '~' in the set of characters that is not quoted by default. Patch by | |
| Christian Theune and Ratnadeep Debnath. | |
| - bpo-29532: Altering a kwarg dictionary passed to functools.partial() no | |
| longer affects a partial object after creation. | |
| - bpo-29110: Fix file object leak in aifc.open() when file is given as a | |
| filesystem path and is not in valid AIFF format. Patch by Anthony Zhang. | |
| - bpo-22807: Add uuid.SafeUUID and uuid.UUID.is_safe to relay information | |
| from the platform about whether generated UUIDs are generated with a | |
| multiprocessing safe method. | |
| - bpo-29576: Improve some deprecations in importlib. Some deprecated methods | |
| now emit DeprecationWarnings and have better descriptive messages. | |
| - bpo-29534: Fixed different behaviour of Decimal.from_float() for _decimal | |
| and _pydecimal. Thanks Andrew Nester. | |
| - bpo-10379: locale.format_string now supports the 'monetary' keyword | |
| argument, and locale.format is deprecated. | |
| - bpo-29851: importlib.reload() now raises ModuleNotFoundError if the module | |
| lacks a spec. | |
| - bpo-28556: Various updates to typing module: typing.Counter, | |
| typing.ChainMap, improved ABC caching, etc. Original PRs by Jelle | |
| Zijlstra, Ivan Levkivskyi, Manuel Krebber, and Łukasz Langa. | |
| - bpo-29100: Fix datetime.fromtimestamp() regression introduced in Python | |
| 3.6.0: check minimum and maximum years. | |
| - bpo-29416: Prevent infinite loop in pathlib.Path.mkdir | |
| - bpo-29444: Fixed out-of-bounds buffer access in the group() method of the | |
| match object. Based on patch by WGH. | |
| - bpo-29377: Add WrapperDescriptorType, MethodWrapperType, and | |
| MethodDescriptorType built-in types to types module. Original patch by | |
| Manuel Krebber. | |
| - bpo-29218: Unused install_misc command is now removed. It has been | |
| documented as unused since 2000. Patch by Eric N. Vander Weele. | |
| - bpo-29368: The extend() method is now called instead of the append() | |
| method when unpickle collections.deque and other list-like objects. This | |
| can speed up unpickling to 2 times. | |
| - bpo-29338: The help of a builtin or extension class now includes the | |
| constructor signature if __text_signature__ is provided for the class. | |
| - bpo-29335: Fix subprocess.Popen.wait() when the child process has exited | |
| to a stopped instead of terminated state (ex: when under ptrace). | |
| - bpo-29290: Fix a regression in argparse that help messages would wrap at | |
| non-breaking spaces. | |
| - bpo-28735: Fixed the comparison of mock.MagickMock with mock.ANY. | |
| - bpo-29197: Removed deprecated function ntpath.splitunc(). | |
| - bpo-29210: Removed support of deprecated argument "exclude" in | |
| tarfile.TarFile.add(). | |
| - bpo-29219: Fixed infinite recursion in the repr of uninitialized | |
| ctypes.CDLL instances. | |
| - bpo-29192: Removed deprecated features in the http.cookies module. | |
| - bpo-29193: A format string argument for string.Formatter.format() is now | |
| positional-only. | |
| - bpo-29195: Removed support of deprecated undocumented keyword arguments in | |
| methods of regular expression objects. | |
| - bpo-28969: Fixed race condition in C implementation of | |
| functools.lru_cache. KeyError could be raised when cached function with | |
| full cache was simultaneously called from different threads with the same | |
| uncached arguments. | |
| - bpo-20804: The unittest.mock.sentinel attributes now preserve their | |
| identity when they are copied or pickled. | |
| - bpo-29142: In urllib.request, suffixes in no_proxy environment variable | |
| with leading dots could match related hostnames again (e.g. .b.c matches | |
| a.b.c). Patch by Milan Oberkirch. | |
| - bpo-28961: Fix unittest.mock._Call helper: don't ignore the name parameter | |
| anymore. Patch written by Jiajun Huang. | |
| - bpo-15812: inspect.getframeinfo() now correctly shows the first line of a | |
| context. Patch by Sam Breese. | |
| - bpo-28985: Update authorizer constants in sqlite3 module. Patch by | |
| Dingyuan Wang. | |
| - bpo-29079: Prevent infinite loop in pathlib.resolve() on Windows | |
| - bpo-13051: Fixed recursion errors in large or resized | |
| curses.textpad.Textbox. Based on patch by Tycho Andersen. | |
| - bpo-9770: curses.ascii predicates now work correctly with negative | |
| integers. | |
| - bpo-28427: old keys should not remove new values from WeakValueDictionary | |
| when collecting from another thread. | |
| - bpo-28923: Remove editor artifacts from Tix.py. | |
| - bpo-28871: Fixed a crash when deallocate deep ElementTree. | |
| - bpo-19542: Fix bugs in WeakValueDictionary.setdefault() and | |
| WeakValueDictionary.pop() when a GC collection happens in another thread. | |
| - bpo-20191: Fixed a crash in resource.prlimit() when passing a sequence | |
| that doesn't own its elements as limits. | |
| - bpo-16255: subprocess.Popen uses /system/bin/sh on Android as the shell, | |
| instead of /bin/sh. | |
| - bpo-28779: multiprocessing.set_forkserver_preload() would crash the | |
| forkserver process if a preloaded module instantiated some multiprocessing | |
| objects such as locks. | |
| - bpo-26937: The chown() method of the tarfile.TarFile class does not fail | |
| now when the grp module cannot be imported, as for example on Android | |
| platforms. | |
| - bpo-28847: dbm.dumb now supports reading read-only files and no longer | |
| writes the index file when it is not changed. A deprecation warning is | |
| now emitted if the index file is missed and recreated in the 'r' and 'w' | |
| modes (will be an error in future Python releases). | |
| - bpo-27030: Unknown escapes consisting of ``'\'`` and an ASCII letter in | |
| re.sub() replacement templates regular expressions now are errors. | |
| - bpo-28835: Fix a regression introduced in warnings.catch_warnings(): call | |
| warnings.showwarning() if it was overridden inside the context manager. | |
| - bpo-27172: To assist with upgrades from 2.7, the previously documented | |
| deprecation of ``inspect.getfullargspec()`` has been reversed. This | |
| decision may be revisited again after the Python 2.7 branch is no longer | |
| officially supported. | |
| - bpo-28740: Add sys.getandroidapilevel(): return the build time API version | |
| of Android as an integer. Function only available on Android. | |
| - bpo-26273: Add new :data:`socket.TCP_CONGESTION` (Linux 2.6.13) and | |
| :data:`socket.TCP_USER_TIMEOUT` (Linux 2.6.37) constants. Patch written by | |
| Omar Sandoval. | |
| - bpo-28752: Restored the __reduce__() methods of datetime objects. | |
| - bpo-28727: Regular expression patterns, _sre.SRE_Pattern objects created | |
| by re.compile(), become comparable (only x==y and x!=y operators). This | |
| change should fix the issue #18383: don't duplicate warning filters when | |
| the warnings module is reloaded (thing usually only done in unit tests). | |
| - bpo-20572: Remove the subprocess.Popen.wait endtime parameter. It was | |
| deprecated in 3.4 and undocumented prior to that. | |
| - bpo-25659: In ctypes, prevent a crash calling the from_buffer() and | |
| from_buffer_copy() methods on abstract classes like Array. | |
| - bpo-28548: In the "http.server" module, parse the protocol version if | |
| possible, to avoid using HTTP 0.9 in some error responses. | |
| - bpo-19717: Makes Path.resolve() succeed on paths that do not exist. Patch | |
| by Vajrasky Kok | |
| - bpo-28563: Fixed possible DoS and arbitrary code execution when handle | |
| plural form selections in the gettext module. The expression parser now | |
| supports exact syntax supported by GNU gettext. | |
| - bpo-28387: Fixed possible crash in _io.TextIOWrapper deallocator when the | |
| garbage collector is invoked in other thread. Based on patch by Sebastian | |
| Cufre. | |
| - bpo-27517: LZMA compressor and decompressor no longer raise exceptions if | |
| given empty data twice. Patch by Benjamin Fogle. | |
| - bpo-28549: Fixed segfault in curses's addch() with ncurses6. | |
| - bpo-28449: tarfile.open() with mode "r" or "r:" now tries to open a tar | |
| file with compression before trying to open it without compression. | |
| Otherwise it had 50% chance failed with ignore_zeros=True. | |
| - bpo-23262: The webbrowser module now supports Firefox 36+ and derived | |
| browsers. Based on patch by Oleg Broytman. | |
| - bpo-24241: The webbrowser in an X environment now prefers using the | |
| default browser directly. Also, the webbrowser register() function now has | |
| a documented 'preferred' argument, to specify browsers to be returned by | |
| get() with no arguments. Patch by David Steele | |
| - bpo-27939: Fixed bugs in tkinter.ttk.LabeledScale and tkinter.Scale caused | |
| by representing the scale as float value internally in Tk. tkinter.IntVar | |
| now works if float value is set to underlying Tk variable. | |
| - bpo-28255: calendar.TextCalendar.prweek() no longer prints a space after a | |
| weeks's calendar. calendar.TextCalendar.pryear() no longer prints | |
| redundant newline after a year's calendar. Based on patch by Xiang Zhang. | |
| - bpo-28255: calendar.TextCalendar.prmonth() no longer prints a space at the | |
| start of new line after printing a month's calendar. Patch by Xiang | |
| Zhang. | |
| - bpo-20491: The textwrap.TextWrapper class now honors non-breaking spaces. | |
| Based on patch by Kaarle Ritvanen. | |
| - bpo-28353: os.fwalk() no longer fails on broken links. | |
| - bpo-28430: Fix iterator of C implemented asyncio.Future doesn't accept | |
| non-None value is passed to it.send(val). | |
| - bpo-27025: Generated names for Tkinter widgets now start by the "!" prefix | |
| for readability. | |
| - bpo-25464: Fixed HList.header_exists() in tkinter.tix module by addin a | |
| workaround to Tix library bug. | |
| - bpo-28488: shutil.make_archive() no longer adds entry "./" to ZIP archive. | |
| - bpo-25953: re.sub() now raises an error for invalid numerical group | |
| reference in replacement template even if the pattern is not found in the | |
| string. Error message for invalid group reference now includes the group | |
| index and the position of the reference. Based on patch by SilentGhost. | |
| - bpo-28469: timeit now uses the sequence 1, 2, 5, 10, 20, 50,... instead of | |
| 1, 10, 100,... for autoranging. | |
| - bpo-28115: Command-line interface of the zipfile module now uses argparse. | |
| Added support of long options. | |
| - bpo-18219: Optimize csv.DictWriter for large number of columns. Patch by | |
| Mariatta Wijaya. | |
| - bpo-28448: Fix C implemented asyncio.Future didn't work on Windows. | |
| - bpo-23214: In the "io" module, the argument to BufferedReader and | |
| BytesIO's read1() methods is now optional and can be -1, matching the | |
| BufferedIOBase specification. | |
| - bpo-28480: Fix error building socket module when multithreading is | |
| disabled. | |
| - bpo-28240: timeit: remove ``-c/--clock`` and ``-t/--time`` command line | |
| options which were deprecated since Python 3.3. | |
| - bpo-28240: timeit now repeats the benchmarks 5 times instead of only 3 to | |
| make benchmarks more reliable. | |
| - bpo-28240: timeit autorange now uses a single loop iteration if the | |
| benchmark takes less than 10 seconds, instead of 10 iterations. "python3 | |
| -m timeit -s 'import time' 'time.sleep(1)'" now takes 4 seconds instead of | |
| 40 seconds. | |
| - Distutils.sdist now looks for README and setup.py files with case | |
| sensitivity. This behavior matches that found in Setuptools 6.0 and later. | |
| See `setuptools 100 <https://github.com/pypa/setuptools/issues/100>`_ for | |
| rationale. | |
| - bpo-24452: Make webbrowser support Chrome on Mac OS X. Patch by Ned | |
| Batchelder. | |
| - bpo-20766: Fix references leaked by pdb in the handling of SIGINT | |
| handlers. | |
| - bpo-27998: Fixed bytes path support in os.scandir() on Windows. Patch by | |
| Eryk Sun. | |
| - bpo-28317: The disassembler now decodes FORMAT_VALUE argument. | |
| - bpo-28380: unittest.mock Mock autospec functions now properly support | |
| assert_called, assert_not_called, and assert_called_once. | |
| - bpo-28229: lzma module now supports pathlib. | |
| - bpo-28321: Fixed writing non-BMP characters with binary format in | |
| plistlib. | |
| - bpo-28225: bz2 module now supports pathlib. Initial patch by Ethan | |
| Furman. | |
| - bpo-28227: gzip now supports pathlib. Patch by Ethan Furman. | |
| - bpo-28332: Deprecated silent truncations in socket.htons and socket.ntohs. | |
| Original patch by Oren Milman. | |
| - bpo-27358: Optimized merging var-keyword arguments and improved error | |
| message when passing a non-mapping as a var-keyword argument. | |
| - bpo-28257: Improved error message when passing a non-iterable as a | |
| var-positional argument. Added opcode BUILD_TUPLE_UNPACK_WITH_CALL. | |
| - bpo-28322: Fixed possible crashes when unpickle itertools objects from | |
| incorrect pickle data. Based on patch by John Leitch. | |
| - bpo-28228: imghdr now supports pathlib. | |
| - bpo-28226: compileall now supports pathlib. | |
| - bpo-28314: Fix function declaration (C flags) for the getiterator() method | |
| of xml.etree.ElementTree.Element. | |
| - bpo-28148: Stop using localtime() and gmtime() in the time module. | |
| Introduced platform independent _PyTime_localtime API that is similar to | |
| POSIX localtime_r, but available on all platforms. Patch by Ed Schouten. | |
| - bpo-28253: Fixed calendar functions for extreme months: 0001-01 and | |
| 9999-12. Methods itermonthdays() and itermonthdays2() are reimplemented so | |
| that they don't call itermonthdates() which can cause datetime.date | |
| under/overflow. | |
| - bpo-28275: Fixed possible use after free in the decompress() methods of | |
| the LZMADecompressor and BZ2Decompressor classes. Original patch by John | |
| Leitch. | |
| - bpo-27897: Fixed possible crash in sqlite3.Connection.create_collation() | |
| if pass invalid string-like object as a name. Patch by Xiang Zhang. | |
| - bpo-18844: random.choices() now has k as a keyword-only argument to | |
| improve the readability of common cases and come into line with the | |
| signature used in other languages. | |
| - bpo-18893: Fix invalid exception handling in Lib/ctypes/macholib/dyld.py. | |
| Patch by Madison May. | |
| - bpo-27611: Fixed support of default root window in the tkinter.tix module. | |
| Added the master parameter in the DisplayStyle constructor. | |
| - bpo-27348: In the traceback module, restore the formatting of exception | |
| messages like "Exception: None". This fixes a regression introduced in | |
| 3.5a2. | |
| - bpo-25651: Allow falsy values to be used for msg parameter of subTest(). | |
| - bpo-27778: Fix a memory leak in os.getrandom() when the getrandom() is | |
| interrupted by a signal and a signal handler raises a Python exception. | |
| - bpo-28200: Fix memory leak on Windows in the os module (fix | |
| path_converter() function). | |
| - bpo-25400: RobotFileParser now correctly returns default values for | |
| crawl_delay and request_rate. Initial patch by Peter Wirtz. | |
| - bpo-27932: Prevent memory leak in win32_ver(). | |
| - Fix UnboundLocalError in socket._sendfile_use_sendfile. | |
| - bpo-28075: Check for ERROR_ACCESS_DENIED in Windows implementation of | |
| os.stat(). Patch by Eryk Sun. | |
| - bpo-22493: Warning message emitted by using inline flags in the middle of | |
| regular expression now contains a (truncated) regex pattern. Patch by Tim | |
| Graham. | |
| - bpo-25270: Prevent codecs.escape_encode() from raising SystemError when an | |
| empty bytestring is passed. | |
| - bpo-28181: Get antigravity over HTTPS. Patch by Kaartic Sivaraam. | |
| - bpo-25895: Enable WebSocket URL schemes in urllib.parse.urljoin. Patch by | |
| Gergely Imreh and Markus Holtermann. | |
| - bpo-28114: Fix a crash in parse_envlist() when env contains byte strings. | |
| Patch by Eryk Sun. | |
| - bpo-27599: Fixed buffer overrun in binascii.b2a_qp() and | |
| binascii.a2b_qp(). | |
| - bpo-27906: Fix socket accept exhaustion during high TCP traffic. Patch by | |
| Kevin Conway. | |
| - bpo-28174: Handle when SO_REUSEPORT isn't properly supported. Patch by | |
| Seth Michael Larson. | |
| - bpo-26654: Inspect functools.partial in asyncio.Handle.__repr__. Patch by | |
| iceboy. | |
| - bpo-26909: Fix slow pipes IO in asyncio. Patch by INADA Naoki. | |
| - bpo-28176: Fix callbacks race in asyncio.SelectorLoop.sock_connect. | |
| - bpo-27759: Fix selectors incorrectly retain invalid file descriptors. | |
| Patch by Mark Williams. | |
| - bpo-28325: Remove vestigial MacOS 9 macurl2path module and its tests. | |
| - bpo-28368: Refuse monitoring processes if the child watcher has no loop | |
| attached. Patch by Vincent Michel. | |
| - bpo-28369: Raise RuntimeError when transport's FD is used with add_reader, | |
| add_writer, etc. | |
| - bpo-28370: Speedup asyncio.StreamReader.readexactly. Patch by Коренберг | |
| Марк. | |
| - bpo-28371: Deprecate passing asyncio.Handles to run_in_executor. | |
| - bpo-28372: Fix asyncio to support formatting of non-python coroutines. | |
| - bpo-28399: Remove UNIX socket from FS before binding. Patch by Коренберг | |
| Марк. | |
| - bpo-27972: Prohibit Tasks to await on themselves. | |
| - bpo-24142: Reading a corrupt config file left configparser in an invalid | |
| state. Original patch by Florian Höch. | |
| - bpo-29581: ABCMeta.__new__ now accepts ``**kwargs``, allowing abstract | |
| base classes to use keyword parameters in __init_subclass__. Patch by Nate | |
| Soares. | |
| - bpo-25532: inspect.unwrap() will now only try to unwrap an object | |
| sys.getrecursionlimit() times, to protect against objects which create a | |
| new object on every attribute access. | |
| - bpo-30177: path.resolve(strict=False) no longer cuts the path after the | |
| first element not present in the filesystem. Patch by Antoine Pietri. | |
| Documentation | |
| ------------- | |
| - bpo-31294: Fix incomplete code snippet in the ZeroMQSocketListener and | |
| ZeroMQSocketHandler examples and adapt them to Python 3. | |
| - bpo-21649: Add RFC 7525 and Mozilla server side TLS links to SSL | |
| documentation. | |
| - bpo-31128: Allow the pydoc server to bind to arbitrary hostnames. | |
| - bpo-30803: Clarify doc on truth value testing. Original patch by Peter | |
| Thomassen. | |
| - bpo-30176: Add missing attribute related constants in curses | |
| documentation. | |
| - bpo-30052: the link targets for :func:`bytes` and :func:`bytearray` are | |
| now their respective type definitions, rather than the corresponding | |
| builtin function entries. Use :ref:`bytes <func-bytes>` and | |
| :ref:`bytearray <func-bytearray>` to reference the latter. In order to | |
| ensure this and future cross-reference updates are applied automatically, | |
| the daily documentation builds now disable the default output caching | |
| features in Sphinx. | |
| - bpo-26985: Add missing info of code object in inspect documentation. | |
| - bpo-19824: Improve the documentation for, and links to, template strings | |
| by emphasizing their utility for internationalization, and by clarifying | |
| some usage constraints. (See also: bpo-20314, bpo-12518) | |
| - bpo-28929: Link the documentation to its source file on GitHub. | |
| - bpo-25008: Document smtpd.py as effectively deprecated and add a pointer | |
| to aiosmtpd, a third-party asyncio-based replacement. | |
| - bpo-26355: Add canonical header link on each page to corresponding major | |
| version of the documentation. Patch by Matthias Bussonnier. | |
| - bpo-29349: Fix Python 2 syntax in code for building the documentation. | |
| - bpo-23722: The data model reference and the porting section in the 3.6 | |
| What's New guide now cover the additional ``__classcell__`` handling | |
| needed for custom metaclasses to fully support :pep:`487` and | |
| zero-argument ``super()``. | |
| - bpo-28513: Documented command-line interface of zipfile. | |
| Tests | |
| ----- | |
| - bpo-29639: test.support.HOST is now "localhost", a new HOSTv4 constant has | |
| been added for your ``127.0.0.1`` needs, similar to the existing HOSTv6 | |
| constant. | |
| - bpo-31320: Silence traceback in test_ssl | |
| - bpo-31346: Prefer PROTOCOL_TLS_CLIENT and PROTOCOL_TLS_SERVER protocols | |
| for SSLContext. | |
| - bpo-25674: Remove sha256.tbs-internet.com ssl test | |
| - bpo-30715: Address ALPN callback changes for OpenSSL 1.1.0f. The latest | |
| version behaves like OpenSSL 1.0.2 and no longer aborts handshake. | |
| - bpo-30822: regrtest: Exclude tzdata from regrtest --all. When running the | |
| test suite using --use=all / -u all, exclude tzdata since it makes | |
| test_datetime too slow (15-20 min on some buildbots) which then times out | |
| on some buildbots. Fix also regrtest command line parser to allow passing | |
| -u extralargefile to run test_zipfile64. | |
| - bpo-30695: Add the `set_nomemory(start, stop)` and `remove_mem_hooks()` | |
| functions to the _testcapi module. | |
| - bpo-30357: test_thread: setUp() now uses support.threading_setup() and | |
| support.threading_cleanup() to wait until threads complete to avoid random | |
| side effects on following tests. Initial patch written by Grzegorz | |
| Grzywacz. | |
| - bpo-30197: Enhanced functions swap_attr() and swap_item() in the | |
| test.support module. They now work when delete replaced attribute or item | |
| inside the with statement. The old value of the attribute or item (or | |
| None if it doesn't exist) now will be assigned to the target of the "as" | |
| clause, if there is one. | |
| - bpo-24932: Use proper command line parsing in _testembed | |
| - bpo-28950: Disallow -j0 to be combined with -T/-l in regrtest command line | |
| arguments. | |
| - bpo-28683: Fix the tests that bind() a unix socket and raise | |
| PermissionError on Android for a non-root user. | |
| - bpo-26936: Fix the test_socket failures on Android - getservbyname(), | |
| getservbyport() and getaddrinfo() are broken on some Android API levels. | |
| - bpo-28666: Now test.support.rmtree is able to remove unwritable or | |
| unreadable directories. | |
| - bpo-23839: Various caches now are cleared before running every test file. | |
| - bpo-26944: Fix test_posix for Android where 'id -G' is entirely wrong or | |
| missing the effective gid. | |
| - bpo-28409: regrtest: fix the parser of command line arguments. | |
| - bpo-28217: Adds _testconsole module to test console input. | |
| - bpo-26939: Add the support.setswitchinterval() function to fix | |
| test_functools hanging on the Android armv7 qemu emulator. | |
| Build | |
| ----- | |
| - bpo-31354: Allow --with-lto to be used on all builds, not just `make | |
| profile-opt`. | |
| - bpo-31370: Remove support for building --without-threads. This option is | |
| not really useful anymore in the 21st century. Removing lots of | |
| conditional paths allows us to simplify the code base, including in | |
| difficult to maintain low-level internal code. | |
| - bpo-31341: Per :pep:`11`, support for the IRIX operating system was | |
| removed. | |
| - bpo-30854: Fix compile error when compiling --without-threads. Patch by | |
| Masayuki Yamamoto. | |
| - bpo-30687: Locate msbuild.exe on Windows when building rather than | |
| vcvarsall.bat | |
| - bpo-20210: Support the *disabled* marker in Setup files. Extension modules | |
| listed after this marker are not built at all, neither by the Makefile nor | |
| by setup.py. | |
| - bpo-29941: Add ``--with-assertions`` configure flag to explicitly enable C | |
| ``assert()`` checks. Defaults to off. ``--with-pydebug`` implies | |
| ``--with-assertions``. | |
| - bpo-28787: Fix out-of-tree builds of Python when configured with | |
| ``--with--dtrace``. | |
| - bpo-29243: Prevent unnecessary rebuilding of Python during ``make test``, | |
| ``make install`` and some other make targets when configured with | |
| ``--enable-optimizations``. | |
| - bpo-23404: Don't regenerate generated files based on file modification | |
| time anymore: the action is now explicit. Replace ``make touch`` with | |
| ``make regen-all``. | |
| - bpo-29643: Fix ``--enable-optimization`` didn't work. | |
| - bpo-27593: sys.version and the platform module python_build(), | |
| python_branch(), and python_revision() functions now use git information | |
| rather than hg when building from a repo. | |
| - bpo-29572: Update Windows build and OS X installers to use OpenSSL 1.0.2k. | |
| - bpo-27659: Prohibit implicit C function declarations: use | |
| ``-Werror=implicit-function-declaration`` when possible (GCC and Clang, | |
| but it depends on the compiler version). Patch written by Chi Hsuan Yen. | |
| - bpo-29384: Remove old Be OS helper scripts. | |
| - bpo-26851: Set Android compilation and link flags. | |
| - bpo-28768: Fix implicit declaration of function _setmode. Patch by | |
| Masayuki Yamamoto | |
| - bpo-29080: Removes hard dependency on hg.exe from PCBuild/build.bat | |
| - bpo-23903: Added missed names to PC/python3.def. | |
| - bpo-28762: lockf() is available on Android API level 24, but the F_LOCK | |
| macro is not defined in android-ndk-r13. | |
| - bpo-28538: Fix the compilation error that occurs because if_nameindex() is | |
| available on Android API level 24, but the if_nameindex structure is not | |
| defined. | |
| - bpo-20211: Do not add the directory for installing C header files and the | |
| directory for installing object code libraries to the cross compilation | |
| search paths. Original patch by Thomas Petazzoni. | |
| - bpo-28849: Do not define sys.implementation._multiarch on Android. | |
| - bpo-10656: Fix out-of-tree building on AIX. Patch by Tristan Carel and | |
| Michael Haubenwallner. | |
| - bpo-26359: Rename --with-optimiations to --enable-optimizations. | |
| - bpo-28444: Fix missing extensions modules when cross compiling. | |
| - bpo-28208: Update Windows build and OS X installers to use SQLite 3.14.2. | |
| - bpo-28248: Update Windows build and OS X installers to use OpenSSL 1.0.2j. | |
| - bpo-21124: Fix building the _struct module on Cygwin by passing ``NULL`` | |
| instead of ``&PyType_Type`` to PyVarObject_HEAD_INIT. Patch by Masayuki | |
| Yamamoto. | |
| - bpo-13756: Fix building extensions modules on Cygwin. Patch by Roumen | |
| Petrov, based on original patch by Jason Tishler. | |
| - bpo-21085: Add configure check for siginfo_t.si_band, which Cygwin does | |
| not provide. Patch by Masayuki Yamamoto with review and rebase by Erik | |
| Bray. | |
| - bpo-28258: Fixed build with Estonian locale (python-config and distclean | |
| targets in Makefile). Patch by Arfrever Frehtes Taifersar Arahesis. | |
| - bpo-26661: setup.py now detects system libffi with multiarch wrapper. | |
| - bpo-27979: A full copy of libffi is no longer bundled for use when | |
| building _ctypes on non-OSX UNIX platforms. An installed copy of libffi | |
| is now required when building _ctypes on such platforms. | |
| - bpo-15819: Remove redundant include search directory option for building | |
| outside the source tree. | |
| - bpo-28676: Prevent missing 'getentropy' declaration warning on macOS. | |
| Patch by Gareth Rees. | |
| Windows | |
| ------- | |
| - bpo-31392: Update Windows build to use OpenSSL 1.1.0f | |
| - bpo-30389: Adds detection of Visual Studio 2017 to distutils on Windows. | |
| - bpo-31358: zlib is no longer bundled in the CPython source, instead it is | |
| downloaded on demand just like bz2, lzma, OpenSSL, Tcl/Tk, and SQLite. | |
| - bpo-31340: Change to building with MSVC v141 (included with Visual Studio | |
| 2017) | |
| - bpo-30581: os.cpu_count() now returns the correct number of processors on | |
| Windows when the number of logical processors is greater than 64. | |
| - bpo-30916: Pre-build OpenSSL, Tcl and Tk and include the binaries in the | |
| build. | |
| - bpo-30731: Add a missing xmlns to python.manifest so that it matches the | |
| schema. | |
| - bpo-30291: Allow requiring 64-bit interpreters from py.exe using -64 | |
| suffix. Contributed by Steve (Gadget) Barnes. | |
| - bpo-30362: Adds list options (-0, -0p) to py.exe launcher. Contributed by | |
| Steve Barnes. | |
| - bpo-23451: Fix socket deprecation warnings in socketmodule.c. Patch by | |
| Segev Finer. | |
| - bpo-30450: The build process on Windows no longer depends on Subversion, | |
| instead pulling external code from GitHub via a Python script. If Python | |
| 3.6 is not found on the system (via ``py -3.6``), NuGet is used to | |
| download a copy of 32-bit Python. | |
| - bpo-29579: Removes readme.txt from the installer. | |
| - bpo-25778: winreg does not truncate string correctly (Patch by Eryk Sun) | |
| - bpo-28896: Deprecate WindowsRegistryFinder and disable it by default | |
| - bpo-28522: Fixes mishandled buffer reallocation in getpathp.c | |
| - bpo-28402: Adds signed catalog files for stdlib on Windows. | |
| - bpo-28333: Enables Unicode for ps1/ps2 and input() prompts. (Patch by Eryk | |
| Sun) | |
| - bpo-28251: Improvements to help manuals on Windows. | |
| - bpo-28110: launcher.msi has different product codes between 32-bit and | |
| 64-bit | |
| - bpo-28161: Opening CON for write access fails | |
| - bpo-28162: WindowsConsoleIO readall() fails if first line starts with | |
| Ctrl+Z | |
| - bpo-28163: WindowsConsoleIO fileno() passes wrong flags to _open_osfhandle | |
| - bpo-28164: _PyIO_get_console_type fails for various paths | |
| - bpo-28137: Renames Windows path file to ._pth | |
| - bpo-28138: Windows ._pth file should allow import site | |
| IDLE | |
| ---- | |
| - bpo-31493: IDLE code context -- fix code update and font update timers. | |
| Canceling timers prevents a warning message when test_idle completes. | |
| - bpo-31488: IDLE - Update non-key options in former extension classes. When | |
| applying configdialog changes, call .reload for each feature class. Change | |
| ParenMatch so updated options affect existing instances attached to | |
| existing editor windows. | |
| - bpo-31477: IDLE - Improve rstrip entry in doc. Strip trailing whitespace | |
| strips more than blank spaces. Multiline string literals are not skipped. | |
| - bpo-31480: IDLE - make tests pass with zzdummy extension disabled by | |
| default. | |
| - bpo-31421: Document how IDLE runs tkinter programs. IDLE calls tcl/tk | |
| update in the background in order to make live interaction and | |
| experimentation with tkinter applications much easier. | |
| - bpo-31414: IDLE -- fix tk entry box tests by deleting first. Adding to an | |
| int entry is not the same as deleting and inserting because int('') will | |
| fail. | |
| - bpo-31051: Rearrange IDLE configdialog GenPage into Window, Editor, and | |
| Help sections. | |
| - bpo-30617: IDLE - Add docstrings and tests for outwin subclass of editor. | |
| Move some data and functions from the class to module level. Patch by | |
| Cheryl Sabella. | |
| - bpo-31287: IDLE - Do not modify tkinter.message in test_configdialog. | |
| - bpo-27099: Convert IDLE's built-in 'extensions' to regular features. About | |
| 10 IDLE features were implemented as supposedly optional extensions. Their | |
| different behavior could be confusing or worse for users and not good for | |
| maintenance. Hence the conversion. The main difference for users is that | |
| user configurable key bindings for builtin features are now handled | |
| uniformly. Now, editing a binding in a keyset only affects its value in | |
| the keyset. All bindings are defined together in the system-specific | |
| default keysets in config-extensions.def. All custom keysets are saved as | |
| a whole in config-extension.cfg. All take effect as soon as one clicks | |
| Apply or Ok. The affected events are '<<force-open-completions>>', | |
| '<<expand-word>>', '<<force-open-calltip>>', '<<flash-paren>>', | |
| '<<format-paragraph>>', '<<run-module>>', '<<check-module>>', and | |
| '<<zoom-height>>'. Any (global) customizations made before 3.6.3 will not | |
| affect their keyset-specific customization after 3.6.3. and vice versa. | |
| Initial patch by Charles Wohlganger. | |
| - bpo-31206: IDLE: Factor HighPage(Frame) class from ConfigDialog. Patch by | |
| Cheryl Sabella. | |
| - bpo-31001: Add tests for configdialog highlight tab. Patch by Cheryl | |
| Sabella. | |
| - bpo-31205: IDLE: Factor KeysPage(Frame) class from ConfigDialog. The | |
| slightly modified tests continue to pass. Patch by Cheryl Sabella. | |
| - bpo-31130: IDLE -- stop leaks in test_configdialog. Initial patch by | |
| Victor Stinner. | |
| - bpo-31002: Add tests for configdialog keys tab. Patch by Cheryl Sabella. | |
| - bpo-19903: IDLE: Calltips use `inspect.signature` instead of | |
| `inspect.getfullargspec`. This improves calltips for builtins converted to | |
| use Argument Clinic. Patch by Louie Lu. | |
| - bpo-31083: IDLE - Add an outline of a TabPage class in configdialog. | |
| Update existing classes to match outline. Initial patch by Cheryl Sabella. | |
| - bpo-31050: Factor GenPage(Frame) class from ConfigDialog. The slightly | |
| modified tests continue to pass. Patch by Cheryl Sabella. | |
| - bpo-31004: IDLE - Factor FontPage(Frame) class from ConfigDialog. Slightly | |
| modified tests continue to pass. Fix General tests. Patch mostly by Cheryl | |
| Sabella. | |
| - bpo-30781: IDLE - Use ttk widgets in ConfigDialog. Patches by Terry Jan | |
| Reedy and Cheryl Sabella. | |
| - bpo-31060: IDLE - Finish rearranging methods of ConfigDialog Grouping | |
| methods pertaining to each tab and the buttons will aid writing tests and | |
| improving the tabs and will enable splitting the groups into classes. | |
| - bpo-30853: IDLE -- Factor a VarTrace class out of ConfigDialog. Instance | |
| tracers manages pairs consisting of a tk variable and a callback function. | |
| When tracing is turned on, setting the variable calls the function. Test | |
| coverage for the new class is 100%. | |
| - bpo-31003: IDLE: Add more tests for General tab. | |
| - bpo-30993: IDLE - Improve configdialog font page and tests. In | |
| configdialog: Document causal pathways in create_font_tab docstring. | |
| Simplify some attribute names. Move set_samples calls to var_changed_font | |
| (idea from Cheryl Sabella). Move related functions to positions after the | |
| create widgets function. In test_configdialog: Fix test_font_set so not | |
| order dependent. Fix renamed test_indent_scale so it tests the widget. | |
| Adjust tests for movement of set_samples call. Add tests for load | |
| functions. Put all font tests in one class and tab indent tests in | |
| another. Except for two lines, these tests completely cover the related | |
| functions. | |
| - bpo-30981: IDLE -- Add more configdialog font page tests. | |
| - bpo-28523: IDLE: replace 'colour' with 'color' in configdialog. | |
| - bpo-30917: Add tests for idlelib.config.IdleConf. Increase coverage from | |
| 46% to 96%. Patch by Louie Lu. | |
| - bpo-30934: Document coverage details for idlelib tests. Add section to | |
| idlelib/idle-test/README.txt. Include check that branches are taken both | |
| ways. Exclude IDLE-specific code that does not run during unit tests. | |
| - bpo-30913: IDLE: Document ConfigDialog tk Vars, methods, and widgets in | |
| docstrings This will facilitate improving the dialog and splitting up the | |
| class. Original patch by Cheryl Sabella. | |
| - bpo-30899: IDLE: Add tests for ConfigParser subclasses in config. Patch by | |
| Louie Lu. | |
| - bpo-30881: IDLE: Add docstrings to browser.py. Patch by Cheryl Sabella. | |
| - bpo-30851: IDLE: Remove unused variables in configdialog. One is a | |
| duplicate, one is set but cannot be altered by users. Patch by Cheryl | |
| Sabella. | |
| - bpo-30870: IDLE: In Settings dialog, select font with Up, Down keys as | |
| well as mouse. Initial patch by Louie Lu. | |
| - bpo-8231: IDLE: call config.IdleConf.GetUserCfgDir only once. | |
| - bpo-30779: IDLE: Factor ConfigChanges class from configdialog, put in | |
| config; test. * In config, put dump test code in a function; run it and | |
| unittest in 'if __name__ == '__main__'. * Add class config.ConfigChanges | |
| based on changes_class_v4.py on bpo issue. * Add class | |
| test_config.ChangesTest, partly using configdialog_tests_v1.py. * Revise | |
| configdialog to use ConfigChanges; see tracker msg297804. * Revise | |
| test_configdialog to match configdialog changes. * Remove configdialog | |
| functions unused or moved to ConfigChanges. Cheryl Sabella contributed | |
| parts of the patch. | |
| - bpo-30777: IDLE: configdialog - Add docstrings and fix comments. Patch by | |
| Cheryl Sabella. | |
| - bpo-30495: IDLE: Improve textview with docstrings, PEP8 names, and more | |
| tests. Patch by Cheryl Sabella. | |
| - bpo-30723: IDLE: Make several improvements to parenmatch. Add 'parens' | |
| style to highlight both opener and closer. Make 'default' style, which is | |
| not default, a synonym for 'opener'. Make time-delay work the same with | |
| all styles. Add help for config dialog extensions tab, including help for | |
| parenmatch. Add new tests. Original patch by Charles Wohlganger. | |
| - bpo-30674: IDLE: add docstrings to grep module. Patch by Cheryl Sabella | |
| - bpo-21519: IDLE's basic custom key entry dialog now detects duplicates | |
| properly. Original patch by Saimadhav Heblikar. | |
| - bpo-29910: IDLE no longer deletes a character after commenting out a | |
| region by a key shortcut. Add ``return 'break'`` for this and other | |
| potential conflicts between IDLE and default key bindings. | |
| - bpo-30728: Review and change idlelib.configdialog names. Lowercase method | |
| and attribute names. Replace 'colour' with 'color', expand overly cryptic | |
| names, delete unneeded underscores. Replace ``import *`` with specific | |
| imports. Patches by Cheryl Sabella. | |
| - bpo-6739: IDLE: Verify user-entered key sequences by trying to bind them | |
| with tk. Add tests for all 3 validation functions. Original patch by G | |
| Polo. Tests added by Cheryl Sabella. | |
| - bpo-15786: Fix several problems with IDLE's autocompletion box. The | |
| following should now work: clicking on selection box items; using the | |
| scrollbar; selecting an item by hitting Return. Hangs on MacOSX should no | |
| longer happen. Patch by Louie Lu. | |
| - bpo-25514: Add doc subsubsection about IDLE failure to start. Popup | |
| no-connection message directs users to this section. | |
| - bpo-30642: Fix reference leaks in IDLE tests. Patches by Louie Lu and | |
| Terry Jan Reedy. | |
| - bpo-30495: Add docstrings for textview.py and use PEP8 names. Patches by | |
| Cheryl Sabella and Terry Jan Reedy. | |
| - bpo-30290: Help-about: use pep8 names and add tests. Increase coverage to | |
| 100%. Patches by Louie Lu, Cheryl Sabella, and Terry Jan Reedy. | |
| - bpo-30303: Add _utest option to textview; add new tests. Increase coverage | |
| to 100%. Patches by Louie Lu and Terry Jan Reedy. | |
| - bpo-29071: IDLE colors f-string prefixes (but not invalid ur prefixes). | |
| - bpo-28572: Add 10% to coverage of IDLE's test_configdialog. Update and | |
| augment description of the configuration system. | |
| Tools/Demos | |
| ----------- | |
| - bpo-30983: gdb integration commands (py-bt, etc.) work on optimized shared | |
| builds now, too. :pep:`523` introduced _PyEval_EvalFrameDefault which | |
| inlines PyEval_EvalFrameEx on non-debug shared builds. This broke the | |
| ability to use py-bt, py-up, and a few other Python-specific gdb | |
| integrations. The problem is fixed by only looking for | |
| _PyEval_EvalFrameDefault frames in python-gdb.py. Original patch by Bruno | |
| "Polaco" Penteado. | |
| - bpo-29748: Added the slice index converter in Argument Clinic. | |
| - bpo-24037: Argument Clinic now uses the converter `bool(accept={int})` | |
| rather than `int` for semantical booleans. This avoids repeating the | |
| default value for Python and C and will help in converting to `bool` in | |
| future. | |
| - bpo-29367: python-gdb.py now supports also ``method-wrapper`` | |
| (``wrapperobject``) objects. | |
| - bpo-28023: Fix python-gdb.py didn't support new dict implementation. | |
| - bpo-15369: The pybench and pystone microbenchmark have been removed from | |
| Tools. Please use the new Python benchmark suite | |
| https://github.com/python/pyperformance which is more reliable and | |
| includes a portable version of pybench working on Python 2 and Python 3. | |
| - bpo-28102: The zipfile module CLI now prints usage to stderr. Patch by | |
| Stephen J. Turnbull. | |
| C API | |
| ----- | |
| - bpo-31338: Added the ``Py_UNREACHABLE()`` macro for code paths which are | |
| never expected to be reached. This and a few other useful macros are now | |
| documented in the C API manual. | |
| - bpo-30832: Remove own implementation for thread-local storage. CPython has | |
| provided the own implementation for thread-local storage (TLS) on | |
| Python/thread.c, it's used in the case which a platform has not supplied | |
| native TLS. However, currently all supported platforms (Windows and | |
| pthreads) have provided native TLS and defined the Py_HAVE_NATIVE_TLS | |
| macro with unconditional in any case. | |
| - bpo-30708: PyUnicode_AsWideCharString() now raises a ValueError if the | |
| second argument is NULL and the wchar_t\* string contains null characters. | |
| - bpo-16500: Deprecate PyOS_AfterFork() and add PyOS_BeforeFork(), | |
| PyOS_AfterFork_Parent() and PyOS_AfterFork_Child(). | |
| - bpo-6532: The type of results of PyThread_start_new_thread() and | |
| PyThread_get_thread_ident(), and the id parameter of | |
| PyThreadState_SetAsyncExc() changed from "long" to "unsigned long". | |
| - bpo-27867: Function PySlice_GetIndicesEx() is deprecated and replaced with | |
| a macro if Py_LIMITED_API is not set or set to the value between | |
| 0x03050400 and 0x03060000 (not including) or 0x03060100 or higher. Added | |
| functions PySlice_Unpack() and PySlice_AdjustIndices(). | |
| - bpo-29083: Fixed the declaration of some public API functions. | |
| PyArg_VaParse() and PyArg_VaParseTupleAndKeywords() were not available in | |
| limited API. PyArg_ValidateKeywordArguments(), PyArg_UnpackTuple() and | |
| Py_BuildValue() were not available in limited API of version < 3.3 when | |
| PY_SSIZE_T_CLEAN is defined. | |
| - bpo-28769: The result of PyUnicode_AsUTF8AndSize() and PyUnicode_AsUTF8() | |
| is now of type ``const char *`` rather of ``char *``. | |
| - bpo-29058: All stable API extensions added after Python 3.2 are now | |
| available only when Py_LIMITED_API is set to the PY_VERSION_HEX value of | |
| the minimum Python version supporting this API. | |
| - bpo-28822: The index parameters *start* and *end* of PyUnicode_FindChar() | |
| are now adjusted to behave like ``str[start:end]``. | |
| - bpo-28808: PyUnicode_CompareWithASCIIString() now never raises exceptions. | |
| - bpo-28761: The fields name and doc of structures PyMemberDef, PyGetSetDef, | |
| PyStructSequence_Field, PyStructSequence_Desc, and wrapperbase are now of | |
| type ``const char *`` rather of ``char *``. | |
| - bpo-28748: Private variable _Py_PackageContext is now of type ``const char | |
| *`` rather of ``char *``. | |
| - bpo-19569: Compiler warnings are now emitted if use most of deprecated | |
| functions. | |
| - bpo-28426: Deprecated undocumented functions PyUnicode_AsEncodedObject(), | |
| PyUnicode_AsDecodedObject(), PyUnicode_AsDecodedUnicode() and | |
| PyUnicode_AsEncodedUnicode(). | |
| What's New in Python 3.6.6 final? | |
| ================================= | |
| *Release date: 2018-06-27* | |
| There were no new changes in version 3.6.6. | |
| What's New in Python 3.6.6 release candidate 1? | |
| =============================================== | |
| *Release date: 2018-06-11* | |
| Core and Builtins | |
| ----------------- | |
| - bpo-33786: Fix asynchronous generators to handle GeneratorExit in athrow() | |
| correctly | |
| - bpo-30654: Fixed reset of the SIGINT handler to SIG_DFL on interpreter | |
| shutdown even when there was a custom handler set previously. Patch by | |
| Philipp Kerling. | |
| - bpo-33622: Fixed a leak when the garbage collector fails to add an object | |
| with the ``__del__`` method or referenced by it into the | |
| :data:`gc.garbage` list. :c:func:`PyGC_Collect` can now be called when an | |
| exception is set and preserves it. | |
| - bpo-31849: Fix signed/unsigned comparison warning in pyhash.c. | |
| - bpo-33391: Fix a leak in set_symmetric_difference(). | |
| - bpo-28055: Fix unaligned accesses in siphash24(). Patch by Rolf Eike Beer. | |
| - bpo-33231: Fix potential memory leak in ``normalizestring()``. | |
| - bpo-29922: Improved error messages in 'async with' when ``__aenter__()`` | |
| or ``__aexit__()`` return non-awaitable object. | |
| - bpo-33199: Fix ``ma_version_tag`` in dict implementation is uninitialized | |
| when copying from key-sharing dict. | |
| - bpo-33041: Fixed jumping when the function contains an ``async for`` loop. | |
| - bpo-32282: Fix an unnecessary ifdef in the include of VersionHelpers.h in | |
| socketmodule on Windows. | |
| - bpo-21983: Fix a crash in `ctypes.cast()` in case the type argument is a | |
| ctypes structured data type. Patch by Eryk Sun and Oren Milman. | |
| Library | |
| ------- | |
| - bpo-30167: Prevent site.main() exception if PYTHONSTARTUP is set. Patch by | |
| Steve Weber. | |
| - bpo-33812: Datetime instance d with non-None tzinfo, but with | |
| d.tzinfo.utcoffset(d) returning None is now treated as naive by the | |
| astimezone() method. | |
| - bpo-30805: Avoid race condition with debug logging | |
| - bpo-33767: The concatenation (``+``) and repetition (``*``) sequence | |
| operations now raise :exc:`TypeError` instead of :exc:`SystemError` when | |
| performed on :class:`mmap.mmap` objects. Patch by Zackery Spytz. | |
| - bpo-32684: Fix gather to propagate cancellation of itself even with | |
| return_exceptions. | |
| - bpo-33674: Fix a race condition in SSLProtocol.connection_made() of | |
| asyncio.sslproto: start immediately the handshake instead of using | |
| call_soon(). Previously, data_received() could be called before the | |
| handshake started, causing the handshake to hang or fail. | |
| - bpo-31647: Fixed bug where calling write_eof() on a | |
| _SelectorSocketTransport after it's already closed raises AttributeError. | |
| - bpo-33672: Fix Task.__repr__ crash with Cython's bogus coroutines | |
| - bpo-33469: Fix RuntimeError after closing loop that used run_in_executor | |
| - bpo-11874: Use a better regex when breaking usage into wrappable parts. | |
| Avoids bogus assertion errors from custom metavar strings. | |
| - bpo-30877: Fixed a bug in the Python implementation of the JSON decoder | |
| that prevented the cache of parsed strings from clearing after finishing | |
| the decoding. Based on patch by c-fos. | |
| - bpo-33548: tempfile._candidate_tempdir_list should consider common TEMP | |
| locations | |
| - bpo-33542: Prevent ``uuid.get_node`` from using a DUID instead of a MAC on | |
| Windows. Patch by Zvi Effron | |
| - bpo-26819: Fix race condition with `ReadTransport.resume_reading` in | |
| Windows proactor event loop. | |
| - bpo-28556: Minor fixes in typing module: add annotations to | |
| ``NamedTuple.__new__``, pass ``*args`` and ``**kwds`` in | |
| ``Generic.__new__``. Original PRs by Paulius Šarka and Chad Dombrova. | |
| - bpo-20087: Updated alias mapping with glibc 2.27 supported locales. | |
| - bpo-33422: Fix trailing quotation marks getting deleted when looking up | |
| byte/string literals on pydoc. Patch by Andrés Delfino. | |
| - bpo-33197: Update error message when constructing invalid | |
| inspect.Parameters Patch by Dong-hee Na. | |
| - bpo-33383: Fixed crash in the get() method of the :mod:`dbm.ndbm` database | |
| object when it is called with a single argument. | |
| - bpo-33329: Fix multiprocessing regression on newer glibcs | |
| - bpo-991266: Fix quoting of the ``Comment`` attribute of | |
| :class:`http.cookies.SimpleCookie`. | |
| - bpo-33131: Upgrade bundled version of pip to 10.0.1. | |
| - bpo-33308: Fixed a crash in the :mod:`parser` module when converting an ST | |
| object to a tree of tuples or lists with ``line_info=False`` and | |
| ``col_info=True``. | |
| - bpo-33263: Fix FD leak in `_SelectorSocketTransport` Patch by Vlad | |
| Starostin. | |
| - bpo-33256: Fix display of ``<module>`` call in the html produced by | |
| ``cgitb.html()``. Patch by Stéphane Blondon. | |
| - bpo-33203: ``random.Random.choice()`` now raises ``IndexError`` for empty | |
| sequences consistently even when called from subclasses without a | |
| ``getrandbits()`` implementation. | |
| - bpo-33224: Update difflib.mdiff() for :pep:`479`. Convert an uncaught | |
| StopIteration in a generator into a return-statement. | |
| - bpo-33209: End framing at the end of C implementation of | |
| :func:`pickle.Pickler.dump`. | |
| - bpo-32861: The urllib.robotparser's ``__str__`` representation now | |
| includes wildcard entries and the "Crawl-delay" and "Request-rate" fields. | |
| Patch by Michael Lazar. | |
| - bpo-33096: Allow ttk.Treeview.insert to insert iid that has a false | |
| boolean value. Note iid=0 and iid=False would be same. Patch by Garvit | |
| Khatri. | |
| - bpo-33127: The ssl module now compiles with LibreSSL 2.7.1. | |
| - bpo-33021: Release the GIL during fstat() calls, avoiding hang of all | |
| threads when calling mmap.mmap(), os.urandom(), and random.seed(). Patch | |
| by Nir Soffer. | |
| - bpo-27683: Fix a regression in :mod:`ipaddress` that result of | |
| :meth:`hosts` is empty when the network is constructed by a tuple | |
| containing an integer mask and only 1 bit left for addresses. | |
| - bpo-32844: Fix wrong redirection of a low descriptor (0 or 1) to stderr in | |
| subprocess if another low descriptor is closed. | |
| - bpo-31908: Fix output of cover files for ``trace`` module command-line | |
| tool. Previously emitted cover files only when ``--missing`` option was | |
| used. Patch by Michael Selik. | |
| - bpo-31457: If nested log adapters are used, the inner ``process()`` | |
| methods are no longer omitted. | |
| - bpo-16865: Support arrays >=2GiB in :mod:`ctypes`. Patch by Segev Finer. | |
| - bpo-31238: pydoc: the stop() method of the private ServerThread class now | |
| waits until DocServer.serve_until_quit() completes and then explicitly | |
| sets its docserver attribute to None to break a reference cycle. | |
| Documentation | |
| ------------- | |
| - bpo-33503: Fix broken pypi link | |
| - bpo-33421: Add missing documentation for ``typing.AsyncContextManager``. | |
| - bpo-33378: Add Korean language switcher for https://docs.python.org/3/ | |
| - bpo-33276: Clarify that the ``__path__`` attribute on modules cannot be | |
| just any value. | |
| - bpo-33201: Modernize documentation for writing C extension types. | |
| - bpo-33195: Deprecate ``Py_UNICODE`` usage in ``c-api/arg`` document. | |
| ``Py_UNICODE`` related APIs are deprecated since Python 3.3, but it is | |
| missed in the document. | |
| - bpo-33126: Document PyBuffer_ToContiguous(). | |
| - bpo-27212: Modify documentation for the :func:`islice` recipe to consume | |
| initial values up to the start index. | |
| - bpo-28247: Update :mod:`zipapp` documentation to describe how to make | |
| standalone applications. | |
| - bpo-18802: Documentation changes for ipaddress. Patch by Jon Foster and | |
| Berker Peksag. | |
| - bpo-27428: Update documentation to clarify that ``WindowsRegistryFinder`` | |
| implements ``MetaPathFinder``. (Patch by Himanshu Lakhara) | |
| - bpo-8243: Add a note about curses.addch and curses.addstr exception | |
| behavior when writing outside a window, or pad. | |
| - bpo-31432: Clarify meaning of CERT_NONE, CERT_OPTIONAL, and CERT_REQUIRED | |
| flags for ssl.SSLContext.verify_mode. | |
| Tests | |
| ----- | |
| - bpo-33655: Ignore test_posix_fallocate failures on BSD platforms that | |
| might be due to running on ZFS. | |
| - bpo-19417: Add test_bdb.py. | |
| Build | |
| ----- | |
| - bpo-5755: Move ``-Wstrict-prototypes`` option to ``CFLAGS_NODIST`` from | |
| ``OPT``. This option emitted annoying warnings when building extension | |
| modules written in C++. | |
| - bpo-33614: Ensures module definition files for the stable ABI on Windows | |
| are correctly regenerated. | |
| - bpo-33522: Enable CI builds on Visual Studio Team Services at | |
| https://python.visualstudio.com/cpython | |
| - bpo-33012: Add ``-Wno-cast-function-type`` for gcc 8 for silencing | |
| warnings about function casts like casting to PyCFunction in method | |
| definition lists. | |
| - bpo-33394: Enable the verbose build for extension modules, when GNU make | |
| is passed macros on the command line. | |
| Windows | |
| ------- | |
| - bpo-33184: Update Windows installer to OpenSSL 1.0.2o. | |
| macOS | |
| ----- | |
| - bpo-33184: Update macOS installer build to use OpenSSL 1.0.2o. | |
| IDLE | |
| ---- | |
| - bpo-33656: On Windows, add API call saying that tk scales for DPI. On | |
| Windows 8.1+ or 10, with DPI compatibility properties of the Python binary | |
| unchanged, and a monitor resolution greater than 96 DPI, this should make | |
| text and lines sharper. It should otherwise have no effect. | |
| - bpo-33768: Clicking on a context line moves that line to the top of the | |
| editor window. | |
| - bpo-33763: IDLE: Use read-only text widget for code context instead of | |
| label widget. | |
| - bpo-33664: Scroll IDLE editor text by lines. Previously, the mouse wheel | |
| and scrollbar slider moved text by a fixed number of pixels, resulting in | |
| partial lines at the top of the editor box. The change also applies to | |
| the shell and grep output windows, but not to read-only text views. | |
| - bpo-33679: Enable theme-specific color configuration for Code Context. Use | |
| the Highlights tab to see the setting for built-in themes or add settings | |
| to custom themes. | |
| - bpo-33642: Display up to maxlines non-blank lines for Code Context. If | |
| there is no current context, show a single blank line. | |
| - bpo-33628: IDLE: Cleanup codecontext.py and its test. | |
| - bpo-33564: IDLE's code context now recognizes async as a block opener. | |
| - bpo-29706: IDLE now colors async and await as keywords in 3.6. They become | |
| full keywords in 3.7. | |
| - bpo-21474: Update word/identifier definition from ascii to unicode. In | |
| text and entry boxes, this affects selection by double-click, movement | |
| left/right by control-left/right, and deletion left/right by | |
| control-BACKSPACE/DEL. | |
| - bpo-33204: IDLE: consistently color invalid string prefixes. A 'u' string | |
| prefix cannot be paired with either 'r' or 'f'. Consistently color as much | |
| of the prefix, starting at the right, as is valid. Revise and extend | |
| colorizer test. | |
| - bpo-32831: Add docstrings and tests for codecontext. | |
| Tools/Demos | |
| ----------- | |
| - bpo-33189: :program:`pygettext.py` now recognizes only literal strings as | |
| docstrings and translatable strings, and rejects bytes literals and | |
| f-string expressions. | |
| - bpo-31920: Fixed handling directories as arguments in the ``pygettext`` | |
| script. Based on patch by Oleg Krasnikov. | |
| - bpo-29673: Fix pystackv and pystack gdbinit macros. | |
| - bpo-32885: Add an ``-n`` flag for ``Tools/scripts/pathfix.py`` to disable | |
| automatic backup creation (files with ``~`` suffix). | |
| - bpo-31583: Fix 2to3 for using with --add-suffix option but without | |
| --output-dir option for relative path to files in current directory. | |
| C API | |
| ----- | |
| - bpo-32374: Document that m_traverse for multi-phase initialized modules | |
| can be called with m_state=NULL, and add a sanity check | |
| What's New in Python 3.6.5 final? | |
| ================================= | |
| *Release date: 2018-03-28* | |
| Tests | |
| ----- | |
| - bpo-32872: Avoid regrtest compatibility issue with namespace packages. | |
| Build | |
| ----- | |
| - bpo-33163: Upgrade pip to 9.0.3 and setuptools to v39.0.1. | |
| What's New in Python 3.6.5 release candidate 1? | |
| =============================================== | |
| *Release date: 2018-03-13* | |
| Security | |
| -------- | |
| - bpo-33001: Minimal fix to prevent buffer overrun in os.symlink on Windows | |
| - bpo-32981: Regexes in difflib and poplib were vulnerable to catastrophic | |
| backtracking. These regexes formed potential DOS vectors (REDOS). They | |
| have been refactored. This resolves CVE-2018-1060 and CVE-2018-1061. Patch | |
| by Jamie Davis. | |
| Core and Builtins | |
| ----------------- | |
| - bpo-33026: Fixed jumping out of "with" block by setting f_lineno. | |
| - bpo-17288: Prevent jumps from 'return' and 'exception' trace events. | |
| - bpo-32889: Update Valgrind suppression list to account for the rename of | |
| ``Py_ADDRESS_IN_RANG`` to ``address_in_range``. | |
| - bpo-32650: Pdb and other debuggers dependent on bdb.py will correctly step | |
| over (next command) native coroutines. Patch by Pablo Galindo. | |
| - bpo-32685: Improve suggestion when the Python 2 form of print statement is | |
| either present on the same line as the header of a compound statement or | |
| else terminated by a semi-colon instead of a newline. Patch by Nitish | |
| Chandra. | |
| - bpo-32583: Fix possible crashing in builtin Unicode decoders caused by | |
| write out-of-bound errors when using customized decode error handlers. | |
| - bpo-26163: Improved frozenset() hash to create more distinct hash values | |
| when faced with datasets containing many similar values. | |
| - bpo-27169: The ``__debug__`` constant is now optimized out at compile | |
| time. This fixes also bpo-22091. | |
| - bpo-32329: ``sys.flags.hash_randomization`` is now properly set to 0 when | |
| hash randomization is turned off by ``PYTHONHASHSEED=0``. | |
| - bpo-30416: The optimizer is now protected from spending much time doing | |
| complex calculations and consuming much memory for creating large | |
| constants in constant folding. | |
| - bpo-18533: ``repr()`` on a dict containing its own ``values()`` or | |
| ``items()`` no longer raises ``RecursionError``; OrderedDict similarly. | |
| Instead, use ``...``, as for other recursive structures. Patch by Ben | |
| North. | |
| - bpo-32028: Leading whitespace is now correctly ignored when generating | |
| suggestions for converting Py2 print statements to Py3 builtin print | |
| function calls. Patch by Sanyam Khurana. | |
| - bpo-32137: The repr of deeply nested dict now raises a RecursionError | |
| instead of crashing due to a stack overflow. | |
| Library | |
| ------- | |
| - bpo-33064: lib2to3 now properly supports trailing commas after ``*args`` | |
| and ``**kwargs`` in function signatures. | |
| - bpo-31804: Avoid failing in multiprocessing.Process if the standard | |
| streams are closed or None at exit. | |
| - bpo-33037: Skip sending/receiving data after SSL transport closing. | |
| - bpo-30353: Fix ctypes pass-by-value for structs on 64-bit Cygwin/MinGW. | |
| - bpo-33009: Fix inspect.signature() for single-parameter partialmethods. | |
| - bpo-32969: Expose several missing constants in zlib and fix corresponding | |
| documentation. | |
| - bpo-32713: Fixed tarfile.itn handling of out-of-bounds float values. Patch | |
| by Joffrey Fuhrer. | |
| - bpo-30622: The ssl module now detects missing NPN support in LibreSSL. | |
| - bpo-32922: dbm.open() now encodes filename with the filesystem encoding | |
| rather than default encoding. | |
| - bpo-32859: In ``os.dup2``, don't check every call whether the ``dup3`` | |
| syscall exists or not. | |
| - bpo-21060: Rewrite confusing message from setup.py upload from "No dist | |
| file created in earlier command" to the more helpful "Must create and | |
| upload files in one command". | |
| - bpo-32857: In :mod:`tkinter`, ``after_cancel(None)`` now raises a | |
| :exc:`ValueError` instead of canceling the first scheduled function. | |
| Patch by Cheryl Sabella. | |
| - bpo-32852: Make sure sys.argv remains as a list when running trace. | |
| - bpo-32841: Fixed `asyncio.Condition` issue which silently ignored | |
| cancellation after notifying and cancelling a conditional lock. Patch by | |
| Bar Harel. | |
| - bpo-31787: Fixed refleaks of ``__init__()`` methods in various modules. | |
| (Contributed by Oren Milman) | |
| - bpo-30157: Fixed guessing quote and delimiter in csv.Sniffer.sniff() when | |
| only the last field is quoted. Patch by Jake Davis. | |
| - bpo-32394: socket: Remove TCP_FASTOPEN, TCP_KEEPCNT flags on older version | |
| Windows during run-time. | |
| - bpo-32777: Fix a rare but potential pre-exec child process deadlock in | |
| subprocess on POSIX systems when marking file descriptors inheritable on | |
| exec in the child process. This bug appears to have been introduced in | |
| 3.4. | |
| - bpo-32647: The ctypes module used to depend on indirect linking for | |
| dlopen. The shared extension is now explicitly linked against libdl on | |
| platforms with dl. | |
| - bpo-32734: Fixed ``asyncio.Lock()`` safety issue which allowed acquiring | |
| and locking the same lock multiple times, without it being free. Patch by | |
| Bar Harel. | |
| - bpo-32727: Do not include name field in SMTP envelope from address. Patch | |
| by Stéphane Wirtel | |
| - bpo-27931: Fix email address header parsing error when the username is an | |
| empty quoted string. Patch by Xiang Zhang. | |
| - bpo-32304: distutils' upload command no longer corrupts tar files ending | |
| with a CR byte, and no longer tries to convert CR to CRLF in any of the | |
| upload text fields. | |
| - bpo-32502: uuid.uuid1 no longer raises an exception if a 64-bit hardware | |
| address is encountered. | |
| - bpo-31848: Fix the error handling in Aifc_read.initfp() when the SSND | |
| chunk is not found. Patch by Zackery Spytz. | |
| - bpo-32555: On FreeBSD and Solaris, os.strerror() now always decode the | |
| byte string from the current locale encoding, rather than using | |
| ASCII/surrogateescape in some cases. | |
| - bpo-32521: The nis module is now compatible with new libnsl and headers | |
| location. | |
| - bpo-32473: Improve ABCMeta._dump_registry() output readability | |
| - bpo-32521: glibc has removed Sun RPC. Use replacement libtirpc headers and | |
| library in nis module. | |
| - bpo-32228: Ensure that ``truncate()`` preserves the file position (as | |
| reported by ``tell()``) after writes longer than the buffer size. | |
| - bpo-26133: Don't unsubscribe signals in asyncio UNIX event loop on | |
| interpreter shutdown. | |
| - bpo-32185: The SSL module no longer sends IP addresses in SNI TLS | |
| extension on platforms with OpenSSL 1.0.2+ or inet_pton. | |
| - bpo-32323: :func:`urllib.parse.urlsplit()` does not convert zone-id | |
| (scope) to lower case for scoped IPv6 addresses in hostnames now. | |
| - bpo-32302: Fix bdist_wininst of distutils for CRT v142: it binary | |
| compatible with CRT v140. | |
| - bpo-32255: A single empty field is now always quoted when written into a | |
| CSV file. This allows to distinguish an empty row from a row consisting of | |
| a single empty field. Patch by Licht Takeuchi. | |
| - bpo-32277: Raise ``NotImplementedError`` instead of ``SystemError`` on | |
| platforms where ``chmod(..., follow_symlinks=False)`` is not supported. | |
| Patch by Anthony Sottile. | |
| - bpo-32199: The getnode() ip getter now uses 'ip link' instead of 'ip link | |
| list'. | |
| - bpo-27456: Ensure TCP_NODELAY is set on Linux. Tests by Victor Stinner. | |
| - bpo-31900: The :func:`locale.localeconv` function now sets temporarily the | |
| ``LC_CTYPE`` locale to the ``LC_NUMERIC`` locale to decode | |
| ``decimal_point`` and ``thousands_sep`` byte strings if they are non-ASCII | |
| or longer than 1 byte, and the ``LC_NUMERIC`` locale is different than the | |
| ``LC_CTYPE`` locale. This temporary change affects other threads. Same | |
| change for the :meth:`str.format` method when formatting a number | |
| (:class:`int`, :class:`float`, :class:`float` and subclasses) with the | |
| ``n`` type (ex: ``'{:n}'.format(1234)``). | |
| - bpo-31802: Importing native path module (``posixpath``, ``ntpath``) now | |
| works even if the ``os`` module still is not imported. | |
| Documentation | |
| ------------- | |
| - bpo-17232: Clarify docs for -O and -OO. Patch by Terry Reedy. | |
| - bpo-32800: Update link to w3c doc for xml default namespaces. | |
| - bpo-8722: Document :meth:`__getattr__` behavior when property :meth:`get` | |
| method raises :exc:`AttributeError`. | |
| - bpo-32614: Modify RE examples in documentation to use raw strings to | |
| prevent :exc:`DeprecationWarning` and add text to REGEX HOWTO to highlight | |
| the deprecation. | |
| - bpo-31972: Improve docstrings for `pathlib.PurePath` subclasses. | |
| - bpo-17799: Explain real behaviour of sys.settrace and sys.setprofile and | |
| their C-API counterparts regarding which type of events are received in | |
| each function. Patch by Pablo Galindo Salgado. | |
| Tests | |
| ----- | |
| - bpo-32517: Fix failing ``test_asyncio`` on macOS 10.12.2+ due to transport | |
| of ``KqueueSelector`` loop was not being closed. | |
| - bpo-32721: Fix test_hashlib to not fail if the _md5 module is not built. | |
| - bpo-32252: Fix faulthandler_suppress_crash_report() used to prevent core | |
| dump files when testing crashes. getrlimit() returns zero on success. | |
| - bpo-31518: Debian Unstable has disabled TLS 1.0 and 1.1 for | |
| SSLv23_METHOD(). Change TLS/SSL protocol of some tests to PROTOCOL_TLS or | |
| PROTOCOL_TLSv1_2 to make them pass on Debian. | |
| Build | |
| ----- | |
| - bpo-32635: Fix segfault of the crypt module when libxcrypt is provided | |
| instead of libcrypt at the system. | |
| Windows | |
| ------- | |
| - bpo-33016: Fix potential use of uninitialized memory in | |
| nt._getfinalpathname | |
| - bpo-32903: Fix a memory leak in os.chdir() on Windows if the current | |
| directory is set to a UNC path. | |
| - bpo-31966: Fixed WindowsConsoleIO.write() for writing empty data. | |
| - bpo-32409: Ensures activate.bat can handle Unicode contents. | |
| - bpo-32457: Improves handling of denormalized executable path when | |
| launching Python. | |
| - bpo-32370: Use the correct encoding for ipconfig output in the uuid | |
| module. Patch by Segev Finer. | |
| - bpo-29248: Fix :func:`os.readlink` on Windows, which was mistakenly | |
| treating the ``PrintNameOffset`` field of the reparse data buffer as a | |
| number of characters instead of bytes. Patch by Craig Holmquist and SSE4. | |
| - bpo-32588: Create standalone _distutils_findvs module. | |
| macOS | |
| ----- | |
| - bpo-32726: Provide an additional, more modern macOS installer variant that | |
| supports macOS 10.9+ systems in 64-bit mode only. Upgrade the supplied | |
| third-party libraries to OpenSSL 1.0.2n, XZ 5.2.3, and SQLite 3.22.0. The | |
| 10.9+ installer now links with and supplies its own copy of Tcl/Tk 8.6.8. | |
| IDLE | |
| ---- | |
| - bpo-32984: Set ``__file__`` while running a startup file. Like Python, | |
| IDLE optionally runs one startup file in the Shell window before | |
| presenting the first interactive input prompt. For IDLE, ``-s`` runs a | |
| file named in environmental variable :envvar:`IDLESTARTUP` or | |
| :envvar:`PYTHONSTARTUP`; ``-r file`` runs ``file``. Python sets | |
| ``__file__`` to the startup file name before running the file and unsets | |
| it before the first prompt. IDLE now does the same when run normally, | |
| without the ``-n`` option. | |
| - bpo-32940: Simplify and rename StringTranslatePseudoMapping in pyparse. | |
| - bpo-32916: Change ``str`` to ``code`` in pyparse. | |
| - bpo-32905: Remove unused code in pyparse module. | |
| - bpo-32874: Add tests for pyparse. | |
| - bpo-32837: Using the system and place-dependent default encoding for | |
| open() is a bad idea for IDLE's system and location-independent files. | |
| - bpo-32826: Add "encoding=utf-8" to open() in IDLE's test_help_about. GUI | |
| test test_file_buttons() only looks at initial ascii-only lines, but | |
| failed on systems where open() defaults to 'ascii' because readline() | |
| internally reads and decodes far enough ahead to encounter a non-ascii | |
| character in CREDITS.txt. | |
| - bpo-32765: Update configdialog General tab docstring to add new widgets to | |
| the widget list. | |
| Tools/Demos | |
| ----------- | |
| - bpo-24960: 2to3 and lib2to3 can now read pickled grammar files using | |
| pkgutil.get_data() rather than probing the filesystem. This lets 2to3 and | |
| lib2to3 work when run from a zipfile. | |
| - bpo-32222: Fix pygettext not extracting docstrings for functions with type | |
| annotated arguments. Patch by Toby Harradine. | |
| C API | |
| ----- | |
| - bpo-29084: Undocumented C API for OrderedDict has been excluded from the | |
| limited C API. It was added by mistake and actually never worked in the | |
| limited C API. | |
| What's New in Python 3.6.4 final? | |
| ================================= | |
| *Release date: 2017-12-18* | |
| There were no new code changes in version 3.6.4 since v3.6.4rc1. | |
| What's New in Python 3.6.4 release candidate 1? | |
| =============================================== | |
| *Release date: 2017-12-05* | |
| Core and Builtins | |
| ----------------- | |
| - bpo-32176: co_flags.CO_NOFREE is now always set correctly by the code | |
| object constructor based on freevars and cellvars, rather than needing to | |
| be set correctly by the caller. This ensures it will be cleared | |
| automatically when additional cell references are injected into a modified | |
| code object and function. | |
| - bpo-31949: Fixed several issues in printing tracebacks | |
| (PyTraceBack_Print()). Setting sys.tracebacklimit to 0 or less now | |
| suppresses printing tracebacks. Setting sys.tracebacklimit to None now | |
| causes using the default limit. Setting sys.tracebacklimit to an integer | |
| larger than LONG_MAX now means using the limit LONG_MAX rather than the | |
| default limit. Fixed integer overflows in the case of more than ``2**31`` | |
| traceback items on Windows. Fixed output errors handling. | |
| - bpo-30696: Fix the interactive interpreter looping endlessly when no | |
| memory. | |
| - bpo-20047: Bytearray methods partition() and rpartition() now accept only | |
| bytes-like objects as separator, as documented. In particular they now | |
| raise TypeError rather of returning a bogus result when an integer is | |
| passed as a separator. | |
| - bpo-31852: Fix a segmentation fault caused by a combination of the async | |
| soft keyword and continuation lines. | |
| - bpo-21720: BytesWarning no longer emitted when the *fromlist* argument of | |
| ``__import__()`` or the ``__all__`` attribute of the module contain bytes | |
| instances. | |
| - bpo-31825: Fixed OverflowError in the 'unicode-escape' codec and in | |
| codecs.escape_decode() when decode an escaped non-ascii byte. | |
| - bpo-28603: Print the full context/cause chain of exceptions on interpreter | |
| exit, even if an exception in the chain is unhashable or compares equal to | |
| later ones. Patch by Zane Bitter. | |
| - bpo-31786: Fix timeout rounding in the select module to round correctly | |
| negative timeouts between -1.0 and 0.0. The functions now block waiting | |
| for events as expected. Previously, the call was incorrectly non-blocking. | |
| Patch by Pablo Galindo. | |
| - bpo-31642: Restored blocking "from package import module" by setting | |
| sys.modules["package.module"] to None. | |
| - bpo-31626: Fixed a bug in debug memory allocator. There was a write to | |
| freed memory after shrinking a memory block. | |
| - bpo-31619: Fixed a ValueError when convert a string with large number of | |
| underscores to integer with binary base. | |
| - bpo-31592: Fixed an assertion failure in Python parser in case of a bad | |
| `unicodedata.normalize()`. Patch by Oren Milman. | |
| - bpo-31588: Raise a `TypeError` with a helpful error message when class | |
| creation fails due to a metaclass with a bad ``__prepare__()`` method. | |
| Patch by Oren Milman. | |
| - bpo-31566: Fix an assertion failure in `_warnings.warn()` in case of a bad | |
| ``__name__`` global. Patch by Oren Milman. | |
| - bpo-31505: Fix an assertion failure in `json`, in case | |
| `_json.make_encoder()` received a bad `encoder()` argument. Patch by Oren | |
| Milman. | |
| - bpo-31492: Fix assertion failures in case of failing to import from a | |
| module with a bad ``__name__`` attribute, and in case of failing to access | |
| an attribute of such a module. Patch by Oren Milman. | |
| - bpo-31490: Fix an assertion failure in `ctypes` class definition, in case | |
| the class has an attribute whose name is specified in ``_anonymous_`` but | |
| not in ``_fields_``. Patch by Oren Milman. | |
| - bpo-31478: Fix an assertion failure in `_random.Random.seed()` in case the | |
| argument has a bad ``__abs__()`` method. Patch by Oren Milman. | |
| - bpo-31315: Fix an assertion failure in imp.create_dynamic(), when | |
| spec.name is not a string. Patch by Oren Milman. | |
| - bpo-31311: Fix a crash in the ``__setstate__()`` method of | |
| `ctypes._CData`, in case of a bad ``__dict__``. Patch by Oren Milman. | |
| - bpo-31293: Fix crashes in true division and multiplication of a timedelta | |
| object by a float with a bad as_integer_ratio() method. Patch by Oren | |
| Milman. | |
| - bpo-31285: Fix an assertion failure in `warnings.warn_explicit`, when the | |
| return value of the received loader's get_source() has a bad splitlines() | |
| method. Patch by Oren Milman. | |
| - bpo-30817: `PyErr_PrintEx()` clears now the ignored exception that may be | |
| raised by `_PySys_SetObjectId()`, for example when no memory. | |
| Library | |
| ------- | |
| - bpo-28556: Two minor fixes for ``typing`` module: allow shallow copying | |
| instances of generic classes, improve interaction of ``__init_subclass__`` | |
| with generics. Original PRs by Ivan Levkivskyi. | |
| - bpo-27240: The header folding algorithm for the new email policies has | |
| been rewritten, which also fixes bpo-30788, bpo-31831, and bpo-32182. In | |
| particular, RFC2231 folding is now done correctly. | |
| - bpo-32186: io.FileIO.readall() and io.FileIO.read() now release the GIL | |
| when getting the file size. Fixed hang of all threads with inaccessible | |
| NFS server. Patch by Nir Soffer. | |
| - bpo-12239: Make :meth:`msilib.SummaryInformation.GetProperty` return | |
| ``None`` when the value of property is ``VT_EMPTY``. Initial patch by | |
| Mark Mc Mahon. | |
| - bpo-31325: Fix wrong usage of :func:`collections.namedtuple` in the | |
| :meth:`RobotFileParser.parse() <urllib.robotparser.RobotFileParser.parse>` | |
| method. Initial patch by Robin Wellner. | |
| - bpo-12382: :func:`msilib.OpenDatabase` now raises a better exception | |
| message when it couldn't open or create an MSI file. Initial patch by | |
| William Tisäter. | |
| - bpo-32110: ``codecs.StreamReader.read(n)`` now returns not more than *n* | |
| characters/bytes for non-negative *n*. This makes it compatible with | |
| ``read()`` methods of other file-like objects. | |
| - bpo-32072: Fixed issues with binary plists: Fixed saving bytearrays. | |
| Identical objects will be saved only once. Equal references will be load | |
| as identical objects. Added support for saving and loading recursive data | |
| structures. | |
| - bpo-32034: Make asyncio.IncompleteReadError and LimitOverrunError | |
| pickleable. | |
| - bpo-32015: Fixed the looping of asyncio in the case of reconnection the | |
| socket during waiting async read/write from/to the socket. | |
| - bpo-32011: Restored support of loading marshal files with the TYPE_INT64 | |
| code. These files can be produced in Python 2.7. | |
| - bpo-31970: Reduce performance overhead of asyncio debug mode. | |
| - bpo-9678: Fixed determining the MAC address in the uuid module: Using | |
| ifconfig on NetBSD and OpenBSD. Using arp on Linux, FreeBSD, NetBSD and | |
| OpenBSD. Based on patch by Takayuki Shimizukawa. | |
| - bpo-30057: Fix potential missed signal in signal.signal(). | |
| - bpo-31933: Fix Blake2 params leaf_size and node_offset on big endian | |
| platforms. Patch by Jack O'Connor. | |
| - bpo-31927: Fixed compilation of the socket module on NetBSD 8. Fixed | |
| assertion failure or reading arbitrary data when parse a AF_BLUETOOTH | |
| address on NetBSD and DragonFly BSD. | |
| - bpo-27666: Fixed stack corruption in curses.box() and curses.ungetmouse() | |
| when the size of types chtype or mmask_t is less than the size of C long. | |
| curses.box() now accepts characters as arguments. Based on patch by Steve | |
| Fink. | |
| - bpo-31897: plistlib now catches more errors when read binary plists and | |
| raises InvalidFileException instead of unexpected exceptions. | |
| - bpo-25720: Fix the method for checking pad state of curses WINDOW. Patch | |
| by Masayuki Yamamoto. | |
| - bpo-31893: Fixed the layout of the kqueue_event structure on OpenBSD and | |
| NetBSD. Fixed the comparison of the kqueue_event objects. | |
| - bpo-31891: Fixed building the curses module on NetBSD. | |
| - bpo-28416: Instances of pickle.Pickler subclass with the persistent_id() | |
| method and pickle.Unpickler subclass with the persistent_load() method no | |
| longer create reference cycles. | |
| - bpo-28326: Fix multiprocessing.Process when stdout and/or stderr is closed | |
| or None. | |
| - bpo-31457: If nested log adapters are used, the inner ``process()`` | |
| methods are no longer omitted. | |
| - bpo-31457: The ``manager`` property on LoggerAdapter objects is now | |
| properly settable. | |
| - bpo-31806: Fix timeout rounding in time.sleep(), threading.Lock.acquire() | |
| and socket.socket.settimeout() to round correctly negative timeouts | |
| between -1.0 and 0.0. The functions now block waiting for events as | |
| expected. Previously, the call was incorrectly non-blocking. Patch by | |
| Pablo Galindo. | |
| - bpo-28603: traceback: Fix a TypeError that occurred during printing of | |
| exception tracebacks when either the current exception or an exception in | |
| its context/cause chain is unhashable. Patch by Zane Bitter. | |
| - bpo-30058: Fixed buffer overflow in select.kqueue.control(). | |
| - bpo-31770: Prevent a crash when calling the ``__init__()`` method of a | |
| ``sqlite3.Cursor`` object more than once. Patch by Oren Milman. | |
| - bpo-31672: ``idpattern`` in ``string.Template`` matched some non-ASCII | |
| characters. Now it uses ``-i`` regular expression local flag to avoid | |
| non-ASCII characters. | |
| - bpo-31764: Prevent a crash in ``sqlite3.Cursor.close()`` in case the | |
| ``Cursor`` object is uninitialized. Patch by Oren Milman. | |
| - bpo-31752: Fix possible crash in timedelta constructor called with custom | |
| integers. | |
| - bpo-31701: On Windows, faulthandler.enable() now ignores MSC and COM | |
| exceptions. | |
| - bpo-31728: Prevent crashes in `_elementtree` due to unsafe cleanup of | |
| `Element.text` and `Element.tail`. Patch by Oren Milman. | |
| - bpo-31620: an empty asyncio.Queue now doesn't leak memory when queue.get | |
| pollers timeout | |
| - bpo-31632: Fix method set_protocol() of class _SSLProtocolTransport in | |
| asyncio module. This method was previously modifying a wrong reference to | |
| the protocol. | |
| - bpo-31675: Fixed memory leaks in Tkinter's methods splitlist() and split() | |
| when pass a string larger than 2 GiB. | |
| - bpo-31673: Fixed typo in the name of Tkinter's method adderrorinfo(). | |
| - bpo-30806: Fix the string representation of a netrc object. | |
| - bpo-15037: Added a workaround for getkey() in curses for ncurses 5.7 and | |
| earlier. | |
| - bpo-25351: Avoid venv activate failures with undefined variables | |
| - bpo-25532: inspect.unwrap() will now only try to unwrap an object | |
| sys.getrecursionlimit() times, to protect against objects which create a | |
| new object on every attribute access. | |
| - bpo-30347: Stop crashes when concurrently iterate over itertools.groupby() | |
| iterators. | |
| - bpo-31516: ``threading.current_thread()`` should not return a dummy thread | |
| at shutdown. | |
| - bpo-31351: python -m ensurepip now exits with non-zero exit code if pip | |
| bootstrapping has failed. | |
| - bpo-31482: ``random.seed()`` now works with bytes in version=1 | |
| - bpo-31334: Fix ``poll.poll([timeout])`` in the ``select`` module for | |
| arbitrary negative timeouts on all OSes where it can only be a | |
| non-negative integer or -1. Patch by Riccardo Coccioli. | |
| - bpo-31310: multiprocessing's semaphore tracker should be launched again if | |
| crashed. | |
| - bpo-31308: Make multiprocessing's forkserver process immune to Ctrl-C and | |
| other user interruptions. If it crashes, restart it when necessary. | |
| Documentation | |
| ------------- | |
| - bpo-32105: Added asyncio.BaseEventLoop.connect_accepted_socket | |
| versionadded marker. | |
| - bpo-31537: Fix incorrect usage of ``get_history_length`` in readline | |
| documentation example code. Patch by Brad Smith. | |
| - bpo-30085: The operator functions without double underscores are preferred | |
| for clarity. The one with underscores are only kept for | |
| back-compatibility. | |
| Tests | |
| ----- | |
| - bpo-31380: Skip test_httpservers test_undecodable_file on macOS: fails on | |
| APFS. | |
| - bpo-31705: Skip test_socket.test_sha256() on Linux kernel older than 4.5. | |
| The test fails with ENOKEY on kernel 3.10 (on ppc64le). A fix was merged | |
| into the kernel 4.5. | |
| - bpo-31174: Fix test_tools.test_unparse: DirectoryTestCase now stores the | |
| names sample to always test the same files. It prevents false alarms when | |
| hunting reference leaks. | |
| - bpo-30695: Add the `set_nomemory(start, stop)` and `remove_mem_hooks()` | |
| functions to the _testcapi module. | |
| Build | |
| ----- | |
| - bpo-32059: ``detect_modules()`` in ``setup.py`` now also searches the | |
| sysroot paths when cross-compiling. | |
| - bpo-31957: Fixes Windows SDK version detection when building for Windows. | |
| - bpo-31609: Fixes quotes in PCbuild/clean.bat | |
| - bpo-31934: Abort the build when building out of a not clean source tree. | |
| - bpo-31926: Fixed Argument Clinic sometimes causing compilation errors when | |
| there was more than one function and/or method in a .c file with the same | |
| name. | |
| - bpo-28791: Update Windows builds to use SQLite 3.21.0. | |
| - bpo-28791: Update OS X installer to use SQLite 3.21.0. | |
| - bpo-22140: Prevent double substitution of prefix in python-config.sh. | |
| - bpo-31536: Avoid wholesale rebuild after `make regen-all` if nothing | |
| changed. | |
| Windows | |
| ------- | |
| - bpo-1102: Return ``None`` when ``View.Fetch()`` returns | |
| ``ERROR_NO_MORE_ITEMS`` instead of raising ``MSIError``. Initial patch by | |
| Anthony Tuininga. | |
| - bpo-31944: Fixes Modify button in Apps and Features dialog. | |
| macOS | |
| ----- | |
| - bpo-31392: Update macOS installer to use OpenSSL 1.0.2m | |
| IDLE | |
| ---- | |
| - bpo-32207: Improve tk event exception tracebacks in IDLE. When tk event | |
| handling is driven by IDLE's run loop, a confusing and distracting | |
| queue.EMPTY traceback context is no longer added to tk event exception | |
| tracebacks. The traceback is now the same as when event handling is | |
| driven by user code. Patch based on a suggestion by Serhiy Storchaka. | |
| - bpo-32164: Delete unused file idlelib/tabbedpages.py. Use of TabbedPageSet | |
| in configdialog was replaced by ttk.Notebook. | |
| - bpo-32100: IDLE: Fix old and new bugs in pathbrowser; improve tests. Patch | |
| mostly by Cheryl Sabella. | |
| - bpo-31858: IDLE -- Restrict shell prompt manipulation to the shell. Editor | |
| and output windows only see an empty last prompt line. This simplifies | |
| the code and fixes a minor bug when newline is inserted. Sys.ps1, if | |
| present, is read on Shell start-up, but is not set or changed. | |
| - bpo-31860: The font sample in the IDLE configuration dialog is now | |
| editable. Changes persist while IDLE remains open | |
| - bpo-31836: Test_code_module now passes if run after test_idle, which sets | |
| ps1. The code module uses sys.ps1 if present or sets it to '>>> ' if not. | |
| Test_code_module now properly tests both behaviors. Ditto for ps2. | |
| - bpo-28603: Fix a TypeError that caused a shell restart when printing a | |
| traceback that includes an exception that is unhashable. Patch by Zane | |
| Bitter. | |
| - bpo-13802: Use non-Latin characters in the IDLE's Font settings sample. | |
| Even if one selects a font that defines a limited subset of the unicode | |
| Basic Multilingual Plane, tcl/tk will use other fonts that define a | |
| character. The expanded example give users of non-Latin characters a | |
| better idea of what they might see in IDLE's shell and editors. To make | |
| room for the expanded sample, frames on the Font tab are re-arranged. The | |
| Font/Tabs help explains a bit about the additions. | |
| - bpo-31460: Simplify the API of IDLE's Module Browser. Passing a widget | |
| instead of an flist with a root widget opens the option of creating a | |
| browser frame that is only part of a window. Passing a full file name | |
| instead of pieces assumed to come from a .py file opens the possibility of | |
| browsing python files that do not end in .py. | |
| - bpo-31649: IDLE - Make _htest, _utest parameters keyword only. | |
| - bpo-31559: Remove test order dependence in idle_test.test_browser. | |
| - bpo-31459: Rename IDLE's module browser from Class Browser to Module | |
| Browser. The original module-level class and method browser became a | |
| module browser, with the addition of module-level functions, years ago. | |
| Nested classes and functions were added yesterday. For | |
| back-compatibility, the virtual event <<open-class-browser>>, which | |
| appears on the Keys tab of the Settings dialog, is not changed. Patch by | |
| Cheryl Sabella. | |
| - bpo-31500: Default fonts now are scaled on HiDPI displays. | |
| - bpo-1612262: IDLE module browser now shows nested classes and functions. | |
| Original patches for code and tests by Guilherme Polo and Cheryl Sabella, | |
| respectively. | |
| Tools/Demos | |
| ----------- | |
| - bpo-30722: Make redemo work with Python 3.6 and newer versions. Also, | |
| remove the ``LOCALE`` option since it doesn't work with string patterns in | |
| Python 3. Patch by Christoph Sarnowski. | |
| C API | |
| ----- | |
| - bpo-20891: Fix PyGILState_Ensure(). When PyGILState_Ensure() is called in | |
| a non-Python thread before PyEval_InitThreads(), only call | |
| PyEval_InitThreads() after calling PyThreadState_New() to fix a crash. | |
| - bpo-31532: Fix memory corruption due to allocator mix in getpath.c between | |
| Py_GetPath() and Py_SetPath() | |
| - bpo-30697: The `PyExc_RecursionErrorInst` singleton is removed and | |
| `PyErr_NormalizeException()` does not use it anymore. This singleton is | |
| persistent and its members being never cleared may cause a segfault during | |
| finalization of the interpreter. See also issue #22898. | |
| What's New in Python 3.6.3 final? | |
| ================================= | |
| *Release date: 2017-10-03* | |
| Library | |
| ------- | |
| - bpo-31641: Re-allow arbitrary iterables in | |
| `concurrent.futures.as_completed()`. Fixes regression in 3.6.3rc1. | |
| Build | |
| ----- | |
| - bpo-31662: Fix typos in Windows ``uploadrelease.bat`` script. Fix Windows | |
| Doc build issues in ``Doc/make.bat``. | |
| - bpo-31423: Fix building the PDF documentation with newer versions of | |
| Sphinx. | |
| What's New in Python 3.6.3 release candidate 1? | |
| =============================================== | |
| *Release date: 2017-09-18* | |
| Security | |
| -------- | |
| - bpo-29781: SSLObject.version() now correctly returns None when handshake | |
| over BIO has not been performed yet. | |
| - bpo-30947: Upgrade libexpat embedded copy from version 2.2.1 to 2.2.3 to | |
| get security fixes. | |
| Core and Builtins | |
| ----------------- | |
| - bpo-31471: Fix an assertion failure in `subprocess.Popen()` on Windows, in | |
| case the env argument has a bad keys() method. Patch by Oren Milman. | |
| - bpo-31418: Fix an assertion failure in `PyErr_WriteUnraisable()` in case | |
| of an exception with a bad ``__module__`` attribute. Patch by Oren Milman. | |
| - bpo-31416: Fix assertion failures in case of a bad warnings.filters or | |
| warnings.defaultaction. Patch by Oren Milman. | |
| - bpo-31411: Raise a TypeError instead of SystemError in case | |
| warnings.onceregistry is not a dictionary. Patch by Oren Milman. | |
| - bpo-31373: Fix several possible instances of undefined behavior due to | |
| floating-point demotions. | |
| - bpo-30465: Location information (``lineno`` and ``col_offset``) in | |
| f-strings is now (mostly) correct. This fixes tools like flake8 from | |
| showing warnings on the wrong line (typically the first line of the file). | |
| - bpo-31343: Include sys/sysmacros.h for major(), minor(), and makedev(). | |
| GNU C libray plans to remove the functions from sys/types.h. | |
| - bpo-31291: Fix an assertion failure in `zipimport.zipimporter.get_data` on | |
| Windows, when the return value of ``pathname.replace('/','\\')`` isn't a | |
| string. Patch by Oren Milman. | |
| - bpo-31271: Fix an assertion failure in the write() method of | |
| `io.TextIOWrapper`, when the encoder doesn't return a bytes object. Patch | |
| by Oren Milman. | |
| - bpo-31243: Fix a crash in some methods of `io.TextIOWrapper`, when the | |
| decoder's state is invalid. Patch by Oren Milman. | |
| - bpo-30721: ``print`` now shows correct usage hint for using Python 2 | |
| redirection syntax. Patch by Sanyam Khurana. | |
| - bpo-31070: Fix a race condition in importlib _get_module_lock(). | |
| - bpo-31095: Fix potential crash during GC caused by ``tp_dealloc`` which | |
| doesn't call ``PyObject_GC_UnTrack()``. | |
| - bpo-31071: Avoid masking original TypeError in call with * unpacking when | |
| other arguments are passed. | |
| - bpo-30978: str.format_map() now passes key lookup exceptions through. | |
| Previously any exception was replaced with a KeyError exception. | |
| - bpo-30808: Use _Py_atomic API for concurrency-sensitive signal state. | |
| - bpo-30876: Relative import from unloaded package now reimports the package | |
| instead of failing with SystemError. Relative import from non-package now | |
| fails with ImportError rather than SystemError. | |
| - bpo-30703: Improve signal delivery. Avoid using Py_AddPendingCall from | |
| signal handler, to avoid calling signal-unsafe functions. The tests I'm | |
| adding here fail without the rest of the patch, on Linux and OS X. This | |
| means our signal delivery logic had defects (some signals could be lost). | |
| - bpo-30765: Avoid blocking in pthread_mutex_lock() when | |
| PyThread_acquire_lock() is asked not to block. | |
| - bpo-31161: Make sure the 'Missing parentheses' syntax error message is | |
| only applied to SyntaxError, not to subclasses. Patch by Martijn Pieters. | |
| - bpo-30814: Fixed a race condition when import a submodule from a package. | |
| - bpo-30597: ``print`` now shows expected input in custom error message when | |
| used as a Python 2 statement. Patch by Sanyam Khurana. | |
| Library | |
| ------- | |
| - bpo-31499: xml.etree: Fix a crash when a parser is part of a reference | |
| cycle. | |
| - bpo-28556: typing.get_type_hints now finds the right globalns for classes | |
| and modules by default (when no ``globalns`` was specified by the caller). | |
| - bpo-28556: Speed improvements to the ``typing`` module. Original PRs by | |
| Ivan Levkivskyi and Mitar. | |
| - bpo-31544: The C accelerator module of ElementTree ignored exceptions | |
| raised when looking up TreeBuilder target methods in XMLParser(). | |
| - bpo-31234: socket.create_connection() now fixes manually a reference | |
| cycle: clear the variable storing the last exception on success. | |
| - bpo-31457: LoggerAdapter objects can now be nested. | |
| - bpo-31400: Improves SSL error handling to avoid losing error numbers. | |
| - bpo-28958: ssl.SSLContext() now uses OpenSSL error information when a | |
| context cannot be instantiated. | |
| - bpo-27340: SSLSocket.sendall() now uses memoryview to create slices of | |
| data. This fixes support for all bytes-like object. It is also more | |
| efficient and avoids costly copies. | |
| - bpo-31178: Fix string concatenation bug in rare error path in the | |
| subprocess module | |
| - bpo-31350: Micro-optimize :func:`asyncio._get_running_loop` to become up | |
| to 10% faster. | |
| - bpo-31170: expat: Update libexpat from 2.2.3 to 2.2.4. Fix copying of | |
| partial characters for UTF-8 input (libexpat bug 115): | |
| https://github.com/libexpat/libexpat/issues/115 | |
| - bpo-29136: Add TLS 1.3 cipher suites and OP_NO_TLSv1_3. | |
| - bpo-29212: Fix concurrent.futures.thread.ThreadPoolExecutor threads to | |
| have a non repr() based thread name by default when no thread_name_prefix | |
| is supplied. They will now identify themselves as | |
| "ThreadPoolExecutor-y_n". | |
| - bpo-9146: Fix a segmentation fault in _hashopenssl when standard hash | |
| functions such as md5 are not available in the linked OpenSSL library. As | |
| in some special FIPS-140 build environments. | |
| - bpo-27144: The ``map()`` and ``as_completed()`` iterators in | |
| ``concurrent.futures`` now avoid keeping a reference to yielded objects. | |
| - bpo-10746: Fix ctypes producing wrong :pep:`3118` type codes for integer | |
| types. | |
| - bpo-22536: The subprocess module now sets the filename when | |
| FileNotFoundError is raised on POSIX systems due to the executable or cwd | |
| not being found. | |
| - bpo-31249: concurrent.futures: WorkItem.run() used by ThreadPoolExecutor | |
| now breaks a reference cycle between an exception object and the WorkItem | |
| object. | |
| - bpo-31247: xmlrpc.server now explicitly breaks reference cycles when using | |
| sys.exc_info() in code handling exceptions. | |
| - bpo-30102: The ssl and hashlib modules now call | |
| OPENSSL_add_all_algorithms_noconf() on OpenSSL < 1.1.0. The function | |
| detects CPU features and enables optimizations on some CPU architectures | |
| such as POWER8. Patch is based on research from Gustavo Serra Scalet. | |
| - bpo-31185: Fixed miscellaneous errors in asyncio speedup module. | |
| - bpo-31135: ttk: fix the destroy() method of LabeledScale and OptionMenu | |
| classes. Call the parent destroy() method even if the used attribute | |
| doesn't exist. The LabeledScale.destroy() method now also explicitly | |
| clears label and scale attributes to help the garbage collector to destroy | |
| all widgets. | |
| - bpo-31107: Fix `copyreg._slotnames()` mangled attribute calculation for | |
| classes whose name begins with an underscore. Patch by Shane Harvey. | |
| - bpo-31061: Fixed a crash when using asyncio and threads. | |
| - bpo-30502: Fix handling of long oids in ssl. Based on patch by Christian | |
| Heimes. | |
| - bpo-30119: ftplib.FTP.putline() now throws ValueError on commands that | |
| contains CR or LF. Patch by Dong-hee Na. | |
| - bpo-30595: multiprocessing.Queue.get() with a timeout now polls its reader | |
| in non-blocking mode if it succeeded to acquire the lock but the acquire | |
| took longer than the timeout. | |
| - bpo-29403: Fix ``unittest.mock``'s autospec to not fail on method-bound | |
| builtin functions. Patch by Aaron Gallagher. | |
| - bpo-30961: Fix decrementing a borrowed reference in tracemalloc. | |
| - bpo-25684: Change ``ttk.OptionMenu`` radiobuttons to be unique across | |
| instances of ``OptionMenu``. | |
| - bpo-30886: Fix multiprocessing.Queue.join_thread(): it now waits until the | |
| thread completes, even if the thread was started by the same process which | |
| created the queue. | |
| - bpo-29854: Fix segfault in readline when using readline's history-size | |
| option. Patch by Nir Soffer. | |
| - bpo-30319: socket.close() now ignores ECONNRESET error. | |
| - bpo-30828: Fix out of bounds write in | |
| `asyncio.CFuture.remove_done_callback()`. | |
| - bpo-30807: signal.setitimer() may disable the timer when passed a tiny | |
| value. Tiny values (such as 1e-6) are valid non-zero values for | |
| setitimer(), which is specified as taking microsecond-resolution | |
| intervals. However, on some platform, our conversion routine could convert | |
| 1e-6 into a zero interval, therefore disabling the timer instead of | |
| (re-)scheduling it. | |
| - bpo-30441: Fix bug when modifying os.environ while iterating over it | |
| - bpo-30532: Fix email header value parser dropping folding white space in | |
| certain cases. | |
| - bpo-30879: os.listdir() and os.scandir() now emit bytes names when called | |
| with bytes-like argument. | |
| - bpo-30746: Prohibited the '=' character in environment variable names in | |
| ``os.putenv()`` and ``os.spawn*()``. | |
| - bpo-29755: Fixed the lgettext() family of functions in the gettext module. | |
| They now always return bytes. | |
| Documentation | |
| ------------- | |
| - bpo-31294: Fix incomplete code snippet in the ZeroMQSocketListener and | |
| ZeroMQSocketHandler examples and adapt them to Python 3. | |
| - bpo-21649: Add RFC 7525 and Mozilla server side TLS links to SSL | |
| documentation. | |
| - bpo-30803: Clarify doc on truth value testing. Original patch by Peter | |
| Thomassen. | |
| Tests | |
| ----- | |
| - bpo-31320: Silence traceback in test_ssl | |
| - bpo-25674: Remove sha256.tbs-internet.com ssl test | |
| - bpo-30715: Address ALPN callback changes for OpenSSL 1.1.0f. The latest | |
| version behaves like OpenSSL 1.0.2 and no longer aborts handshake. | |
| - bpo-30822: regrtest: Exclude tzdata from regrtest --all. When running the | |
| test suite using --use=all / -u all, exclude tzdata since it makes | |
| test_datetime too slow (15-20 min on some buildbots) which then times out | |
| on some buildbots. Fix also regrtest command line parser to allow passing | |
| -u extralargefile to run test_zipfile64. | |
| Build | |
| ----- | |
| - bpo-30854: Fix compile error when compiling --without-threads. Patch by | |
| Masayuki Yamamoto. | |
| Windows | |
| ------- | |
| - bpo-30389: Adds detection of Visual Studio 2017 to distutils on Windows. | |
| - bpo-31340: Change to building with MSVC v141 (included with Visual Studio | |
| 2017) | |
| - bpo-30581: os.cpu_count() now returns the correct number of processors on | |
| Windows when the number of logical processors is greater than 64. | |
| - bpo-30731: Add a missing xmlns to python.manifest so that it matches the | |
| schema. | |
| IDLE | |
| ---- | |
| - bpo-31493: IDLE code context -- fix code update and font update timers. | |
| Canceling timers prevents a warning message when test_idle completes. | |
| - bpo-31488: IDLE - Update non-key options in former extension classes. When | |
| applying configdialog changes, call .reload for each feature class. Change | |
| ParenMatch so updated options affect existing instances attached to | |
| existing editor windows. | |
| - bpo-31477: IDLE - Improve rstrip entry in doc. Strip trailing whitespace | |
| strips more than blank spaces. Multiline string literals are not skipped. | |
| - bpo-31480: IDLE - make tests pass with zzdummy extension disabled by | |
| default. | |
| - bpo-31421: Document how IDLE runs tkinter programs. IDLE calls tcl/tk | |
| update in the background in order to make live interaction and | |
| experimentation with tkinter applications much easier. | |
| - bpo-31414: IDLE -- fix tk entry box tests by deleting first. Adding to an | |
| int entry is not the same as deleting and inserting because int('') will | |
| fail. | |
| - bpo-31051: Rearrange IDLE configdialog GenPage into Window, Editor, and | |
| Help sections. | |
| - bpo-30617: IDLE - Add docstrings and tests for outwin subclass of editor. | |
| Move some data and functions from the class to module level. Patch by | |
| Cheryl Sabella. | |
| - bpo-31287: IDLE - Do not modify tkinter.message in test_configdialog. | |
| - bpo-27099: Convert IDLE's built-in 'extensions' to regular features. About | |
| 10 IDLE features were implemented as supposedly optional extensions. Their | |
| different behavior could be confusing or worse for users and not good for | |
| maintenance. Hence the conversion. The main difference for users is that | |
| user configurable key bindings for builtin features are now handled | |
| uniformly. Now, editing a binding in a keyset only affects its value in | |
| the keyset. All bindings are defined together in the system-specific | |
| default keysets in config-extensions.def. All custom keysets are saved as | |
| a whole in config-extension.cfg. All take effect as soon as one clicks | |
| Apply or Ok. The affected events are '<<force-open-completions>>', | |
| '<<expand-word>>', '<<force-open-calltip>>', '<<flash-paren>>', | |
| '<<format-paragraph>>', '<<run-module>>', '<<check-module>>', and | |
| '<<zoom-height>>'. Any (global) customizations made before 3.6.3 will not | |
| affect their keyset-specific customization after 3.6.3. and vice versa. | |
| Initial patch by Charles Wohlganger. | |
| - bpo-31206: IDLE: Factor HighPage(Frame) class from ConfigDialog. Patch by | |
| Cheryl Sabella. | |
| - bpo-31001: Add tests for configdialog highlight tab. Patch by Cheryl | |
| Sabella. | |
| - bpo-31205: IDLE: Factor KeysPage(Frame) class from ConfigDialog. The | |
| slightly modified tests continue to pass. Patch by Cheryl Sabella. | |
| - bpo-31130: IDLE -- stop leaks in test_configdialog. Initial patch by | |
| Victor Stinner. | |
| - bpo-31002: Add tests for configdialog keys tab. Patch by Cheryl Sabella. | |
| - bpo-19903: IDLE: Calltips use `inspect.signature` instead of | |
| `inspect.getfullargspec`. This improves calltips for builtins converted to | |
| use Argument Clinic. Patch by Louie Lu. | |
| - bpo-31083: IDLE - Add an outline of a TabPage class in configdialog. | |
| Update existing classes to match outline. Initial patch by Cheryl Sabella. | |
| - bpo-31050: Factor GenPage(Frame) class from ConfigDialog. The slightly | |
| modified tests continue to pass. Patch by Cheryl Sabella. | |
| - bpo-31004: IDLE - Factor FontPage(Frame) class from ConfigDialog. Slightly | |
| modified tests continue to pass. Fix General tests. Patch mostly by Cheryl | |
| Sabella. | |
| - bpo-30781: IDLE - Use ttk widgets in ConfigDialog. Patches by Terry Jan | |
| Reedy and Cheryl Sabella. | |
| - bpo-31060: IDLE - Finish rearranging methods of ConfigDialog Grouping | |
| methods pertaining to each tab and the buttons will aid writing tests and | |
| improving the tabs and will enable splitting the groups into classes. | |
| - bpo-30853: IDLE -- Factor a VarTrace class out of ConfigDialog. Instance | |
| tracers manages pairs consisting of a tk variable and a callback function. | |
| When tracing is turned on, setting the variable calls the function. Test | |
| coverage for the new class is 100%. | |
| - bpo-31003: IDLE: Add more tests for General tab. | |
| - bpo-30993: IDLE - Improve configdialog font page and tests. In | |
| configdialog: Document causal pathways in create_font_tab docstring. | |
| Simplify some attribute names. Move set_samples calls to var_changed_font | |
| (idea from Cheryl Sabella). Move related functions to positions after the | |
| create widgets function. In test_configdialog: Fix test_font_set so not | |
| order dependent. Fix renamed test_indent_scale so it tests the widget. | |
| Adjust tests for movement of set_samples call. Add tests for load | |
| functions. Put all font tests in one class and tab indent tests in | |
| another. Except for two lines, these tests completely cover the related | |
| functions. | |
| - bpo-30981: IDLE -- Add more configdialog font page tests. | |
| - bpo-28523: IDLE: replace 'colour' with 'color' in configdialog. | |
| - bpo-30917: Add tests for idlelib.config.IdleConf. Increase coverage from | |
| 46% to 96%. Patch by Louie Lu. | |
| - bpo-30934: Document coverage details for idlelib tests. Add section to | |
| idlelib/idle-test/README.txt. Include check that branches are taken both | |
| ways. Exclude IDLE-specific code that does not run during unit tests. | |
| - bpo-30913: IDLE: Document ConfigDialog tk Vars, methods, and widgets in | |
| docstrings This will facilitate improving the dialog and splitting up the | |
| class. Original patch by Cheryl Sabella. | |
| - bpo-30899: IDLE: Add tests for ConfigParser subclasses in config. Patch by | |
| Louie Lu. | |
| - bpo-30881: IDLE: Add docstrings to browser.py. Patch by Cheryl Sabella. | |
| - bpo-30851: IDLE: Remove unused variables in configdialog. One is a | |
| duplicate, one is set but cannot be altered by users. Patch by Cheryl | |
| Sabella. | |
| - bpo-30870: IDLE: In Settings dialog, select font with Up, Down keys as | |
| well as mouse. Initial patch by Louie Lu. | |
| - bpo-8231: IDLE: call config.IdleConf.GetUserCfgDir only once. | |
| - bpo-30779: IDLE: Factor ConfigChanges class from configdialog, put in | |
| config; test. * In config, put dump test code in a function; run it and | |
| unittest in 'if __name__ == '__main__'. * Add class config.ConfigChanges | |
| based on changes_class_v4.py on bpo issue. * Add class | |
| test_config.ChangesTest, partly using configdialog_tests_v1.py. * Revise | |
| configdialog to use ConfigChanges; see tracker msg297804. * Revise | |
| test_configdialog to match configdialog changes. * Remove configdialog | |
| functions unused or moved to ConfigChanges. Cheryl Sabella contributed | |
| parts of the patch. | |
| - bpo-30777: IDLE: configdialog - Add docstrings and fix comments. Patch by | |
| Cheryl Sabella. | |
| - bpo-30495: IDLE: Improve textview with docstrings, PEP8 names, and more | |
| tests. Patch by Cheryl Sabella. | |
| - bpo-30723: IDLE: Make several improvements to parenmatch. Add 'parens' | |
| style to highlight both opener and closer. Make 'default' style, which is | |
| not default, a synonym for 'opener'. Make time-delay work the same with | |
| all styles. Add help for config dialog extensions tab, including help for | |
| parenmatch. Add new tests. Original patch by Charles Wohlganger. | |
| - bpo-30674: IDLE: add docstrings to grep module. Patch by Cheryl Sabella | |
| - bpo-21519: IDLE's basic custom key entry dialog now detects duplicates | |
| properly. Original patch by Saimadhav Heblikar. | |
| - bpo-29910: IDLE no longer deletes a character after commenting out a | |
| region by a key shortcut. Add ``return 'break'`` for this and other | |
| potential conflicts between IDLE and default key bindings. | |
| - bpo-30728: Review and change idlelib.configdialog names. Lowercase method | |
| and attribute names. Replace 'colour' with 'color', expand overly cryptic | |
| names, delete unneeded underscores. Replace ``import *`` with specific | |
| imports. Patches by Cheryl Sabella. | |
| - bpo-6739: IDLE: Verify user-entered key sequences by trying to bind them | |
| with tk. Add tests for all 3 validation functions. Original patch by G | |
| Polo. Tests added by Cheryl Sabella. | |
| Tools/Demos | |
| ----------- | |
| - bpo-30983: gdb integration commands (py-bt, etc.) work on optimized shared | |
| builds now, too. :pep:`523` introduced _PyEval_EvalFrameDefault which | |
| inlines PyEval_EvalFrameEx on non-debug shared builds. This broke the | |
| ability to use py-bt, py-up, and a few other Python-specific gdb | |
| integrations. The problem is fixed by only looking for | |
| _PyEval_EvalFrameDefault frames in python-gdb.py. Original patch by Bruno | |
| "Polaco" Penteado. | |
| What's New in Python 3.6.2 final? | |
| ================================= | |
| *Release date: 2017-07-17* | |
| No changes since release candidate 2 | |
| What's New in Python 3.6.2 release candidate 2? | |
| =============================================== | |
| *Release date: 2017-07-07* | |
| Security | |
| -------- | |
| - bpo-30730: Prevent environment variables injection in subprocess on | |
| Windows. Prevent passing other environment variables and command | |
| arguments. | |
| - bpo-30694: Upgrade expat copy from 2.2.0 to 2.2.1 to get fixes of multiple | |
| security vulnerabilities including: CVE-2017-9233 (External entity | |
| infinite loop DoS), CVE-2016-9063 (Integer overflow, re-fix), | |
| CVE-2016-0718 (Fix regression bugs from 2.2.0's fix to CVE-2016-0718) and | |
| CVE-2012-0876 (Counter hash flooding with SipHash). Note: the | |
| CVE-2016-5300 (Use os-specific entropy sources like getrandom) doesn't | |
| impact Python, since Python already gets entropy from the OS to set the | |
| expat secret using ``XML_SetHashSalt()``. | |
| - bpo-30500: Fix urllib.parse.splithost() to correctly parse fragments. For | |
| example, ``splithost('//127.0.0.1#@evil.com/')`` now correctly returns the | |
| ``127.0.0.1`` host, instead of treating ``@evil.com`` as the host in an | |
| authentication (``login@host``). | |
| What's New in Python 3.6.2 release candidate 1? | |
| =============================================== | |
| *Release date: 2017-06-17* | |
| Security | |
| -------- | |
| - bpo-29591: Update expat copy from 2.1.1 to 2.2.0 to get fixes of | |
| CVE-2016-0718 and CVE-2016-4472. See | |
| https://sourceforge.net/p/expat/bugs/537/ for more information. | |
| Core and Builtins | |
| ----------------- | |
| - bpo-30682: Removed a too-strict assertion that failed for certain | |
| f-strings, such as eval("f'\\\n'") and eval("f'\\\r'"). | |
| - bpo-30604: Move co_extra_freefuncs to not be per-thread to avoid crashes | |
| - bpo-29104: Fixed parsing backslashes in f-strings. | |
| - bpo-27945: Fixed various segfaults with dict when input collections are | |
| mutated during searching, inserting or comparing. Based on patches by | |
| Duane Griffin and Tim Mitchell. | |
| - bpo-25794: Fixed type.__setattr__() and type.__delattr__() for | |
| non-interned attribute names. Based on patch by Eryk Sun. | |
| - bpo-30039: If a KeyboardInterrupt happens when the interpreter is in the | |
| middle of resuming a chain of nested 'yield from' or 'await' calls, it's | |
| now correctly delivered to the innermost frame. | |
| - bpo-12414: sys.getsizeof() on a code object now returns the sizes which | |
| includes the code struct and sizes of objects which it references. Patch | |
| by Dong-hee Na. | |
| - bpo-29949: Fix memory usage regression of set and frozenset object. | |
| - bpo-29935: Fixed error messages in the index() method of tuple, list and | |
| deque when pass indices of wrong type. | |
| - bpo-29859: Show correct error messages when any of the pthread_* calls in | |
| thread_pthread.h fails. | |
| - bpo-28876: ``bool(range)`` works even if ``len(range)`` raises | |
| :exc:`OverflowError`. | |
| - bpo-29600: Fix wrapping coroutine return values in StopIteration. | |
| - bpo-28856: Fix an oversight that %b format for bytes should support | |
| objects follow the buffer protocol. | |
| - bpo-29714: Fix a regression that bytes format may fail when containing | |
| zero bytes inside. | |
| - bpo-29478: If max_line_length=None is specified while using the Compat32 | |
| policy, it is no longer ignored. Patch by Mircea Cosbuc. | |
| Library | |
| ------- | |
| - bpo-30616: Functional API of enum allows to create empty enums. Patched by | |
| Dong-hee Na | |
| - bpo-30038: Fix race condition between signal delivery and wakeup file | |
| descriptor. Patch by Nathaniel Smith. | |
| - bpo-23894: lib2to3 now recognizes ``rb'...'`` and ``f'...'`` strings. | |
| - bpo-23890: unittest.TestCase.assertRaises() now manually breaks a | |
| reference cycle to not keep objects alive longer than expected. | |
| - bpo-30149: inspect.signature() now supports callables with | |
| variable-argument parameters wrapped with partialmethod. Patch by Dong-hee | |
| Na. | |
| - bpo-30645: Fix path calculation in imp.load_package(), fixing it for cases | |
| when a package is only shipped with bytecodes. Patch by Alexandru | |
| Ardelean. | |
| - bpo-29931: Fixed comparison check for ipaddress.ip_interface objects. | |
| Patch by Sanjay Sundaresan. | |
| - bpo-30605: re.compile() no longer raises a BytesWarning when compiling a | |
| bytes instance with misplaced inline modifier. Patch by Roy Williams. | |
| - bpo-24484: Avoid race condition in multiprocessing cleanup (#2159) | |
| - bpo-28994: The traceback no longer displayed for SystemExit raised in a | |
| callback registered by atexit. | |
| - bpo-30508: Don't log exceptions if Task/Future "cancel()" method was | |
| called. | |
| - bpo-28556: Updates to typing module: Add generic AsyncContextManager, add | |
| support for ContextManager on all versions. Original PRs by Jelle Zijlstra | |
| and Ivan Levkivskyi | |
| - bpo-29870: Fix ssl sockets leaks when connection is aborted in asyncio/ssl | |
| implementation. Patch by Michaël Sghaïer. | |
| - bpo-29743: Closing transport during handshake process leaks open socket. | |
| Patch by Nikolay Kim | |
| - bpo-27585: Fix waiter cancellation in asyncio.Lock. Patch by Mathieu | |
| Sornay. | |
| - bpo-30418: On Windows, subprocess.Popen.communicate() now also ignore | |
| EINVAL on stdin.write() if the child process is still running but closed | |
| the pipe. | |
| - bpo-29822: inspect.isabstract() now works during __init_subclass__. Patch | |
| by Nate Soares. | |
| - bpo-29581: ABCMeta.__new__ now accepts ``**kwargs``, allowing abstract | |
| base classes to use keyword parameters in __init_subclass__. Patch by Nate | |
| Soares. | |
| - bpo-30557: faulthandler now correctly filters and displays exception codes | |
| on Windows | |
| - bpo-30378: Fix the problem that logging.handlers.SysLogHandler cannot | |
| handle IPv6 addresses. | |
| - bpo-29960: Preserve generator state when _random.Random.setstate() raises | |
| an exception. Patch by Bryan Olson. | |
| - bpo-30414: multiprocessing.Queue._feed background running thread do not | |
| break from main loop on exception. | |
| - bpo-30003: Fix handling escape characters in HZ codec. Based on patch by | |
| Ma Lin. | |
| - bpo-30301: Fix AttributeError when using SimpleQueue.empty() under *spawn* | |
| and *forkserver* start methods. | |
| - bpo-30329: imaplib and poplib now catch the Windows socket WSAEINVAL error | |
| (code 10022) on shutdown(SHUT_RDWR): An invalid operation was attempted. | |
| This error occurs sometimes on SSL connections. | |
| - bpo-30375: Warnings emitted when compile a regular expression now always | |
| point to the line in the user code. Previously they could point into | |
| inners of the re module if emitted from inside of groups or conditionals. | |
| - bpo-30048: Fixed ``Task.cancel()`` can be ignored when the task is running | |
| coroutine and the coroutine returned without any more ``await``. | |
| - bpo-30266: contextlib.AbstractContextManager now supports | |
| anti-registration by setting __enter__ = None or __exit__ = None, | |
| following the pattern introduced in bpo-25958. Patch by Jelle Zijlstra. | |
| - bpo-30298: Weaken the condition of deprecation warnings for inline | |
| modifiers. Now allowed several subsequential inline modifiers at the start | |
| of the pattern (e.g. ``'(?i)(?s)...'``). In verbose mode whitespaces and | |
| comments now are allowed before and between inline modifiers (e.g. ``'(?x) | |
| (?i) (?s)...'``). | |
| - bpo-29990: Fix range checking in GB18030 decoder. Original patch by Ma | |
| Lin. | |
| - bpo-26293: Change resulted because of zipfile breakage. (See also: | |
| bpo-29094) | |
| - bpo-30243: Removed the __init__ methods of _json's scanner and encoder. | |
| Misusing them could cause memory leaks or crashes. Now scanner and | |
| encoder objects are completely initialized in the __new__ methods. | |
| - bpo-30185: Avoid KeyboardInterrupt tracebacks in forkserver helper process | |
| when Ctrl-C is received. | |
| - bpo-28556: Various updates to typing module: add typing.NoReturn type, use | |
| WrapperDescriptorType, minor bug-fixes. Original PRs by Jim | |
| Fasarakis-Hilliard and Ivan Levkivskyi. | |
| - bpo-30205: Fix getsockname() for unbound AF_UNIX sockets on Linux. | |
| - bpo-30070: Fixed leaks and crashes in errors handling in the parser | |
| module. | |
| - bpo-30061: Fixed crashes in IOBase methods __next__() and readlines() when | |
| readline() or __next__() respectively return non-sizeable object. Fixed | |
| possible other errors caused by not checking results of PyObject_Size(), | |
| PySequence_Size(), or PyMapping_Size(). | |
| - bpo-30017: Allowed calling the close() method of the zip entry writer | |
| object multiple times. Writing to a closed writer now always produces a | |
| ValueError. | |
| - bpo-30068: _io._IOBase.readlines will check if it's closed first when hint | |
| is present. | |
| - bpo-29694: Fixed race condition in pathlib mkdir with flags parents=True. | |
| Patch by Armin Rigo. | |
| - bpo-29692: Fixed arbitrary unchaining of RuntimeError exceptions in | |
| contextlib.contextmanager. Patch by Siddharth Velankar. | |
| - bpo-29998: Pickling and copying ImportError now preserves name and path | |
| attributes. | |
| - bpo-29953: Fixed memory leaks in the replace() method of datetime and time | |
| objects when pass out of bound fold argument. | |
| - bpo-29942: Fix a crash in itertools.chain.from_iterable when encountering | |
| long runs of empty iterables. | |
| - bpo-27863: Fixed multiple crashes in ElementTree caused by race conditions | |
| and wrong types. | |
| - bpo-28699: Fixed a bug in pools in multiprocessing.pool that raising an | |
| exception at the very first of an iterable may swallow the exception or | |
| make the program hang. Patch by Davin Potts and Xiang Zhang. | |
| - bpo-25803: Avoid incorrect errors raised by Path.mkdir(exist_ok=True) when | |
| the OS gives priority to errors such as EACCES over EEXIST. | |
| - bpo-29861: Release references to tasks, their arguments and their results | |
| as soon as they are finished in multiprocessing.Pool. | |
| - bpo-29884: faulthandler: Restore the old sigaltstack during teardown. | |
| Patch by Christophe Zeitouny. | |
| - bpo-25455: Fixed crashes in repr of recursive buffered file-like objects. | |
| - bpo-29800: Fix crashes in partial.__repr__ if the keys of partial.keywords | |
| are not strings. Patch by Michael Seifert. | |
| - bpo-29742: get_extra_info() raises exception if get called on closed ssl | |
| transport. Patch by Nikolay Kim. | |
| - bpo-8256: Fixed possible failing or crashing input() if attributes | |
| "encoding" or "errors" of sys.stdin or sys.stdout are not set or are not | |
| strings. | |
| - bpo-28298: Fix a bug that prevented array 'Q', 'L' and 'I' from accepting | |
| big intables (objects that have __int__) as elements. Patch by Oren | |
| Milman. | |
| - bpo-28231: The zipfile module now accepts path-like objects for external | |
| paths. | |
| - bpo-26915: index() and count() methods of collections.abc.Sequence now | |
| check identity before checking equality when do comparisons. | |
| - bpo-29615: SimpleXMLRPCDispatcher no longer chains KeyError (or any other | |
| exception) to exception(s) raised in the dispatched methods. Patch by Petr | |
| Motejlek. | |
| - bpo-30177: path.resolve(strict=False) no longer cuts the path after the | |
| first element not present in the filesystem. Patch by Antoine Pietri. | |
| IDLE | |
| ---- | |
| - bpo-15786: Fix several problems with IDLE's autocompletion box. The | |
| following should now work: clicking on selection box items; using the | |
| scrollbar; selecting an item by hitting Return. Hangs on MacOSX should no | |
| longer happen. Patch by Louie Lu. | |
| - bpo-25514: Add doc subsubsection about IDLE failure to start. Popup | |
| no-connection message directs users to this section. | |
| - bpo-30642: Fix reference leaks in IDLE tests. Patches by Louie Lu and | |
| Terry Jan Reedy. | |
| - bpo-30495: Add docstrings for textview.py and use PEP8 names. Patches by | |
| Cheryl Sabella and Terry Jan Reedy. | |
| - bpo-30290: Help-about: use pep8 names and add tests. Increase coverage to | |
| 100%. Patches by Louie Lu, Cheryl Sabella, and Terry Jan Reedy. | |
| - bpo-30303: Add _utest option to textview; add new tests. Increase coverage | |
| to 100%. Patches by Louie Lu and Terry Jan Reedy. | |
| C API | |
| ----- | |
| - bpo-27867: Function PySlice_GetIndicesEx() no longer replaced with a macro | |
| if Py_LIMITED_API is not set. | |
| Build | |
| ----- | |
| - bpo-29941: Add ``--with-assertions`` configure flag to explicitly enable C | |
| ``assert()`` checks. Defaults to off. ``--with-pydebug`` implies | |
| ``--with-assertions``. | |
| - bpo-28787: Fix out-of-tree builds of Python when configured with | |
| ``--with--dtrace``. | |
| - bpo-29243: Prevent unnecessary rebuilding of Python during ``make test``, | |
| ``make install`` and some other make targets when configured with | |
| ``--enable-optimizations``. | |
| - bpo-23404: Don't regenerate generated files based on file modification | |
| time anymore: the action is now explicit. Replace ``make touch`` with | |
| ``make regen-all``. | |
| - bpo-29643: Fix ``--enable-optimization`` didn't work. | |
| Documentation | |
| ------------- | |
| - bpo-30176: Add missing attribute related constants in curses | |
| documentation. | |
| - bpo-30052: the link targets for :func:`bytes` and :func:`bytearray` are | |
| now their respective type definitions, rather than the corresponding | |
| builtin function entries. Use :ref:`bytes <func-bytes>` and | |
| :ref:`bytearray <func-bytearray>` to reference the latter. In order to | |
| ensure this and future cross-reference updates are applied automatically, | |
| the daily documentation builds now disable the default output caching | |
| features in Sphinx. | |
| - bpo-26985: Add missing info of code object in inspect documentation. | |
| Tools/Demos | |
| ----------- | |
| - bpo-29367: python-gdb.py now supports also ``method-wrapper`` | |
| (``wrapperobject``) objects. | |
| Tests | |
| ----- | |
| - bpo-30357: test_thread: setUp() now uses support.threading_setup() and | |
| support.threading_cleanup() to wait until threads complete to avoid random | |
| side effects on following tests. Initial patch written by Grzegorz | |
| Grzywacz. | |
| - bpo-30197: Enhanced functions swap_attr() and swap_item() in the | |
| test.support module. They now work when delete replaced attribute or item | |
| inside the with statement. The old value of the attribute or item (or | |
| None if it doesn't exist) now will be assigned to the target of the "as" | |
| clause, if there is one. | |
| Windows | |
| ------- | |
| - bpo-30687: Locate msbuild.exe on Windows when building rather than | |
| vcvarsall.bat | |
| - bpo-30450: The build process on Windows no longer depends on Subversion, | |
| instead pulling external code from GitHub via a Python script. If Python | |
| 3.6 is not found on the system (via ``py -3.6``), NuGet is used to | |
| download a copy of 32-bit Python. | |
| What's New in Python 3.6.1 final? | |
| ================================= | |
| *Release date: 2017-03-21* | |
| Core and Builtins | |
| ----------------- | |
| - bpo-29723: The ``sys.path[0]`` initialization change for bpo-29139 caused | |
| a regression by revealing an inconsistency in how sys.path is initialized | |
| when executing ``__main__`` from a zipfile, directory, or other import | |
| location. The interpreter now consistently avoids ever adding the import | |
| location's parent directory to ``sys.path``, and ensures no other | |
| ``sys.path`` entries are inadvertently modified when inserting the import | |
| location named on the command line. | |
| Build | |
| ----- | |
| - bpo-27593: fix format of git information used in sys.version | |
| - Fix incompatible comment in python.h | |
| What's New in Python 3.6.1 release candidate 1? | |
| =============================================== | |
| *Release date: 2017-03-04* | |
| Core and Builtins | |
| ----------------- | |
| - bpo-28893: Set correct __cause__ for errors about invalid awaitables | |
| returned from __aiter__ and __anext__. | |
| - bpo-29683: Fixes to memory allocation in _PyCode_SetExtra. Patch by Brian | |
| Coleman. | |
| - bpo-29684: Fix minor regression of PyEval_CallObjectWithKeywords. It | |
| should raise TypeError when kwargs is not a dict. But it might cause segv | |
| when args=NULL and kwargs is not a dict. | |
| - bpo-28598: Support __rmod__ for subclasses of str being called before | |
| str.__mod__. Patch by Martijn Pieters. | |
| - bpo-29607: Fix stack_effect computation for CALL_FUNCTION_EX. Patch by | |
| Matthieu Dartiailh. | |
| - bpo-29602: Fix incorrect handling of signed zeros in complex constructor | |
| for complex subclasses and for inputs having a __complex__ method. Patch | |
| by Serhiy Storchaka. | |
| - bpo-29347: Fixed possibly dereferencing undefined pointers when creating | |
| weakref objects. | |
| - bpo-29438: Fixed use-after-free problem in key sharing dict. | |
| - bpo-29319: Prevent RunMainFromImporter overwriting sys.path[0]. | |
| - bpo-29337: Fixed possible BytesWarning when compare the code objects. | |
| Warnings could be emitted at compile time. | |
| - bpo-29327: Fixed a crash when pass the iterable keyword argument to | |
| sorted(). | |
| - bpo-29034: Fix memory leak and use-after-free in os module | |
| (path_converter). | |
| - bpo-29159: Fix regression in bytes(x) when x.__index__() raises Exception. | |
| - bpo-28932: Do not include <sys/random.h> if it does not exist. | |
| - bpo-25677: Correct the positioning of the syntax error caret for indented | |
| blocks. Based on patch by Michael Layzell. | |
| - bpo-29000: Fixed bytes formatting of octals with zero padding in alternate | |
| form. | |
| - bpo-26919: On Android, operating system data is now always encoded/decoded | |
| to/from UTF-8, instead of the locale encoding to avoid inconsistencies | |
| with os.fsencode() and os.fsdecode() which are already using UTF-8. | |
| - bpo-28991: functools.lru_cache() was susceptible to an obscure reentrancy | |
| bug triggerable by a monkey-patched len() function. | |
| - bpo-28739: f-string expressions are no longer accepted as docstrings and | |
| by ast.literal_eval() even if they do not include expressions. | |
| - bpo-28512: Fixed setting the offset attribute of SyntaxError by | |
| PyErr_SyntaxLocationEx() and PyErr_SyntaxLocationObject(). | |
| - bpo-28918: Fix the cross compilation of xxlimited when Python has been | |
| built with Py_DEBUG defined. | |
| - bpo-28731: Optimize _PyDict_NewPresized() to create correct size dict. | |
| Improve speed of dict literal with constant keys up to 30%. | |
| Library | |
| ------- | |
| - bpo-29169: Update zlib to 1.2.11. | |
| - bpo-29623: Allow use of path-like object as a single argument in | |
| ConfigParser.read(). Patch by David Ellis. | |
| - bpo-28963: Fix out of bound iteration in | |
| asyncio.Future.remove_done_callback implemented in C. | |
| - bpo-29704: asyncio.subprocess.SubprocessStreamProtocol no longer closes | |
| before all pipes are closed. | |
| - bpo-29271: Fix Task.current_task and Task.all_tasks implemented in C to | |
| accept None argument as their pure Python implementation. | |
| - bpo-29703: Fix asyncio to support instantiation of new event loops in | |
| child processes. | |
| - bpo-29376: Fix assertion error in threading._DummyThread.is_alive(). | |
| - bpo-28624: Add a test that checks that cwd parameter of Popen() accepts | |
| PathLike objects. Patch by Sayan Chowdhury. | |
| - bpo-28518: Start a transaction implicitly before a DML statement. Patch by | |
| Aviv Palivoda. | |
| - bpo-29532: Altering a kwarg dictionary passed to functools.partial() no | |
| longer affects a partial object after creation. | |
| - bpo-29110: Fix file object leak in aifc.open() when file is given as a | |
| filesystem path and is not in valid AIFF format. Patch by Anthony Zhang. | |
| - bpo-28556: Various updates to typing module: typing.Counter, | |
| typing.ChainMap, improved ABC caching, etc. Original PRs by Jelle | |
| Zijlstra, Ivan Levkivskyi, Manuel Krebber, and Łukasz Langa. | |
| - bpo-29100: Fix datetime.fromtimestamp() regression introduced in Python | |
| 3.6.0: check minimum and maximum years. | |
| - bpo-29519: Fix weakref spewing exceptions during interpreter shutdown when | |
| used with a rare combination of multiprocessing and custom codecs. | |
| - bpo-29416: Prevent infinite loop in pathlib.Path.mkdir | |
| - bpo-29444: Fixed out-of-bounds buffer access in the group() method of the | |
| match object. Based on patch by WGH. | |
| - bpo-29335: Fix subprocess.Popen.wait() when the child process has exited | |
| to a stopped instead of terminated state (ex: when under ptrace). | |
| - bpo-29290: Fix a regression in argparse that help messages would wrap at | |
| non-breaking spaces. | |
| - bpo-28735: Fixed the comparison of mock.MagickMock with mock.ANY. | |
| - bpo-29316: Restore the provisional status of typing module, add | |
| corresponding note to documentation. Patch by Ivan L. | |
| - bpo-29219: Fixed infinite recursion in the repr of uninitialized | |
| ctypes.CDLL instances. | |
| - bpo-29011: Fix an important omission by adding Deque to the typing module. | |
| - bpo-28969: Fixed race condition in C implementation of | |
| functools.lru_cache. KeyError could be raised when cached function with | |
| full cache was simultaneously called from different threads with the same | |
| uncached arguments. | |
| - bpo-29142: In urllib.request, suffixes in no_proxy environment variable | |
| with leading dots could match related hostnames again (e.g. .b.c matches | |
| a.b.c). Patch by Milan Oberkirch. | |
| - bpo-28961: Fix unittest.mock._Call helper: don't ignore the name parameter | |
| anymore. Patch written by Jiajun Huang. | |
| - bpo-29203: functools.lru_cache() now respects :pep:`468` and preserves the | |
| order of keyword arguments. f(a=1, b=2) is now cached separately from | |
| f(b=2, a=1) since both calls could potentially give different results. | |
| - bpo-15812: inspect.getframeinfo() now correctly shows the first line of a | |
| context. Patch by Sam Breese. | |
| - bpo-29094: Offsets in a ZIP file created with extern file object and modes | |
| "w" and "x" now are relative to the start of the file. | |
| - bpo-29085: Allow random.Random.seed() to use high quality OS randomness | |
| rather than the pid and time. | |
| - bpo-29061: Fixed bug in secrets.randbelow() which would hang when given a | |
| negative input. Patch by Brendan Donegan. | |
| - bpo-29079: Prevent infinite loop in pathlib.resolve() on Windows | |
| - bpo-13051: Fixed recursion errors in large or resized | |
| curses.textpad.Textbox. Based on patch by Tycho Andersen. | |
| - bpo-29119: Fix weakrefs in the pure python version of | |
| collections.OrderedDict move_to_end() method. Contributed by Andra | |
| Bogildea. | |
| - bpo-9770: curses.ascii predicates now work correctly with negative | |
| integers. | |
| - bpo-28427: old keys should not remove new values from WeakValueDictionary | |
| when collecting from another thread. | |
| - bpo-28923: Remove editor artifacts from Tix.py. | |
| - bpo-29055: Neaten-up empty population error on random.choice() by | |
| suppressing the upstream exception. | |
| - bpo-28871: Fixed a crash when deallocate deep ElementTree. | |
| - bpo-19542: Fix bugs in WeakValueDictionary.setdefault() and | |
| WeakValueDictionary.pop() when a GC collection happens in another thread. | |
| - bpo-20191: Fixed a crash in resource.prlimit() when passing a sequence | |
| that doesn't own its elements as limits. | |
| - bpo-28779: multiprocessing.set_forkserver_preload() would crash the | |
| forkserver process if a preloaded module instantiated some multiprocessing | |
| objects such as locks. | |
| - bpo-28847: dbm.dumb now supports reading read-only files and no longer | |
| writes the index file when it is not changed. | |
| - bpo-26937: The chown() method of the tarfile.TarFile class does not fail | |
| now when the grp module cannot be imported, as for example on Android | |
| platforms. | |
| IDLE | |
| ---- | |
| - bpo-29071: IDLE colors f-string prefixes (but not invalid ur prefixes). | |
| - bpo-28572: Add 10% to coverage of IDLE's test_configdialog. Update and | |
| augment description of the configuration system. | |
| Windows | |
| ------- | |
| - bpo-29579: Removes readme.txt from the installer | |
| - bpo-29326: Ignores blank lines in ._pth files (Patch by Alexey Izbyshev) | |
| - bpo-28164: Correctly handle special console filenames (patch by Eryk Sun) | |
| - bpo-29409: Implement :pep:`529` for io.FileIO (Patch by Eryk Sun) | |
| - bpo-29392: Prevent crash when passing invalid arguments into msvcrt | |
| module. | |
| - bpo-25778: winreg does not truncate string correctly (Patch by Eryk Sun) | |
| - bpo-28896: Deprecate WindowsRegistryFinder and disable it by default. | |
| C API | |
| ----- | |
| - bpo-27867: Function PySlice_GetIndicesEx() is replaced with a macro if | |
| Py_LIMITED_API is not set or set to the value between 0x03050400 and | |
| 0x03060000 (not including) or 0x03060100 or higher. | |
| - bpo-29083: Fixed the declaration of some public API functions. | |
| PyArg_VaParse() and PyArg_VaParseTupleAndKeywords() were not available in | |
| limited API. PyArg_ValidateKeywordArguments(), PyArg_UnpackTuple() and | |
| Py_BuildValue() were not available in limited API of version < 3.3 when | |
| PY_SSIZE_T_CLEAN is defined. | |
| - bpo-29058: All stable API extensions added after Python 3.2 are now | |
| available only when Py_LIMITED_API is set to the PY_VERSION_HEX value of | |
| the minimum Python version supporting this API. | |
| Documentation | |
| ------------- | |
| - bpo-28929: Link the documentation to its source file on GitHub. | |
| - bpo-25008: Document smtpd.py as effectively deprecated and add a pointer | |
| to aiosmtpd, a third-party asyncio-based replacement. | |
| - bpo-26355: Add canonical header link on each page to corresponding major | |
| version of the documentation. Patch by Matthias Bussonnier. | |
| - bpo-29349: Fix Python 2 syntax in code for building the documentation. | |
| Tests | |
| ----- | |
| - bpo-28087: Skip test_asyncore and test_eintr poll failures on macOS. Skip | |
| some tests of select.poll when running on macOS due to unresolved issues | |
| with the underlying system poll function on some macOS versions. | |
| - bpo-29571: to match the behaviour of the ``re.LOCALE`` flag, | |
| test_re.test_locale_flag now uses ``locale.getpreferredencoding(False)`` | |
| to determine the candidate encoding for the test regex (allowing it to | |
| correctly skip the test when the default locale encoding is a multi-byte | |
| encoding) | |
| - bpo-28950: Disallow -j0 to be combined with -T/-l in regrtest command line | |
| arguments. | |
| - bpo-28683: Fix the tests that bind() a unix socket and raise | |
| PermissionError on Android for a non-root user. | |
| - bpo-26939: Add the support.setswitchinterval() function to fix | |
| test_functools hanging on the Android armv7 qemu emulator. | |
| Build | |
| ----- | |
| - bpo-27593: sys.version and the platform module python_build(), | |
| python_branch(), and python_revision() functions now use git information | |
| rather than hg when building from a repo. | |
| - bpo-29572: Update Windows build and OS X installers to use OpenSSL 1.0.2k. | |
| - bpo-26851: Set Android compilation and link flags. | |
| - bpo-28768: Fix implicit declaration of function _setmode. Patch by | |
| Masayuki Yamamoto | |
| - bpo-29080: Removes hard dependency on hg.exe from PCBuild/build.bat | |
| - bpo-23903: Added missed names to PC/python3.def. | |
| - bpo-28762: lockf() is available on Android API level 24, but the F_LOCK | |
| macro is not defined in android-ndk-r13. | |
| - bpo-28538: Fix the compilation error that occurs because if_nameindex() is | |
| available on Android API level 24, but the if_nameindex structure is not | |
| defined. | |
| - bpo-20211: Do not add the directory for installing C header files and the | |
| directory for installing object code libraries to the cross compilation | |
| search paths. Original patch by Thomas Petazzoni. | |
| - bpo-28849: Do not define sys.implementation._multiarch on Android. | |
| What's New in Python 3.6.0 final? | |
| ================================= | |
| *Release date: 2016-12-23* | |
| No changes since release candidate 2 | |
| What's New in Python 3.6.0 release candidate 2? | |
| =============================================== | |
| *Release date: 2016-12-16* | |
| Core and Builtins | |
| ----------------- | |
| - bpo-28147: Fix a memory leak in split-table dictionaries: setattr() must | |
| not convert combined table into split table. Patch written by INADA Naoki. | |
| - bpo-28990: Fix asyncio SSL hanging if connection is closed before | |
| handshake is completed. (Patch by HoHo-Ho) | |
| Tools/Demos | |
| ----------- | |
| - bpo-28770: Fix python-gdb.py for fastcalls. | |
| Windows | |
| ------- | |
| - bpo-28896: Deprecate WindowsRegistryFinder. | |
| Build | |
| ----- | |
| - bpo-28898: Prevent gdb build errors due to HAVE_LONG_LONG redefinition. | |
| What's New in Python 3.6.0 release candidate 1? | |
| =============================================== | |
| *Release date: 2016-12-06* | |
| Core and Builtins | |
| ----------------- | |
| - bpo-23722: Rather than silently producing a class that doesn't support | |
| zero-argument ``super()`` in methods, failing to pass the new | |
| ``__classcell__`` namespace entry up to ``type.__new__`` now results in a | |
| ``DeprecationWarning`` and a class that supports zero-argument | |
| ``super()``. | |
| - bpo-28797: Modifying the class __dict__ inside the __set_name__ method of | |
| a descriptor that is used inside that class no longer prevents calling the | |
| __set_name__ method of other descriptors. | |
| - bpo-28782: Fix a bug in the implementation ``yield from`` when checking if | |
| the next instruction is YIELD_FROM. Regression introduced by WORDCODE | |
| (issue #26647). | |
| Library | |
| ------- | |
| - bpo-27030: Unknown escapes in re.sub() replacement template are allowed | |
| again. But they still are deprecated and will be disabled in 3.7. | |
| - bpo-28835: Fix a regression introduced in warnings.catch_warnings(): call | |
| warnings.showwarning() if it was overridden inside the context manager. | |
| - bpo-27172: To assist with upgrades from 2.7, the previously documented | |
| deprecation of ``inspect.getfullargspec()`` has been reversed. This | |
| decision may be revisited again after the Python 2.7 branch is no longer | |
| officially supported. | |
| - bpo-26273: Add new :data:`socket.TCP_CONGESTION` (Linux 2.6.13) and | |
| :data:`socket.TCP_USER_TIMEOUT` (Linux 2.6.37) constants. Patch written by | |
| Omar Sandoval. | |
| - bpo-24142: Reading a corrupt config file left configparser in an invalid | |
| state. Original patch by Florian Höch. | |
| - bpo-28843: Fix asyncio C Task to handle exceptions __traceback__. | |
| C API | |
| ----- | |
| - bpo-28808: PyUnicode_CompareWithASCIIString() now never raises exceptions. | |
| Documentation | |
| ------------- | |
| - bpo-23722: The data model reference and the porting section in the What's | |
| New guide now cover the additional ``__classcell__`` handling needed for | |
| custom metaclasses to fully support :pep:`487` and zero-argument | |
| ``super()``. | |
| Tools/Demos | |
| ----------- | |
| - bpo-28023: Fix python-gdb.py didn't support new dict implementation. | |
| What's New in Python 3.6.0 beta 4? | |
| ================================== | |
| *Release date: 2016-11-21* | |
| Core and Builtins | |
| ----------------- | |
| - bpo-28532: Show sys.version when -V option is supplied twice. | |
| - bpo-27100: The with-statement now checks for __enter__ before it checks | |
| for __exit__. This gives less confusing error messages when both methods | |
| are missing. Patch by Jonathan Ellington. | |
| - bpo-28746: Fix the set_inheritable() file descriptor method on platforms | |
| that do not have the ioctl FIOCLEX and FIONCLEX commands. | |
| - bpo-26920: Fix not getting the locale's charset upon initializing the | |
| interpreter, on platforms that do not have langinfo. | |
| - bpo-28648: Fixed crash in Py_DecodeLocale() in debug build on Mac OS X | |
| when decode astral characters. Patch by Xiang Zhang. | |
| - bpo-19398: Extra slash no longer added to sys.path components in case of | |
| empty compile-time PYTHONPATH components. | |
| - bpo-28665: Improve speed of the STORE_DEREF opcode by 40%. | |
| - bpo-28583: PyDict_SetDefault didn't combine split table when needed. Patch | |
| by Xiang Zhang. | |
| - bpo-27243: Change PendingDeprecationWarning -> DeprecationWarning. As it | |
| was agreed in the issue, __aiter__ returning an awaitable should result in | |
| PendingDeprecationWarning in 3.5 and in DeprecationWarning in 3.6. | |
| - bpo-26182: Fix a refleak in code that raises DeprecationWarning. | |
| - bpo-28721: Fix asynchronous generators aclose() and athrow() to handle | |
| StopAsyncIteration propagation properly. | |
| Library | |
| ------- | |
| - bpo-28752: Restored the __reduce__() methods of datetime objects. | |
| - bpo-28727: Regular expression patterns, _sre.SRE_Pattern objects created | |
| by re.compile(), become comparable (only x==y and x!=y operators). This | |
| change should fix the issue #18383: don't duplicate warning filters when | |
| the warnings module is reloaded (thing usually only done in unit tests). | |
| - bpo-20572: The subprocess.Popen.wait method's undocumented endtime | |
| parameter now raises a DeprecationWarning. | |
| - bpo-25659: In ctypes, prevent a crash calling the from_buffer() and | |
| from_buffer_copy() methods on abstract classes like Array. | |
| - bpo-19717: Makes Path.resolve() succeed on paths that do not exist. Patch | |
| by Vajrasky Kok | |
| - bpo-28563: Fixed possible DoS and arbitrary code execution when handle | |
| plural form selections in the gettext module. The expression parser now | |
| supports exact syntax supported by GNU gettext. | |
| - bpo-28387: Fixed possible crash in _io.TextIOWrapper deallocator when the | |
| garbage collector is invoked in other thread. Based on patch by Sebastian | |
| Cufre. | |
| - bpo-28600: Optimize loop.call_soon. | |
| - bpo-28613: Fix get_event_loop() return the current loop if called from | |
| coroutines/callbacks. | |
| - bpo-28634: Fix asyncio.isfuture() to support unittest.Mock. | |
| - bpo-26081: Fix refleak in _asyncio.Future.__iter__().throw. | |
| - bpo-28639: Fix inspect.isawaitable to always return bool Patch by Justin | |
| Mayfield. | |
| - bpo-28652: Make loop methods reject socket kinds they do not support. | |
| - bpo-28653: Fix a refleak in functools.lru_cache. | |
| - bpo-28703: Fix asyncio.iscoroutinefunction to handle Mock objects. | |
| - bpo-28704: Fix create_unix_server to support Path-like objects (PEP 519). | |
| - bpo-28720: Add collections.abc.AsyncGenerator. | |
| Documentation | |
| ------------- | |
| - bpo-28513: Documented command-line interface of zipfile. | |
| Tests | |
| ----- | |
| - bpo-28666: Now test.support.rmtree is able to remove unwritable or | |
| unreadable directories. | |
| - bpo-23839: Various caches now are cleared before running every test file. | |
| Build | |
| ----- | |
| - bpo-10656: Fix out-of-tree building on AIX. Patch by Tristan Carel and | |
| Michael Haubenwallner. | |
| - bpo-26359: Rename --with-optimiations to --enable-optimizations. | |
| - bpo-28676: Prevent missing 'getentropy' declaration warning on macOS. | |
| Patch by Gareth Rees. | |
| What's New in Python 3.6.0 beta 3? | |
| ================================== | |
| *Release date: 2016-10-31* | |
| Core and Builtins | |
| ----------------- | |
| - bpo-28128: Deprecation warning for invalid str and byte escape sequences | |
| now prints better information about where the error occurs. Patch by | |
| Serhiy Storchaka and Eric Smith. | |
| - bpo-28509: dict.update() no longer allocate unnecessary large memory. | |
| - bpo-28426: Fixed potential crash in PyUnicode_AsDecodedObject() in debug | |
| build. | |
| - bpo-28517: Fixed of-by-one error in the peephole optimizer that caused | |
| keeping unreachable code. | |
| - bpo-28214: Improved exception reporting for problematic __set_name__ | |
| attributes. | |
| - bpo-23782: Fixed possible memory leak in _PyTraceback_Add() and exception | |
| loss in PyTraceBack_Here(). | |
| - bpo-28471: Fix "Python memory allocator called without holding the GIL" | |
| crash in socket.setblocking. | |
| Library | |
| ------- | |
| - bpo-27517: LZMA compressor and decompressor no longer raise exceptions if | |
| given empty data twice. Patch by Benjamin Fogle. | |
| - bpo-28549: Fixed segfault in curses's addch() with ncurses6. | |
| - bpo-28449: tarfile.open() with mode "r" or "r:" now tries to open a tar | |
| file with compression before trying to open it without compression. | |
| Otherwise it had 50% chance failed with ignore_zeros=True. | |
| - bpo-23262: The webbrowser module now supports Firefox 36+ and derived | |
| browsers. Based on patch by Oleg Broytman. | |
| - bpo-27939: Fixed bugs in tkinter.ttk.LabeledScale and tkinter.Scale caused | |
| by representing the scale as float value internally in Tk. tkinter.IntVar | |
| now works if float value is set to underlying Tk variable. | |
| - bpo-18844: The various ways of specifying weights for random.choices() now | |
| produce the same result sequences. | |
| - bpo-28255: calendar.TextCalendar().prmonth() no longer prints a space at | |
| the start of new line after printing a month's calendar. Patch by Xiang | |
| Zhang. | |
| - bpo-20491: The textwrap.TextWrapper class now honors non-breaking spaces. | |
| Based on patch by Kaarle Ritvanen. | |
| - bpo-28353: os.fwalk() no longer fails on broken links. | |
| - bpo-28430: Fix iterator of C implemented asyncio.Future doesn't accept | |
| non-None value is passed to it.send(val). | |
| - bpo-27025: Generated names for Tkinter widgets now start by the "!" prefix | |
| for readability. | |
| - bpo-25464: Fixed HList.header_exists() in tkinter.tix module by addin a | |
| workaround to Tix library bug. | |
| - bpo-28488: shutil.make_archive() no longer adds entry "./" to ZIP archive. | |
| - bpo-25953: re.sub() now raises an error for invalid numerical group | |
| reference in replacement template even if the pattern is not found in the | |
| string. Error message for invalid group reference now includes the group | |
| index and the position of the reference. Based on patch by SilentGhost. | |
| - bpo-18219: Optimize csv.DictWriter for large number of columns. Patch by | |
| Mariatta Wijaya. | |
| - bpo-28448: Fix C implemented asyncio.Future didn't work on Windows. | |
| - bpo-28480: Fix error building socket module when multithreading is | |
| disabled. | |
| - bpo-24452: Make webbrowser support Chrome on Mac OS X. | |
| - bpo-20766: Fix references leaked by pdb in the handling of SIGINT | |
| handlers. | |
| - bpo-28492: Fix how StopIteration exception is raised in _asyncio.Future. | |
| - bpo-28500: Fix asyncio to handle async gens GC from another thread. | |
| - bpo-26923: Fix asyncio.Gather to refuse being cancelled once all children | |
| are done. Patch by Johannes Ebke. | |
| - bpo-26796: Don't configure the number of workers for default threadpool | |
| executor. Initial patch by Hans Lawrenz. | |
| - bpo-28544: Implement asyncio.Task in C. | |
| Windows | |
| ------- | |
| - bpo-28522: Fixes mishandled buffer reallocation in getpathp.c | |
| Build | |
| ----- | |
| - bpo-28444: Fix missing extensions modules when cross compiling. | |
| - bpo-28208: Update Windows build and OS X installers to use SQLite 3.14.2. | |
| - bpo-28248: Update Windows build and OS X installers to use OpenSSL 1.0.2j. | |
| Tests | |
| ----- | |
| - bpo-26944: Fix test_posix for Android where 'id -G' is entirely wrong or | |
| missing the effective gid. | |
| - bpo-28409: regrtest: fix the parser of command line arguments. | |
| What's New in Python 3.6.0 beta 2? | |
| ================================== | |
| *Release date: 2016-10-10* | |
| Core and Builtins | |
| ----------------- | |
| - bpo-28183: Optimize and cleanup dict iteration. | |
| - bpo-26081: Added C implementation of asyncio.Future. Original patch by | |
| Yury Selivanov. | |
| - bpo-28379: Added sanity checks and tests for PyUnicode_CopyCharacters(). | |
| Patch by Xiang Zhang. | |
| - bpo-28376: The type of long range iterator is now registered as Iterator. | |
| Patch by Oren Milman. | |
| - bpo-28376: Creating instances of range_iterator by calling range_iterator | |
| type now is deprecated. Patch by Oren Milman. | |
| - bpo-28376: The constructor of range_iterator now checks that step is not | |
| 0. Patch by Oren Milman. | |
| - bpo-26906: Resolving special methods of uninitialized type now causes | |
| implicit initialization of the type instead of a fail. | |
| - bpo-18287: PyType_Ready() now checks that tp_name is not NULL. Original | |
| patch by Niklas Koep. | |
| - bpo-24098: Fixed possible crash when AST is changed in process of | |
| compiling it. | |
| - bpo-28201: Dict reduces possibility of 2nd conflict in hash table when | |
| hashes have same lower bits. | |
| - bpo-28350: String constants with null character no longer interned. | |
| - bpo-26617: Fix crash when GC runs during weakref callbacks. | |
| - bpo-27942: String constants now interned recursively in tuples and | |
| frozensets. | |
| - bpo-21578: Fixed misleading error message when ImportError called with | |
| invalid keyword args. | |
| - bpo-28203: Fix incorrect type in complex(1.0, {2:3}) error message. Patch | |
| by Soumya Sharma. | |
| - bpo-28086: Single var-positional argument of tuple subtype was passed | |
| unscathed to the C-defined function. Now it is converted to exact tuple. | |
| - bpo-28214: Now __set_name__ is looked up on the class instead of the | |
| instance. | |
| - bpo-27955: Fallback on reading /dev/urandom device when the getrandom() | |
| syscall fails with EPERM, for example when blocked by SECCOMP. | |
| - bpo-28192: Don't import readline in isolated mode. | |
| - Upgrade internal unicode databases to Unicode version 9.0.0. | |
| - bpo-28131: Fix a regression in zipimport's compile_source(). zipimport | |
| should use the same optimization level as the interpreter. | |
| - bpo-28126: Replace Py_MEMCPY with memcpy(). Visual Studio can properly | |
| optimize memcpy(). | |
| - bpo-28120: Fix dict.pop() for splitted dictionary when trying to remove a | |
| "pending key" (Not yet inserted in split-table). Patch by Xiang Zhang. | |
| - bpo-26182: Raise DeprecationWarning when async and await keywords are used | |
| as variable/attribute/class/function name. | |
| Library | |
| ------- | |
| - bpo-27998: Fixed bytes path support in os.scandir() on Windows. Patch by | |
| Eryk Sun. | |
| - bpo-28317: The disassembler now decodes FORMAT_VALUE argument. | |
| - bpo-26293: Fixed writing ZIP files that starts not from the start of the | |
| file. Offsets in ZIP file now are relative to the start of the archive in | |
| conforming to the specification. | |
| - bpo-28380: unittest.mock Mock autospec functions now properly support | |
| assert_called, assert_not_called, and assert_called_once. | |
| - bpo-27181: remove statistics.geometric_mean and defer until 3.7. | |
| - bpo-28229: lzma module now supports pathlib. | |
| - bpo-28321: Fixed writing non-BMP characters with binary format in | |
| plistlib. | |
| - bpo-28225: bz2 module now supports pathlib. Initial patch by Ethan | |
| Furman. | |
| - bpo-28227: gzip now supports pathlib. Patch by Ethan Furman. | |
| - bpo-27358: Optimized merging var-keyword arguments and improved error | |
| message when passing a non-mapping as a var-keyword argument. | |
| - bpo-28257: Improved error message when passing a non-iterable as a | |
| var-positional argument. Added opcode BUILD_TUPLE_UNPACK_WITH_CALL. | |
| - bpo-28322: Fixed possible crashes when unpickle itertools objects from | |
| incorrect pickle data. Based on patch by John Leitch. | |
| - bpo-28228: imghdr now supports pathlib. | |
| - bpo-28226: compileall now supports pathlib. | |
| - bpo-28314: Fix function declaration (C flags) for the getiterator() method | |
| of xml.etree.ElementTree.Element. | |
| - bpo-28148: Stop using localtime() and gmtime() in the time module. | |
| Introduced platform independent _PyTime_localtime API that is similar to | |
| POSIX localtime_r, but available on all platforms. Patch by Ed Schouten. | |
| - bpo-28253: Fixed calendar functions for extreme months: 0001-01 and | |
| 9999-12. Methods itermonthdays() and itermonthdays2() are reimplemented so | |
| that they don't call itermonthdates() which can cause datetime.date | |
| under/overflow. | |
| - bpo-28275: Fixed possible use after free in the decompress() methods of | |
| the LZMADecompressor and BZ2Decompressor classes. Original patch by John | |
| Leitch. | |
| - bpo-27897: Fixed possible crash in sqlite3.Connection.create_collation() | |
| if pass invalid string-like object as a name. Patch by Xiang Zhang. | |
| - bpo-18844: random.choices() now has k as a keyword-only argument to | |
| improve the readability of common cases and come into line with the | |
| signature used in other languages. | |
| - bpo-18893: Fix invalid exception handling in Lib/ctypes/macholib/dyld.py. | |
| Patch by Madison May. | |
| - bpo-27611: Fixed support of default root window in the tkinter.tix module. | |
| Added the master parameter in the DisplayStyle constructor. | |
| - bpo-27348: In the traceback module, restore the formatting of exception | |
| messages like "Exception: None". This fixes a regression introduced in | |
| 3.5a2. | |
| - bpo-25651: Allow falsy values to be used for msg parameter of subTest(). | |
| - bpo-27778: Fix a memory leak in os.getrandom() when the getrandom() is | |
| interrupted by a signal and a signal handler raises a Python exception. | |
| - bpo-28200: Fix memory leak on Windows in the os module (fix | |
| path_converter() function). | |
| - bpo-25400: RobotFileParser now correctly returns default values for | |
| crawl_delay and request_rate. Initial patch by Peter Wirtz. | |
| - bpo-27932: Prevent memory leak in win32_ver(). | |
| - Fix UnboundLocalError in socket._sendfile_use_sendfile. | |
| - bpo-28075: Check for ERROR_ACCESS_DENIED in Windows implementation of | |
| os.stat(). Patch by Eryk Sun. | |
| - bpo-22493: Warning message emitted by using inline flags in the middle of | |
| regular expression now contains a (truncated) regex pattern. Patch by Tim | |
| Graham. | |
| - bpo-25270: Prevent codecs.escape_encode() from raising SystemError when an | |
| empty bytestring is passed. | |
| - bpo-28181: Get antigravity over HTTPS. Patch by Kaartic Sivaraam. | |
| - bpo-25895: Enable WebSocket URL schemes in urllib.parse.urljoin. Patch by | |
| Gergely Imreh and Markus Holtermann. | |
| - bpo-28114: Fix a crash in parse_envlist() when env contains byte strings. | |
| Patch by Eryk Sun. | |
| - bpo-27599: Fixed buffer overrun in binascii.b2a_qp() and | |
| binascii.a2b_qp(). | |
| - bpo-27906: Fix socket accept exhaustion during high TCP traffic. Patch by | |
| Kevin Conway. | |
| - bpo-28174: Handle when SO_REUSEPORT isn't properly supported. Patch by | |
| Seth Michael Larson. | |
| - bpo-26654: Inspect functools.partial in asyncio.Handle.__repr__. Patch by | |
| iceboy. | |
| - bpo-26909: Fix slow pipes IO in asyncio. Patch by INADA Naoki. | |
| - bpo-28176: Fix callbacks race in asyncio.SelectorLoop.sock_connect. | |
| - bpo-27759: Fix selectors incorrectly retain invalid file descriptors. | |
| Patch by Mark Williams. | |
| - bpo-28368: Refuse monitoring processes if the child watcher has no loop | |
| attached. Patch by Vincent Michel. | |
| - bpo-28369: Raise RuntimeError when transport's FD is used with add_reader, | |
| add_writer, etc. | |
| - bpo-28370: Speedup asyncio.StreamReader.readexactly. Patch by Коренберг | |
| Марк. | |
| - bpo-28371: Deprecate passing asyncio.Handles to run_in_executor. | |
| - bpo-28372: Fix asyncio to support formatting of non-python coroutines. | |
| - bpo-28399: Remove UNIX socket from FS before binding. Patch by Коренберг | |
| Марк. | |
| - bpo-27972: Prohibit Tasks to await on themselves. | |
| Windows | |
| ------- | |
| - bpo-28402: Adds signed catalog files for stdlib on Windows. | |
| - bpo-28333: Enables Unicode for ps1/ps2 and input() prompts. (Patch by Eryk | |
| Sun) | |
| - bpo-28251: Improvements to help manuals on Windows. | |
| - bpo-28110: launcher.msi has different product codes between 32-bit and | |
| 64-bit | |
| - bpo-28161: Opening CON for write access fails | |
| - bpo-28162: WindowsConsoleIO readall() fails if first line starts with | |
| Ctrl+Z | |
| - bpo-28163: WindowsConsoleIO fileno() passes wrong flags to _open_osfhandle | |
| - bpo-28164: _PyIO_get_console_type fails for various paths | |
| - bpo-28137: Renames Windows path file to ._pth | |
| - bpo-28138: Windows ._pth file should allow import site | |
| C API | |
| ----- | |
| - bpo-28426: Deprecated undocumented functions PyUnicode_AsEncodedObject(), | |
| PyUnicode_AsDecodedObject(), PyUnicode_AsDecodedUnicode() and | |
| PyUnicode_AsEncodedUnicode(). | |
| Build | |
| ----- | |
| - bpo-28258: Fixed build with Estonian locale (python-config and distclean | |
| targets in Makefile). Patch by Arfrever Frehtes Taifersar Arahesis. | |
| - bpo-26661: setup.py now detects system libffi with multiarch wrapper. | |
| - bpo-15819: Remove redundant include search directory option for building | |
| outside the source tree. | |
| Tests | |
| ----- | |
| - bpo-28217: Adds _testconsole module to test console input. | |
| What's New in Python 3.6.0 beta 1? | |
| ================================== | |
| *Release date: 2016-09-12* | |
| Core and Builtins | |
| ----------------- | |
| - bpo-23722: The __class__ cell used by zero-argument super() is now | |
| initialized from type.__new__ rather than __build_class__, so class | |
| methods relying on that will now work correctly when called from metaclass | |
| methods during class creation. Patch by Martin Teichmann. | |
| - bpo-25221: Fix corrupted result from PyLong_FromLong(0) when Python is | |
| compiled with NSMALLPOSINTS = 0. | |
| - bpo-27080: Implement formatting support for :pep:`515`. Initial patch by | |
| Chris Angelico. | |
| - bpo-27199: In tarfile, expose copyfileobj bufsize to improve throughput. | |
| Patch by Jason Fried. | |
| - bpo-27948: In f-strings, only allow backslashes inside the braces (where | |
| the expressions are). This is a breaking change from the 3.6 alpha | |
| releases, where backslashes are allowed anywhere in an f-string. Also, | |
| require that expressions inside f-strings be enclosed within literal | |
| braces, and not escapes like ``f'\x7b"hi"\x7d'``. | |
| - bpo-28046: Remove platform-specific directories from sys.path. | |
| - bpo-28071: Add early-out for differencing from an empty set. | |
| - bpo-25758: Prevents zipimport from unnecessarily encoding a filename | |
| (patch by Eryk Sun) | |
| - bpo-25856: The __module__ attribute of extension classes and functions now | |
| is interned. This leads to more compact pickle data with protocol 4. | |
| - bpo-27213: Rework CALL_FUNCTION* opcodes to produce shorter and more | |
| efficient bytecode. Patch by Demur Rumed, design by Serhiy Storchaka, | |
| reviewed by Serhiy Storchaka and Victor Stinner. | |
| - bpo-26331: Implement tokenizing support for :pep:`515`. Patch by Georg | |
| Brandl. | |
| - bpo-27999: Make "global after use" a SyntaxError, and ditto for nonlocal. | |
| Patch by Ivan Levkivskyi. | |
| - bpo-28003: Implement :pep:`525` -- Asynchronous Generators. | |
| - bpo-27985: Implement :pep:`526` -- Syntax for Variable Annotations. Patch | |
| by Ivan Levkivskyi. | |
| - bpo-26058: Add a new private version to the builtin dict type, incremented | |
| at each dictionary creation and at each dictionary change. Implementation | |
| of the PEP 509. | |
| - bpo-27364: A backslash-character pair that is not a valid escape sequence | |
| now generates a DeprecationWarning. Patch by Emanuel Barry. | |
| - bpo-27350: `dict` implementation is changed like PyPy. It is more compact | |
| and preserves insertion order. (Concept developed by Raymond Hettinger and | |
| patch by Inada Naoki.) | |
| - bpo-27911: Remove unnecessary error checks in | |
| ``exec_builtin_or_dynamic()``. | |
| - bpo-27078: Added BUILD_STRING opcode. Optimized f-strings evaluation. | |
| - bpo-17884: Python now requires systems with inttypes.h and stdint.h | |
| - bpo-27961: Require platforms to support ``long long``. Python hasn't | |
| compiled without ``long long`` for years, so this is basically a | |
| formality. | |
| - bpo-27355: Removed support for Windows CE. It was never finished, and | |
| Windows CE is no longer a relevant platform for Python. | |
| - Implement :pep:`523`. | |
| - bpo-27870: A left shift of zero by a large integer no longer attempts to | |
| allocate large amounts of memory. | |
| - bpo-25402: In int-to-decimal-string conversion, improve the estimate of | |
| the intermediate memory required, and remove an unnecessarily strict | |
| overflow check. Patch by Serhiy Storchaka. | |
| - bpo-27214: In long_invert, be more careful about modifying object returned | |
| by long_add, and remove an unnecessary check for small longs. Thanks Oren | |
| Milman for analysis and patch. | |
| - bpo-27506: Support passing the bytes/bytearray.translate() "delete" | |
| argument by keyword. | |
| - bpo-27812: Properly clear out a generator's frame's backreference to the | |
| generator to prevent crashes in frame.clear(). | |
| - bpo-27811: Fix a crash when a coroutine that has not been awaited is | |
| finalized with warnings-as-errors enabled. | |
| - bpo-27587: Fix another issue found by PVS-Studio: Null pointer check after | |
| use of 'def' in _PyState_AddModule(). Initial patch by Christian Heimes. | |
| - bpo-27792: The modulo operation applied to ``bool`` and other ``int`` | |
| subclasses now always returns an ``int``. Previously the return type | |
| depended on the input values. Patch by Xiang Zhang. | |
| - bpo-26984: int() now always returns an instance of exact int. | |
| - bpo-25604: Fix a minor bug in integer true division; this bug could | |
| potentially have caused off-by-one-ulp results on platforms with | |
| unreliable ldexp implementations. | |
| - bpo-24254: Make class definition namespace ordered by default. | |
| - bpo-27662: Fix an overflow check in ``List_New``: the original code was | |
| checking against ``Py_SIZE_MAX`` instead of the correct upper bound of | |
| ``Py_SSIZE_T_MAX``. Patch by Xiang Zhang. | |
| - bpo-27782: Multi-phase extension module import now correctly allows the | |
| ``m_methods`` field to be used to add module level functions to instances | |
| of non-module types returned from ``Py_create_mod``. Patch by Xiang Zhang. | |
| - bpo-27936: The round() function accepted a second None argument for some | |
| types but not for others. Fixed the inconsistency by accepting None for | |
| all numeric types. | |
| - bpo-27487: Warn if a submodule argument to "python -m" or | |
| runpy.run_module() is found in sys.modules after parent packages are | |
| imported, but before the submodule is executed. | |
| - bpo-27157: Make only type() itself accept the one-argument form. Patch by | |
| Eryk Sun and Emanuel Barry. | |
| - bpo-27558: Fix a SystemError in the implementation of "raise" statement. | |
| In a brand new thread, raise a RuntimeError since there is no active | |
| exception to reraise. Patch written by Xiang Zhang. | |
| - bpo-28008: Implement :pep:`530` -- asynchronous comprehensions. | |
| - bpo-27942: Fix memory leak in codeobject.c | |
| Library | |
| ------- | |
| - bpo-28732: Fix crash in os.spawnv() with no elements in args | |
| - bpo-28485: Always raise ValueError for negative | |
| compileall.compile_dir(workers=...) parameter, even when multithreading is | |
| unavailable. | |
| - bpo-28037: Use sqlite3_get_autocommit() instead of setting | |
| Connection->inTransaction manually. | |
| - bpo-25283: Attributes tm_gmtoff and tm_zone are now available on all | |
| platforms in the return values of time.localtime() and time.gmtime(). | |
| - bpo-24454: Regular expression match object groups are now accessible using | |
| __getitem__. "mo[x]" is equivalent to "mo.group(x)". | |
| - bpo-10740: sqlite3 no longer implicitly commit an open transaction before | |
| DDL statements. | |
| - bpo-17941: Add a *module* parameter to collections.namedtuple(). | |
| - bpo-22493: Inline flags now should be used only at the start of the | |
| regular expression. Deprecation warning is emitted if uses them in the | |
| middle of the regular expression. | |
| - bpo-26885: xmlrpc now supports unmarshalling additional data types used by | |
| Apache XML-RPC implementation for numerics and None. | |
| - bpo-28070: Fixed parsing inline verbose flag in regular expressions. | |
| - bpo-19500: Add client-side SSL session resumption to the ssl module. | |
| - bpo-28022: Deprecate ssl-related arguments in favor of SSLContext. The | |
| deprecation include manual creation of SSLSocket and certfile/keyfile (or | |
| similar) in ftplib, httplib, imaplib, smtplib, poplib and urllib. | |
| - bpo-28043: SSLContext has improved default settings: OP_NO_SSLv2, | |
| OP_NO_SSLv3, OP_NO_COMPRESSION, OP_CIPHER_SERVER_PREFERENCE, | |
| OP_SINGLE_DH_USE, OP_SINGLE_ECDH_USE and HIGH ciphers without MD5. | |
| - bpo-24693: Changed some RuntimeError's in the zipfile module to more | |
| appropriate types. Improved some error messages and debugging output. | |
| - bpo-17909: ``json.load`` and ``json.loads`` now support binary input | |
| encoded as UTF-8, UTF-16 or UTF-32. Patch by Serhiy Storchaka. | |
| - bpo-27137: the pure Python fallback implementation of | |
| ``functools.partial`` now matches the behaviour of its accelerated C | |
| counterpart for subclassing, pickling and text representation purposes. | |
| Patch by Emanuel Barry and Serhiy Storchaka. | |
| - Fix possible integer overflows and crashes in the mmap module with unusual | |
| usage patterns. | |
| - bpo-1703178: Fix the ability to pass the --link-objects option to the | |
| distutils build_ext command. | |
| - bpo-28019: itertools.count() no longer rounds non-integer step in range | |
| between 1.0 and 2.0 to 1. | |
| - bpo-18401: Pdb now supports the 'readrc' keyword argument to control | |
| whether .pdbrc files should be read. Patch by Martin Matusiak and Sam | |
| Kimbrel. | |
| - bpo-25969: Update the lib2to3 grammar to handle the unpacking | |
| generalizations added in 3.5. | |
| - bpo-14977: mailcap now respects the order of the lines in the mailcap | |
| files ("first match"), as required by RFC 1542. Patch by Michael Lazar. | |
| - bpo-28082: Convert re flag constants to IntFlag. | |
| - bpo-28025: Convert all ssl module constants to IntEnum and IntFlags. | |
| SSLContext properties now return flags and enums. | |
| - bpo-23591: Add Flag, IntFlag, and auto() to enum module. | |
| - bpo-433028: Added support of modifier spans in regular expressions. | |
| - bpo-24594: Validates persist parameter when opening MSI database | |
| - bpo-17582: xml.etree.ElementTree nows preserves whitespaces in attributes | |
| (Patch by Duane Griffin. Reviewed and approved by Stefan Behnel.) | |
| - bpo-28047: Fixed calculation of line length used for the base64 CTE in the | |
| new email policies. | |
| - bpo-27576: Fix call order in OrderedDict.__init__(). | |
| - email.generator.DecodedGenerator now supports the policy keyword. | |
| - bpo-28027: Remove undocumented modules from ``Lib/plat-*``: IN, CDROM, | |
| DLFCN, TYPES, CDIO, and STROPTS. | |
| - bpo-27445: Don't pass str(_charset) to MIMEText.set_payload(). Patch by | |
| Claude Paroz. | |
| - bpo-24277: The new email API is no longer provisional, and the docs have | |
| been reorganized and rewritten to emphasize the new API. | |
| - bpo-22450: urllib now includes an ``Accept: */*`` header among the default | |
| headers. This makes the results of REST API requests more consistent and | |
| predictable especially when proxy servers are involved. | |
| - lib2to3.pgen3.driver.load_grammar() now creates a stable cache file | |
| between runs given the same Grammar.txt input regardless of the hash | |
| randomization setting. | |
| - bpo-28005: Allow ImportErrors in encoding implementation to propagate. | |
| - bpo-26667: Support path-like objects in importlib.util. | |
| - bpo-27570: Avoid zero-length memcpy() etc calls with null source pointers | |
| in the "ctypes" and "array" modules. | |
| - bpo-22233: Break email header lines *only* on the RFC specified CR and LF | |
| characters, not on arbitrary unicode line breaks. This also fixes a bug | |
| in HTTP header parsing. | |
| - bpo-27331: The email.mime classes now all accept an optional policy | |
| keyword. | |
| - bpo-27988: Fix email iter_attachments incorrect mutation of payload list. | |
| - bpo-16113: Add SHA-3 and SHAKE support to hashlib module. | |
| - Eliminate a tautological-pointer-compare warning in _scproxy.c. | |
| - bpo-27776: The :func:`os.urandom` function does now block on Linux 3.17 | |
| and newer until the system urandom entropy pool is initialized to increase | |
| the security. This change is part of the :pep:`524`. | |
| - bpo-27778: Expose the Linux ``getrandom()`` syscall as a new | |
| :func:`os.getrandom` function. This change is part of the :pep:`524`. | |
| - bpo-27691: Fix ssl module's parsing of GEN_RID subject alternative name | |
| fields in X.509 certs. | |
| - bpo-18844: Add random.choices(). | |
| - bpo-25761: Improved error reporting about truncated pickle data in C | |
| implementation of unpickler. UnpicklingError is now raised instead of | |
| AttributeError and ValueError in some cases. | |
| - bpo-26798: Add BLAKE2 (blake2b and blake2s) to hashlib. | |
| - bpo-26032: Optimized globbing in pathlib by using os.scandir(); it is now | |
| about 1.5--4 times faster. | |
| - bpo-25596: Optimized glob() and iglob() functions in the glob module; they | |
| are now about 3--6 times faster. | |
| - bpo-27928: Add scrypt (password-based key derivation function) to hashlib | |
| module (requires OpenSSL 1.1.0). | |
| - bpo-27850: Remove 3DES from ssl module's default cipher list to counter | |
| measure sweet32 attack (CVE-2016-2183). | |
| - bpo-27766: Add ChaCha20 Poly1305 to ssl module's default cipher list. | |
| (Required OpenSSL 1.1.0 or LibreSSL). | |
| - bpo-25387: Check return value of winsound.MessageBeep. | |
| - bpo-27866: Add SSLContext.get_ciphers() method to get a list of all | |
| enabled ciphers. | |
| - bpo-27744: Add AF_ALG (Linux Kernel crypto) to socket module. | |
| - bpo-26470: Port ssl and hashlib module to OpenSSL 1.1.0. | |
| - bpo-11620: Fix support for SND_MEMORY in winsound.PlaySound. Based on a | |
| patch by Tim Lesher. | |
| - bpo-11734: Add support for IEEE 754 half-precision floats to the struct | |
| module. Based on a patch by Eli Stevens. | |
| - bpo-27919: Deprecated ``extra_path`` distribution option in distutils | |
| packaging. | |
| - bpo-23229: Add new ``cmath`` constants: ``cmath.inf`` and ``cmath.nan`` to | |
| match ``math.inf`` and ``math.nan``, and also ``cmath.infj`` and | |
| ``cmath.nanj`` to match the format used by complex repr. | |
| - bpo-27842: The csv.DictReader now returns rows of type OrderedDict. | |
| (Contributed by Steve Holden.) | |
| - Remove support for passing a file descriptor to os.access. It never worked | |
| but previously didn't raise. | |
| - bpo-12885: Fix error when distutils encounters symlink. | |
| - bpo-27881: Fixed possible bugs when setting | |
| sqlite3.Connection.isolation_level. Based on patch by Xiang Zhang. | |
| - bpo-27861: Fixed a crash in sqlite3.Connection.cursor() when a factory | |
| creates not a cursor. Patch by Xiang Zhang. | |
| - bpo-19884: Avoid spurious output on OS X with Gnu Readline. | |
| - bpo-27706: Restore deterministic behavior of random.Random().seed() for | |
| string seeds using seeding version 1. Allows sequences of calls to | |
| random() to exactly match those obtained in Python 2. Patch by Nofar | |
| Schnider. | |
| - bpo-10513: Fix a regression in Connection.commit(). Statements should not | |
| be reset after a commit. | |
| - bpo-12319: Chunked transfer encoding support added to | |
| http.client.HTTPConnection requests. The | |
| urllib.request.AbstractHTTPHandler class does not enforce a Content-Length | |
| header any more. If a HTTP request has a file or iterable body, but no | |
| Content-Length header, the library now falls back to use chunked | |
| transfer-encoding. | |
| - A new version of typing.py from https://github.com/python/typing: - | |
| Collection (only for 3.6) (Issue #27598) - Add FrozenSet to __all__ | |
| (upstream #261) - fix crash in _get_type_vars() (upstream #259) - Remove | |
| the dict constraint in ForwardRef._eval_type (upstream #252) | |
| - bpo-27832: Make ``_normalize`` parameter to ``Fraction`` constructor | |
| keyword-only, so that ``Fraction(2, 3, 4)`` now raises ``TypeError``. | |
| - bpo-27539: Fix unnormalised ``Fraction.__pow__`` result in the case of | |
| negative exponent and negative base. | |
| - bpo-21718: cursor.description is now available for queries using CTEs. | |
| - bpo-27819: In distutils sdists, simply produce the "gztar" (gzipped tar | |
| format) distributions on all platforms unless "formats" is supplied. | |
| - bpo-2466: posixpath.ismount now correctly recognizes mount points which | |
| the user does not have permission to access. | |
| - bpo-9998: On Linux, ctypes.util.find_library now looks in LD_LIBRARY_PATH | |
| for shared libraries. | |
| - bpo-27573: exit message for code.interact is now configurable. | |
| - bpo-27930: Improved behaviour of logging.handlers.QueueListener. Thanks to | |
| Paulo Andrade and Petr Viktorin for the analysis and patch. | |
| - bpo-6766: Distributed reference counting added to multiprocessing to | |
| support nesting of shared values / proxy objects. | |
| - bpo-21201: Improves readability of multiprocessing error message. Thanks | |
| to Wojciech Walczak for patch. | |
| - asyncio: Add set_protocol / get_protocol to Transports. | |
| - bpo-27456: asyncio: Set TCP_NODELAY by default. | |
| IDLE | |
| ---- | |
| - bpo-15308: Add 'interrupt execution' (^C) to Shell menu. Patch by Roger | |
| Serwy, updated by Bayard Randel. | |
| - bpo-27922: Stop IDLE tests from 'flashing' gui widgets on the screen. | |
| - bpo-27891: Consistently group and sort imports within idlelib modules. | |
| - bpo-17642: add larger font sizes for classroom projection. | |
| - Add version to title of IDLE help window. | |
| - bpo-25564: In section on IDLE -- console differences, mention that using | |
| exec means that __builtins__ is defined for each statement. | |
| - bpo-27821: Fix 3.6.0a3 regression that prevented custom key sets from | |
| being selected when no custom theme was defined. | |
| C API | |
| ----- | |
| - bpo-26900: Excluded underscored names and other private API from limited | |
| API. | |
| - bpo-26027: Add support for path-like objects in PyUnicode_FSConverter() & | |
| PyUnicode_FSDecoder(). | |
| Tests | |
| ----- | |
| - bpo-27427: Additional tests for the math module. Patch by Francisco Couzo. | |
| - bpo-27953: Skip math and cmath tests that fail on OS X 10.4 due to a poor | |
| libm implementation of tan. | |
| - bpo-26040: Improve test_math and test_cmath coverage and rigour. Patch by | |
| Jeff Allen. | |
| - bpo-27787: Call gc.collect() before checking each test for "dangling | |
| threads", since the dangling threads are weak references. | |
| Build | |
| ----- | |
| - bpo-27566: Fix clean target in freeze makefile (patch by Lisa Roach) | |
| - bpo-27705: Update message in validate_ucrtbase.py | |
| - bpo-27976: Deprecate building _ctypes with the bundled copy of libffi on | |
| non-OSX UNIX platforms. | |
| - bpo-27983: Cause lack of llvm-profdata tool when using clang as required | |
| for PGO linking to be a configure time error rather than make time when | |
| ``--with-optimizations`` is enabled. Also improve our ability to find the | |
| llvm-profdata tool on MacOS and some Linuxes. | |
| - bpo-21590: Support for DTrace and SystemTap probes. | |
| - bpo-26307: The profile-opt build now applies PGO to the built-in modules. | |
| - bpo-26359: Add the --with-optimizations flag to turn on LTO and PGO build | |
| support when available. | |
| - bpo-27917: Set platform triplets for Android builds. | |
| - bpo-25825: Update references to the $(LIBPL) installation path on AIX. | |
| This path was changed in 3.2a4. | |
| - Update OS X installer to use SQLite 3.14.1 and XZ 5.2.2. | |
| - bpo-21122: Fix LTO builds on OS X. | |
| - bpo-17128: Build OS X installer with a private copy of OpenSSL. Also | |
| provide a sample Install Certificates command script to install a set of | |
| root certificates from the third-party certifi module. | |
| Tools/Demos | |
| ----------- | |
| - bpo-27952: Get Tools/scripts/fixcid.py working with Python 3 and the | |
| current "re" module, avoid invalid Python backslash escapes, and fix a bug | |
| parsing escaped C quote signs. | |
| Windows | |
| ------- | |
| - bpo-28065: Update xz dependency to 5.2.2 and build it from source. | |
| - bpo-25144: Ensures TargetDir is set before continuing with custom install. | |
| - bpo-1602: Windows console doesn't input or print Unicode (PEP 528) | |
| - bpo-27781: Change file system encoding on Windows to UTF-8 (PEP 529) | |
| - bpo-27731: Opt-out of MAX_PATH on Windows 10 | |
| - bpo-6135: Adds encoding and errors parameters to subprocess. | |
| - bpo-27959: Adds oem encoding, alias ansi to mbcs, move aliasmbcs to codec | |
| lookup. | |
| - bpo-27982: The functions of the winsound module now accept keyword | |
| arguments. | |
| - bpo-20366: Build full text search support into SQLite on Windows. | |
| - bpo-27756: Adds new icons for Python files and processes on Windows. | |
| Designs by Cherry Wang. | |
| - bpo-27883: Update sqlite to 3.14.1.0 on Windows. | |
| What's New in Python 3.6.0 alpha 4? | |
| =================================== | |
| *Release date: 2016-08-15* | |
| Core and Builtins | |
| ----------------- | |
| - bpo-27704: Optimized creating bytes and bytearray from byte-like objects | |
| and iterables. Speed up to 3 times for short objects. Original patch by | |
| Naoki Inada. | |
| - bpo-26823: Large sections of repeated lines in tracebacks are now | |
| abbreviated as "[Previous line repeated {count} more times]" by the | |
| builtin traceback rendering. Patch by Emanuel Barry. | |
| - bpo-27574: Decreased an overhead of parsing keyword arguments in functions | |
| implemented with using Argument Clinic. | |
| - bpo-22557: Now importing already imported modules is up to 2.5 times | |
| faster. | |
| - bpo-17596: Include <wincrypt.h> to help with Min GW building. | |
| - bpo-17599: On Windows, rename the privately defined REPARSE_DATA_BUFFER | |
| structure to avoid conflicting with the definition from Min GW. | |
| - bpo-27507: Add integer overflow check in bytearray.extend(). Patch by | |
| Xiang Zhang. | |
| - bpo-27581: Don't rely on wrapping for overflow check in | |
| PySequence_Tuple(). Patch by Xiang Zhang. | |
| - bpo-1621: Avoid signed integer overflow in list and tuple operations. | |
| Patch by Xiang Zhang. | |
| - bpo-27419: Standard __import__() no longer look up "__import__" in globals | |
| or builtins for importing submodules or "from import". Fixed a crash if | |
| raise a warning about unabling to resolve package from __spec__ or | |
| __package__. | |
| - bpo-27083: Respect the PYTHONCASEOK environment variable under Windows. | |
| - bpo-27514: Make having too many statically nested blocks a SyntaxError | |
| instead of SystemError. | |
| - bpo-27366: Implemented :pep:`487` (Simpler customization of class | |
| creation). Upon subclassing, the __init_subclass__ classmethod is called | |
| on the base class. Descriptors are initialized with __set_name__ after | |
| class creation. | |
| Library | |
| ------- | |
| - bpo-26027: Add :pep:`519`/__fspath__() support to the os and os.path | |
| modules. Includes code from Jelle Zijlstra. (See also: bpo-27524) | |
| - bpo-27598: Add Collections to collections.abc. Patch by Ivan Levkivskyi, | |
| docs by Neil Girdhar. | |
| - bpo-25958: Support "anti-registration" of special methods from various | |
| ABCs, like __hash__, __iter__ or __len__. All these (and several more) | |
| can be set to None in an implementation class and the behavior will be as | |
| if the method is not defined at all. (Previously, this mechanism existed | |
| only for __hash__, to make mutable classes unhashable.) Code contributed | |
| by Andrew Barnert and Ivan Levkivskyi. | |
| - bpo-16764: Support keyword arguments to zlib.decompress(). Patch by Xiang | |
| Zhang. | |
| - bpo-27736: Prevent segfault after interpreter re-initialization due to ref | |
| count problem introduced in code for Issue #27038 in 3.6.0a3. Patch by | |
| Xiang Zhang. | |
| - bpo-25628: The *verbose* and *rename* parameters for | |
| collections.namedtuple are now keyword-only. | |
| - bpo-12345: Add mathematical constant tau to math and cmath. See also | |
| :pep:`628`. | |
| - bpo-26823: traceback.StackSummary.format now abbreviates large sections of | |
| repeated lines as "[Previous line repeated {count} more times]" (this | |
| change then further affects other traceback display operations in the | |
| module). Patch by Emanuel Barry. | |
| - bpo-27664: Add to concurrent.futures.thread.ThreadPoolExecutor() the | |
| ability to specify a thread name prefix. | |
| - bpo-27181: Add geometric_mean and harmonic_mean to statistics module. | |
| - bpo-27573: code.interact now prints an message when exiting. | |
| - bpo-6422: Add autorange method to timeit.Timer objects. | |
| - bpo-27773: Correct some memory management errors server_hostname in | |
| _ssl.wrap_socket(). | |
| - bpo-26750: unittest.mock.create_autospec() now works properly for | |
| subclasses of property() and other data descriptors. Removes the never | |
| publicly used, never documented unittest.mock.DescriptorTypes tuple. | |
| - bpo-26754: Undocumented support of general bytes-like objects as path in | |
| compile() and similar functions is now deprecated. | |
| - bpo-26800: Undocumented support of general bytes-like objects as paths in | |
| os functions is now deprecated. | |
| - bpo-26981: Add _order_ compatibility shim to enum.Enum for Python 2/3 code | |
| bases. | |
| - bpo-27661: Added tzinfo keyword argument to datetime.combine. | |
| - In the curses module, raise an error if window.getstr() or window.instr() | |
| is passed a negative value. | |
| - bpo-27783: Fix possible usage of uninitialized memory in | |
| operator.methodcaller. | |
| - bpo-27774: Fix possible Py_DECREF on unowned object in _sre. | |
| - bpo-27760: Fix possible integer overflow in binascii.b2a_qp. | |
| - bpo-27758: Fix possible integer overflow in the _csv module for large | |
| record lengths. | |
| - bpo-27568: Prevent HTTPoxy attack (CVE-2016-1000110). Ignore the | |
| HTTP_PROXY variable when REQUEST_METHOD environment is set, which | |
| indicates that the script is in CGI mode. | |
| - bpo-7063: Remove dead code from the "array" module's slice handling. Patch | |
| by Chuck. | |
| - bpo-27656: Do not assume sched.h defines any SCHED_* constants. | |
| - bpo-27130: In the "zlib" module, fix handling of large buffers (typically | |
| 4 GiB) when compressing and decompressing. Previously, inputs were | |
| limited to 4 GiB, and compression and decompression operations did not | |
| properly handle results of 4 GiB. | |
| - bpo-24773: Implemented :pep:`495` (Local Time Disambiguation). | |
| - Expose the EPOLLEXCLUSIVE constant (when it is defined) in the select | |
| module. | |
| - bpo-27567: Expose the EPOLLRDHUP and POLLRDHUP constants in the select | |
| module. | |
| - bpo-1621: Avoid signed int negation overflow in the "audioop" module. | |
| - bpo-27533: Release GIL in nt._isdir | |
| - bpo-17711: Fixed unpickling by the persistent ID with protocol 0. Original | |
| patch by Alexandre Vassalotti. | |
| - bpo-27522: Avoid an unintentional reference cycle in email.feedparser. | |
| - bpo-27512: Fix a segfault when os.fspath() called an __fspath__() method | |
| that raised an exception. Patch by Xiang Zhang. | |
| IDLE | |
| ---- | |
| - bpo-27714: text_textview and test_autocomplete now pass when re-run in the | |
| same process. This occurs when test_idle fails when run with the -w | |
| option but without -jn. Fix warning from test_config. | |
| - bpo-27621: Put query response validation error messages in the query box | |
| itself instead of in a separate messagebox. Redo tests to match. Add Mac | |
| OSX refinements. Original patch by Mark Roseman. | |
| - bpo-27620: Escape key now closes Query box as cancelled. | |
| - bpo-27609: IDLE: tab after initial whitespace should tab, not | |
| autocomplete. This fixes problem with writing docstrings at least twice | |
| indented. | |
| - bpo-27609: Explicitly return None when there are also non-None returns. In | |
| a few cases, reverse a condition and eliminate a return. | |
| - bpo-25507: IDLE no longer runs buggy code because of its tkinter imports. | |
| Users must include the same imports required to run directly in Python. | |
| - bpo-27173: Add 'IDLE Modern Unix' to the built-in key sets. Make the | |
| default key set depend on the platform. Add tests for the changes to the | |
| config module. | |
| - bpo-27452: add line counter and crc to IDLE configHandler test dump. | |
| Tests | |
| ----- | |
| - bpo-25805: Skip a test in test_pkgutil as needed that doesn't work when | |
| ``__name__ == __main__``. Patch by SilentGhost. | |
| - bpo-27472: Add test.support.unix_shell as the path to the default shell. | |
| - bpo-27369: In test_pyexpat, avoid testing an error message detail that | |
| changed in Expat 2.2.0. | |
| - bpo-27594: Prevent assertion error when running test_ast with coverage | |
| enabled: ensure code object has a valid first line number. Patch suggested | |
| by Ivan Levkivskyi. | |
| Windows | |
| ------- | |
| - bpo-27647: Update bundled Tcl/Tk to 8.6.6. | |
| - bpo-27610: Adds :pep:`514` metadata to Windows installer | |
| - bpo-27469: Adds a shell extension to the launcher so that drag and drop | |
| works correctly. | |
| - bpo-27309: Enables proper Windows styles in python[w].exe manifest. | |
| Build | |
| ----- | |
| - bpo-27713: Suppress spurious build warnings when updating importlib's | |
| bootstrap files. Patch by Xiang Zhang | |
| - bpo-25825: Correct the references to Modules/python.exp, which is required | |
| on AIX. The references were accidentally changed in 3.5.0a1. | |
| - bpo-27453: CPP invocation in configure must use CPPFLAGS. Patch by Chi | |
| Hsuan Yen. | |
| - bpo-27641: The configure script now inserts comments into the makefile to | |
| prevent the pgen and _freeze_importlib executables from being | |
| cross-compiled. | |
| - bpo-26662: Set PYTHON_FOR_GEN in configure as the Python program to be | |
| used for file generation during the build. | |
| - bpo-10910: Avoid C++ compilation errors on FreeBSD and OS X. Also update | |
| FreedBSD version checks for the original ctype UTF-8 workaround. | |
| What's New in Python 3.6.0 alpha 3? | |
| =================================== | |
| *Release date: 2016-07-11* | |
| Security | |
| -------- | |
| - bpo-27278: Fix os.urandom() implementation using getrandom() on Linux. | |
| Truncate size to INT_MAX and loop until we collected enough random bytes, | |
| instead of casting a directly Py_ssize_t to int. | |
| - bpo-22636: Avoid shell injection problems with ctypes.util.find_library(). | |
| Core and Builtins | |
| ----------------- | |
| - bpo-27473: Fixed possible integer overflow in bytes and bytearray | |
| concatenations. Patch by Xiang Zhang. | |
| - bpo-23034: The output of a special Python build with defined COUNT_ALLOCS, | |
| SHOW_ALLOC_COUNT or SHOW_TRACK_COUNT macros is now off by default. It | |
| can be re-enabled using the "-X showalloccount" option. It now outputs to | |
| stderr instead of stdout. | |
| - bpo-27443: __length_hint__() of bytearray iterators no longer return a | |
| negative integer for a resized bytearray. | |
| - bpo-27007: The fromhex() class methods of bytes and bytearray subclasses | |
| now return an instance of corresponding subclass. | |
| Library | |
| ------- | |
| - bpo-26844: Fix error message for imp.find_module() to refer to 'path' | |
| instead of 'name'. Patch by Lev Maximov. | |
| - bpo-23804: Fix SSL zero-length recv() calls to not block and not raise an | |
| error about unclean EOF. | |
| - bpo-27466: Change time format returned by http.cookie.time2netscape, | |
| confirming the netscape cookie format and making it consistent with | |
| documentation. | |
| - bpo-21708: Deprecated dbm.dumb behavior that differs from common dbm | |
| behavior: creating a database in 'r' and 'w' modes and modifying a | |
| database in 'r' mode. | |
| - bpo-26721: Change the socketserver.StreamRequestHandler.wfile attribute to | |
| implement BufferedIOBase. In particular, the write() method no longer does | |
| partial writes. | |
| - bpo-22115: Added methods trace_add, trace_remove and trace_info in the | |
| tkinter.Variable class. They replace old methods trace_variable, trace, | |
| trace_vdelete and trace_vinfo that use obsolete Tcl commands and might not | |
| work in future versions of Tcl. Fixed old tracing methods: | |
| trace_vdelete() with wrong mode no longer break tracing, trace_vinfo() now | |
| always returns a list of pairs of strings, tracing in the "u" mode now | |
| works. | |
| - bpo-26243: Only the level argument to zlib.compress() is keyword argument | |
| now. The first argument is positional-only. | |
| - bpo-27038: Expose the DirEntry type as os.DirEntry. Code patch by Jelle | |
| Zijlstra. | |
| - bpo-27186: Update os.fspath()/PyOS_FSPath() to check the return value of | |
| __fspath__() to be either str or bytes. | |
| - bpo-18726: All optional parameters of the dump(), dumps(), load() and | |
| loads() functions and JSONEncoder and JSONDecoder class constructors in | |
| the json module are now keyword-only. | |
| - bpo-27319: Methods selection_set(), selection_add(), selection_remove() | |
| and selection_toggle() of ttk.TreeView now allow passing multiple items as | |
| multiple arguments instead of passing them as a tuple. Deprecated | |
| undocumented ability of calling the selection() method with arguments. | |
| - bpo-27079: Fixed curses.ascii functions isblank(), iscntrl() and | |
| ispunct(). | |
| - bpo-27294: Numerical state in the repr for Tkinter event objects is now | |
| represented as a combination of known flags. | |
| - bpo-27177: Match objects in the re module now support index-like objects | |
| as group indices. Based on patches by Jeroen Demeyer and Xiang Zhang. | |
| - bpo-26754: Some functions (compile() etc) accepted a filename argument | |
| encoded as an iterable of integers. Now only strings and byte-like objects | |
| are accepted. | |
| - bpo-26536: socket.ioctl now supports SIO_LOOPBACK_FAST_PATH. Patch by | |
| Daniel Stokes. | |
| - bpo-27048: Prevents distutils failing on Windows when environment | |
| variables contain non-ASCII characters | |
| - bpo-27330: Fixed possible leaks in the ctypes module. | |
| - bpo-27238: Got rid of bare excepts in the turtle module. Original patch | |
| by Jelle Zijlstra. | |
| - bpo-27122: When an exception is raised within the context being managed by | |
| a contextlib.ExitStack() and one of the exit stack generators catches and | |
| raises it in a chain, do not re-raise the original exception when exiting, | |
| let the new chained one through. This avoids the :pep:`479` bug described | |
| in issue25782. | |
| - bpo-16864: sqlite3.Cursor.lastrowid now supports REPLACE statement. | |
| Initial patch by Alex LordThorsen. | |
| - bpo-26386: Fixed ttk.TreeView selection operations with item id's | |
| containing spaces. | |
| - bpo-8637: Honor a pager set by the env var MANPAGER (in preference to one | |
| set by the env var PAGER). | |
| - bpo-16182: Fix various functions in the "readline" module to use the | |
| locale encoding, and fix get_begidx() and get_endidx() to return code | |
| point indexes. | |
| - bpo-27392: Add loop.connect_accepted_socket(). Patch by Jim Fulton. | |
| IDLE | |
| ---- | |
| - bpo-27477: IDLE search dialogs now use ttk widgets. | |
| - bpo-27173: Add 'IDLE Modern Unix' to the built-in key sets. Make the | |
| default key set depend on the platform. Add tests for the changes to the | |
| config module. | |
| - bpo-27452: make command line "idle-test> python test_help.py" work. | |
| __file__ is relative when python is started in the file's directory. | |
| - bpo-27452: add line counter and crc to IDLE configHandler test dump. | |
| - bpo-27380: IDLE: add query.py with base Query dialog and ttk widgets. | |
| Module had subclasses SectionName, ModuleName, and HelpSource, which are | |
| used to get information from users by configdialog and file =>Load Module. | |
| Each subclass has itw own validity checks. Using ModuleName allows users | |
| to edit bad module names instead of starting over. Add tests and delete | |
| the two files combined into the new one. | |
| - bpo-27372: Test_idle no longer changes the locale. | |
| - bpo-27365: Allow non-ascii chars in IDLE NEWS.txt, for contributor names. | |
| - bpo-27245: IDLE: Cleanly delete custom themes and key bindings. | |
| Previously, when IDLE was started from a console or by import, a cascade | |
| of warnings was emitted. Patch by Serhiy Storchaka. | |
| - bpo-24137: Run IDLE, test_idle, and htest with tkinter default root | |
| disabled. Fix code and tests that fail with this restriction. Fix htests | |
| to not create a second and redundant root and mainloop. | |
| - bpo-27310: Fix IDLE.app failure to launch on OS X due to vestigial import. | |
| C API | |
| ----- | |
| - bpo-26754: PyUnicode_FSDecoder() accepted a filename argument encoded as | |
| an iterable of integers. Now only strings and byte-like objects are | |
| accepted. | |
| Build | |
| ----- | |
| - bpo-28066: Fix the logic that searches build directories for generated | |
| include files when building outside the source tree. | |
| - bpo-27442: Expose the Android API level that python was built against, in | |
| sysconfig.get_config_vars() as 'ANDROID_API_LEVEL'. | |
| - bpo-27434: The interpreter that runs the cross-build, found in PATH, must | |
| now be of the same feature version (e.g. 3.6) as the source being built. | |
| - bpo-26930: Update Windows builds to use OpenSSL 1.0.2h. | |
| - bpo-23968: Rename the platform directory from plat-$(MACHDEP) to | |
| plat-$(PLATFORM_TRIPLET). Rename the config directory (LIBPL) from | |
| config-$(LDVERSION) to config-$(LDVERSION)-$(PLATFORM_TRIPLET). Install | |
| the platform specific _sysconfigdata module into the platform directory | |
| and rename it to include the ABIFLAGS. | |
| - Don't use largefile support for GNU/Hurd. | |
| Tools/Demos | |
| ----------- | |
| - bpo-27332: Fixed the type of the first argument of module-level functions | |
| generated by Argument Clinic. Patch by Petr Viktorin. | |
| - bpo-27418: Fixed Tools/importbench/importbench.py. | |
| Documentation | |
| ------------- | |
| - bpo-19489: Moved the search box from the sidebar to the header and footer | |
| of each page. Patch by Ammar Askar. | |
| - bpo-27285: Update documentation to reflect the deprecation of ``pyvenv`` | |
| and normalize on the term "virtual environment". Patch by Steve Piercy. | |
| Tests | |
| ----- | |
| - bpo-27027: Added test.support.is_android that is True when this is an | |
| Android build. | |
| What's New in Python 3.6.0 alpha 2? | |
| =================================== | |
| *Release date: 2016-06-13* | |
| Security | |
| -------- | |
| - bpo-26556: Update expat to 2.1.1, fixes CVE-2015-1283. | |
| - Fix TLS stripping vulnerability in smtplib, CVE-2016-0772. Reported by | |
| Team Oststrom. | |
| - bpo-26839: On Linux, :func:`os.urandom` now calls ``getrandom()`` with | |
| ``GRND_NONBLOCK`` to fall back on reading ``/dev/urandom`` if the urandom | |
| entropy pool is not initialized yet. Patch written by Colm Buckley. | |
| Core and Builtins | |
| ----------------- | |
| - bpo-27095: Simplified MAKE_FUNCTION and removed MAKE_CLOSURE opcodes. | |
| Patch by Demur Rumed. | |
| - bpo-27190: Raise NotSupportedError if sqlite3 is older than 3.3.1. Patch | |
| by Dave Sawyer. | |
| - bpo-27286: Fixed compiling BUILD_MAP_UNPACK_WITH_CALL opcode. Calling | |
| function with generalized unpacking (PEP 448) and conflicting keyword | |
| names could cause undefined behavior. | |
| - bpo-27140: Added BUILD_CONST_KEY_MAP opcode. | |
| - bpo-27186: Add support for os.PathLike objects to open() (part of | |
| :pep:`519`). | |
| - bpo-27066: Fixed SystemError if a custom opener (for open()) returns a | |
| negative number without setting an exception. | |
| - bpo-26983: float() now always return an instance of exact float. The | |
| deprecation warning is emitted if __float__ returns an instance of a | |
| strict subclass of float. In a future versions of Python this can be an | |
| error. | |
| - bpo-27097: Python interpreter is now about 7% faster due to optimized | |
| instruction decoding. Based on patch by Demur Rumed. | |
| - bpo-26647: Python interpreter now uses 16-bit wordcode instead of | |
| bytecode. Patch by Demur Rumed. | |
| - bpo-23275: Allow assigning to an empty target list in round brackets: () = | |
| iterable. | |
| - bpo-27243: Update the __aiter__ protocol: instead of returning an | |
| awaitable that resolves to an asynchronous iterator, the asynchronous | |
| iterator should be returned directly. Doing the former will trigger a | |
| PendingDeprecationWarning. | |
| Library | |
| ------- | |
| - Comment out socket (SO_REUSEPORT) and posix (O_SHLOCK, O_EXLOCK) constants | |
| exposed on the API which are not implemented on GNU/Hurd. They would not | |
| work at runtime anyway. | |
| - bpo-27025: Generated names for Tkinter widgets are now more meaningful and | |
| recognizable. | |
| - bpo-25455: Fixed crashes in repr of recursive ElementTree.Element and | |
| functools.partial objects. | |
| - bpo-27294: Improved repr for Tkinter event objects. | |
| - bpo-20508: Improve exception message of IPv{4,6}Network.__getitem__. Patch | |
| by Gareth Rees. | |
| - bpo-21386: Implement missing IPv4Address.is_global property. It was | |
| documented since 07a5610bae9d. Initial patch by Roger Luethi. | |
| - bpo-27029: Removed deprecated support of universal newlines mode from | |
| ZipFile.open(). | |
| - bpo-27030: Unknown escapes consisting of ``'\'`` and an ASCII letter in | |
| regular expressions now are errors. The re.LOCALE flag now can be used | |
| only with bytes patterns. | |
| - bpo-27186: Add os.PathLike support to DirEntry (part of :pep:`519`). | |
| Initial patch by Jelle Zijlstra. | |
| - bpo-20900: distutils register command now decodes HTTP responses | |
| correctly. Initial patch by ingrid. | |
| - bpo-27186: Add os.PathLike support to pathlib, removing its provisional | |
| status (part of PEP 519). Initial patch by Dusty Phillips. | |
| - bpo-27186: Add support for os.PathLike objects to os.fsencode() and | |
| os.fsdecode() (part of :pep:`519`). | |
| - bpo-27186: Introduce os.PathLike and os.fspath() (part of :pep:`519`). | |
| - A new version of typing.py provides several new classes and features: | |
| @overload outside stubs, Reversible, DefaultDict, Text, ContextManager, | |
| Type[], NewType(), TYPE_CHECKING, and numerous bug fixes (note that some | |
| of the new features are not yet implemented in mypy or other static | |
| analyzers). Also classes for :pep:`492` (Awaitable, AsyncIterable, | |
| AsyncIterator) have been added (in fact they made it into 3.5.1 but were | |
| never mentioned). | |
| - bpo-25738: Stop http.server.BaseHTTPRequestHandler.send_error() from | |
| sending a message body for 205 Reset Content. Also, don't send Content | |
| header fields in responses that don't have a body. Patch by Susumu | |
| Koshiba. | |
| - bpo-21313: Fix the "platform" module to tolerate when sys.version contains | |
| truncated build information. | |
| - bpo-23883: Added missing APIs to __all__ to match the documented APIs for | |
| the following modules: cgi, mailbox, mimetypes, plistlib and smtpd. | |
| Patches by Jacek Kołodziej. | |
| - bpo-27164: In the zlib module, allow decompressing raw Deflate streams | |
| with a predefined zdict. Based on patch by Xiang Zhang. | |
| - bpo-24291: Fix wsgiref.simple_server.WSGIRequestHandler to completely | |
| write data to the client. Previously it could do partial writes and | |
| truncate data. Also, wsgiref.handler.ServerHandler can now handle stdout | |
| doing partial writes, but this is deprecated. | |
| - bpo-21272: Use _sysconfigdata.py to initialize distutils.sysconfig. | |
| - bpo-19611: :mod:`inspect` now reports the implicit ``.0`` parameters | |
| generated by the compiler for comprehension and generator expression | |
| scopes as if they were positional-only parameters called ``implicit0``. | |
| Patch by Jelle Zijlstra. | |
| - bpo-26809: Add ``__all__`` to :mod:`string`. Patch by Emanuel Barry. | |
| - bpo-26373: subprocess.Popen.communicate now correctly ignores | |
| BrokenPipeError when the child process dies before .communicate() is | |
| called in more/all circumstances. | |
| - signal, socket, and ssl module IntEnum constant name lookups now return a | |
| consistent name for values having multiple names. Ex: signal.Signals(6) | |
| now refers to itself as signal.SIGALRM rather than flipping between that | |
| and signal.SIGIOT based on the interpreter's hash randomization seed. | |
| - bpo-27167: Clarify the subprocess.CalledProcessError error message text | |
| when the child process died due to a signal. | |
| - bpo-25931: Don't define socketserver.Forking* names on platforms such as | |
| Windows that do not support os.fork(). | |
| - bpo-21776: distutils.upload now correctly handles HTTPError. Initial patch | |
| by Claudiu Popa. | |
| - bpo-26526: Replace custom parse tree validation in the parser module with | |
| a simple DFA validator. | |
| - bpo-27114: Fix SSLContext._load_windows_store_certs fails with | |
| PermissionError | |
| - bpo-18383: Avoid creating duplicate filters when using filterwarnings and | |
| simplefilter. Based on patch by Alex Shkop. | |
| - bpo-23026: winreg.QueryValueEx() now return an integer for REG_QWORD type. | |
| - bpo-26741: subprocess.Popen destructor now emits a ResourceWarning warning | |
| if the child process is still running. | |
| - bpo-27056: Optimize pickle.load() and pickle.loads(), up to 10% faster to | |
| deserialize a lot of small objects. | |
| - bpo-21271: New keyword only parameters in reset_mock call. | |
| IDLE | |
| ---- | |
| - bpo-5124: Paste with text selected now replaces the selection on X11. This | |
| matches how paste works on Windows, Mac, most modern Linux apps, and ttk | |
| widgets. Original patch by Serhiy Storchaka. | |
| - bpo-24750: Switch all scrollbars in IDLE to ttk versions. Where needed, | |
| minimal tests are added to cover changes. | |
| - bpo-24759: IDLE requires tk 8.5 and availability ttk widgets. Delete now | |
| unneeded tk version tests and code for older versions. Add test for IDLE | |
| syntax colorizer. | |
| - bpo-27239: idlelib.macosx.isXyzTk functions initialize as needed. | |
| - bpo-27262: move Aqua unbinding code, which enable context menus, to | |
| macosx. | |
| - bpo-24759: Make clear in idlelib.idle_test.__init__ that the directory is | |
| a private implementation of test.test_idle and tool for maintainers. | |
| - bpo-27196: Stop 'ThemeChanged' warnings when running IDLE tests. These | |
| persisted after other warnings were suppressed in #20567. Apply Serhiy | |
| Storchaka's update_idletasks solution to four test files. Record this | |
| additional advice in idle_test/README.txt | |
| - bpo-20567: Revise idle_test/README.txt with advice about avoiding tk | |
| warning messages from tests. Apply advice to several IDLE tests. | |
| - bpo-24225: Update idlelib/README.txt with new file names and event | |
| handlers. | |
| - bpo-27156: Remove obsolete code not used by IDLE. | |
| - bpo-27117: Make colorizer htest and turtledemo work with dark themes. Move | |
| code for configuring text widget colors to a new function. | |
| - bpo-24225: Rename many `idlelib/*.py` and `idle_test/test_*.py` files. | |
| Edit files to replace old names with new names when the old name referred | |
| to the module rather than the class it contained. See the issue and IDLE | |
| section in What's New in 3.6 for more. | |
| - bpo-26673: When tk reports font size as 0, change to size 10. Such fonts | |
| on Linux prevented the configuration dialog from opening. | |
| - bpo-21939: Add test for IDLE's percolator. Original patch by Saimadhav | |
| Heblikar. | |
| - bpo-21676: Add test for IDLE's replace dialog. Original patch by Saimadhav | |
| Heblikar. | |
| - bpo-18410: Add test for IDLE's search dialog. Original patch by Westley | |
| Martínez. | |
| - bpo-21703: Add test for undo delegator. Patch mostly by Saimadhav | |
| Heblikar . | |
| - bpo-27044: Add ConfigDialog.remove_var_callbacks to stop memory leaks. | |
| - bpo-23977: Add more asserts to test_delegator. | |
| Documentation | |
| ------------- | |
| - bpo-16484: Change the default PYTHONDOCS URL to "https:", and fix the | |
| resulting links to use lowercase. Patch by Sean Rodman, test by Kaushik | |
| Nadikuditi. | |
| - bpo-24136: Document the new :pep:`448` unpacking syntax of 3.5. | |
| - bpo-22558: Add remaining doc links to source code for Python-coded | |
| modules. Patch by Yoni Lavi. | |
| Tests | |
| ----- | |
| - bpo-25285: regrtest now uses subprocesses when the -j1 command line option | |
| is used: each test file runs in a fresh child process. Before, the -j1 | |
| option was ignored. | |
| - bpo-25285: Tools/buildbot/test.bat script now uses -j1 by default to run | |
| each test file in fresh child process. | |
| Windows | |
| ------- | |
| - bpo-27064: The py.exe launcher now defaults to Python 3. The Windows | |
| launcher ``py.exe`` no longer prefers an installed Python 2 version over | |
| Python 3 by default when used interactively. | |
| - bpo-17500: Remove unused and outdated icons. (See also: | |
| https://github.com/python/pythondotorg/issues/945) | |
| Build | |
| ----- | |
| - bpo-27229: Fix the cross-compiling pgen rule for in-tree builds. Patch by | |
| Xavier de Gaye. | |
| - bpo-26930: Update OS X 10.5+ 32-bit-only installer to build and link with | |
| OpenSSL 1.0.2h. | |
| C API | |
| ----- | |
| - bpo-27186: Add the PyOS_FSPath() function (part of :pep:`519`). | |
| - bpo-26282: PyArg_ParseTupleAndKeywords() now supports positional-only | |
| parameters. | |
| Tools/Demos | |
| ----------- | |
| - bpo-26282: Argument Clinic now supports positional-only and keyword | |
| parameters in the same function. | |
| What's New in Python 3.6.0 alpha 1? | |
| =================================== | |
| *Release date: 2016-05-16* | |
| Security | |
| -------- | |
| - bpo-26657: Fix directory traversal vulnerability with http.server on | |
| Windows. This fixes a regression that was introduced in 3.3.4rc1 and | |
| 3.4.0rc1. Based on patch by Philipp Hagemeister. | |
| - bpo-26313: ssl.py _load_windows_store_certs fails if windows cert store is | |
| empty. Patch by Baji. | |
| - bpo-25939: On Windows open the cert store readonly in | |
| ssl.enum_certificates. | |
| Core and Builtins | |
| ----------------- | |
| - bpo-20041: Fixed TypeError when frame.f_trace is set to None. Patch by | |
| Xavier de Gaye. | |
| - bpo-26168: Fixed possible refleaks in failing Py_BuildValue() with the "N" | |
| format unit. | |
| - bpo-26991: Fix possible refleak when creating a function with annotations. | |
| - bpo-27039: Fixed bytearray.remove() for values greater than 127. Based on | |
| patch by Joe Jevnik. | |
| - bpo-23640: int.from_bytes() no longer bypasses constructors for | |
| subclasses. | |
| - bpo-27005: Optimized the float.fromhex() class method for exact float. It | |
| is now 2 times faster. | |
| - bpo-18531: Single var-keyword argument of dict subtype was passed | |
| unscathed to the C-defined function. Now it is converted to exact dict. | |
| - bpo-26811: gc.get_objects() no longer contains a broken tuple with NULL | |
| pointer. | |
| - bpo-20120: Use RawConfigParser for .pypirc parsing, removing support for | |
| interpolation unintentionally added with move to Python 3. Behavior no | |
| longer does any interpolation in .pypirc files, matching behavior in | |
| Python 2.7 and Setuptools 19.0. | |
| - bpo-26249: Memory functions of the :c:func:`PyMem_Malloc` domain | |
| (:c:data:`PYMEM_DOMAIN_MEM`) now use the :ref:`pymalloc allocator | |
| <pymalloc>` rather than system :c:func:`malloc`. Applications calling | |
| :c:func:`PyMem_Malloc` without holding the GIL can now crash: use | |
| ``PYTHONMALLOC=debug`` environment variable to validate the usage of | |
| memory allocators in your application. | |
| - bpo-26802: Optimize function calls only using unpacking like | |
| ``func(*tuple)`` (no other positional argument, no keyword): avoid copying | |
| the tuple. Patch written by Joe Jevnik. | |
| - bpo-26659: Make the builtin slice type support cycle collection. | |
| - bpo-26718: super.__init__ no longer leaks memory if called multiple times. | |
| NOTE: A direct call of super.__init__ is not endorsed! | |
| - bpo-27138: Fix the doc comment for FileFinder.find_spec(). | |
| - bpo-27147: Mention :pep:`420` in the importlib docs. | |
| - bpo-25339: PYTHONIOENCODING now has priority over locale in setting the | |
| error handler for stdin and stdout. | |
| - bpo-26494: Fixed crash on iterating exhausting iterators. Affected classes | |
| are generic sequence iterators, iterators of str, bytes, bytearray, list, | |
| tuple, set, frozenset, dict, OrderedDict, corresponding views and | |
| os.scandir() iterator. | |
| - bpo-26574: Optimize ``bytes.replace(b'', b'.')`` and | |
| ``bytearray.replace(b'', b'.')``. Patch written by Josh Snider. | |
| - bpo-26581: If coding cookie is specified multiple times on a line in | |
| Python source code file, only the first one is taken to account. | |
| - bpo-19711: Add tests for reloading namespace packages. | |
| - bpo-21099: Switch applicable importlib tests to use :pep:`451` API. | |
| - bpo-26563: Debug hooks on Python memory allocators now raise a fatal error | |
| if functions of the :c:func:`PyMem_Malloc` family are called without | |
| holding the GIL. | |
| - bpo-26564: On error, the debug hooks on Python memory allocators now use | |
| the :mod:`tracemalloc` module to get the traceback where a memory block | |
| was allocated. | |
| - bpo-26558: The debug hooks on Python memory allocator | |
| :c:func:`PyObject_Malloc` now detect when functions are called without | |
| holding the GIL. | |
| - bpo-26516: Add :envvar:`PYTHONMALLOC` environment variable to set the | |
| Python memory allocators and/or install debug hooks. | |
| - bpo-26516: The :c:func:`PyMem_SetupDebugHooks` function can now also be | |
| used on Python compiled in release mode. | |
| - bpo-26516: The :envvar:`PYTHONMALLOCSTATS` environment variable can now | |
| also be used on Python compiled in release mode. It now has no effect if | |
| set to an empty string. | |
| - bpo-26516: In debug mode, debug hooks are now also installed on Python | |
| memory allocators when Python is configured without pymalloc. | |
| - bpo-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. | |
| - bpo-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. | |
| - bpo-26302: Correct behavior to reject comma as a legal character for | |
| cookie names. | |
| - bpo-26136: Upgrade the warning when a generator raises StopIteration from | |
| PendingDeprecationWarning to DeprecationWarning. Patch by Anish Shah. | |
| - bpo-26204: The compiler now ignores all constant statements: bytes, str, | |
| int, float, complex, name constants (None, False, True), Ellipsis and | |
| ast.Constant; not only str and int. For example, ``1.0`` is now ignored in | |
| ``def f(): 1.0``. | |
| - bpo-4806: Avoid masking the original TypeError exception when using star | |
| (``*``) unpacking in function calls. Based on patch by Hagen Fürstenau | |
| and Daniel Urban. | |
| - bpo-26146: Add a new kind of AST node: ``ast.Constant``. It can be used by | |
| external AST optimizers, but the compiler does not emit directly such | |
| node. | |
| - bpo-23601: Sped-up allocation of dict key objects by using Python's small | |
| object allocator. (Contributed by Julian Taylor.) | |
| - bpo-18018: Import raises ImportError instead of SystemError if a relative | |
| import is attempted without a known parent package. | |
| - bpo-25843: When compiling code, don't merge constants if they are equal | |
| but have a different types. For example, ``f1, f2 = lambda: 1, lambda: | |
| 1.0`` is now correctly compiled to two different functions: ``f1()`` | |
| returns ``1`` (``int``) and ``f2()`` returns ``1.0`` (``float``), even if | |
| ``1`` and ``1.0`` are equal. | |
| - bpo-26107: The format of the ``co_lnotab`` attribute of code objects | |
| changes to support negative line number delta. | |
| - bpo-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. | |
| - bpo-25791: If __package__ != __spec__.parent or if neither __package__ or | |
| __spec__ are defined then ImportWarning is raised. | |
| - bpo-22995: [UPDATE] Comment out the one of the pickleability tests in | |
| _PyObject_GetState() due to regressions observed in Cython-based projects. | |
| - bpo-25961: Disallowed null characters in the type name. | |
| - bpo-25973: Fix segfault when an invalid nonlocal statement binds a name | |
| starting with two underscores. | |
| - bpo-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. | |
| - bpo-20440: Massive replacing unsafe attribute setting code with special | |
| macro Py_SETREF. | |
| - bpo-25766: Special method __bytes__() now works in str subclasses. | |
| - bpo-25421: __sizeof__ methods of builtin types now use dynamic basic size. | |
| This allows sys.getsize() to work correctly with their subclasses with | |
| __slots__ defined. | |
| - bpo-25709: Fixed problem with in-place string concatenation and utf-8 | |
| cache. | |
| - bpo-5319: New Py_FinalizeEx() API allowing Python to set an exit status of | |
| 120 on failure to flush buffered streams. | |
| - bpo-25485: telnetlib.Telnet is now a context manager. | |
| - bpo-24097: Fixed crash in object.__reduce__() if slot name is freed inside | |
| __getattr__. | |
| - bpo-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. | |
| - bpo-25630: Fix a possible segfault during argument parsing in functions | |
| that accept filesystem paths. | |
| - bpo-23564: Fixed a partially broken sanity check in the _posixsubprocess | |
| internals regarding how fds_to_pass were passed to the child. The bug had | |
| no actual impact as subprocess.py already avoided it. | |
| - bpo-25388: Fixed tokenizer crash when processing undecodable source code | |
| with a null byte. | |
| - bpo-25462: The hash of the key now is calculated only once in most | |
| operations in C implementation of OrderedDict. | |
| - bpo-22995: Default implementation of __reduce__ and __reduce_ex__ now | |
| rejects builtin types with not defined __new__. | |
| - bpo-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. | |
| - bpo-25555: Fix parser and AST: fill lineno and col_offset of "arg" node | |
| when compiling AST from Python objects. | |
| - bpo-24726: Fixed a crash and leaking NULL in repr() of OrderedDict that | |
| was mutated by direct calls of dict methods. | |
| - bpo-25449: Iterating OrderedDict with keys with unstable hash now raises | |
| KeyError in C implementations as well as in Python implementation. | |
| - bpo-25395: Fixed crash when highly nested OrderedDict structures were | |
| garbage collected. | |
| - bpo-25401: Optimize bytes.fromhex() and bytearray.fromhex(): they are now | |
| between 2x and 3.5x faster. | |
| - bpo-25399: Optimize bytearray % args using the new private _PyBytesWriter | |
| API. Formatting is now between 2.5 and 5 times faster. | |
| - bpo-25274: sys.setrecursionlimit() now raises a RecursionError if the new | |
| recursion limit is too low depending at the current recursion depth. | |
| Modify also the "lower-water mark" formula to make it monotonic. This mark | |
| is used to decide when the overflowed flag of the thread state is reset. | |
| - bpo-24402: Fix input() to prompt to the redirected stdout when | |
| sys.stdout.fileno() fails. | |
| - bpo-25349: Optimize bytes % args using the new private _PyBytesWriter API. | |
| Formatting is now up to 2 times faster. | |
| - bpo-24806: Prevent builtin types that are not allowed to be subclassed | |
| from being subclassed through multiple inheritance. | |
| - bpo-25301: The UTF-8 decoder is now up to 15 times as fast for error | |
| handlers: ``ignore``, ``replace`` and ``surrogateescape``. | |
| - bpo-24848: Fixed a number of bugs in UTF-7 decoding of misformed data. | |
| - bpo-25267: The UTF-8 encoder is now up to 75 times as fast for error | |
| handlers: ``ignore``, ``replace``, ``surrogateescape``, ``surrogatepass``. | |
| Patch co-written with Serhiy Storchaka. | |
| - bpo-25280: Import trace messages emitted in verbose (-v) mode are no | |
| longer formatted twice. | |
| - bpo-25227: Optimize ASCII and latin1 encoders with the ``surrogateescape`` | |
| error handler: the encoders are now up to 3 times as fast. Initial patch | |
| written by Serhiy Storchaka. | |
| - bpo-25003: On Solaris 11.3 or newer, os.urandom() now uses the getrandom() | |
| function instead of the getentropy() function. The getentropy() function | |
| is blocking to generate very good quality entropy, os.urandom() doesn't | |
| need such high-quality entropy. | |
| - bpo-9232: Modify Python's grammar to allow trailing commas in the argument | |
| list of a function declaration. For example, "def f(\*, a = 3,): pass" is | |
| now legal. Patch from Mark Dickinson. | |
| - bpo-24965: Implement :pep:`498` "Literal String Interpolation". This | |
| allows you to embed expressions inside f-strings, which are converted to | |
| normal strings at run time. Given x=3, then f'value={x}' == 'value=3'. | |
| Patch by Eric V. Smith. | |
| - bpo-26478: Fix semantic bugs when using binary operators with dictionary | |
| views and tuples. | |
| - bpo-26171: Fix possible integer overflow and heap corruption in | |
| zipimporter.get_data(). | |
| - bpo-25660: Fix TAB key behaviour in REPL with readline. | |
| - bpo-26288: Optimize PyLong_AsDouble. | |
| - bpo-26289: Optimize floor and modulo division for single-digit longs. | |
| Microbenchmarks show 2-2.5x improvement. Built-in 'divmod' function is | |
| now also ~10% faster. (See also: bpo-26315) | |
| - bpo-25887: Raise a RuntimeError when a coroutine object is awaited more | |
| than once. | |
| Library | |
| ------- | |
| - bpo-27057: Fix os.set_inheritable() on Android, ioctl() is blocked by | |
| SELinux and fails with EACCESS. The function now falls back to fcntl(). | |
| Patch written by Michał Bednarski. | |
| - bpo-27014: Fix infinite recursion using typing.py. Thanks to Kalle Tuure! | |
| - bpo-27031: Removed dummy methods in Tkinter widget classes: tk_menuBar() | |
| and tk_bindForTraversal(). | |
| - bpo-14132: Fix urllib.request redirect handling when the target only has a | |
| query string. Original fix by Ján Janech. | |
| - bpo-17214: The "urllib.request" module now percent-encodes non-ASCII bytes | |
| found in redirect target URLs. Some servers send Location header fields | |
| with non-ASCII bytes, but "http.client" requires the request target to be | |
| ASCII-encodable, otherwise a UnicodeEncodeError is raised. Based on patch | |
| by Christian Heimes. | |
| - bpo-27033: The default value of the decode_data parameter for | |
| smtpd.SMTPChannel and smtpd.SMTPServer constructors is changed to False. | |
| - bpo-27034: Removed deprecated class asynchat.fifo. | |
| - bpo-26870: Added readline.set_auto_history(), which can stop entries being | |
| automatically added to the history list. Based on patch by Tyler | |
| Crompton. | |
| - bpo-26039: zipfile.ZipFile.open() can now be used to write data into a ZIP | |
| file, as well as for extracting data. Patch by Thomas Kluyver. | |
| - bpo-26892: Honor debuglevel flag in urllib.request.HTTPHandler. Patch | |
| contributed by Chi Hsuan Yen. | |
| - bpo-22274: In the subprocess module, allow stderr to be redirected to | |
| stdout even when stdout is not redirected. Patch by Akira Li. | |
| - bpo-26807: mock_open 'files' no longer error on readline at end of file. | |
| Patch from Yolanda Robla. | |
| - bpo-25745: Fixed leaking a userptr in curses panel destructor. | |
| - bpo-26977: Removed unnecessary, and ignored, call to sum of squares helper | |
| in statistics.pvariance. | |
| - bpo-26002: Use bisect in statistics.median instead of a linear search. | |
| Patch by Upendra Kuma. | |
| - bpo-25974: Make use of new Decimal.as_integer_ratio() method in statistics | |
| module. Patch by Stefan Krah. | |
| - bpo-26996: Add secrets module as described in :pep:`506`. | |
| - bpo-26881: The modulefinder module now supports extended opcode arguments. | |
| - bpo-23815: Fixed crashes related to directly created instances of types in | |
| _tkinter and curses.panel modules. | |
| - bpo-17765: weakref.ref() no longer silently ignores keyword arguments. | |
| Patch by Georg Brandl. | |
| - bpo-26873: xmlrpc now raises ResponseError on unsupported type tags | |
| instead of silently return incorrect result. | |
| - bpo-26915: The __contains__ methods in the collections ABCs now check for | |
| identity before checking equality. This better matches the behavior of | |
| the concrete classes, allows sensible handling of NaNs, and makes it | |
| easier to reason about container invariants. | |
| - bpo-26711: Fixed the comparison of plistlib.Data with other types. | |
| - bpo-24114: Fix an uninitialized variable in `ctypes.util`. The bug only | |
| occurs on SunOS when the ctypes implementation searches for the `crle` | |
| program. Patch by Xiang Zhang. Tested on SunOS by Kees Bos. | |
| - bpo-26864: In urllib.request, change the proxy bypass host checking | |
| against no_proxy to be case-insensitive, and to not match unrelated host | |
| names that happen to have a bypassed hostname as a suffix. Patch by Xiang | |
| Zhang. | |
| - bpo-24902: Print server URL on http.server startup. Initial patch by | |
| Felix Kaiser. | |
| - bpo-25788: fileinput.hook_encoded() now supports an "errors" argument for | |
| passing to open. Original patch by Joseph Hackman. | |
| - bpo-26634: recursive_repr() now sets __qualname__ of wrapper. Patch by | |
| Xiang Zhang. | |
| - bpo-26804: urllib.request will prefer lower_case proxy environment | |
| variables over UPPER_CASE or Mixed_Case ones. Patch contributed by | |
| Hans-Peter Jansen. | |
| - bpo-26837: assertSequenceEqual() now correctly outputs non-stringified | |
| differing items (like bytes in the -b mode). This affects | |
| assertListEqual() and assertTupleEqual(). | |
| - bpo-26041: Remove "will be removed in Python 3.7" from deprecation | |
| messages of platform.dist() and platform.linux_distribution(). Patch by | |
| Kumaripaba Miyurusara Athukorala. | |
| - bpo-26822: itemgetter, attrgetter and methodcaller objects no longer | |
| silently ignore keyword arguments. | |
| - bpo-26733: Disassembling a class now disassembles class and static | |
| methods. Patch by Xiang Zhang. | |
| - bpo-26801: Fix error handling in :func:`shutil.get_terminal_size`, catch | |
| :exc:`AttributeError` instead of :exc:`NameError`. Patch written by | |
| Emanuel Barry. | |
| - bpo-24838: tarfile's ustar and gnu formats now correctly calculate name | |
| and link field limits for multibyte character encodings like utf-8. | |
| - bpo-26717: Stop encoding Latin-1-ized WSGI paths with UTF-8. Patch by | |
| Anthony Sottile. | |
| - bpo-26782: Add STARTUPINFO to subprocess.__all__ on Windows. | |
| - bpo-26404: Add context manager to socketserver. Patch by Aviv Palivoda. | |
| - bpo-26735: Fix :func:`os.urandom` on Solaris 11.3 and newer when reading | |
| more than 1,024 bytes: call ``getrandom()`` multiple times with a limit of | |
| 1024 bytes per call. | |
| - bpo-26585: Eliminate http.server._quote_html() and use | |
| html.escape(quote=False). Patch by Xiang Zhang. | |
| - bpo-26685: Raise OSError if closing a socket fails. | |
| - bpo-16329: Add .webm to mimetypes.types_map. Patch by Giampaolo Rodola'. | |
| - bpo-13952: Add .csv to mimetypes.types_map. Patch by Geoff Wilson. | |
| - bpo-26587: the site module now allows .pth files to specify files to be | |
| added to sys.path (e.g. zip files). | |
| - bpo-25609: Introduce contextlib.AbstractContextManager and | |
| typing.ContextManager. | |
| - bpo-26709: Fixed Y2038 problem in loading binary PLists. | |
| - bpo-23735: Handle terminal resizing with Readline 6.3+ by installing our | |
| own SIGWINCH handler. Patch by Eric Price. | |
| - bpo-25951: Change SSLSocket.sendall() to return None, as explicitly | |
| documented for plain socket objects. Patch by Aviv Palivoda. | |
| - bpo-26586: In http.server, respond with "413 Request header fields too | |
| large" if there are too many header fields to parse, rather than killing | |
| the connection and raising an unhandled exception. Patch by Xiang Zhang. | |
| - bpo-26676: Added missing XMLPullParser to ElementTree.__all__. | |
| - bpo-22854: Change BufferedReader.writable() and BufferedWriter.readable() | |
| to always return False. | |
| - bpo-26492: Exhausted iterator of array.array now conforms with the | |
| behavior of iterators of other mutable sequences: it lefts exhausted even | |
| if iterated array is extended. | |
| - bpo-26641: doctest.DocFileTest and doctest.testfile() now support packages | |
| (module splitted into multiple directories) for the package parameter. | |
| - bpo-25195: Fix a regression in mock.MagicMock. _Call is a subclass of | |
| tuple (changeset 3603bae63c13 only works for classes) so we need to | |
| implement __ne__ ourselves. Patch by Andrew Plummer. | |
| - bpo-26644: Raise ValueError rather than SystemError when a negative length | |
| is passed to SSLSocket.recv() or read(). | |
| - bpo-23804: Fix SSL recv(0) and read(0) methods to return zero bytes | |
| instead of up to 1024. | |
| - bpo-26616: Fixed a bug in datetime.astimezone() method. | |
| - bpo-26637: The :mod:`importlib` module now emits an :exc:`ImportError` | |
| rather than a :exc:`TypeError` if :func:`__import__` is tried during the | |
| Python shutdown process but :data:`sys.path` is already cleared (set to | |
| ``None``). | |
| - bpo-21925: :func:`warnings.formatwarning` now catches exceptions when | |
| calling :func:`linecache.getline` and | |
| :func:`tracemalloc.get_object_traceback` to be able to log | |
| :exc:`ResourceWarning` emitted late during the Python shutdown process. | |
| - bpo-23848: On Windows, faulthandler.enable() now also installs an | |
| exception handler to dump the traceback of all Python threads on any | |
| Windows exception, not only on UNIX signals (SIGSEGV, SIGFPE, SIGABRT). | |
| - bpo-26530: Add C functions :c:func:`_PyTraceMalloc_Track` and | |
| :c:func:`_PyTraceMalloc_Untrack` to track memory blocks using the | |
| :mod:`tracemalloc` module. Add :c:func:`_PyTraceMalloc_GetTraceback` to | |
| get the traceback of an object. | |
| - bpo-26588: The _tracemalloc now supports tracing memory allocations of | |
| multiple address spaces (domains). | |
| - bpo-24266: Ctrl+C during Readline history search now cancels the search | |
| mode when compiled with Readline 7. | |
| - bpo-26590: Implement a safe finalizer for the _socket.socket type. It now | |
| releases the GIL to close the socket. | |
| - bpo-18787: spwd.getspnam() now raises a PermissionError if the user | |
| doesn't have privileges. | |
| - bpo-26560: Avoid potential ValueError in BaseHandler.start_response. | |
| Initial patch by Peter Inglesby. | |
| - bpo-26567: Add a new function :c:func:`PyErr_ResourceWarning` function to | |
| pass the destroyed object. Add a *source* attribute to | |
| :class:`warnings.WarningMessage`. Add warnings._showwarnmsg() which uses | |
| tracemalloc to get the traceback where source object was allocated. | |
| - bpo-26569: Fix :func:`pyclbr.readmodule` and :func:`pyclbr.readmodule_ex` | |
| to support importing packages. | |
| - bpo-26499: Account for remaining Content-Length in HTTPResponse.readline() | |
| and read1(). Based on patch by Silent Ghost. Also document that | |
| HTTPResponse now supports these methods. | |
| - bpo-25320: Handle sockets in directories unittest discovery is scanning. | |
| Patch from Victor van den Elzen. | |
| - bpo-16181: cookiejar.http2time() now returns None if year is higher than | |
| datetime.MAXYEAR. | |
| - bpo-26513: Fixes platform module detection of Windows Server | |
| - bpo-23718: Fixed parsing time in week 0 before Jan 1. Original patch by | |
| Tamás Bence Gedai. | |
| - bpo-26323: Add Mock.assert_called() and Mock.assert_called_once() methods | |
| to unittest.mock. Patch written by Amit Saha. | |
| - bpo-20589: Invoking Path.owner() and Path.group() on Windows now raise | |
| NotImplementedError instead of ImportError. | |
| - bpo-26177: Fixed the keys() method for Canvas and Scrollbar widgets. | |
| - bpo-15068: Got rid of excessive buffering in fileinput. The bufsize | |
| parameter is now deprecated and ignored. | |
| - bpo-19475: Added an optional argument timespec to the datetime isoformat() | |
| method to choose the precision of the time component. | |
| - bpo-2202: Fix UnboundLocalError in | |
| AbstractDigestAuthHandler.get_algorithm_impls. Initial patch by Mathieu | |
| Dupuy. | |
| - bpo-26167: Minimized overhead in copy.copy() and copy.deepcopy(). | |
| Optimized copying and deepcopying bytearrays, NotImplemented, slices, | |
| short lists, tuples, dicts, sets. | |
| - bpo-25718: Fixed pickling and copying the accumulate() iterator with total | |
| is None. | |
| - bpo-26475: Fixed debugging output for regular expressions with the (?x) | |
| flag. | |
| - bpo-26482: Allowed pickling recursive dequeues. | |
| - bpo-26335: Make mmap.write() return the number of bytes written like other | |
| write methods. Patch by Jakub Stasiak. | |
| - bpo-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. | |
| - bpo-26385: Remove the file if the internal open() call in | |
| NamedTemporaryFile() fails. Patch by Silent Ghost. | |
| - bpo-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. | |
| - bpo-25913: Leading ``<~`` is optional now in base64.a85decode() with | |
| adobe=True. Patch by Swati Jaiswal. | |
| - bpo-26186: Remove an invalid type check in importlib.util.LazyLoader. | |
| - bpo-26367: importlib.__import__() raises ImportError like | |
| builtins.__import__() when ``level`` is specified but without an | |
| accompanying package specified. | |
| - bpo-26309: In the "socketserver" module, shut down the request (closing | |
| the connected socket) when verify_request() returns false. Patch by Aviv | |
| Palivoda. | |
| - bpo-23430: Change the socketserver module to only catch exceptions raised | |
| from a request handler that are derived from Exception (instead of | |
| BaseException). Therefore SystemExit and KeyboardInterrupt no longer | |
| trigger the handle_error() method, and will now to stop a single-threaded | |
| server. | |
| - bpo-25995: os.walk() no longer uses FDs proportional to the tree depth. | |
| - bpo-25994: Added the close() method and the support of the context manager | |
| protocol for the os.scandir() iterator. | |
| - bpo-23992: multiprocessing: make MapResult not fail-fast upon exception. | |
| - bpo-26243: Support keyword arguments to zlib.compress(). Patch by Aviv | |
| Palivoda. | |
| - bpo-26117: The os.scandir() iterator now closes file descriptor not only | |
| when the iteration is finished, but when it was failed with error. | |
| - bpo-25949: __dict__ for an OrderedDict instance is now created only when | |
| needed. | |
| - bpo-25911: Restored support of bytes paths in os.walk() on Windows. | |
| - bpo-26045: Add UTF-8 suggestion to error message when posting a | |
| non-Latin-1 string with http.client. | |
| - bpo-26039: Added zipfile.ZipInfo.from_file() and zipinfo.ZipInfo.is_dir(). | |
| Patch by Thomas Kluyver. | |
| - bpo-12923: Reset FancyURLopener's redirect counter even if there is an | |
| exception. Based on patches by Brian Brazil and Daniel Rocco. | |
| - bpo-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. | |
| - bpo-26202: copy.deepcopy() now correctly copies range() objects with | |
| non-atomic attributes. | |
| - bpo-23076: Path.glob() now raises a ValueError if it's called with an | |
| invalid pattern. Patch by Thomas Nyberg. | |
| - bpo-19883: Fixed possible integer overflows in zipimport. | |
| - bpo-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. | |
| - bpo-26099: The site module now writes an error into stderr if | |
| sitecustomize module can be imported but executing the module raise an | |
| ImportError. Same change for usercustomize. | |
| - bpo-26147: xmlrpc now works with strings not encodable with used non-UTF-8 | |
| encoding. | |
| - bpo-25935: Garbage collector now breaks reference loops with OrderedDict. | |
| - bpo-16620: Fixed AttributeError in msilib.Directory.glob(). | |
| - bpo-26013: Added compatibility with broken protocol 2 pickles created in | |
| old Python 3 versions (3.4.3 and lower). | |
| - bpo-26129: Deprecated accepting non-integers in grp.getgrgid(). | |
| - bpo-25850: Use cross-compilation by default for 64-bit Windows. | |
| - bpo-25822: Add docstrings to the fields of urllib.parse results. Patch | |
| contributed by Swati Jaiswal. | |
| - bpo-22642: Convert trace module option parsing mechanism to argparse. | |
| Patch contributed by SilentGhost. | |
| - bpo-24705: Fix sysconfig._parse_makefile not expanding ${} vars appearing | |
| before $() vars. | |
| - bpo-26069: Remove the deprecated apis in the trace module. | |
| - bpo-22138: Fix mock.patch behavior when patching descriptors. Restore | |
| original values after patching. Patch contributed by Sean McCully. | |
| - bpo-25672: In the ssl module, enable the SSL_MODE_RELEASE_BUFFERS mode | |
| option if it is safe to do so. | |
| - bpo-26012: Don't traverse into symlinks for ``**`` pattern in | |
| pathlib.Path.[r]glob(). | |
| - bpo-24120: Ignore PermissionError when traversing a tree with | |
| pathlib.Path.[r]glob(). Patch by Ulrich Petri. | |
| - bpo-21815: Accept ] characters in the data portion of imap responses, in | |
| order to handle the flags with square brackets accepted and produced by | |
| servers such as gmail. | |
| - bpo-25447: fileinput now uses sys.stdin as-is if it does not have a buffer | |
| attribute (restores backward compatibility). | |
| - bpo-25971: Optimized creating Fractions from floats by 2 times and from | |
| Decimals by 3 times. | |
| - bpo-25802: Document as deprecated the remaining implementations of | |
| importlib.abc.Loader.load_module(). | |
| - bpo-25928: Add Decimal.as_integer_ratio(). | |
| - bpo-25447: Copying the lru_cache() wrapper object now always works, | |
| independently from the type of the wrapped object (by returning the | |
| original object unchanged). | |
| - bpo-25768: Have the functions in compileall return booleans instead of | |
| ints and add proper documentation and tests for the return values. | |
| - bpo-24103: Fixed possible use after free in ElementTree.XMLPullParser. | |
| - bpo-25860: os.fwalk() no longer skips remaining directories when error | |
| occurs. Original patch by Samson Lee. | |
| - bpo-25914: Fixed and simplified OrderedDict.__sizeof__. | |
| - bpo-25869: Optimized deepcopying ElementTree; it is now 20 times faster. | |
| - bpo-25873: Optimized iterating ElementTree. Iterating elements | |
| Element.iter() is now 40% faster, iterating text Element.itertext() is now | |
| up to 2.5 times faster. | |
| - bpo-25902: Fixed various refcount issues in ElementTree iteration. | |
| - bpo-22227: The TarFile iterator is reimplemented using generator. This | |
| implementation is simpler that using class. | |
| - bpo-25638: Optimized ElementTree.iterparse(); it is now 2x faster. | |
| Optimized ElementTree parsing; it is now 10% faster. | |
| - bpo-25761: Improved detecting errors in broken pickle data. | |
| - bpo-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. | |
| - bpo-24903: Fix regression in number of arguments compileall accepts when | |
| '-d' is specified. The check on the number of arguments has been dropped | |
| completely as it never worked correctly anyway. | |
| - bpo-25764: In the subprocess module, preserve any exception caused by | |
| fork() failure when preexec_fn is used. | |
| - bpo-25771: Tweak the exception message for importlib.util.resolve_name() | |
| when 'package' isn't specified but necessary. | |
| - bpo-6478: _strptime's regexp cache now is reset after changing timezone | |
| with time.tzset(). | |
| - bpo-14285: When executing a package with the "python -m package" option, | |
| and package initialization fails, a proper traceback is now reported. The | |
| "runpy" module now lets exceptions from package initialization pass back | |
| to the caller, rather than raising ImportError. | |
| - bpo-19771: Also in runpy and the "-m" option, omit the irrelevant message | |
| ". . . is a package and cannot be directly executed" if the package could | |
| not even be initialized (e.g. due to a bad ``*.pyc`` file). | |
| - bpo-25177: Fixed problem with the mean of very small and very large | |
| numbers. As a side effect, statistics.mean and statistics.variance should | |
| be significantly faster. | |
| - bpo-25718: Fixed copying object with state with boolean value is false. | |
| - bpo-10131: Fixed deep copying of minidom documents. Based on patch by | |
| Marian Ganisin. | |
| - bpo-7990: dir() on ElementTree.Element now lists properties: "tag", | |
| "text", "tail" and "attrib". Original patch by Santoso Wijaya. | |
| - bpo-25725: Fixed a reference leak in pickle.loads() when unpickling | |
| invalid data including tuple instructions. | |
| - bpo-25663: In the Readline completer, avoid listing duplicate global | |
| names, and search the global namespace before searching builtins. | |
| - bpo-25688: Fixed file leak in ElementTree.iterparse() raising an error. | |
| - bpo-23914: Fixed SystemError raised by unpickler on broken pickle data. | |
| - bpo-25691: Fixed crash on deleting ElementTree.Element attributes. | |
| - bpo-25624: ZipFile now always writes a ZIP_STORED header for directory | |
| entries. Patch by Dingyuan Wang. | |
| - bpo-25626: Change three zlib functions to accept sizes that fit in | |
| Py_ssize_t, but internally cap those sizes to UINT_MAX. This resolves a | |
| regression in 3.5 where GzipFile.read() failed to read chunks larger than | |
| 2 or 4 GiB. The change affects the zlib.Decompress.decompress() | |
| max_length parameter, the zlib.decompress() bufsize parameter, and the | |
| zlib.Decompress.flush() length parameter. | |
| - bpo-25583: Avoid incorrect errors raised by os.makedirs(exist_ok=True) | |
| when the OS gives priority to errors such as EACCES over EEXIST. | |
| - bpo-25593: Change semantics of EventLoop.stop() in asyncio. | |
| - bpo-6973: When we know a subprocess.Popen process has died, do not allow | |
| the send_signal(), terminate(), or kill() methods to do anything as they | |
| could potentially signal a different process. | |
| - bpo-23883: Added missing APIs to __all__ to match the documented APIs for | |
| the following modules: calendar, csv, enum, fileinput, ftplib, logging, | |
| optparse, tarfile, threading and wave. Also added a | |
| test.support.check__all__() helper. Patches by Jacek Kołodziej, Mauro S. | |
| M. Rodrigues and Joel Taddei. | |
| - bpo-25590: In the Readline completer, only call getattr() once per | |
| attribute. Also complete names of attributes such as properties and slots | |
| which are listed by dir() but not yet created on an instance. | |
| - bpo-25498: Fix a crash when garbage-collecting ctypes objects created by | |
| wrapping a memoryview. This was a regression made in 3.5a1. Based on | |
| patch by Eryksun. | |
| - bpo-25584: Added "escape" to the __all__ list in the glob module. | |
| - bpo-25584: Fixed recursive glob() with patterns starting with ``**``. | |
| - bpo-25446: Fix regression in smtplib's AUTH LOGIN support. | |
| - bpo-18010: Fix the pydoc web server's module search function to handle | |
| exceptions from importing packages. | |
| - bpo-25554: Got rid of circular references in regular expression parsing. | |
| - bpo-18973: Command-line interface of the calendar module now uses argparse | |
| instead of optparse. | |
| - bpo-25510: fileinput.FileInput.readline() now returns b'' instead of '' at | |
| the end if the FileInput was opened with binary mode. Patch by Ryosuke | |
| Ito. | |
| - bpo-25503: Fixed inspect.getdoc() for inherited docstrings of properties. | |
| Original patch by John Mark Vandenberg. | |
| - bpo-25515: Always use os.urandom as a source of randomness in uuid.uuid4. | |
| - bpo-21827: Fixed textwrap.dedent() for the case when largest common | |
| whitespace is a substring of smallest leading whitespace. Based on patch | |
| by Robert Li. | |
| - bpo-25447: The lru_cache() wrapper objects now can be copied and pickled | |
| (by returning the original object unchanged). | |
| - bpo-25390: typing: Don't crash on Union[str, Pattern]. | |
| - bpo-25441: asyncio: Raise error from drain() when socket is closed. | |
| - bpo-25410: Cleaned up and fixed minor bugs in C implementation of | |
| OrderedDict. | |
| - bpo-25411: Improved Unicode support in SMTPHandler through better use of | |
| the email package. Thanks to user simon04 for the patch. | |
| - Move the imp module from a PendingDeprecationWarning to | |
| DeprecationWarning. | |
| - bpo-25407: Remove mentions of the formatter module being removed in Python | |
| 3.6. | |
| - bpo-25406: Fixed a bug in C implementation of OrderedDict.move_to_end() | |
| that caused segmentation fault or hang in iterating after moving several | |
| items to the start of ordered dict. | |
| - bpo-25382: pickletools.dis() now outputs implicit memo index for the | |
| MEMOIZE opcode. | |
| - bpo-25357: Add an optional newline parameter to binascii.b2a_base64(). | |
| base64.b64encode() uses it to avoid a memory copy. | |
| - bpo-24164: Objects that need calling ``__new__`` with keyword arguments, | |
| can now be pickled using pickle protocols older than protocol version 4. | |
| - bpo-25364: zipfile now works in threads disabled builds. | |
| - bpo-25328: smtpd's SMTPChannel now correctly raises a ValueError if both | |
| decode_data and enable_SMTPUTF8 are set to true. | |
| - bpo-16099: RobotFileParser now supports Crawl-delay and Request-rate | |
| extensions. Patch by Nikolay Bogoychev. | |
| - bpo-25316: distutils raises OSError instead of DistutilsPlatformError when | |
| MSVC is not installed. | |
| - bpo-25380: Fixed protocol for the STACK_GLOBAL opcode in | |
| pickletools.opcodes. | |
| - bpo-23972: Updates asyncio datagram create method allowing reuseport and | |
| reuseaddr socket options to be set prior to binding the socket. Mirroring | |
| the existing asyncio create_server method the reuseaddr option for | |
| datagram sockets defaults to True if the O/S is 'posix' (except if the | |
| platform is Cygwin). Patch by Chris Laws. | |
| - bpo-25304: Add asyncio.run_coroutine_threadsafe(). This lets you submit a | |
| coroutine to a loop from another thread, returning a | |
| concurrent.futures.Future. By Vincent Michel. | |
| - bpo-25232: Fix CGIRequestHandler to split the query from the URL at the | |
| first question mark (?) rather than the last. Patch from Xiang Zhang. | |
| - bpo-24657: Prevent CGIRequestHandler from collapsing slashes in the query | |
| part of the URL as if it were a path. Patch from Xiang Zhang. | |
| - bpo-25287: Don't add crypt.METHOD_CRYPT to crypt.methods if it's not | |
| supported. Check if it is supported, it may not be supported on OpenBSD | |
| for example. | |
| - bpo-23600: Default implementation of tzinfo.fromutc() was returning wrong | |
| results in some cases. | |
| - bpo-25203: Failed readline.set_completer_delims() no longer left the | |
| module in inconsistent state. | |
| - bpo-25011: rlcompleter now omits private and special attribute names | |
| unless the prefix starts with underscores. | |
| - bpo-25209: rlcompleter now can add a space or a colon after completed | |
| keyword. | |
| - bpo-22241: timezone.utc name is now plain 'UTC', not 'UTC-00:00'. | |
| - bpo-23517: fromtimestamp() and utcfromtimestamp() methods of | |
| datetime.datetime now round microseconds to nearest with ties going to | |
| nearest even integer (ROUND_HALF_EVEN), as round(float), instead of | |
| rounding towards -Infinity (ROUND_FLOOR). | |
| - bpo-23552: Timeit now warns when there is substantial (4x) variance | |
| between best and worst times. Patch from Serhiy Storchaka. | |
| - bpo-24633: site-packages/README -> README.txt. | |
| - bpo-24879: help() and pydoc can now list named tuple fields in the order | |
| they were defined rather than alphabetically. The ordering is determined | |
| by the _fields attribute if present. | |
| - bpo-24874: Improve speed of itertools.cycle() and make its pickle more | |
| compact. | |
| - Fix crash in itertools.cycle.__setstate__() when the first argument wasn't | |
| a list. | |
| - bpo-20059: urllib.parse raises ValueError on all invalid ports. Patch by | |
| Martin Panter. | |
| - bpo-24360: Improve __repr__ of argparse.Namespace() for invalid | |
| identifiers. Patch by Matthias Bussonnier. | |
| - bpo-23426: run_setup was broken in distutils. Patch from Alexander | |
| Belopolsky. | |
| - bpo-13938: 2to3 converts StringTypes to a tuple. Patch from Mark Hammond. | |
| - bpo-2091: open() accepted a 'U' mode string containing '+', but 'U' can | |
| only be used with 'r'. Patch from Jeff Balogh and John O'Connor. | |
| - bpo-8585: improved tests for zipimporter2. Patch from Mark Lawrence. | |
| - bpo-18622: unittest.mock.mock_open().reset_mock would recurse infinitely. | |
| Patch from Nicola Palumbo and Laurent De Buyst. | |
| - bpo-24426: Fast searching optimization in regular expressions now works | |
| for patterns that starts with capturing groups. Fast searching | |
| optimization now can't be disabled at compile time. | |
| - bpo-23661: unittest.mock side_effects can now be exceptions again. This | |
| was a regression vs Python 3.4. Patch from Ignacio Rossi | |
| - bpo-13248: Remove deprecated inspect.getmoduleinfo function. | |
| - bpo-25578: Fix (another) memory leak in SSLSocket.getpeercer(). | |
| - bpo-25530: Disable the vulnerable SSLv3 protocol by default when creating | |
| ssl.SSLContext. | |
| - bpo-25569: Fix memory leak in SSLSocket.getpeercert(). | |
| - bpo-25471: Sockets returned from accept() shouldn't appear to be | |
| nonblocking. | |
| - bpo-25319: When threading.Event is reinitialized, the underlying condition | |
| should use a regular lock rather than a recursive lock. | |
| - Skip getaddrinfo if host is already resolved. Patch by A. Jesse Jiryu | |
| Davis. | |
| - bpo-26050: Add asyncio.StreamReader.readuntil() method. Patch by Марк | |
| Коренберг. | |
| - bpo-25924: Avoid unnecessary serialization of getaddrinfo(3) calls on OS X | |
| versions 10.5 or higher. Original patch by A. Jesse Jiryu Davis. | |
| - bpo-26406: Avoid unnecessary serialization of getaddrinfo(3) calls on | |
| current versions of OpenBSD and NetBSD. Patch by A. Jesse Jiryu Davis. | |
| - bpo-26848: Fix asyncio/subprocess.communicate() to handle empty input. | |
| Patch by Jack O'Connor. | |
| - bpo-27040: Add loop.get_exception_handler method | |
| - bpo-27041: asyncio: Add loop.create_future method | |
| IDLE | |
| ---- | |
| - bpo-20640: Add tests for idlelib.configHelpSourceEdit. Patch by Saimadhav | |
| Heblikar. | |
| - In the 'IDLE-console differences' section of the IDLE doc, clarify how | |
| running with IDLE affects sys.modules and the standard streams. | |
| - bpo-25507: fix incorrect change in IOBinding that prevented printing. | |
| Augment IOBinding htest to include all major IOBinding functions. | |
| - bpo-25905: Revert unwanted conversion of ' to ’ RIGHT SINGLE QUOTATION | |
| MARK in README.txt and open this and NEWS.txt with 'ascii'. Re-encode | |
| CREDITS.txt to utf-8 and open it with 'utf-8'. | |
| - bpo-15348: Stop the debugger engine (normally in a user process) before | |
| closing the debugger window (running in the IDLE process). This prevents | |
| the RuntimeErrors that were being caught and ignored. | |
| - bpo-24455: Prevent IDLE from hanging when a) closing the shell while the | |
| debugger is active (15347); b) closing the debugger with the [X] button | |
| (15348); and c) activating the debugger when already active (24455). The | |
| patch by Mark Roseman does this by making two changes. 1. Suspend and | |
| resume the gui.interaction method with the tcl vwait mechanism intended | |
| for this purpose (instead of root.mainloop & .quit). 2. In gui.run, allow | |
| any existing interaction to terminate first. | |
| - Change 'The program' to 'Your program' in an IDLE 'kill program?' message | |
| to make it clearer that the program referred to is the currently running | |
| user program, not IDLE itself. | |
| - bpo-24750: Improve the appearance of the IDLE editor window status bar. | |
| Patch by Mark Roseman. | |
| - bpo-25313: Change the handling of new built-in text color themes to better | |
| address the compatibility problem introduced by the addition of IDLE Dark. | |
| Consistently use the revised idleConf.CurrentTheme everywhere in idlelib. | |
| - bpo-24782: Extension configuration is now a tab in the IDLE Preferences | |
| dialog rather than a separate dialog. The former tabs are now a sorted | |
| list. Patch by Mark Roseman. | |
| - bpo-22726: Re-activate the config dialog help button with some content | |
| about the other buttons and the new IDLE Dark theme. | |
| - bpo-24820: IDLE now has an 'IDLE Dark' built-in text color theme. It is | |
| more or less IDLE Classic inverted, with a cobalt blue background. | |
| Strings, comments, keywords, ... are still green, red, orange, ... . To | |
| use it with IDLEs released before November 2015, hit the 'Save as New | |
| Custom Theme' button and enter a new name, such as 'Custom Dark'. The | |
| custom theme will work with any IDLE release, and can be modified. | |
| - bpo-25224: README.txt is now an idlelib index for IDLE developers and | |
| curious users. The previous user content is now in the IDLE doc chapter. | |
| 'IDLE' now means 'Integrated Development and Learning Environment'. | |
| - bpo-24820: Users can now set breakpoint colors in Settings -> Custom | |
| Highlighting. Original patch by Mark Roseman. | |
| - bpo-24972: Inactive selection background now matches active selection | |
| background, as configured by users, on all systems. Found items are now | |
| always highlighted on Windows. Initial patch by Mark Roseman. | |
| - bpo-24570: Idle: make calltip and completion boxes appear on Macs affected | |
| by a tk regression. Initial patch by Mark Roseman. | |
| - bpo-24988: Idle ScrolledList context menus (used in debugger) now work on | |
| Mac Aqua. Patch by Mark Roseman. | |
| - bpo-24801: Make right-click for context menu work on Mac Aqua. Patch by | |
| Mark Roseman. | |
| - bpo-25173: Associate tkinter messageboxes with a specific widget. For Mac | |
| OSX, make them a 'sheet'. Patch by Mark Roseman. | |
| - bpo-25198: Enhance the initial html viewer now used for Idle Help. | |
| Properly indent fixed-pitch text (patch by Mark Roseman). Give code | |
| snippet a very Sphinx-like light blueish-gray background. Re-use initial | |
| width and height set by users for shell and editor. When the Table of | |
| Contents (TOC) menu is used, put the section header at the top of the | |
| screen. | |
| - bpo-25225: Condense and rewrite Idle doc section on text colors. | |
| - bpo-21995: Explain some differences between IDLE and console Python. | |
| - bpo-22820: Explain need for *print* when running file from Idle editor. | |
| - bpo-25224: Doc: augment Idle feature list and no-subprocess section. | |
| - bpo-25219: Update doc for Idle command line options. Some were missing and | |
| notes were not correct. | |
| - bpo-24861: Most of idlelib is private and subject to change. Use | |
| idleib.idle.* to start Idle. See idlelib.__init__.__doc__. | |
| - bpo-25199: Idle: add synchronization comments for future maintainers. | |
| - bpo-16893: Replace help.txt with help.html for Idle doc display. The new | |
| idlelib/help.html is rstripped Doc/build/html/library/idle.html. It looks | |
| better than help.txt and will better document Idle as released. The | |
| tkinter html viewer that works for this file was written by Rose Roseman. | |
| The now unused EditorWindow.HelpDialog class and helt.txt file are | |
| deprecated. | |
| - bpo-24199: Deprecate unused idlelib.idlever with possible removal in 3.6. | |
| - bpo-24790: Remove extraneous code (which also create 2 & 3 conflicts). | |
| Documentation | |
| ------------- | |
| - bpo-26736: Used HTTPS for external links in the documentation if possible. | |
| - bpo-6953: Rework the Readline module documentation to group related | |
| functions together, and add more details such as what underlying Readline | |
| functions and variables are accessed. | |
| - bpo-23606: Adds note to ctypes documentation regarding cdll.msvcrt. | |
| - bpo-24952: Clarify the default size argument of stack_size() in the | |
| "threading" and "_thread" modules. Patch from Mattip. | |
| - bpo-26014: Update 3.x packaging documentation: * "See also" links to the | |
| new docs are now provided in the legacy pages * links to setuptools | |
| documentation have been updated | |
| Tests | |
| ----- | |
| - bpo-21916: Added tests for the turtle module. Patch by ingrid, Gregory | |
| Loyse and Jelle Zijlstra. | |
| - bpo-26295: When using "python3 -m test --testdir=TESTDIR", regrtest | |
| doesn't add "test." prefix to test module names. | |
| - bpo-26523: The multiprocessing thread pool (multiprocessing.dummy.Pool) | |
| was untested. | |
| - bpo-26015: Added new tests for pickling iterators of mutable sequences. | |
| - bpo-26325: Added test.support.check_no_resource_warning() to check that no | |
| ResourceWarning is emitted. | |
| - bpo-25940: Changed test_ssl to use its internal local server more. This | |
| avoids relying on svn.python.org, which recently changed root certificate. | |
| - bpo-25616: Tests for OrderedDict are extracted from test_collections into | |
| separate file test_ordered_dict. | |
| - bpo-25449: Added tests for OrderedDict subclasses. | |
| - bpo-25188: Add -P/--pgo to test.regrtest to suppress error output when | |
| running the test suite for the purposes of a PGO build. Initial patch by | |
| Alecsandru Patrascu. | |
| - bpo-22806: Add ``python -m test --list-tests`` command to list tests. | |
| - bpo-18174: ``python -m test --huntrleaks ...`` now also checks for leak of | |
| file descriptors. Patch written by Richard Oudkerk. | |
| - bpo-25260: Fix ``python -m test --coverage`` on Windows. Remove the list | |
| of ignored directories. | |
| - ``PCbuild\rt.bat`` now accepts an unlimited number of arguments to pass | |
| along to regrtest.py. Previously there was a limit of 9. | |
| - bpo-26583: Skip test_timestamp_overflow in test_import if bytecode files | |
| cannot be written. | |
| Build | |
| ----- | |
| - bpo-21277: Don't try to link _ctypes with a ffi_convenience library. | |
| - bpo-26884: Fix linking extension modules for cross builds. Patch by Xavier | |
| de Gaye. | |
| - bpo-26932: Fixed support of RTLD_* constants defined as enum values, not | |
| via macros (in particular on Android). Patch by Chi Hsuan Yen. | |
| - bpo-22359: Disable the rules for running _freeze_importlib and pgen when | |
| cross-compiling. The output of these programs is normally saved with the | |
| source code anyway, and is still regenerated when doing a native build. | |
| Patch by Xavier de Gaye. | |
| - bpo-21668: Link audioop, _datetime, _ctypes_test modules to libm, except | |
| on Mac OS X. Patch written by Chi Hsuan Yen. | |
| - bpo-25702: A --with-lto configure option has been added that will enable | |
| link time optimizations at build time during a make profile-opt. Some | |
| compilers and toolchains are known to not produce stable code when using | |
| LTO, be sure to test things thoroughly before relying on it. It can | |
| provide a few % speed up over profile-opt alone. | |
| - bpo-26624: Adds validation of ucrtbase[d].dll version with warning for old | |
| versions. | |
| - bpo-17603: Avoid error about nonexistent fileblocks.o file by using a | |
| lower-level check for st_blocks in struct stat. | |
| - bpo-26079: Fixing the build output folder for tix-8.4.3.6. Patch by Bjoern | |
| Thiel. | |
| - bpo-26465: Update Windows builds to use OpenSSL 1.0.2g. | |
| - bpo-25348: Added ``--pgo`` and ``--pgo-job`` arguments to | |
| ``PCbuild\build.bat`` for building with Profile-Guided Optimization. The | |
| old ``PCbuild\build_pgo.bat`` script is removed. | |
| - bpo-25827: Add support for building with ICC to ``configure``, including a | |
| new ``--with-icc`` flag. | |
| - bpo-25696: Fix installation of Python on UNIX with make -j9. | |
| - bpo-24986: It is now possible to build Python on Windows without errors | |
| when external libraries are not available. | |
| - bpo-24421: Compile Modules/_math.c once, before building extensions. | |
| Previously it could fail to compile properly if the math and cmath builds | |
| were concurrent. | |
| - bpo-26465: Update OS X 10.5+ 32-bit-only installer to build and link with | |
| OpenSSL 1.0.2g. | |
| - bpo-26268: Update Windows builds to use OpenSSL 1.0.2f. | |
| - bpo-25136: Support Apple Xcode 7's new textual SDK stub libraries. | |
| - bpo-24324: Do not enable unreachable code warnings when using gcc as the | |
| option does not work correctly in older versions of gcc and has been | |
| silently removed as of gcc-4.5. | |
| Windows | |
| ------- | |
| - bpo-27053: Updates make_zip.py to correctly generate library ZIP file. | |
| - bpo-26268: Update the prepare_ssl.py script to handle OpenSSL releases | |
| that don't include the contents of the include directory (that is, 1.0.2e | |
| and later). | |
| - bpo-26071: bdist_wininst created binaries fail to start and find 32bit | |
| Python | |
| - bpo-26073: Update the list of magic numbers in launcher | |
| - bpo-26065: Excludes venv from library when generating embeddable distro. | |
| - bpo-25022: Removed very outdated PC/example_nt/ directory. | |
| Tools/Demos | |
| ----------- | |
| - bpo-26799: Fix python-gdb.py: don't get C types once when the Python code | |
| is loaded, but get C types on demand. The C types can change if | |
| python-gdb.py is loaded before the Python executable. Patch written by | |
| Thomas Ilsche. | |
| - bpo-26271: Fix the Freeze tool to properly use flags passed through | |
| configure. Patch by Daniel Shaulov. | |
| - bpo-26489: Add dictionary unpacking support to Tools/parser/unparse.py. | |
| Patch by Guo Ci Teo. | |
| - bpo-26316: Fix variable name typo in Argument Clinic. | |
| - bpo-25440: Fix output of python-config --extension-suffix. | |
| - bpo-25154: The pyvenv script has been deprecated in favour of `python3 -m | |
| venv`. | |
| C API | |
| ----- | |
| - bpo-26312: SystemError is now raised in all programming bugs with using | |
| PyArg_ParseTupleAndKeywords(). RuntimeError did raised before in some | |
| programming bugs. | |
| - bpo-26198: ValueError is now raised instead of TypeError on buffer | |
| overflow in parsing "es#" and "et#" format units. SystemError is now | |
| raised instead of TypeError on programmatical error in parsing format | |
| string. | |
| What's New in Python 3.5.5 final? | |
| ================================= | |
| *Release date: 2018-02-04* | |
| There were no new changes in version 3.5.5. | |
| What's New in Python 3.5.5 release candidate 1? | |
| =============================================== | |
| *Release date: 2018-01-23* | |
| Security | |
| -------- | |
| - bpo-32551: The ``sys.path[0]`` initialization change for bpo-29139 caused | |
| a regression by revealing an inconsistency in how sys.path is initialized | |
| when executing ``__main__`` from a zipfile, directory, or other import | |
| location. This is considered a potential security issue, as it may lead to | |
| privileged processes unexpectedly loading code from user controlled | |
| directories in situations where that was not previously the case. The | |
| interpreter now consistently avoids ever adding the import location's | |
| parent directory to ``sys.path``, and ensures no other ``sys.path`` | |
| entries are inadvertently modified when inserting the import location | |
| named on the command line. (Originally reported as bpo-29723 against | |
| Python 3.6rc1, but it was missed at the time that the then upcoming Python | |
| 3.5.4 release would also be affected) | |
| - bpo-30657: Fixed possible integer overflow in PyBytes_DecodeEscape, | |
| CVE-2017-1000158. Original patch by Jay Bosamiya; rebased to Python 3 by | |
| Miro Hrončok. | |
| - bpo-30947: Upgrade libexpat embedded copy from version 2.2.1 to 2.2.3 to | |
| get security fixes. | |
| Core and Builtins | |
| ----------------- | |
| - bpo-31095: Fix potential crash during GC caused by ``tp_dealloc`` which | |
| doesn't call ``PyObject_GC_UnTrack()``. | |
| Library | |
| ------- | |
| - bpo-32072: Fixed issues with binary plists: Fixed saving bytearrays. | |
| Identical objects will be saved only once. Equal references will be load | |
| as identical objects. Added support for saving and loading recursive data | |
| structures. | |
| - bpo-31170: expat: Update libexpat from 2.2.3 to 2.2.4. Fix copying of | |
| partial characters for UTF-8 input (libexpat bug 115): | |
| https://github.com/libexpat/libexpat/issues/115 | |
| What's New in Python 3.5.4 final? | |
| ================================= | |
| *Release date: 2017-08-07* | |
| Library | |
| ------- | |
| - bpo-30119: ftplib.FTP.putline() now throws ValueError on commands that | |
| contains CR or LF. Patch by Dong-hee Na. | |
| What's New in Python 3.5.4 release candidate 1? | |
| =============================================== | |
| *Release date: 2017-07-23* | |
| Security | |
| -------- | |
| - bpo-30730: Prevent environment variables injection in subprocess on | |
| Windows. Prevent passing other environment variables and command | |
| arguments. | |
| - bpo-30694: Upgrade expat copy from 2.2.0 to 2.2.1 to get fixes of multiple | |
| security vulnerabilities including: CVE-2017-9233 (External entity | |
| infinite loop DoS), CVE-2016-9063 (Integer overflow, re-fix), | |
| CVE-2016-0718 (Fix regression bugs from 2.2.0's fix to CVE-2016-0718) and | |
| CVE-2012-0876 (Counter hash flooding with SipHash). Note: the | |
| CVE-2016-5300 (Use os-specific entropy sources like getrandom) doesn't | |
| impact Python, since Python already gets entropy from the OS to set the | |
| expat secret using ``XML_SetHashSalt()``. | |
| - bpo-30500: Fix urllib.parse.splithost() to correctly parse fragments. For | |
| example, ``splithost('//127.0.0.1#@evil.com/')`` now correctly returns the | |
| ``127.0.0.1`` host, instead of treating ``@evil.com`` as the host in an | |
| authentication (``login@host``). | |
| - bpo-29591: Update expat copy from 2.1.1 to 2.2.0 to get fixes of | |
| CVE-2016-0718 and CVE-2016-4472. See | |
| https://sourceforge.net/p/expat/bugs/537/ for more information. | |
| Core and Builtins | |
| ----------------- | |
| - bpo-30876: Relative import from unloaded package now reimports the package | |
| instead of failing with SystemError. Relative import from non-package now | |
| fails with ImportError rather than SystemError. | |
| - bpo-30765: Avoid blocking in pthread_mutex_lock() when | |
| PyThread_acquire_lock() is asked not to block. | |
| - bpo-27945: Fixed various segfaults with dict when input collections are | |
| mutated during searching, inserting or comparing. Based on patches by | |
| Duane Griffin and Tim Mitchell. | |
| - bpo-25794: Fixed type.__setattr__() and type.__delattr__() for | |
| non-interned attribute names. Based on patch by Eryk Sun. | |
| - bpo-29935: Fixed error messages in the index() method of tuple, list and | |
| deque when pass indices of wrong type. | |
| - bpo-28876: ``bool(range)`` works even if ``len(range)`` raises | |
| :exc:`OverflowError`. | |
| - bpo-29600: Fix wrapping coroutine return values in StopIteration. | |
| - bpo-29537: Restore runtime compatibility with bytecode files generated by | |
| CPython 3.5.0 to 3.5.2, and adjust the eval loop to avoid the problems | |
| that could be caused by the malformed variant of the | |
| BUILD_MAP_UNPACK_WITH_CALL opcode that they may contain. Patch by Petr | |
| Viktorin, Serhiy Storchaka, and Nick Coghlan. | |
| - bpo-28598: Support __rmod__ for subclasses of str being called before | |
| str.__mod__. Patch by Martijn Pieters. | |
| - bpo-29602: Fix incorrect handling of signed zeros in complex constructor | |
| for complex subclasses and for inputs having a __complex__ method. Patch | |
| by Serhiy Storchaka. | |
| - bpo-29347: Fixed possibly dereferencing undefined pointers when creating | |
| weakref objects. | |
| - bpo-29438: Fixed use-after-free problem in key sharing dict. | |
| - bpo-29319: Prevent RunMainFromImporter overwriting sys.path[0]. | |
| - bpo-29337: Fixed possible BytesWarning when compare the code objects. | |
| Warnings could be emitted at compile time. | |
| - bpo-29478: If max_line_length=None is specified while using the Compat32 | |
| policy, it is no longer ignored. Patch by Mircea Cosbuc. | |
| Library | |
| ------- | |
| - bpo-29403: Fix ``unittest.mock``'s autospec to not fail on method-bound | |
| builtin functions. Patch by Aaron Gallagher. | |
| - bpo-30961: Fix decrementing a borrowed reference in tracemalloc. | |
| - bpo-30886: Fix multiprocessing.Queue.join_thread(): it now waits until the | |
| thread completes, even if the thread was started by the same process which | |
| created the queue. | |
| - bpo-29854: Fix segfault in readline when using readline's history-size | |
| option. Patch by Nir Soffer. | |
| - bpo-30807: signal.setitimer() may disable the timer when passed a tiny | |
| value. Tiny values (such as 1e-6) are valid non-zero values for | |
| setitimer(), which is specified as taking microsecond-resolution | |
| intervals. However, on some platform, our conversion routine could convert | |
| 1e-6 into a zero interval, therefore disabling the timer instead of | |
| (re-)scheduling it. | |
| - bpo-30441: Fix bug when modifying os.environ while iterating over it | |
| - bpo-30532: Fix email header value parser dropping folding white space in | |
| certain cases. | |
| - bpo-29169: Update zlib to 1.2.11. | |
| - bpo-30879: os.listdir() and os.scandir() now emit bytes names when called | |
| with bytes-like argument. | |
| - bpo-30746: Prohibited the '=' character in environment variable names in | |
| ``os.putenv()`` and ``os.spawn*()``. | |
| - bpo-29755: Fixed the lgettext() family of functions in the gettext module. | |
| They now always return bytes. | |
| - bpo-30645: Fix path calculation in imp.load_package(), fixing it for cases | |
| when a package is only shipped with bytecodes. Patch by Alexandru | |
| Ardelean. | |
| - bpo-23890: unittest.TestCase.assertRaises() now manually breaks a | |
| reference cycle to not keep objects alive longer than expected. | |
| - bpo-30149: inspect.signature() now supports callables with | |
| variable-argument parameters wrapped with partialmethod. Patch by Dong-hee | |
| Na. | |
| - bpo-29931: Fixed comparison check for ipaddress.ip_interface objects. | |
| Patch by Sanjay Sundaresan. | |
| - bpo-24484: Avoid race condition in multiprocessing cleanup. | |
| - bpo-28994: The traceback no longer displayed for SystemExit raised in a | |
| callback registered by atexit. | |
| - bpo-30508: Don't log exceptions if Task/Future "cancel()" method was | |
| called. | |
| - bpo-28556: Updates to typing module: Add generic AsyncContextManager, add | |
| support for ContextManager on all versions. Original PRs by Jelle Zijlstra | |
| and Ivan Levkivskyi | |
| - bpo-29870: Fix ssl sockets leaks when connection is aborted in asyncio/ssl | |
| implementation. Patch by Michaël Sghaïer. | |
| - bpo-29743: Closing transport during handshake process leaks open socket. | |
| Patch by Nikolay Kim | |
| - bpo-27585: Fix waiter cancellation in asyncio.Lock. Patch by Mathieu | |
| Sornay. | |
| - bpo-30418: On Windows, subprocess.Popen.communicate() now also ignore | |
| EINVAL on stdin.write() if the child process is still running but closed | |
| the pipe. | |
| - bpo-30378: Fix the problem that logging.handlers.SysLogHandler cannot | |
| handle IPv6 addresses. | |
| - bpo-29960: Preserve generator state when _random.Random.setstate() raises | |
| an exception. Patch by Bryan Olson. | |
| - bpo-30414: multiprocessing.Queue._feed background running thread do not | |
| break from main loop on exception. | |
| - bpo-30003: Fix handling escape characters in HZ codec. Based on patch by | |
| Ma Lin. | |
| - bpo-30301: Fix AttributeError when using SimpleQueue.empty() under *spawn* | |
| and *forkserver* start methods. | |
| - bpo-30329: imaplib and poplib now catch the Windows socket WSAEINVAL error | |
| (code 10022) on shutdown(SHUT_RDWR): An invalid operation was attempted. | |
| This error occurs sometimes on SSL connections. | |
| - bpo-30375: Warnings emitted when compile a regular expression now always | |
| point to the line in the user code. Previously they could point into | |
| inners of the re module if emitted from inside of groups or conditionals. | |
| - bpo-30048: Fixed ``Task.cancel()`` can be ignored when the task is running | |
| coroutine and the coroutine returned without any more ``await``. | |
| - bpo-29990: Fix range checking in GB18030 decoder. Original patch by Ma | |
| Lin. | |
| - bpo-26293: Change resulted because of zipfile breakage. (See also: | |
| bpo-29094) | |
| - bpo-30243: Removed the __init__ methods of _json's scanner and encoder. | |
| Misusing them could cause memory leaks or crashes. Now scanner and | |
| encoder objects are completely initialized in the __new__ methods. | |
| - bpo-30185: Avoid KeyboardInterrupt tracebacks in forkserver helper process | |
| when Ctrl-C is received. | |
| - bpo-28556: Various updates to typing module: add typing.NoReturn type, use | |
| WrapperDescriptorType, minor bug-fixes. Original PRs by Jim | |
| Fasarakis-Hilliard and Ivan Levkivskyi. | |
| - bpo-30205: Fix getsockname() for unbound AF_UNIX sockets on Linux. | |
| - bpo-30070: Fixed leaks and crashes in errors handling in the parser | |
| module. | |
| - bpo-30061: Fixed crashes in IOBase methods __next__() and readlines() when | |
| readline() or __next__() respectively return non-sizeable object. Fixed | |
| possible other errors caused by not checking results of PyObject_Size(), | |
| PySequence_Size(), or PyMapping_Size(). | |
| - bpo-30068: _io._IOBase.readlines will check if it's closed first when hint | |
| is present. | |
| - bpo-29694: Fixed race condition in pathlib mkdir with flags parents=True. | |
| Patch by Armin Rigo. | |
| - bpo-29692: Fixed arbitrary unchaining of RuntimeError exceptions in | |
| contextlib.contextmanager. Patch by Siddharth Velankar. | |
| - bpo-29998: Pickling and copying ImportError now preserves name and path | |
| attributes. | |
| - bpo-29942: Fix a crash in itertools.chain.from_iterable when encountering | |
| long runs of empty iterables. | |
| - bpo-27863: Fixed multiple crashes in ElementTree caused by race conditions | |
| and wrong types. | |
| - bpo-28699: Fixed a bug in pools in multiprocessing.pool that raising an | |
| exception at the very first of an iterable may swallow the exception or | |
| make the program hang. Patch by Davin Potts and Xiang Zhang. | |
| - bpo-25803: Avoid incorrect errors raised by Path.mkdir(exist_ok=True) when | |
| the OS gives priority to errors such as EACCES over EEXIST. | |
| - bpo-29861: Release references to tasks, their arguments and their results | |
| as soon as they are finished in multiprocessing.Pool. | |
| - bpo-29884: faulthandler: Restore the old sigaltstack during teardown. | |
| Patch by Christophe Zeitouny. | |
| - bpo-25455: Fixed crashes in repr of recursive buffered file-like objects. | |
| - bpo-29800: Fix crashes in partial.__repr__ if the keys of partial.keywords | |
| are not strings. Patch by Michael Seifert. | |
| - bpo-29742: get_extra_info() raises exception if get called on closed ssl | |
| transport. Patch by Nikolay Kim. | |
| - bpo-8256: Fixed possible failing or crashing input() if attributes | |
| "encoding" or "errors" of sys.stdin or sys.stdout are not set or are not | |
| strings. | |
| - bpo-28298: Fix a bug that prevented array 'Q', 'L' and 'I' from accepting | |
| big intables (objects that have __int__) as elements. Patch by Oren | |
| Milman. | |
| - bpo-29615: SimpleXMLRPCDispatcher no longer chains KeyError (or any other | |
| exception) to exception(s) raised in the dispatched methods. Patch by Petr | |
| Motejlek. | |
| - bpo-29704: asyncio.subprocess.SubprocessStreamProtocol no longer closes | |
| before all pipes are closed. | |
| - bpo-29703: Fix asyncio to support instantiation of new event loops in | |
| child processes. | |
| - bpo-29376: Fix assertion error in threading._DummyThread.is_alive(). | |
| - bpo-29110: Fix file object leak in aifc.open() when file is given as a | |
| filesystem path and is not in valid AIFF format. Patch by Anthony Zhang. | |
| - bpo-28961: Fix unittest.mock._Call helper: don't ignore the name parameter | |
| anymore. Patch written by Jiajun Huang. | |
| - bpo-29532: Altering a kwarg dictionary passed to functools.partial() no | |
| longer affects a partial object after creation. | |
| - bpo-28556: Various updates to typing module: typing.Counter, | |
| typing.ChainMap, improved ABC caching, etc. Original PRs by Jelle | |
| Zijlstra, Ivan Levkivskyi, Manuel Krebber, and Łukasz Langa. | |
| - bpo-29100: Fix datetime.fromtimestamp() regression introduced in Python | |
| 3.6.0: check minimum and maximum years. | |
| - bpo-29519: Fix weakref spewing exceptions during interpreter shutdown when | |
| used with a rare combination of multiprocessing and custom codecs. | |
| - bpo-29416: Prevent infinite loop in pathlib.Path.mkdir | |
| - bpo-29444: Fixed out-of-bounds buffer access in the group() method of the | |
| match object. Based on patch by WGH. | |
| - bpo-29335: Fix subprocess.Popen.wait() when the child process has exited | |
| to a stopped instead of terminated state (ex: when under ptrace). | |
| - bpo-29290: Fix a regression in argparse that help messages would wrap at | |
| non-breaking spaces. | |
| - bpo-28735: Fixed the comparison of mock.MagickMock with mock.ANY. | |
| - bpo-29011: Fix an important omission by adding Deque to the typing module. | |
| - bpo-29219: Fixed infinite recursion in the repr of uninitialized | |
| ctypes.CDLL instances. | |
| - bpo-28969: Fixed race condition in C implementation of | |
| functools.lru_cache. KeyError could be raised when cached function with | |
| full cache was simultaneously called from different threads with the same | |
| uncached arguments. | |
| - bpo-29142: In urllib.request, suffixes in no_proxy environment variable | |
| with leading dots could match related hostnames again (e.g. .b.c matches | |
| a.b.c). Patch by Milan Oberkirch. | |
| Documentation | |
| ------------- | |
| - bpo-30176: Add missing attribute related constants in curses | |
| documentation. | |
| - bpo-26985: Add missing info of code object in inspect documentation. | |
| - bpo-28929: Link the documentation to its source file on GitHub. | |
| - bpo-25008: Document smtpd.py as effectively deprecated and add a pointer | |
| to aiosmtpd, a third-party asyncio-based replacement. | |
| - bpo-26355: Add canonical header link on each page to corresponding major | |
| version of the documentation. Patch by Matthias Bussonnier. | |
| - bpo-29349: Fix Python 2 syntax in code for building the documentation. | |
| Tests | |
| ----- | |
| - bpo-30822: Fix regrtest command line parser to allow passing -u | |
| extralargefile to run test_zipfile64. | |
| - bpo-30383: regrtest: Enhance regrtest and backport features from the | |
| master branch. Add options: --coverage, --testdir, --list-tests (list test | |
| files, don't run them), --list-cases (list test identifiers, don't run | |
| them, :issue:`30523`), --matchfile (load a list of test filters from a | |
| text file, :issue:`30540`), --slowest (alias to --slow). Enhance output: | |
| add timestamp, test result, currently running tests, "Tests result: xxx" | |
| summary with total duration, etc. Fix reference leak hunting in regrtest, | |
| --huntrleaks: regrtest now warms up caches, create explicitly all internal | |
| singletons which are created on demand to prevent false positives when | |
| checking for reference leaks. (:issue:`30675`). | |
| - bpo-30357: test_thread: setUp() now uses support.threading_setup() and | |
| support.threading_cleanup() to wait until threads complete to avoid random | |
| side effects on following tests. Initial patch written by Grzegorz | |
| Grzywacz. | |
| - bpo-28087: Skip test_asyncore and test_eintr poll failures on macOS. Skip | |
| some tests of select.poll when running on macOS due to unresolved issues | |
| with the underlying system poll function on some macOS versions. | |
| - bpo-30197: Enhanced functions swap_attr() and swap_item() in the | |
| test.support module. They now work when delete replaced attribute or item | |
| inside the with statement. The old value of the attribute or item (or | |
| None if it doesn't exist) now will be assigned to the target of the "as" | |
| clause, if there is one. | |
| - bpo-29571: to match the behaviour of the ``re.LOCALE`` flag, | |
| test_re.test_locale_flag now uses ``locale.getpreferredencoding(False)`` | |
| to determine the candidate encoding for the test regex (allowing it to | |
| correctly skip the test when the default locale encoding is a multi-byte | |
| encoding) | |
| Build | |
| ----- | |
| - bpo-29243: Prevent unnecessary rebuilding of Python during ``make test``, | |
| ``make install`` and some other make targets when configured with | |
| ``--enable-optimizations``. | |
| - bpo-23404: Don't regenerate generated files based on file modification | |
| time anymore: the action is now explicit. Replace ``make touch`` with | |
| ``make regen-all``. | |
| - bpo-29643: Fix ``--enable-optimization`` didn't work. | |
| Windows | |
| ------- | |
| - bpo-30687: Locate msbuild.exe on Windows when building rather than | |
| vcvarsall.bat | |
| - bpo-29392: Prevent crash when passing invalid arguments into msvcrt | |
| module. | |
| C API | |
| ----- | |
| - bpo-27867: Function PySlice_GetIndicesEx() is replaced with a macro if | |
| Py_LIMITED_API is set to the value between 0x03050400 and 0x03060000 (not | |
| including) or 0x03060100 or higher. | |
| - bpo-29083: Fixed the declaration of some public API functions. | |
| PyArg_VaParse() and PyArg_VaParseTupleAndKeywords() were not available in | |
| limited API. PyArg_ValidateKeywordArguments(), PyArg_UnpackTuple() and | |
| Py_BuildValue() were not available in limited API of version < 3.3 when | |
| PY_SSIZE_T_CLEAN is defined. | |
| What's New in Python 3.5.3 final? | |
| ================================= | |
| *Release date: 2017-01-17* | |
| There were no code changes between 3.5.3rc1 and 3.5.3 final. | |
| What's New in Python 3.5.3 release candidate 1? | |
| =============================================== | |
| *Release date: 2017-01-02* | |
| Security | |
| -------- | |
| - bpo-27278: Fix os.urandom() implementation using getrandom() on Linux. | |
| Truncate size to INT_MAX and loop until we collected enough random bytes, | |
| instead of casting a directly Py_ssize_t to int. | |
| - bpo-22636: Avoid shell injection problems with ctypes.util.find_library(). | |
| Core and Builtins | |
| ----------------- | |
| - bpo-29073: bytearray formatting no longer truncates on first null byte. | |
| - bpo-28932: Do not include <sys/random.h> if it does not exist. | |
| - bpo-28147: Fix a memory leak in split-table dictionaries: setattr() must | |
| not convert combined table into split table. | |
| - bpo-25677: Correct the positioning of the syntax error caret for indented | |
| blocks. Based on patch by Michael Layzell. | |
| - bpo-29000: Fixed bytes formatting of octals with zero padding in alternate | |
| form. | |
| - bpo-28512: Fixed setting the offset attribute of SyntaxError by | |
| PyErr_SyntaxLocationEx() and PyErr_SyntaxLocationObject(). | |
| - bpo-28991: functools.lru_cache() was susceptible to an obscure reentrancy | |
| bug caused by a monkey-patched len() function. | |
| - bpo-28648: Fixed crash in Py_DecodeLocale() in debug build on Mac OS X | |
| when decode astral characters. Patch by Xiang Zhang. | |
| - bpo-19398: Extra slash no longer added to sys.path components in case of | |
| empty compile-time PYTHONPATH components. | |
| - bpo-28426: Fixed potential crash in PyUnicode_AsDecodedObject() in debug | |
| build. | |
| - bpo-23782: Fixed possible memory leak in _PyTraceback_Add() and exception | |
| loss in PyTraceBack_Here(). | |
| - bpo-28379: Added sanity checks and tests for PyUnicode_CopyCharacters(). | |
| Patch by Xiang Zhang. | |
| - bpo-28376: The type of long range iterator is now registered as Iterator. | |
| Patch by Oren Milman. | |
| - bpo-28376: The constructor of range_iterator now checks that step is not | |
| 0. Patch by Oren Milman. | |
| - bpo-26906: Resolving special methods of uninitialized type now causes | |
| implicit initialization of the type instead of a fail. | |
| - bpo-18287: PyType_Ready() now checks that tp_name is not NULL. Original | |
| patch by Niklas Koep. | |
| - bpo-24098: Fixed possible crash when AST is changed in process of | |
| compiling it. | |
| - bpo-28350: String constants with null character no longer interned. | |
| - bpo-26617: Fix crash when GC runs during weakref callbacks. | |
| - bpo-27942: String constants now interned recursively in tuples and | |
| frozensets. | |
| - bpo-21578: Fixed misleading error message when ImportError called with | |
| invalid keyword args. | |
| - bpo-28203: Fix incorrect type in error message from ``complex(1.0, | |
| {2:3})``. Patch by Soumya Sharma. | |
| - bpo-27955: Fallback on reading /dev/urandom device when the getrandom() | |
| syscall fails with EPERM, for example when blocked by SECCOMP. | |
| - bpo-28131: Fix a regression in zipimport's compile_source(). zipimport | |
| should use the same optimization level as the interpreter. | |
| - bpo-25221: Fix corrupted result from PyLong_FromLong(0) when Python is | |
| compiled with NSMALLPOSINTS = 0. | |
| - bpo-25758: Prevents zipimport from unnecessarily encoding a filename | |
| (patch by Eryk Sun) | |
| - bpo-28189: dictitems_contains no longer swallows compare errors. (Patch by | |
| Xiang Zhang) | |
| - bpo-27812: Properly clear out a generator's frame's backreference to the | |
| generator to prevent crashes in frame.clear(). | |
| - bpo-27811: Fix a crash when a coroutine that has not been awaited is | |
| finalized with warnings-as-errors enabled. | |
| - bpo-27587: Fix another issue found by PVS-Studio: Null pointer check after | |
| use of 'def' in _PyState_AddModule(). Initial patch by Christian Heimes. | |
| - bpo-26020: set literal evaluation order did not match documented | |
| behaviour. | |
| - bpo-27782: Multi-phase extension module import now correctly allows the | |
| ``m_methods`` field to be used to add module level functions to instances | |
| of non-module types returned from ``Py_create_mod``. Patch by Xiang Zhang. | |
| - bpo-27936: The round() function accepted a second None argument for some | |
| types but not for others. Fixed the inconsistency by accepting None for | |
| all numeric types. | |
| - bpo-27487: Warn if a submodule argument to "python -m" or | |
| runpy.run_module() is found in sys.modules after parent packages are | |
| imported, but before the submodule is executed. | |
| - bpo-27558: Fix a SystemError in the implementation of "raise" statement. | |
| In a brand new thread, raise a RuntimeError since there is no active | |
| exception to reraise. Patch written by Xiang Zhang. | |
| - bpo-27419: Standard __import__() no longer look up "__import__" in globals | |
| or builtins for importing submodules or "from import". Fixed handling an | |
| error of non-string package name. | |
| - bpo-27083: Respect the PYTHONCASEOK environment variable under Windows. | |
| - bpo-27514: Make having too many statically nested blocks a SyntaxError | |
| instead of SystemError. | |
| - bpo-27473: Fixed possible integer overflow in bytes and bytearray | |
| concatenations. Patch by Xiang Zhang. | |
| - bpo-27507: Add integer overflow check in bytearray.extend(). Patch by | |
| Xiang Zhang. | |
| - bpo-27581: Don't rely on wrapping for overflow check in | |
| PySequence_Tuple(). Patch by Xiang Zhang. | |
| - bpo-27443: __length_hint__() of bytearray iterators no longer return a | |
| negative integer for a resized bytearray. | |
| - bpo-27942: Fix memory leak in codeobject.c | |
| Library | |
| ------- | |
| - bpo-15812: inspect.getframeinfo() now correctly shows the first line of a | |
| context. Patch by Sam Breese. | |
| - bpo-29094: Offsets in a ZIP file created with extern file object and modes | |
| "w" and "x" now are relative to the start of the file. | |
| - bpo-13051: Fixed recursion errors in large or resized | |
| curses.textpad.Textbox. Based on patch by Tycho Andersen. | |
| - bpo-29119: Fix weakrefs in the pure python version of | |
| collections.OrderedDict move_to_end() method. Contributed by Andra | |
| Bogildea. | |
| - bpo-9770: curses.ascii predicates now work correctly with negative | |
| integers. | |
| - bpo-28427: old keys should not remove new values from WeakValueDictionary | |
| when collecting from another thread. | |
| - bpo-28923: Remove editor artifacts from Tix.py. | |
| - bpo-28871: Fixed a crash when deallocate deep ElementTree. | |
| - bpo-19542: Fix bugs in WeakValueDictionary.setdefault() and | |
| WeakValueDictionary.pop() when a GC collection happens in another thread. | |
| - bpo-20191: Fixed a crash in resource.prlimit() when pass a sequence that | |
| doesn't own its elements as limits. | |
| - bpo-28779: multiprocessing.set_forkserver_preload() would crash the | |
| forkserver process if a preloaded module instantiated some multiprocessing | |
| objects such as locks. | |
| - bpo-28847: dbm.dumb now supports reading read-only files and no longer | |
| writes the index file when it is not changed. | |
| - bpo-25659: In ctypes, prevent a crash calling the from_buffer() and | |
| from_buffer_copy() methods on abstract classes like Array. | |
| - bpo-28732: Fix crash in os.spawnv() with no elements in args | |
| - bpo-28485: Always raise ValueError for negative | |
| compileall.compile_dir(workers=...) parameter, even when multithreading is | |
| unavailable. | |
| - bpo-28387: Fixed possible crash in _io.TextIOWrapper deallocator when the | |
| garbage collector is invoked in other thread. Based on patch by Sebastian | |
| Cufre. | |
| - bpo-27517: LZMA compressor and decompressor no longer raise exceptions if | |
| given empty data twice. Patch by Benjamin Fogle. | |
| - bpo-28549: Fixed segfault in curses's addch() with ncurses6. | |
| - bpo-28449: tarfile.open() with mode "r" or "r:" now tries to open a tar | |
| file with compression before trying to open it without compression. | |
| Otherwise it had 50% chance failed with ignore_zeros=True. | |
| - bpo-23262: The webbrowser module now supports Firefox 36+ and derived | |
| browsers. Based on patch by Oleg Broytman. | |
| - bpo-27939: Fixed bugs in tkinter.ttk.LabeledScale and tkinter.Scale caused | |
| by representing the scale as float value internally in Tk. tkinter.IntVar | |
| now works if float value is set to underlying Tk variable. | |
| - bpo-28255: calendar.TextCalendar().prmonth() no longer prints a space at | |
| the start of new line after printing a month's calendar. Patch by Xiang | |
| Zhang. | |
| - bpo-20491: The textwrap.TextWrapper class now honors non-breaking spaces. | |
| Based on patch by Kaarle Ritvanen. | |
| - bpo-28353: os.fwalk() no longer fails on broken links. | |
| - bpo-25464: Fixed HList.header_exists() in tkinter.tix module by addin a | |
| workaround to Tix library bug. | |
| - bpo-28488: shutil.make_archive() no longer add entry "./" to ZIP archive. | |
| - bpo-24452: Make webbrowser support Chrome on Mac OS X. | |
| - bpo-20766: Fix references leaked by pdb in the handling of SIGINT | |
| handlers. | |
| - bpo-26293: Fixed writing ZIP files that starts not from the start of the | |
| file. Offsets in ZIP file now are relative to the start of the archive in | |
| conforming to the specification. | |
| - bpo-28321: Fixed writing non-BMP characters with binary format in | |
| plistlib. | |
| - bpo-28322: Fixed possible crashes when unpickle itertools objects from | |
| incorrect pickle data. Based on patch by John Leitch. | |
| - Fix possible integer overflows and crashes in the mmap module with unusual | |
| usage patterns. | |
| - bpo-1703178: Fix the ability to pass the --link-objects option to the | |
| distutils build_ext command. | |
| - bpo-28253: Fixed calendar functions for extreme months: 0001-01 and | |
| 9999-12. Methods itermonthdays() and itermonthdays2() are reimplemented so | |
| that they don't call itermonthdates() which can cause datetime.date | |
| under/overflow. | |
| - bpo-28275: Fixed possible use after free in the decompress() methods of | |
| the LZMADecompressor and BZ2Decompressor classes. Original patch by John | |
| Leitch. | |
| - bpo-27897: Fixed possible crash in sqlite3.Connection.create_collation() | |
| if pass invalid string-like object as a name. Patch by Xiang Zhang. | |
| - bpo-18893: Fix invalid exception handling in Lib/ctypes/macholib/dyld.py. | |
| Patch by Madison May. | |
| - bpo-27611: Fixed support of default root window in the tkinter.tix module. | |
| - bpo-27348: In the traceback module, restore the formatting of exception | |
| messages like "Exception: None". This fixes a regression introduced in | |
| 3.5a2. | |
| - bpo-25651: Allow falsy values to be used for msg parameter of subTest(). | |
| - bpo-27932: Prevent memory leak in win32_ver(). | |
| - Fix UnboundLocalError in socket._sendfile_use_sendfile. | |
| - bpo-28075: Check for ERROR_ACCESS_DENIED in Windows implementation of | |
| os.stat(). Patch by Eryk Sun. | |
| - bpo-25270: Prevent codecs.escape_encode() from raising SystemError when an | |
| empty bytestring is passed. | |
| - bpo-28181: Get antigravity over HTTPS. Patch by Kaartic Sivaraam. | |
| - bpo-25895: Enable WebSocket URL schemes in urllib.parse.urljoin. Patch by | |
| Gergely Imreh and Markus Holtermann. | |
| - bpo-27599: Fixed buffer overrun in binascii.b2a_qp() and | |
| binascii.a2b_qp(). | |
| - bpo-19003: m email.generator now replaces only ``\r`` and/or ``\n`` line | |
| endings, per the RFC, instead of all unicode line endings. | |
| - bpo-28019: itertools.count() no longer rounds non-integer step in range | |
| between 1.0 and 2.0 to 1. | |
| - bpo-25969: Update the lib2to3 grammar to handle the unpacking | |
| generalizations added in 3.5. | |
| - bpo-14977: mailcap now respects the order of the lines in the mailcap | |
| files ("first match"), as required by RFC 1542. Patch by Michael Lazar. | |
| - bpo-24594: Validates persist parameter when opening MSI database | |
| - bpo-17582: xml.etree.ElementTree nows preserves whitespaces in attributes | |
| (Patch by Duane Griffin. Reviewed and approved by Stefan Behnel.) | |
| - bpo-28047: Fixed calculation of line length used for the base64 CTE in the | |
| new email policies. | |
| - bpo-27445: Don't pass str(_charset) to MIMEText.set_payload(). Patch by | |
| Claude Paroz. | |
| - bpo-22450: urllib now includes an ``Accept: */*`` header among the default | |
| headers. This makes the results of REST API requests more consistent and | |
| predictable especially when proxy servers are involved. | |
| - lib2to3.pgen3.driver.load_grammar() now creates a stable cache file | |
| between runs given the same Grammar.txt input regardless of the hash | |
| randomization setting. | |
| - bpo-27570: Avoid zero-length memcpy() etc calls with null source pointers | |
| in the "ctypes" and "array" modules. | |
| - bpo-22233: Break email header lines *only* on the RFC specified CR and LF | |
| characters, not on arbitrary unicode line breaks. This also fixes a bug | |
| in HTTP header parsing. | |
| - bpo-27988: Fix email iter_attachments incorrect mutation of payload list. | |
| - bpo-27691: Fix ssl module's parsing of GEN_RID subject alternative name | |
| fields in X.509 certs. | |
| - bpo-27850: Remove 3DES from ssl module's default cipher list to counter | |
| measure sweet32 attack (CVE-2016-2183). | |
| - bpo-27766: Add ChaCha20 Poly1305 to ssl module's default cipher list. | |
| (Required OpenSSL 1.1.0 or LibreSSL). | |
| - bpo-26470: Port ssl and hashlib module to OpenSSL 1.1.0. | |
| - Remove support for passing a file descriptor to os.access. It never worked | |
| but previously didn't raise. | |
| - bpo-12885: Fix error when distutils encounters symlink. | |
| - bpo-27881: Fixed possible bugs when setting | |
| sqlite3.Connection.isolation_level. Based on patch by Xiang Zhang. | |
| - bpo-27861: Fixed a crash in sqlite3.Connection.cursor() when a factory | |
| creates not a cursor. Patch by Xiang Zhang. | |
| - bpo-19884: Avoid spurious output on OS X with Gnu Readline. | |
| - bpo-27706: Restore deterministic behavior of random.Random().seed() for | |
| string seeds using seeding version 1. Allows sequences of calls to | |
| random() to exactly match those obtained in Python 2. Patch by Nofar | |
| Schnider. | |
| - bpo-10513: Fix a regression in Connection.commit(). Statements should not | |
| be reset after a commit. | |
| - A new version of typing.py from https://github.com/python/typing: | |
| Collection (only for 3.6) (Issue #27598). Add FrozenSet to __all__ | |
| (upstream #261). Fix crash in _get_type_vars() (upstream #259). Remove the | |
| dict constraint in ForwardRef._eval_type (upstream #252). | |
| - bpo-27539: Fix unnormalised ``Fraction.__pow__`` result in the case of | |
| negative exponent and negative base. | |
| - bpo-21718: cursor.description is now available for queries using CTEs. | |
| - bpo-2466: posixpath.ismount now correctly recognizes mount points which | |
| the user does not have permission to access. | |
| - bpo-27773: Correct some memory management errors server_hostname in | |
| _ssl.wrap_socket(). | |
| - bpo-26750: unittest.mock.create_autospec() now works properly for | |
| subclasses of property() and other data descriptors. | |
| - In the curses module, raise an error if window.getstr() or window.instr() | |
| is passed a negative value. | |
| - bpo-27783: Fix possible usage of uninitialized memory in | |
| operator.methodcaller. | |
| - bpo-27774: Fix possible Py_DECREF on unowned object in _sre. | |
| - bpo-27760: Fix possible integer overflow in binascii.b2a_qp. | |
| - bpo-27758: Fix possible integer overflow in the _csv module for large | |
| record lengths. | |
| - bpo-27568: Prevent HTTPoxy attack (CVE-2016-1000110). Ignore the | |
| HTTP_PROXY variable when REQUEST_METHOD environment is set, which | |
| indicates that the script is in CGI mode. | |
| - bpo-27656: Do not assume sched.h defines any SCHED_* constants. | |
| - bpo-27130: In the "zlib" module, fix handling of large buffers (typically | |
| 4 GiB) when compressing and decompressing. Previously, inputs were | |
| limited to 4 GiB, and compression and decompression operations did not | |
| properly handle results of 4 GiB. | |
| - bpo-27533: Release GIL in nt._isdir | |
| - bpo-17711: Fixed unpickling by the persistent ID with protocol 0. Original | |
| patch by Alexandre Vassalotti. | |
| - bpo-27522: Avoid an unintentional reference cycle in email.feedparser. | |
| - bpo-26844: Fix error message for imp.find_module() to refer to 'path' | |
| instead of 'name'. Patch by Lev Maximov. | |
| - bpo-23804: Fix SSL zero-length recv() calls to not block and not raise an | |
| error about unclean EOF. | |
| - bpo-27466: Change time format returned by http.cookie.time2netscape, | |
| confirming the netscape cookie format and making it consistent with | |
| documentation. | |
| - bpo-26664: Fix activate.fish by removing mis-use of ``$``. | |
| - bpo-22115: Fixed tracing Tkinter variables: trace_vdelete() with wrong | |
| mode no longer break tracing, trace_vinfo() now always returns a list of | |
| pairs of strings, tracing in the "u" mode now works. | |
| - Fix a scoping issue in importlib.util.LazyLoader which triggered an | |
| UnboundLocalError when lazy-loading a module that was already put into | |
| sys.modules. | |
| - bpo-27079: Fixed curses.ascii functions isblank(), iscntrl() and | |
| ispunct(). | |
| - bpo-26754: Some functions (compile() etc) accepted a filename argument | |
| encoded as an iterable of integers. Now only strings and byte-like objects | |
| are accepted. | |
| - bpo-27048: Prevents distutils failing on Windows when environment | |
| variables contain non-ASCII characters | |
| - bpo-27330: Fixed possible leaks in the ctypes module. | |
| - bpo-27238: Got rid of bare excepts in the turtle module. Original patch | |
| by Jelle Zijlstra. | |
| - bpo-27122: When an exception is raised within the context being managed by | |
| a contextlib.ExitStack() and one of the exit stack generators catches and | |
| raises it in a chain, do not re-raise the original exception when exiting, | |
| let the new chained one through. This avoids the :pep:`479` bug described | |
| in issue25782. | |
| - bpo-26386: Fixed ttk.TreeView selection operations with item id's | |
| containing spaces. | |
| - bpo-16182: Fix various functions in the "readline" module to use the | |
| locale encoding, and fix get_begidx() and get_endidx() to return code | |
| point indexes. | |
| - bpo-27392: Add loop.connect_accepted_socket(). Patch by Jim Fulton. | |
| - bpo-27930: Improved behaviour of logging.handlers.QueueListener. Thanks to | |
| Paulo Andrade and Petr Viktorin for the analysis and patch. | |
| - bpo-21201: Improves readability of multiprocessing error message. Thanks | |
| to Wojciech Walczak for patch. | |
| - bpo-27456: asyncio: Set TCP_NODELAY by default. | |
| - bpo-27906: Fix socket accept exhaustion during high TCP traffic. Patch by | |
| Kevin Conway. | |
| - bpo-28174: Handle when SO_REUSEPORT isn't properly supported. Patch by | |
| Seth Michael Larson. | |
| - bpo-26654: Inspect functools.partial in asyncio.Handle.__repr__. Patch by | |
| iceboy. | |
| - bpo-26909: Fix slow pipes IO in asyncio. Patch by INADA Naoki. | |
| - bpo-28176: Fix callbacks race in asyncio.SelectorLoop.sock_connect. | |
| - bpo-27759: Fix selectors incorrectly retain invalid file descriptors. | |
| Patch by Mark Williams. | |
| - bpo-28368: Refuse monitoring processes if the child watcher has no loop | |
| attached. Patch by Vincent Michel. | |
| - bpo-28369: Raise RuntimeError when transport's FD is used with add_reader, | |
| add_writer, etc. | |
| - bpo-28370: Speedup asyncio.StreamReader.readexactly. Patch by Коренберг | |
| Марк. | |
| - bpo-28371: Deprecate passing asyncio.Handles to run_in_executor. | |
| - bpo-28372: Fix asyncio to support formatting of non-python coroutines. | |
| - bpo-28399: Remove UNIX socket from FS before binding. Patch by Коренберг | |
| Марк. | |
| - bpo-27972: Prohibit Tasks to await on themselves. | |
| - bpo-26923: Fix asyncio.Gather to refuse being cancelled once all children | |
| are done. Patch by Johannes Ebke. | |
| - bpo-26796: Don't configure the number of workers for default threadpool | |
| executor. Initial patch by Hans Lawrenz. | |
| - bpo-28600: Optimize loop.call_soon(). | |
| - bpo-28613: Fix get_event_loop() return the current loop if called from | |
| coroutines/callbacks. | |
| - bpo-28639: Fix inspect.isawaitable to always return bool Patch by Justin | |
| Mayfield. | |
| - bpo-28652: Make loop methods reject socket kinds they do not support. | |
| - bpo-28653: Fix a refleak in functools.lru_cache. | |
| - bpo-28703: Fix asyncio.iscoroutinefunction to handle Mock objects. | |
| - bpo-24142: Reading a corrupt config file left the parser in an invalid | |
| state. Original patch by Florian Höch. | |
| - bpo-28990: Fix SSL hanging if connection is closed before handshake | |
| completed. (Patch by HoHo-Ho) | |
| IDLE | |
| ---- | |
| - bpo-15308: Add 'interrupt execution' (^C) to Shell menu. Patch by Roger | |
| Serwy, updated by Bayard Randel. | |
| - bpo-27922: Stop IDLE tests from 'flashing' gui widgets on the screen. | |
| - Add version to title of IDLE help window. | |
| - bpo-25564: In section on IDLE -- console differences, mention that using | |
| exec means that __builtins__ is defined for each statement. | |
| - bpo-27714: text_textview and test_autocomplete now pass when re-run in the | |
| same process. This occurs when test_idle fails when run with the -w | |
| option but without -jn. Fix warning from test_config. | |
| - bpo-25507: IDLE no longer runs buggy code because of its tkinter imports. | |
| Users must include the same imports required to run directly in Python. | |
| - bpo-27452: add line counter and crc to IDLE configHandler test dump. | |
| - bpo-27365: Allow non-ascii chars in IDLE NEWS.txt, for contributor names. | |
| - bpo-27245: IDLE: Cleanly delete custom themes and key bindings. | |
| Previously, when IDLE was started from a console or by import, a cascade | |
| of warnings was emitted. Patch by Serhiy Storchaka. | |
| C API | |
| ----- | |
| - bpo-28808: PyUnicode_CompareWithASCIIString() now never raises exceptions. | |
| - bpo-26754: PyUnicode_FSDecoder() accepted a filename argument encoded as | |
| an iterable of integers. Now only strings and bytes-like objects are | |
| accepted. | |
| Documentation | |
| ------------- | |
| - bpo-28513: Documented command-line interface of zipfile. | |
| Tests | |
| ----- | |
| - bpo-28950: Disallow -j0 to be combined with -T/-l/-M in regrtest command | |
| line arguments. | |
| - bpo-28666: Now test.support.rmtree is able to remove unwritable or | |
| unreadable directories. | |
| - bpo-23839: Various caches now are cleared before running every test file. | |
| - bpo-28409: regrtest: fix the parser of command line arguments. | |
| - bpo-27787: Call gc.collect() before checking each test for "dangling | |
| threads", since the dangling threads are weak references. | |
| - bpo-27369: In test_pyexpat, avoid testing an error message detail that | |
| changed in Expat 2.2.0. | |
| Tools/Demos | |
| ----------- | |
| - bpo-27952: Get Tools/scripts/fixcid.py working with Python 3 and the | |
| current "re" module, avoid invalid Python backslash escapes, and fix a bug | |
| parsing escaped C quote signs. | |
| - bpo-27332: Fixed the type of the first argument of module-level functions | |
| generated by Argument Clinic. Patch by Petr Viktorin. | |
| - bpo-27418: Fixed Tools/importbench/importbench.py. | |
| Windows | |
| ------- | |
| - bpo-28251: Improvements to help manuals on Windows. | |
| - bpo-28110: launcher.msi has different product codes between 32-bit and | |
| 64-bit | |
| - bpo-25144: Ensures TargetDir is set before continuing with custom install. | |
| - bpo-27469: Adds a shell extension to the launcher so that drag and drop | |
| works correctly. | |
| - bpo-27309: Enabled proper Windows styles in python[w].exe manifest. | |
| Build | |
| ----- | |
| - bpo-29080: Removes hard dependency on hg.exe from PCBuild/build.bat | |
| - bpo-23903: Added missed names to PC/python3.def. | |
| - bpo-10656: Fix out-of-tree building on AIX. Patch by Tristan Carel and | |
| Michael Haubenwallner. | |
| - bpo-26359: Rename --with-optimiations to --enable-optimizations. | |
| - bpo-28444: Fix missing extensions modules when cross compiling. | |
| - bpo-28248: Update Windows build and OS X installers to use OpenSSL 1.0.2j. | |
| - bpo-28258: Fixed build with Estonian locale (python-config and distclean | |
| targets in Makefile). Patch by Arfrever Frehtes Taifersar Arahesis. | |
| - bpo-26661: setup.py now detects system libffi with multiarch wrapper. | |
| - bpo-28066: Fix the logic that searches build directories for generated | |
| include files when building outside the source tree. | |
| - bpo-15819: Remove redundant include search directory option for building | |
| outside the source tree. | |
| - bpo-27566: Fix clean target in freeze makefile (patch by Lisa Roach) | |
| - bpo-27705: Update message in validate_ucrtbase.py | |
| - bpo-27983: Cause lack of llvm-profdata tool when using clang as required | |
| for PGO linking to be a configure time error rather than make time when | |
| --with-optimizations is enabled. Also improve our ability to find the | |
| llvm-profdata tool on MacOS and some Linuxes. | |
| - bpo-26307: The profile-opt build now applies PGO to the built-in modules. | |
| - bpo-26359: Add the --with-optimizations configure flag. | |
| - bpo-27713: Suppress spurious build warnings when updating importlib's | |
| bootstrap files. Patch by Xiang Zhang | |
| - bpo-25825: Correct the references to Modules/python.exp and ld_so_aix, | |
| which are required on AIX. This updates references to an installation | |
| path that was changed in 3.2a4, and undoes changed references to the build | |
| tree that were made in 3.5.0a1. | |
| - bpo-27453: CPP invocation in configure must use CPPFLAGS. Patch by Chi | |
| Hsuan Yen. | |
| - bpo-27641: The configure script now inserts comments into the makefile to | |
| prevent the pgen and _freeze_importlib executables from being | |
| cross-compiled. | |
| - bpo-26662: Set PYTHON_FOR_GEN in configure as the Python program to be | |
| used for file generation during the build. | |
| - bpo-10910: Avoid C++ compilation errors on FreeBSD and OS X. Also update | |
| FreedBSD version checks for the original ctype UTF-8 workaround. | |
| - bpo-28676: Prevent missing 'getentropy' declaration warning on macOS. | |
| Patch by Gareth Rees. | |
| What's New in Python 3.5.2 final? | |
| ================================= | |
| *Release date: 2016-06-26* | |
| Core and Builtins | |
| ----------------- | |
| - bpo-26930: Update Windows builds to use OpenSSL 1.0.2h. | |
| Tests | |
| ----- | |
| - bpo-26867: Ubuntu's openssl OP_NO_SSLv3 is forced on by default; fix test. | |
| IDLE | |
| ---- | |
| - bpo-27365: Allow non-ascii in idlelib/NEWS.txt - minimal part for 3.5.2. | |
| What's New in Python 3.5.2 release candidate 1? | |
| =============================================== | |
| *Release date: 2016-06-12* | |
| Security | |
| -------- | |
| - bpo-26556: Update expat to 2.1.1, fixes CVE-2015-1283. | |
| - Fix TLS stripping vulnerability in smtplib, CVE-2016-0772. Reported by | |
| Team Oststrom | |
| - bpo-26839: On Linux, :func:`os.urandom` now calls ``getrandom()`` with | |
| ``GRND_NONBLOCK`` to fall back on reading ``/dev/urandom`` if the urandom | |
| entropy pool is not initialized yet. Patch written by Colm Buckley. | |
| - bpo-26657: Fix directory traversal vulnerability with http.server on | |
| Windows. This fixes a regression that was introduced in 3.3.4rc1 and | |
| 3.4.0rc1. Based on patch by Philipp Hagemeister. | |
| - bpo-26313: ssl.py _load_windows_store_certs fails if windows cert store is | |
| empty. Patch by Baji. | |
| - bpo-25939: On Windows open the cert store readonly in | |
| ssl.enum_certificates. | |
| Core and Builtins | |
| ----------------- | |
| - bpo-27066: Fixed SystemError if a custom opener (for open()) returns a | |
| negative number without setting an exception. | |
| - bpo-20041: Fixed TypeError when frame.f_trace is set to None. Patch by | |
| Xavier de Gaye. | |
| - bpo-26168: Fixed possible refleaks in failing Py_BuildValue() with the "N" | |
| format unit. | |
| - bpo-26991: Fix possible refleak when creating a function with annotations. | |
| - bpo-27039: Fixed bytearray.remove() for values greater than 127. Patch by | |
| Joe Jevnik. | |
| - bpo-23640: int.from_bytes() no longer bypasses constructors for | |
| subclasses. | |
| - bpo-26811: gc.get_objects() no longer contains a broken tuple with NULL | |
| pointer. | |
| - bpo-20120: Use RawConfigParser for .pypirc parsing, removing support for | |
| interpolation unintentionally added with move to Python 3. Behavior no | |
| longer does any interpolation in .pypirc files, matching behavior in | |
| Python 2.7 and Setuptools 19.0. | |
| - bpo-26659: Make the builtin slice type support cycle collection. | |
| - bpo-26718: super.__init__ no longer leaks memory if called multiple times. | |
| NOTE: A direct call of super.__init__ is not endorsed! | |
| - bpo-25339: PYTHONIOENCODING now has priority over locale in setting the | |
| error handler for stdin and stdout. | |
| - bpo-26494: Fixed crash on iterating exhausting iterators. Affected classes | |
| are generic sequence iterators, iterators of str, bytes, bytearray, list, | |
| tuple, set, frozenset, dict, OrderedDict, corresponding views and | |
| os.scandir() iterator. | |
| - bpo-26581: If coding cookie is specified multiple times on a line in | |
| Python source code file, only the first one is taken to account. | |
| - bpo-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. | |
| - bpo-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. | |
| - bpo-26302: Correct behavior to reject comma as a legal character for | |
| cookie names. | |
| - bpo-4806: Avoid masking the original TypeError exception when using star | |
| (``*``) unpacking in function calls. Based on patch by Hagen Fürstenau | |
| and Daniel Urban. | |
| - bpo-27138: Fix the doc comment for FileFinder.find_spec(). | |
| - bpo-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. | |
| - bpo-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. | |
| - bpo-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. | |
| - bpo-22995: [UPDATE] Comment out the one of the pickleability tests in | |
| _PyObject_GetState() due to regressions observed in Cython-based projects. | |
| - bpo-25961: Disallowed null characters in the type name. | |
| - bpo-25973: Fix segfault when an invalid nonlocal statement binds a name | |
| starting with two underscores. | |
| - bpo-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. | |
| - bpo-20440: Massive replacing unsafe attribute setting code with special | |
| macro Py_SETREF. | |
| - bpo-25766: Special method __bytes__() now works in str subclasses. | |
| - bpo-25421: __sizeof__ methods of builtin types now use dynamic basic size. | |
| This allows sys.getsize() to work correctly with their subclasses with | |
| __slots__ defined. | |
| - bpo-25709: Fixed problem with in-place string concatenation and utf-8 | |
| cache. | |
| - bpo-27147: Mention :pep:`420` in the importlib docs. | |
| - bpo-24097: Fixed crash in object.__reduce__() if slot name is freed inside | |
| __getattr__. | |
| - bpo-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. | |
| - bpo-26478: Fix semantic bugs when using binary operators with dictionary | |
| views and tuples. | |
| - bpo-26171: Fix possible integer overflow and heap corruption in | |
| zipimporter.get_data(). | |
| - bpo-25660: Fix TAB key behaviour in REPL with readline. | |
| - bpo-25887: Raise a RuntimeError when a coroutine object is awaited more | |
| than once. | |
| - bpo-27243: Update the __aiter__ protocol: instead of returning an | |
| awaitable that resolves to an asynchronous iterator, the asynchronous | |
| iterator should be returned directly. Doing the former will trigger a | |
| PendingDeprecationWarning. | |
| Library | |
| ------- | |
| - bpo-21386: Implement missing IPv4Address.is_global property. It was | |
| documented since 07a5610bae9d. Initial patch by Roger Luethi. | |
| - bpo-20900: distutils register command now decodes HTTP responses | |
| correctly. Initial patch by ingrid. | |
| - A new version of typing.py provides several new classes and features: | |
| @overload outside stubs, Reversible, DefaultDict, Text, ContextManager, | |
| Type[], NewType(), TYPE_CHECKING, and numerous bug fixes (note that some | |
| of the new features are not yet implemented in mypy or other static | |
| analyzers). Also classes for :pep:`492` (Awaitable, AsyncIterable, | |
| AsyncIterator) have been added (in fact they made it into 3.5.1 but were | |
| never mentioned). | |
| - bpo-25738: Stop http.server.BaseHTTPRequestHandler.send_error() from | |
| sending a message body for 205 Reset Content. Also, don't send Content | |
| header fields in responses that don't have a body. Patch by Susumu | |
| Koshiba. | |
| - bpo-21313: Fix the "platform" module to tolerate when sys.version contains | |
| truncated build information. | |
| - bpo-27164: In the zlib module, allow decompressing raw Deflate streams | |
| with a predefined zdict. Based on patch by Xiang Zhang. | |
| - bpo-24291: Fix wsgiref.simple_server.WSGIRequestHandler to completely | |
| write data to the client. Previously it could do partial writes and | |
| truncate data. Also, wsgiref.handler.ServerHandler can now handle stdout | |
| doing partial writes, but this is deprecated. | |
| - bpo-26809: Add ``__all__`` to :mod:`string`. Patch by Emanuel Barry. | |
| - bpo-26373: subprocess.Popen.communicate now correctly ignores | |
| BrokenPipeError when the child process dies before .communicate() is | |
| called in more/all circumstances. | |
| - bpo-21776: distutils.upload now correctly handles HTTPError. Initial patch | |
| by Claudiu Popa. | |
| - bpo-27114: Fix SSLContext._load_windows_store_certs fails with | |
| PermissionError | |
| - bpo-18383: Avoid creating duplicate filters when using filterwarnings and | |
| simplefilter. Based on patch by Alex Shkop. | |
| - bpo-27057: Fix os.set_inheritable() on Android, ioctl() is blocked by | |
| SELinux and fails with EACCESS. The function now falls back to fcntl(). | |
| Patch written by Michał Bednarski. | |
| - bpo-27014: Fix infinite recursion using typing.py. Thanks to Kalle Tuure! | |
| - bpo-14132: Fix urllib.request redirect handling when the target only has a | |
| query string. Original fix by Ján Janech. | |
| - bpo-17214: The "urllib.request" module now percent-encodes non-ASCII bytes | |
| found in redirect target URLs. Some servers send Location header fields | |
| with non-ASCII bytes, but "http.client" requires the request target to be | |
| ASCII-encodable, otherwise a UnicodeEncodeError is raised. Based on patch | |
| by Christian Heimes. | |
| - bpo-26892: Honor debuglevel flag in urllib.request.HTTPHandler. Patch | |
| contributed by Chi Hsuan Yen. | |
| - bpo-22274: In the subprocess module, allow stderr to be redirected to | |
| stdout even when stdout is not redirected. Patch by Akira Li. | |
| - bpo-26807: mock_open 'files' no longer error on readline at end of file. | |
| Patch from Yolanda Robla. | |
| - bpo-25745: Fixed leaking a userptr in curses panel destructor. | |
| - bpo-26977: Removed unnecessary, and ignored, call to sum of squares helper | |
| in statistics.pvariance. | |
| - bpo-26881: The modulefinder module now supports extended opcode arguments. | |
| - bpo-23815: Fixed crashes related to directly created instances of types in | |
| _tkinter and curses.panel modules. | |
| - bpo-17765: weakref.ref() no longer silently ignores keyword arguments. | |
| Patch by Georg Brandl. | |
| - bpo-26873: xmlrpc now raises ResponseError on unsupported type tags | |
| instead of silently return incorrect result. | |
| - bpo-26711: Fixed the comparison of plistlib.Data with other types. | |
| - bpo-24114: Fix an uninitialized variable in `ctypes.util`. The bug only | |
| occurs on SunOS when the ctypes implementation searches for the `crle` | |
| program. Patch by Xiang Zhang. Tested on SunOS by Kees Bos. | |
| - bpo-26864: In urllib.request, change the proxy bypass host checking | |
| against no_proxy to be case-insensitive, and to not match unrelated host | |
| names that happen to have a bypassed hostname as a suffix. Patch by Xiang | |
| Zhang. | |
| - bpo-26634: recursive_repr() now sets __qualname__ of wrapper. Patch by | |
| Xiang Zhang. | |
| - bpo-26804: urllib.request will prefer lower_case proxy environment | |
| variables over UPPER_CASE or Mixed_Case ones. Patch contributed by | |
| Hans-Peter Jansen. | |
| - bpo-26837: assertSequenceEqual() now correctly outputs non-stringified | |
| differing items (like bytes in the -b mode). This affects | |
| assertListEqual() and assertTupleEqual(). | |
| - bpo-26041: Remove "will be removed in Python 3.7" from deprecation | |
| messages of platform.dist() and platform.linux_distribution(). Patch by | |
| Kumaripaba Miyurusara Athukorala. | |
| - bpo-26822: itemgetter, attrgetter and methodcaller objects no longer | |
| silently ignore keyword arguments. | |
| - bpo-26733: Disassembling a class now disassembles class and static | |
| methods. Patch by Xiang Zhang. | |
| - bpo-26801: Fix error handling in :func:`shutil.get_terminal_size`, catch | |
| :exc:`AttributeError` instead of :exc:`NameError`. Patch written by | |
| Emanuel Barry. | |
| - bpo-24838: tarfile's ustar and gnu formats now correctly calculate name | |
| and link field limits for multibyte character encodings like utf-8. | |
| - bpo-26717: Stop encoding Latin-1-ized WSGI paths with UTF-8. Patch by | |
| Anthony Sottile. | |
| - bpo-26735: Fix :func:`os.urandom` on Solaris 11.3 and newer when reading | |
| more than 1,024 bytes: call ``getrandom()`` multiple times with a limit of | |
| 1024 bytes per call. | |
| - bpo-16329: Add .webm to mimetypes.types_map. Patch by Giampaolo Rodola'. | |
| - bpo-13952: Add .csv to mimetypes.types_map. Patch by Geoff Wilson. | |
| - bpo-26709: Fixed Y2038 problem in loading binary PLists. | |
| - bpo-23735: Handle terminal resizing with Readline 6.3+ by installing our | |
| own SIGWINCH handler. Patch by Eric Price. | |
| - bpo-26586: In http.server, respond with "413 Request header fields too | |
| large" if there are too many header fields to parse, rather than killing | |
| the connection and raising an unhandled exception. Patch by Xiang Zhang. | |
| - bpo-22854: Change BufferedReader.writable() and BufferedWriter.readable() | |
| to always return False. | |
| - bpo-25195: Fix a regression in mock.MagicMock. _Call is a subclass of | |
| tuple (changeset 3603bae63c13 only works for classes) so we need to | |
| implement __ne__ ourselves. Patch by Andrew Plummer. | |
| - bpo-26644: Raise ValueError rather than SystemError when a negative length | |
| is passed to SSLSocket.recv() or read(). | |
| - bpo-23804: Fix SSL recv(0) and read(0) methods to return zero bytes | |
| instead of up to 1024. | |
| - bpo-26616: Fixed a bug in datetime.astimezone() method. | |
| - bpo-21925: :func:`warnings.formatwarning` now catches exceptions on | |
| ``linecache.getline(...)`` to be able to log :exc:`ResourceWarning` | |
| emitted late during the Python shutdown process. | |
| - bpo-24266: Ctrl+C during Readline history search now cancels the search | |
| mode when compiled with Readline 7. | |
| - bpo-26560: Avoid potential ValueError in BaseHandler.start_response. | |
| Initial patch by Peter Inglesby. | |
| - bpo-26569: Fix :func:`pyclbr.readmodule` and :func:`pyclbr.readmodule_ex` | |
| to support importing packages. | |
| - bpo-26499: Account for remaining Content-Length in HTTPResponse.readline() | |
| and read1(). Based on patch by Silent Ghost. Also document that | |
| HTTPResponse now supports these methods. | |
| - bpo-25320: Handle sockets in directories unittest discovery is scanning. | |
| Patch from Victor van den Elzen. | |
| - bpo-16181: cookiejar.http2time() now returns None if year is higher than | |
| datetime.MAXYEAR. | |
| - bpo-26513: Fixes platform module detection of Windows Server | |
| - bpo-23718: Fixed parsing time in week 0 before Jan 1. Original patch by | |
| Tamás Bence Gedai. | |
| - bpo-20589: Invoking Path.owner() and Path.group() on Windows now raise | |
| NotImplementedError instead of ImportError. | |
| - bpo-26177: Fixed the keys() method for Canvas and Scrollbar widgets. | |
| - bpo-15068: Got rid of excessive buffering in the fileinput module. The | |
| bufsize parameter is no longer used. | |
| - bpo-2202: Fix UnboundLocalError in | |
| AbstractDigestAuthHandler.get_algorithm_impls. Initial patch by Mathieu | |
| Dupuy. | |
| - bpo-25718: Fixed pickling and copying the accumulate() iterator with total | |
| is None. | |
| - bpo-26475: Fixed debugging output for regular expressions with the (?x) | |
| flag. | |
| - bpo-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. | |
| - bpo-26385: Remove the file if the internal open() call in | |
| NamedTemporaryFile() fails. Patch by Silent Ghost. | |
| - bpo-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. | |
| - bpo-25913: Leading ``<~`` is optional now in base64.a85decode() with | |
| adobe=True. Patch by Swati Jaiswal. | |
| - bpo-26186: Remove an invalid type check in importlib.util.LazyLoader. | |
| - bpo-26367: importlib.__import__() raises SystemError like | |
| builtins.__import__() when ``level`` is specified but without an | |
| accompanying package specified. | |
| - bpo-26309: In the "socketserver" module, shut down the request (closing | |
| the connected socket) when verify_request() returns false. Patch by Aviv | |
| Palivoda. | |
| - bpo-25995: os.walk() no longer uses FDs proportional to the tree depth. | |
| - bpo-26117: The os.scandir() iterator now closes file descriptor not only | |
| when the iteration is finished, but when it was failed with error. | |
| - bpo-25911: Restored support of bytes paths in os.walk() on Windows. | |
| - bpo-26045: Add UTF-8 suggestion to error message when posting a | |
| non-Latin-1 string with http.client. | |
| - bpo-12923: Reset FancyURLopener's redirect counter even if there is an | |
| exception. Based on patches by Brian Brazil and Daniel Rocco. | |
| - bpo-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. | |
| - bpo-26202: copy.deepcopy() now correctly copies range() objects with | |
| non-atomic attributes. | |
| - bpo-23076: Path.glob() now raises a ValueError if it's called with an | |
| invalid pattern. Patch by Thomas Nyberg. | |
| - bpo-19883: Fixed possible integer overflows in zipimport. | |
| - bpo-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. | |
| - bpo-26147: xmlrpc now works with strings not encodable with used non-UTF-8 | |
| encoding. | |
| - bpo-25935: Garbage collector now breaks reference loops with OrderedDict. | |
| - bpo-16620: Fixed AttributeError in msilib.Directory.glob(). | |
| - bpo-26013: Added compatibility with broken protocol 2 pickles created in | |
| old Python 3 versions (3.4.3 and lower). | |
| - bpo-25850: Use cross-compilation by default for 64-bit Windows. | |
| - bpo-17633: Improve zipimport's support for namespace packages. | |
| - bpo-24705: Fix sysconfig._parse_makefile not expanding ${} vars appearing | |
| before $() vars. | |
| - bpo-22138: Fix mock.patch behavior when patching descriptors. Restore | |
| original values after patching. Patch contributed by Sean McCully. | |
| - bpo-25672: In the ssl module, enable the SSL_MODE_RELEASE_BUFFERS mode | |
| option if it is safe to do so. | |
| - bpo-26012: Don't traverse into symlinks for ``**`` pattern in | |
| pathlib.Path.[r]glob(). | |
| - bpo-24120: Ignore PermissionError when traversing a tree with | |
| pathlib.Path.[r]glob(). Patch by Ulrich Petri. | |
| - bpo-25447: fileinput now uses sys.stdin as-is if it does not have a buffer | |
| attribute (restores backward compatibility). | |
| - bpo-25447: Copying the lru_cache() wrapper object now always works, | |
| independently from the type of the wrapped object (by returning the | |
| original object unchanged). | |
| - bpo-24103: Fixed possible use after free in ElementTree.XMLPullParser. | |
| - bpo-25860: os.fwalk() no longer skips remaining directories when error | |
| occurs. Original patch by Samson Lee. | |
| - bpo-25914: Fixed and simplified OrderedDict.__sizeof__. | |
| - bpo-25902: Fixed various refcount issues in ElementTree iteration. | |
| - bpo-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. | |
| - bpo-24903: Fix regression in number of arguments compileall accepts when | |
| '-d' is specified. The check on the number of arguments has been dropped | |
| completely as it never worked correctly anyway. | |
| - bpo-25764: In the subprocess module, preserve any exception caused by | |
| fork() failure when preexec_fn is used. | |
| - bpo-6478: _strptime's regexp cache now is reset after changing timezone | |
| with time.tzset(). | |
| - bpo-14285: When executing a package with the "python -m package" option, | |
| and package initialization fails, a proper traceback is now reported. The | |
| "runpy" module now lets exceptions from package initialization pass back | |
| to the caller, rather than raising ImportError. | |
| - bpo-19771: Also in runpy and the "-m" option, omit the irrelevant message | |
| ". . . is a package and cannot be directly executed" if the package could | |
| not even be initialized (e.g. due to a bad ``*.pyc`` file). | |
| - bpo-25177: Fixed problem with the mean of very small and very large | |
| numbers. As a side effect, statistics.mean and statistics.variance should | |
| be significantly faster. | |
| - bpo-25718: Fixed copying object with state with boolean value is false. | |
| - bpo-10131: Fixed deep copying of minidom documents. Based on patch by | |
| Marian Ganisin. | |
| - bpo-25725: Fixed a reference leak in pickle.loads() when unpickling | |
| invalid data including tuple instructions. | |
| - bpo-25663: In the Readline completer, avoid listing duplicate global | |
| names, and search the global namespace before searching builtins. | |
| - bpo-25688: Fixed file leak in ElementTree.iterparse() raising an error. | |
| - bpo-23914: Fixed SystemError raised by unpickler on broken pickle data. | |
| - bpo-25691: Fixed crash on deleting ElementTree.Element attributes. | |
| - bpo-25624: ZipFile now always writes a ZIP_STORED header for directory | |
| entries. Patch by Dingyuan Wang. | |
| - Skip getaddrinfo if host is already resolved. Patch by A. Jesse Jiryu | |
| Davis. | |
| - bpo-26050: Add asyncio.StreamReader.readuntil() method. Patch by Марк | |
| Коренберг. | |
| - bpo-25924: Avoid unnecessary serialization of getaddrinfo(3) calls on OS X | |
| versions 10.5 or higher. Original patch by A. Jesse Jiryu Davis. | |
| - bpo-26406: Avoid unnecessary serialization of getaddrinfo(3) calls on | |
| current versions of OpenBSD and NetBSD. Patch by A. Jesse Jiryu Davis. | |
| - bpo-26848: Fix asyncio/subprocess.communicate() to handle empty input. | |
| Patch by Jack O'Connor. | |
| - bpo-27040: Add loop.get_exception_handler method | |
| - bpo-27041: asyncio: Add loop.create_future method | |
| - bpo-27223: asyncio: Fix _read_ready and _write_ready to respect | |
| _conn_lost. Patch by Łukasz Langa. | |
| - bpo-22970: asyncio: Fix inconsistency cancelling Condition.wait. Patch by | |
| David Coles. | |
| IDLE | |
| ---- | |
| - bpo-5124: Paste with text selected now replaces the selection on X11. This | |
| matches how paste works on Windows, Mac, most modern Linux apps, and ttk | |
| widgets. Original patch by Serhiy Storchaka. | |
| - bpo-24759: Make clear in idlelib.idle_test.__init__ that the directory is | |
| a private implementation of test.test_idle and tool for maintainers. | |
| - bpo-27196: Stop 'ThemeChanged' warnings when running IDLE tests. These | |
| persisted after other warnings were suppressed in #20567. Apply Serhiy | |
| Storchaka's update_idletasks solution to four test files. Record this | |
| additional advice in idle_test/README.txt | |
| - bpo-20567: Revise idle_test/README.txt with advice about avoiding tk | |
| warning messages from tests. Apply advice to several IDLE tests. | |
| - bpo-27117: Make colorizer htest and turtledemo work with dark themes. Move | |
| code for configuring text widget colors to a new function. | |
| - bpo-26673: When tk reports font size as 0, change to size 10. Such fonts | |
| on Linux prevented the configuration dialog from opening. | |
| - bpo-21939: Add test for IDLE's percolator. Original patch by Saimadhav | |
| Heblikar. | |
| - bpo-21676: Add test for IDLE's replace dialog. Original patch by Saimadhav | |
| Heblikar. | |
| - bpo-18410: Add test for IDLE's search dialog. Original patch by Westley | |
| Martínez. | |
| - bpo-21703: Add test for IDLE's undo delegator. Original patch by Saimadhav | |
| Heblikar . | |
| - bpo-27044: Add ConfigDialog.remove_var_callbacks to stop memory leaks. | |
| - bpo-23977: Add more asserts to test_delegator. | |
| - bpo-20640: Add tests for idlelib.configHelpSourceEdit. Patch by Saimadhav | |
| Heblikar. | |
| - In the 'IDLE-console differences' section of the IDLE doc, clarify how | |
| running with IDLE affects sys.modules and the standard streams. | |
| - bpo-25507: fix incorrect change in IOBinding that prevented printing. | |
| Augment IOBinding htest to include all major IOBinding functions. | |
| - bpo-25905: Revert unwanted conversion of ' to ’ RIGHT SINGLE QUOTATION | |
| MARK in README.txt and open this and NEWS.txt with 'ascii'. Re-encode | |
| CREDITS.txt to utf-8 and open it with 'utf-8'. | |
| Documentation | |
| ------------- | |
| - bpo-19489: Moved the search box from the sidebar to the header and footer | |
| of each page. Patch by Ammar Askar. | |
| - bpo-24136: Document the new :pep:`448` unpacking syntax of 3.5. | |
| - bpo-26736: Used HTTPS for external links in the documentation if possible. | |
| - bpo-6953: Rework the Readline module documentation to group related | |
| functions together, and add more details such as what underlying Readline | |
| functions and variables are accessed. | |
| - bpo-23606: Adds note to ctypes documentation regarding cdll.msvcrt. | |
| - bpo-25500: Fix documentation to not claim that __import__ is searched for | |
| in the global scope. | |
| - bpo-26014: Update 3.x packaging documentation: * "See also" links to the | |
| new docs are now provided in the legacy pages * links to setuptools | |
| documentation have been updated | |
| Tests | |
| ----- | |
| - bpo-21916: Added tests for the turtle module. Patch by ingrid, Gregory | |
| Loyse and Jelle Zijlstra. | |
| - bpo-26523: The multiprocessing thread pool (multiprocessing.dummy.Pool) | |
| was untested. | |
| - bpo-26015: Added new tests for pickling iterators of mutable sequences. | |
| - bpo-26325: Added test.support.check_no_resource_warning() to check that no | |
| ResourceWarning is emitted. | |
| - bpo-25940: Changed test_ssl to use self-signed.pythontest.net. This | |
| avoids relying on svn.python.org, which recently changed root certificate. | |
| - bpo-25616: Tests for OrderedDict are extracted from test_collections into | |
| separate file test_ordered_dict. | |
| - bpo-26583: Skip test_timestamp_overflow in test_import if bytecode files | |
| cannot be written. | |
| Build | |
| ----- | |
| - bpo-26884: Fix linking extension modules for cross builds. Patch by Xavier | |
| de Gaye. | |
| - bpo-22359: Disable the rules for running _freeze_importlib and pgen when | |
| cross-compiling. The output of these programs is normally saved with the | |
| source code anyway, and is still regenerated when doing a native build. | |
| Patch by Xavier de Gaye. | |
| - bpo-27229: Fix the cross-compiling pgen rule for in-tree builds. Patch by | |
| Xavier de Gaye. | |
| - bpo-21668: Link audioop, _datetime, _ctypes_test modules to libm, except | |
| on Mac OS X. Patch written by Xavier de Gaye. | |
| - bpo-25702: A --with-lto configure option has been added that will enable | |
| link time optimizations at build time during a make profile-opt. Some | |
| compilers and toolchains are known to not produce stable code when using | |
| LTO, be sure to test things thoroughly before relying on it. It can | |
| provide a few % speed up over profile-opt alone. | |
| - bpo-26624: Adds validation of ucrtbase[d].dll version with warning for old | |
| versions. | |
| - bpo-17603: Avoid error about nonexistent fileblocks.o file by using a | |
| lower-level check for st_blocks in struct stat. | |
| - bpo-26079: Fixing the build output folder for tix-8.4.3.6. Patch by Bjoern | |
| Thiel. | |
| - bpo-26465: Update Windows builds to use OpenSSL 1.0.2g. | |
| - bpo-24421: Compile Modules/_math.c once, before building extensions. | |
| Previously it could fail to compile properly if the math and cmath builds | |
| were concurrent. | |
| - bpo-25348: Added ``--pgo`` and ``--pgo-job`` arguments to | |
| ``PCbuild\build.bat`` for building with Profile-Guided Optimization. The | |
| old ``PCbuild\build_pgo.bat`` script is now deprecated, and simply calls | |
| ``PCbuild\build.bat --pgo %*``. | |
| - bpo-25827: Add support for building with ICC to ``configure``, including a | |
| new ``--with-icc`` flag. | |
| - bpo-25696: Fix installation of Python on UNIX with make -j9. | |
| - bpo-26930: Update OS X 10.5+ 32-bit-only installer to build and link with | |
| OpenSSL 1.0.2h. | |
| - bpo-26268: Update Windows builds to use OpenSSL 1.0.2f. | |
| - bpo-25136: Support Apple Xcode 7's new textual SDK stub libraries. | |
| - bpo-24324: Do not enable unreachable code warnings when using gcc as the | |
| option does not work correctly in older versions of gcc and has been | |
| silently removed as of gcc-4.5. | |
| Windows | |
| ------- | |
| - bpo-27053: Updates make_zip.py to correctly generate library ZIP file. | |
| - bpo-26268: Update the prepare_ssl.py script to handle OpenSSL releases | |
| that don't include the contents of the include directory (that is, 1.0.2e | |
| and later). | |
| - bpo-26071: bdist_wininst created binaries fail to start and find 32bit | |
| Python | |
| - bpo-26073: Update the list of magic numbers in launcher | |
| - bpo-26065: Excludes venv from library when generating embeddable distro. | |
| - bpo-17500: Remove unused and outdated icons. (See also: | |
| https://github.com/python/pythondotorg/issues/945) | |
| Tools/Demos | |
| ----------- | |
| - bpo-26799: Fix python-gdb.py: don't get C types once when the Python code | |
| is loaded, but get C types on demand. The C types can change if | |
| python-gdb.py is loaded before the Python executable. Patch written by | |
| Thomas Ilsche. | |
| - bpo-26271: Fix the Freeze tool to properly use flags passed through | |
| configure. Patch by Daniel Shaulov. | |
| - bpo-26489: Add dictionary unpacking support to Tools/parser/unparse.py. | |
| Patch by Guo Ci Teo. | |
| - bpo-26316: Fix variable name typo in Argument Clinic. | |
| What's New in Python 3.5.1 final? | |
| ================================= | |
| *Release date: 2015-12-06* | |
| Core and Builtins | |
| ----------------- | |
| - bpo-25709: Fixed problem with in-place string concatenation and utf-8 | |
| cache. | |
| Windows | |
| ------- | |
| - bpo-25715: Python 3.5.1 installer shows wrong upgrade path and incorrect | |
| logic for launcher detection. | |
| What's New in Python 3.5.1 release candidate 1? | |
| =============================================== | |
| *Release date: 2015-11-22* | |
| Core and Builtins | |
| ----------------- | |
| - bpo-25630: Fix a possible segfault during argument parsing in functions | |
| that accept filesystem paths. | |
| - bpo-23564: Fixed a partially broken sanity check in the _posixsubprocess | |
| internals regarding how fds_to_pass were passed to the child. The bug had | |
| no actual impact as subprocess.py already avoided it. | |
| - bpo-25388: Fixed tokenizer crash when processing undecodable source code | |
| with a null byte. | |
| - bpo-25462: The hash of the key now is calculated only once in most | |
| operations in C implementation of OrderedDict. | |
| - bpo-22995: Default implementation of __reduce__ and __reduce_ex__ now | |
| rejects builtin types with not defined __new__. | |
| - bpo-25555: Fix parser and AST: fill lineno and col_offset of "arg" node | |
| when compiling AST from Python objects. | |
| - bpo-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. | |
| - bpo-24726: Fixed a crash and leaking NULL in repr() of OrderedDict that | |
| was mutated by direct calls of dict methods. | |
| - bpo-25449: Iterating OrderedDict with keys with unstable hash now raises | |
| KeyError in C implementations as well as in Python implementation. | |
| - bpo-25395: Fixed crash when highly nested OrderedDict structures were | |
| garbage collected. | |
| - bpo-25274: sys.setrecursionlimit() now raises a RecursionError if the new | |
| recursion limit is too low depending at the current recursion depth. | |
| Modify also the "lower-water mark" formula to make it monotonic. This mark | |
| is used to decide when the overflowed flag of the thread state is reset. | |
| - bpo-24402: Fix input() to prompt to the redirected stdout when | |
| sys.stdout.fileno() fails. | |
| - bpo-24806: Prevent builtin types that are not allowed to be subclassed | |
| from being subclassed through multiple inheritance. | |
| - bpo-24848: Fixed a number of bugs in UTF-7 decoding of misformed data. | |
| - bpo-25280: Import trace messages emitted in verbose (-v) mode are no | |
| longer formatted twice. | |
| - bpo-25003: On Solaris 11.3 or newer, os.urandom() now uses the getrandom() | |
| function instead of the getentropy() function. The getentropy() function | |
| is blocking to generate very good quality entropy, os.urandom() doesn't | |
| need such high-quality entropy. | |
| - bpo-25182: The stdprinter (used as sys.stderr before the io module is | |
| imported at startup) now uses the backslashreplace error handler. | |
| - bpo-25131: Make the line number and column offset of set/dict literals and | |
| comprehensions correspond to the opening brace. | |
| - bpo-25150: Hide the private _Py_atomic_xxx symbols from the public | |
| Python.h header to fix a compilation error with OpenMP. | |
| PyThreadState_GET() becomes an alias to PyThreadState_Get() to avoid ABI | |
| incompatibilities. | |
| Library | |
| ------- | |
| - bpo-25626: Change three zlib functions to accept sizes that fit in | |
| Py_ssize_t, but internally cap those sizes to UINT_MAX. This resolves a | |
| regression in 3.5 where GzipFile.read() failed to read chunks larger than | |
| 2 or 4 GiB. The change affects the zlib.Decompress.decompress() | |
| max_length parameter, the zlib.decompress() bufsize parameter, and the | |
| zlib.Decompress.flush() length parameter. | |
| - bpo-25583: Avoid incorrect errors raised by os.makedirs(exist_ok=True) | |
| when the OS gives priority to errors such as EACCES over EEXIST. | |
| - bpo-25593: Change semantics of EventLoop.stop() in asyncio. | |
| - bpo-6973: When we know a subprocess.Popen process has died, do not allow | |
| the send_signal(), terminate(), or kill() methods to do anything as they | |
| could potentially signal a different process. | |
| - bpo-25590: In the Readline completer, only call getattr() once per | |
| attribute. | |
| - bpo-25498: Fix a crash when garbage-collecting ctypes objects created by | |
| wrapping a memoryview. This was a regression made in 3.5a1. Based on | |
| patch by Eryksun. | |
| - bpo-25584: Added "escape" to the __all__ list in the glob module. | |
| - bpo-25584: Fixed recursive glob() with patterns starting with ``**``. | |
| - bpo-25446: Fix regression in smtplib's AUTH LOGIN support. | |
| - bpo-18010: Fix the pydoc web server's module search function to handle | |
| exceptions from importing packages. | |
| - bpo-25554: Got rid of circular references in regular expression parsing. | |
| - bpo-25510: fileinput.FileInput.readline() now returns b'' instead of '' at | |
| the end if the FileInput was opened with binary mode. Patch by Ryosuke | |
| Ito. | |
| - bpo-25503: Fixed inspect.getdoc() for inherited docstrings of properties. | |
| Original patch by John Mark Vandenberg. | |
| - bpo-25515: Always use os.urandom as a source of randomness in uuid.uuid4. | |
| - bpo-21827: Fixed textwrap.dedent() for the case when largest common | |
| whitespace is a substring of smallest leading whitespace. Based on patch | |
| by Robert Li. | |
| - bpo-25447: The lru_cache() wrapper objects now can be copied and pickled | |
| (by returning the original object unchanged). | |
| - bpo-25390: typing: Don't crash on Union[str, Pattern]. | |
| - bpo-25441: asyncio: Raise error from drain() when socket is closed. | |
| - bpo-25410: Cleaned up and fixed minor bugs in C implementation of | |
| OrderedDict. | |
| - bpo-25411: Improved Unicode support in SMTPHandler through better use of | |
| the email package. Thanks to user simon04 for the patch. | |
| - bpo-25407: Remove mentions of the formatter module being removed in Python | |
| 3.6. | |
| - bpo-25406: Fixed a bug in C implementation of OrderedDict.move_to_end() | |
| that caused segmentation fault or hang in iterating after moving several | |
| items to the start of ordered dict. | |
| - bpo-25364: zipfile now works in threads disabled builds. | |
| - bpo-25328: smtpd's SMTPChannel now correctly raises a ValueError if both | |
| decode_data and enable_SMTPUTF8 are set to true. | |
| - bpo-25316: distutils raises OSError instead of DistutilsPlatformError when | |
| MSVC is not installed. | |
| - bpo-25380: Fixed protocol for the STACK_GLOBAL opcode in | |
| pickletools.opcodes. | |
| - bpo-23972: Updates asyncio datagram create method allowing reuseport and | |
| reuseaddr socket options to be set prior to binding the socket. Mirroring | |
| the existing asyncio create_server method the reuseaddr option for | |
| datagram sockets defaults to True if the O/S is 'posix' (except if the | |
| platform is Cygwin). Patch by Chris Laws. | |
| - bpo-25304: Add asyncio.run_coroutine_threadsafe(). This lets you submit a | |
| coroutine to a loop from another thread, returning a | |
| concurrent.futures.Future. By Vincent Michel. | |
| - bpo-25232: Fix CGIRequestHandler to split the query from the URL at the | |
| first question mark (?) rather than the last. Patch from Xiang Zhang. | |
| - bpo-24657: Prevent CGIRequestHandler from collapsing slashes in the query | |
| part of the URL as if it were a path. Patch from Xiang Zhang. | |
| - bpo-24483: C implementation of functools.lru_cache() now calculates key's | |
| hash only once. | |
| - bpo-22958: Constructor and update method of weakref.WeakValueDictionary | |
| now accept the self and the dict keyword arguments. | |
| - bpo-22609: Constructor of collections.UserDict now accepts the self | |
| keyword argument. | |
| - bpo-25111: Fixed comparison of traceback.FrameSummary. | |
| - bpo-25262: Added support for BINBYTES8 opcode in Python implementation of | |
| unpickler. Highest 32 bits of 64-bit size for BINUNICODE8 and BINBYTES8 | |
| opcodes no longer silently ignored on 32-bit platforms in C | |
| implementation. | |
| - bpo-25034: Fix string.Formatter problem with auto-numbering and nested | |
| format_specs. Patch by Anthon van der Neut. | |
| - bpo-25233: Rewrite the guts of asyncio.Queue and asyncio.Semaphore to be | |
| more understandable and correct. | |
| - bpo-25203: Failed readline.set_completer_delims() no longer left the | |
| module in inconsistent state. | |
| - bpo-23600: Default implementation of tzinfo.fromutc() was returning wrong | |
| results in some cases. | |
| - bpo-23329: Allow the ssl module to be built with older versions of | |
| LibreSSL. | |
| - Prevent overflow in _Unpickler_Read. | |
| - bpo-25047: The XML encoding declaration written by Element Tree now | |
| respects the letter case given by the user. This restores the ability to | |
| write encoding names in uppercase like "UTF-8", which worked in Python 2. | |
| - bpo-25135: Make deque_clear() safer by emptying the deque before clearing. | |
| This helps avoid possible reentrancy issues. | |
| - bpo-19143: platform module now reads Windows version from kernel32.dll to | |
| avoid compatibility shims. | |
| - bpo-25092: Fix datetime.strftime() failure when errno was already set to | |
| EINVAL. | |
| - bpo-23517: Fix rounding in fromtimestamp() and utcfromtimestamp() methods | |
| of datetime.datetime: microseconds are now rounded to nearest with ties | |
| going to nearest even integer (ROUND_HALF_EVEN), instead of being rounding | |
| towards minus infinity (ROUND_FLOOR). It's important that these methods | |
| use the same rounding mode than datetime.timedelta to keep the property: | |
| (datetime(1970,1,1) + timedelta(seconds=t)) == | |
| datetime.utcfromtimestamp(t). It also the rounding mode used by | |
| round(float) for example. | |
| - bpo-25155: Fix datetime.datetime.now() and datetime.datetime.utcnow() on | |
| Windows to support date after year 2038. It was a regression introduced in | |
| Python 3.5.0. | |
| - bpo-25108: Omitted internal frames in traceback functions print_stack(), | |
| format_stack(), and extract_stack() called without arguments. | |
| - bpo-25118: Fix a regression of Python 3.5.0 in os.waitpid() on Windows. | |
| - bpo-24684: socket.socket.getaddrinfo() now calls | |
| PyUnicode_AsEncodedString() instead of calling the encode() method of the | |
| host, to handle correctly custom string with an encode() method which | |
| doesn't return a byte string. The encoder of the IDNA codec is now called | |
| directly instead of calling the encode() method of the string. | |
| - bpo-25060: Correctly compute stack usage of the BUILD_MAP opcode. | |
| - bpo-24857: Comparing call_args to a long sequence now correctly returns a | |
| boolean result instead of raising an exception. Patch by A Kaptur. | |
| - bpo-23144: Make sure that HTMLParser.feed() returns all the data, even | |
| when convert_charrefs is True. | |
| - bpo-24982: shutil.make_archive() with the "zip" format now adds entries | |
| for directories (including empty directories) in ZIP file. | |
| - bpo-25019: Fixed a crash caused by setting non-string key of expat parser. | |
| Based on patch by John Leitch. | |
| - bpo-16180: Exit pdb if file has syntax error, instead of trapping user in | |
| an infinite loop. Patch by Xavier de Gaye. | |
| - bpo-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. | |
| - bpo-24992: Fix error handling and a race condition (related to garbage | |
| collection) in collections.OrderedDict constructor. | |
| - bpo-24881: Fixed setting binary mode in Python implementation of FileIO on | |
| Windows and Cygwin. Patch from Akira Li. | |
| - bpo-25578: Fix (another) memory leak in SSLSocket.getpeercer(). | |
| - bpo-25530: Disable the vulnerable SSLv3 protocol by default when creating | |
| ssl.SSLContext. | |
| - bpo-25569: Fix memory leak in SSLSocket.getpeercert(). | |
| - bpo-25471: Sockets returned from accept() shouldn't appear to be | |
| nonblocking. | |
| - bpo-25319: When threading.Event is reinitialized, the underlying condition | |
| should use a regular lock rather than a recursive lock. | |
| - bpo-21112: Fix regression in unittest.expectedFailure on subclasses. Patch | |
| from Berker Peksag. | |
| - bpo-24764: cgi.FieldStorage.read_multi() now ignores the Content-Length | |
| header in part headers. Patch written by Peter Landry and reviewed by | |
| Pierre Quentel. | |
| - bpo-24913: Fix overrun error in deque.index(). Found by John Leitch and | |
| Bryce Darling. | |
| - bpo-24774: Fix docstring in http.server.test. Patch from Chiu-Hsiang Hsu. | |
| - bpo-21159: Improve message in | |
| configparser.InterpolationMissingOptionError. Patch from Łukasz Langa. | |
| - bpo-20362: Honour TestCase.longMessage correctly in assertRegex. Patch | |
| from Ilia Kurenkov. | |
| - bpo-23572: Fixed functools.singledispatch on classes with falsy | |
| metaclasses. Patch by Ethan Furman. | |
| - asyncio: ensure_future() now accepts awaitable objects. | |
| IDLE | |
| ---- | |
| - bpo-15348: Stop the debugger engine (normally in a user process) before | |
| closing the debugger window (running in the IDLE process). This prevents | |
| the RuntimeErrors that were being caught and ignored. | |
| - bpo-24455: Prevent IDLE from hanging when a) closing the shell while the | |
| debugger is active (15347); b) closing the debugger with the [X] button | |
| (15348); and c) activating the debugger when already active (24455). The | |
| patch by Mark Roseman does this by making two changes. 1. Suspend and | |
| resume the gui.interaction method with the tcl vwait mechanism intended | |
| for this purpose (instead of root.mainloop & .quit). 2. In gui.run, allow | |
| any existing interaction to terminate first. | |
| - Change 'The program' to 'Your program' in an IDLE 'kill program?' message | |
| to make it clearer that the program referred to is the currently running | |
| user program, not IDLE itself. | |
| - bpo-24750: Improve the appearance of the IDLE editor window status bar. | |
| Patch by Mark Roseman. | |
| - bpo-25313: Change the handling of new built-in text color themes to better | |
| address the compatibility problem introduced by the addition of IDLE Dark. | |
| Consistently use the revised idleConf.CurrentTheme everywhere in idlelib. | |
| - bpo-24782: Extension configuration is now a tab in the IDLE Preferences | |
| dialog rather than a separate dialog. The former tabs are now a sorted | |
| list. Patch by Mark Roseman. | |
| - bpo-22726: Re-activate the config dialog help button with some content | |
| about the other buttons and the new IDLE Dark theme. | |
| - bpo-24820: IDLE now has an 'IDLE Dark' built-in text color theme. It is | |
| more or less IDLE Classic inverted, with a cobalt blue background. | |
| Strings, comments, keywords, ... are still green, red, orange, ... . To | |
| use it with IDLEs released before November 2015, hit the 'Save as New | |
| Custom Theme' button and enter a new name, such as 'Custom Dark'. The | |
| custom theme will work with any IDLE release, and can be modified. | |
| - bpo-25224: README.txt is now an idlelib index for IDLE developers and | |
| curious users. The previous user content is now in the IDLE doc chapter. | |
| 'IDLE' now means 'Integrated Development and Learning Environment'. | |
| - bpo-24820: Users can now set breakpoint colors in Settings -> Custom | |
| Highlighting. Original patch by Mark Roseman. | |
| - bpo-24972: Inactive selection background now matches active selection | |
| background, as configured by users, on all systems. Found items are now | |
| always highlighted on Windows. Initial patch by Mark Roseman. | |
| - bpo-24570: Idle: make calltip and completion boxes appear on Macs affected | |
| by a tk regression. Initial patch by Mark Roseman. | |
| - bpo-24988: Idle ScrolledList context menus (used in debugger) now work on | |
| Mac Aqua. Patch by Mark Roseman. | |
| - bpo-24801: Make right-click for context menu work on Mac Aqua. Patch by | |
| Mark Roseman. | |
| - bpo-25173: Associate tkinter messageboxes with a specific widget. For Mac | |
| OSX, make them a 'sheet'. Patch by Mark Roseman. | |
| - bpo-25198: Enhance the initial html viewer now used for Idle Help. | |
| Properly indent fixed-pitch text (patch by Mark Roseman). Give code | |
| snippet a very Sphinx-like light blueish-gray background. Re-use initial | |
| width and height set by users for shell and editor. When the Table of | |
| Contents (TOC) menu is used, put the section header at the top of the | |
| screen. | |
| - bpo-25225: Condense and rewrite Idle doc section on text colors. | |
| - bpo-21995: Explain some differences between IDLE and console Python. | |
| - bpo-22820: Explain need for *print* when running file from Idle editor. | |
| - bpo-25224: Doc: augment Idle feature list and no-subprocess section. | |
| - bpo-25219: Update doc for Idle command line options. Some were missing and | |
| notes were not correct. | |
| - bpo-24861: Most of idlelib is private and subject to change. Use | |
| idleib.idle.* to start Idle. See idlelib.__init__.__doc__. | |
| - bpo-25199: Idle: add synchronization comments for future maintainers. | |
| - bpo-16893: Replace help.txt with help.html for Idle doc display. The new | |
| idlelib/help.html is rstripped Doc/build/html/library/idle.html. It looks | |
| better than help.txt and will better document Idle as released. The | |
| tkinter html viewer that works for this file was written by Mark Roseman. | |
| The now unused EditorWindow.HelpDialog class and helt.txt file are | |
| deprecated. | |
| - bpo-24199: Deprecate unused idlelib.idlever with possible removal in 3.6. | |
| - bpo-24790: Remove extraneous code (which also create 2 & 3 conflicts). | |
| Documentation | |
| ------------- | |
| - bpo-22558: Add remaining doc links to source code for Python-coded | |
| modules. Patch by Yoni Lavi. | |
| - bpo-12067: Rewrite Comparisons section in the Expressions chapter of the | |
| language reference. Some of the details of comparing mixed types were | |
| incorrect or ambiguous. NotImplemented is only relevant at a lower level | |
| than the Expressions chapter. Added details of comparing range() objects, | |
| and default behaviour and consistency suggestions for user-defined | |
| classes. Patch from Andy Maier. | |
| - bpo-24952: Clarify the default size argument of stack_size() in the | |
| "threading" and "_thread" modules. Patch from Mattip. | |
| - bpo-23725: Overhaul tempfile docs. Note deprecated status of mktemp. Patch | |
| from Zbigniew Jędrzejewski-Szmek. | |
| - bpo-24808: Update the types of some PyTypeObject fields. Patch by Joseph | |
| Weston. | |
| - bpo-22812: Fix unittest discovery examples. Patch from Pam McA'Nulty. | |
| Tests | |
| ----- | |
| - bpo-25449: Added tests for OrderedDict subclasses. | |
| - bpo-25099: Make test_compileall not fail when an entry on sys.path cannot | |
| be written to (commonly seen in administrative installs on Windows). | |
| - bpo-23919: Prevents assert dialogs appearing in the test suite. | |
| - ``PCbuild\rt.bat`` now accepts an unlimited number of arguments to pass | |
| along to regrtest.py. Previously there was a limit of 9. | |
| Build | |
| ----- | |
| - bpo-24915: Add LLVM support for PGO builds and use the test suite to | |
| generate the profile data. Initial patch by Alecsandru Patrascu of Intel. | |
| - bpo-24910: Windows MSIs now have unique display names. | |
| - bpo-24986: It is now possible to build Python on Windows without errors | |
| when external libraries are not available. | |
| Windows | |
| ------- | |
| - bpo-25450: Updates shortcuts to start Python in installation directory. | |
| - bpo-25164: Changes default all-users install directory to match per-user | |
| directory. | |
| - bpo-25143: Improves installer error messages for unsupported platforms. | |
| - bpo-25163: Display correct directory in installer when using non-default | |
| settings. | |
| - bpo-25361: Disables use of SSE2 instructions in Windows 32-bit build | |
| - bpo-25089: Adds logging to installer for case where launcher is not | |
| selected on upgrade. | |
| - bpo-25165: Windows uninstallation should not remove launcher if other | |
| versions remain | |
| - bpo-25112: py.exe launcher is missing icons | |
| - bpo-25102: Windows installer does not precompile for -O or -OO. | |
| - bpo-25081: Makes Back button in installer go back to upgrade page when | |
| upgrading. | |
| - bpo-25091: Increases font size of the installer. | |
| - bpo-25126: Clarifies that the non-web installer will download some | |
| components. | |
| - bpo-25213: Restores requestedExecutionLevel to manifest to disable UAC | |
| virtualization. | |
| - bpo-25022: Removed very outdated PC/example_nt/ directory. | |
| Tools/Demos | |
| ----------- | |
| - bpo-25440: Fix output of python-config --extension-suffix. | |
| What's New in Python 3.5.0 final? | |
| ================================= | |
| *Release date: 2015-09-13* | |
| Build | |
| ----- | |
| - bpo-25071: Windows installer should not require TargetDir parameter when | |
| installing quietly. | |
| What's New in Python 3.5.0 release candidate 4? | |
| =============================================== | |
| *Release date: 2015-09-09* | |
| Library | |
| ------- | |
| - bpo-25029: Fixes MemoryError in test_strptime. | |
| Build | |
| ----- | |
| - bpo-25027: Reverts partial-static build options and adds vcruntime140.dll | |
| to Windows installation. | |
| What's New in Python 3.5.0 release candidate 3? | |
| =============================================== | |
| *Release date: 2015-09-07* | |
| Core and Builtins | |
| ----------------- | |
| - bpo-24305: Prevent import subsystem stack frames from being counted by the | |
| warnings.warn(stacklevel=) parameter. | |
| - bpo-24912: Prevent __class__ assignment to immutable built-in objects. | |
| - bpo-24975: Fix AST compilation for :pep:`448` syntax. | |
| Library | |
| ------- | |
| - bpo-24917: time_strftime() buffer over-read. | |
| - bpo-24748: To resolve a compatibility problem found with py2exe and | |
| pywin32, imp.load_dynamic() once again ignores previously loaded modules | |
| to support Python modules replacing themselves with extension modules. | |
| Patch by Petr Viktorin. | |
| - bpo-24635: Fixed a bug in typing.py where isinstance([], typing.Iterable) | |
| would return True once, then False on subsequent calls. | |
| - bpo-24989: Fixed buffer overread in BytesIO.readline() if a position is | |
| set beyond size. Based on patch by John Leitch. | |
| - bpo-24913: Fix overrun error in deque.index(). Found by John Leitch and | |
| Bryce Darling. | |
| What's New in Python 3.5.0 release candidate 2? | |
| =============================================== | |
| *Release date: 2015-08-25* | |
| Core and Builtins | |
| ----------------- | |
| - bpo-24769: Interpreter now starts properly when dynamic loading is | |
| disabled. Patch by Petr Viktorin. | |
| - bpo-21167: NAN operations are now handled correctly when python is | |
| compiled with ICC even if -fp-model strict is not specified. | |
| - bpo-24492: A "package" lacking a __name__ attribute when trying to perform | |
| a ``from .. import ...`` statement will trigger an ImportError instead of | |
| an AttributeError. | |
| Library | |
| ------- | |
| - bpo-24847: Removes vcruntime140.dll dependency from Tcl/Tk. | |
| - bpo-24839: platform._syscmd_ver raises DeprecationWarning | |
| - bpo-24867: Fix Task.get_stack() for 'async def' coroutines | |
| What's New in Python 3.5.0 release candidate 1? | |
| =============================================== | |
| *Release date: 2015-08-09* | |
| Core and Builtins | |
| ----------------- | |
| - bpo-24667: Resize odict in all cases that the underlying dict resizes. | |
| Library | |
| ------- | |
| - bpo-24824: Signatures of codecs.encode() and codecs.decode() now are | |
| compatible with pydoc. | |
| - bpo-24634: Importing uuid should not try to load libc on Windows | |
| - bpo-24798: _msvccompiler.py doesn't properly support manifests | |
| - bpo-4395: Better testing and documentation of binary operators. Patch by | |
| Martin Panter. | |
| - bpo-23973: Update typing.py from GitHub repo. | |
| - bpo-23004: mock_open() now reads binary data correctly when the type of | |
| read_data is bytes. Initial patch by Aaron Hill. | |
| - bpo-23888: Handle fractional time in cookie expiry. Patch by ssh. | |
| - bpo-23652: Make it possible to compile the select module against the libc | |
| headers from the Linux Standard Base, which do not include some EPOLL | |
| macros. Patch by Matt Frank. | |
| - bpo-22932: Fix timezones in email.utils.formatdate. Patch from Dmitry | |
| Shachnev. | |
| - bpo-23779: imaplib raises TypeError if authenticator tries to abort. Patch | |
| from Craig Holmquist. | |
| - bpo-23319: Fix ctypes.BigEndianStructure, swap correctly bytes. Patch | |
| written by Matthieu Gautier. | |
| - bpo-23254: Document how to close the TCPServer listening socket. Patch | |
| from Martin Panter. | |
| - bpo-19450: Update Windows and OS X installer builds to use SQLite 3.8.11. | |
| - bpo-17527: Add PATCH to wsgiref.validator. Patch from Luca Sbardella. | |
| - bpo-24791: Fix grammar regression for call syntax: 'g(\*a or b)'. | |
| IDLE | |
| ---- | |
| - bpo-23672: Allow Idle to edit and run files with astral chars in name. | |
| Patch by Mohd Sanad Zaki Rizvi. | |
| - bpo-24745: Idle editor default font. Switch from Courier to | |
| platform-sensitive TkFixedFont. This should not affect current customized | |
| font selections. If there is a problem, edit | |
| $HOME/.idlerc/config-main.cfg and remove 'fontxxx' entries from [Editor | |
| Window]. Patch by Mark Roseman. | |
| - bpo-21192: Idle editor. When a file is run, put its name in the restart | |
| bar. Do not print false prompts. Original patch by Adnan Umer. | |
| - bpo-13884: Idle menus. Remove tearoff lines. Patch by Roger Serwy. | |
| Documentation | |
| ------------- | |
| - bpo-24129: Clarify the reference documentation for name resolution. This | |
| includes removing the assumption that readers will be familiar with the | |
| name resolution scheme Python used prior to the introduction of lexical | |
| scoping for function namespaces. Patch by Ivan Levkivskyi. | |
| - bpo-20769: Improve reload() docs. Patch by Dorian Pula. | |
| - bpo-23589: Remove duplicate sentence from the FAQ. Patch by Yongzhi Pan. | |
| - bpo-24729: Correct IO tutorial to match implementation regarding encoding | |
| parameter to open function. | |
| Tests | |
| ----- | |
| - bpo-24751: When running regrtest with the ``-w`` command line option, a | |
| test run is no longer marked as a failure if all tests succeed when | |
| re-run. | |
| What's New in Python 3.5.0 beta 4? | |
| ================================== | |
| *Release date: 2015-07-26* | |
| Core and Builtins | |
| ----------------- | |
| - bpo-23573: Restored optimization of bytes.rfind() and bytearray.rfind() | |
| for single-byte argument on Linux. | |
| - bpo-24569: Make :pep:`448` dictionary evaluation more consistent. | |
| - bpo-24583: Fix crash when set is mutated while being updated. | |
| - bpo-24407: Fix crash when dict is mutated while being updated. | |
| - bpo-24619: New approach for tokenizing async/await. As a consequence, it | |
| is now possible to have one-line 'async def foo(): await ..' functions. | |
| - bpo-24687: Plug refleak on SyntaxError in function parameters annotations. | |
| - bpo-15944: memoryview: Allow arbitrary formats when casting to bytes. | |
| Patch by Martin Panter. | |
| Library | |
| ------- | |
| - bpo-23441: rcompleter now prints a tab character instead of displaying | |
| possible completions for an empty word. Initial patch by Martin Sekera. | |
| - bpo-24683: Fixed crashes in _json functions called with arguments of | |
| inappropriate type. | |
| - bpo-21697: shutil.copytree() now correctly handles symbolic links that | |
| point to directories. Patch by Eduardo Seabra and Thomas Kluyver. | |
| - bpo-14373: Fixed segmentation fault when gc.collect() is called during | |
| constructing lru_cache (C implementation). | |
| - bpo-24695: Fix a regression in traceback.print_exception(). If | |
| exc_traceback is None we shouldn't print a traceback header like described | |
| in the documentation. | |
| - bpo-24620: Random.setstate() now validates the value of state last | |
| element. | |
| - bpo-22485: Fixed an issue that caused `inspect.getsource` to return | |
| incorrect results on nested functions. | |
| - bpo-22153: Improve unittest docs. Patch from Martin Panter and evilzero. | |
| - bpo-24580: Symbolic group references to open group in re patterns now are | |
| explicitly forbidden as well as numeric group references. | |
| - bpo-24206: Fixed __eq__ and __ne__ methods of inspect classes. | |
| - bpo-24631: Fixed regression in the timeit module with multiline setup. | |
| - bpo-18622: unittest.mock.mock_open().reset_mock would recurse infinitely. | |
| Patch from Nicola Palumbo and Laurent De Buyst. | |
| - bpo-23661: unittest.mock side_effects can now be exceptions again. This | |
| was a regression vs Python 3.4. Patch from Ignacio Rossi | |
| - bpo-24608: chunk.Chunk.read() now always returns bytes, not str. | |
| - bpo-18684: Fixed reading out of the buffer in the re module. | |
| - bpo-24259: tarfile now raises a ReadError if an archive is truncated | |
| inside a data segment. | |
| - bpo-15014: SMTP.auth() and SMTP.login() now support RFC 4954's optional | |
| initial-response argument to the SMTP AUTH command. | |
| - bpo-24669: Fix inspect.getsource() for 'async def' functions. Patch by Kai | |
| Groner. | |
| - bpo-24688: ast.get_docstring() for 'async def' functions. | |
| Build | |
| ----- | |
| - bpo-24603: Update Windows builds and OS X 10.5 installer to use OpenSSL | |
| 1.0.2d. | |
| What's New in Python 3.5.0 beta 3? | |
| ================================== | |
| *Release date: 2015-07-05* | |
| Core and Builtins | |
| ----------------- | |
| - bpo-24467: Fixed possible buffer over-read in bytearray. The bytearray | |
| object now always allocates place for trailing null byte and it's buffer | |
| now is always null-terminated. | |
| - Upgrade to Unicode 8.0.0. | |
| - bpo-24345: Add Py_tp_finalize slot for the stable ABI. | |
| - bpo-24400: Introduce a distinct type for :pep:`492` coroutines; add | |
| types.CoroutineType, inspect.getcoroutinestate, | |
| inspect.getcoroutinelocals; coroutines no longer use CO_GENERATOR flag; | |
| sys.set_coroutine_wrapper works only for 'async def' coroutines; | |
| inspect.iscoroutine no longer uses collections.abc.Coroutine, it's | |
| intended to test for pure 'async def' coroutines only; add new opcode: | |
| GET_YIELD_FROM_ITER; fix generators wrapper used in types.coroutine to be | |
| instance of collections.abc.Generator; collections.abc.Awaitable and | |
| collections.abc.Coroutine can no longer be used to detect generator-based | |
| coroutines--use inspect.isawaitable instead. | |
| - bpo-24450: Add gi_yieldfrom to generators and cr_await to coroutines. | |
| Contributed by Benno Leslie and Yury Selivanov. | |
| - bpo-19235: Add new RecursionError exception. Patch by Georg Brandl. | |
| Library | |
| ------- | |
| - bpo-21750: mock_open.read_data can now be read from each instance, as it | |
| could in Python 3.3. | |
| - bpo-24552: Fix use after free in an error case of the _pickle module. | |
| - bpo-24514: tarfile now tolerates number fields consisting of only | |
| whitespace. | |
| - bpo-19176: Fixed doctype() related bugs in C implementation of | |
| ElementTree. A deprecation warning no longer issued by XMLParser subclass | |
| with default doctype() method. Direct call of doctype() now issues a | |
| warning. Parser's doctype() now is not called if target's doctype() is | |
| called. Based on patch by Martin Panter. | |
| - bpo-20387: Restore semantic round-trip correctness in tokenize/untokenize | |
| for tab-indented blocks. | |
| - bpo-24456: Fixed possible buffer over-read in adpcm2lin() and lin2adpcm() | |
| functions of the audioop module. | |
| - bpo-24336: The contextmanager decorator now works with functions with | |
| keyword arguments called "func" and "self". Patch by Martin Panter. | |
| - bpo-24522: Fix possible integer overflow in json accelerator module. | |
| - bpo-24489: ensure a previously set C errno doesn't disturb cmath.polar(). | |
| - bpo-24408: Fixed AttributeError in measure() and metrics() methods of | |
| tkinter.Font. | |
| - bpo-14373: C implementation of functools.lru_cache() now can be used with | |
| methods. | |
| - bpo-24347: Set KeyError if PyDict_GetItemWithError returns NULL. | |
| - bpo-24348: Drop superfluous incref/decref. | |
| - bpo-24359: Check for changed OrderedDict size during iteration. | |
| - bpo-24368: Support keyword arguments in OrderedDict methods. | |
| - bpo-24362: Simplify the C OrderedDict fast nodes resize logic. | |
| - bpo-24377: Fix a ref leak in OrderedDict.__repr__. | |
| - bpo-24369: Defend against key-changes during iteration. | |
| Tests | |
| ----- | |
| - bpo-24373: _testmultiphase and xxlimited now use tp_traverse and | |
| tp_finalize to avoid reference leaks encountered when combining tp_dealloc | |
| with PyType_FromSpec (see issue #16690 for details) | |
| Documentation | |
| ------------- | |
| - bpo-24458: Update documentation to cover multi-phase initialization for | |
| extension modules (PEP 489). Patch by Petr Viktorin. | |
| - bpo-24351: Clarify what is meant by "identifier" in the context of | |
| string.Template instances. | |
| Build | |
| ----- | |
| - bpo-24432: Update Windows builds and OS X 10.5 installer to use OpenSSL | |
| 1.0.2c. | |
| What's New in Python 3.5.0 beta 2? | |
| ================================== | |
| *Release date: 2015-05-31* | |
| Core and Builtins | |
| ----------------- | |
| - bpo-24284: The startswith and endswith methods of the str class no longer | |
| return True when finding the empty string and the indexes are completely | |
| out of range. | |
| - bpo-24115: Update uses of PyObject_IsTrue(), PyObject_Not(), | |
| PyObject_IsInstance(), PyObject_RichCompareBool() and _PyDict_Contains() | |
| to check for and handle errors correctly. | |
| - bpo-24328: Fix importing one character extension modules. | |
| - bpo-11205: In dictionary displays, evaluate the key before the value. | |
| - bpo-24285: Fixed regression that prevented importing extension modules | |
| from inside packages. Patch by Petr Viktorin. | |
| Library | |
| ------- | |
| - bpo-23247: Fix a crash in the StreamWriter.reset() of CJK codecs. | |
| - bpo-24270: Add math.isclose() and cmath.isclose() functions as per | |
| :pep:`485`. Contributed by Chris Barker and Tal Einat. | |
| - bpo-5633: Fixed timeit when the statement is a string and the setup is | |
| not. | |
| - bpo-24326: Fixed audioop.ratecv() with non-default weightB argument. | |
| Original patch by David Moore. | |
| - bpo-16991: Add a C implementation of OrderedDict. | |
| - bpo-23934: Fix inspect.signature to fail correctly for builtin types | |
| lacking signature information. Initial patch by James Powell. | |
| What's New in Python 3.5.0 beta 1? | |
| ================================== | |
| *Release date: 2015-05-24* | |
| Core and Builtins | |
| ----------------- | |
| - bpo-24276: Fixed optimization of property descriptor getter. | |
| - bpo-24268: PEP 489: Multi-phase extension module initialization. Patch by | |
| Petr Viktorin. | |
| - bpo-23955: Add pyvenv.cfg option to suppress registry/environment lookup | |
| for generating sys.path on Windows. | |
| - bpo-24257: Fixed system error in the comparison of faked | |
| types.SimpleNamespace. | |
| - bpo-22939: Fixed integer overflow in iterator object. Patch by Clement | |
| Rouault. | |
| - bpo-23985: Fix a possible buffer overrun when deleting a slice from the | |
| front of a bytearray and then appending some other bytes data. | |
| - bpo-24102: Fixed exception type checking in standard error handlers. | |
| - bpo-15027: The UTF-32 encoder is now 3x to 7x faster. | |
| - bpo-23290: Optimize set_merge() for cases where the target is empty. | |
| (Contributed by Serhiy Storchaka.) | |
| - bpo-2292: PEP 448: Additional Unpacking Generalizations. | |
| - bpo-24096: Make warnings.warn_explicit more robust against mutation of the | |
| warnings.filters list. | |
| - bpo-23996: Avoid a crash when a delegated generator raises an unnormalized | |
| StopIteration exception. Patch by Stefan Behnel. | |
| - bpo-23910: Optimize property() getter calls. Patch by Joe Jevnik. | |
| - bpo-23911: Move path-based importlib bootstrap code to a separate frozen | |
| module. | |
| - bpo-24192: Fix namespace package imports. | |
| - bpo-24022: Fix tokenizer crash when processing undecodable source code. | |
| - bpo-9951: Added a hex() method to bytes, bytearray, and memoryview. | |
| - bpo-22906: PEP 479: Change StopIteration handling inside generators. | |
| - bpo-24017: PEP 492: Coroutines with async and await syntax. | |
| Library | |
| ------- | |
| - bpo-14373: Added C implementation of functools.lru_cache(). Based on | |
| patches by Matt Joiner and Alexey Kachayev. | |
| - bpo-24230: The tempfile module now accepts bytes for prefix, suffix and | |
| dir parameters and returns bytes in such situations (matching the os | |
| module APIs). | |
| - bpo-22189: collections.UserString now supports __getnewargs__(), | |
| __rmod__(), casefold(), format_map(), isprintable(), and maketrans(). | |
| Patch by Joe Jevnik. | |
| - bpo-24244: Prevents termination when an invalid format string is | |
| encountered on Windows in strftime. | |
| - bpo-23973: PEP 484: Add the typing module. | |
| - bpo-23086: The collections.abc.Sequence() abstract base class added | |
| *start* and *stop* parameters to the index() mixin. Patch by Devin | |
| Jeanpierre. | |
| - bpo-20035: Replaced the ``tkinter._fix`` module used for setting up the | |
| Tcl/Tk environment on Windows with a private function in the ``_tkinter`` | |
| module that makes no permanent changes to the environment. | |
| - bpo-24257: Fixed segmentation fault in sqlite3.Row constructor with faked | |
| cursor type. | |
| - bpo-15836: assertRaises(), assertRaisesRegex(), assertWarns() and | |
| assertWarnsRegex() assertments now check the type of the first argument to | |
| prevent possible user error. Based on patch by Daniel Wagner-Hall. | |
| - bpo-9858: Add missing method stubs to _io.RawIOBase. Patch by Laura | |
| Rupprecht. | |
| - bpo-22955: attrgetter, itemgetter and methodcaller objects in the operator | |
| module now support pickling. Added readable and evaluable repr for these | |
| objects. Based on patch by Josh Rosenberg. | |
| - bpo-22107: tempfile.gettempdir() and tempfile.mkdtemp() now try again when | |
| a directory with the chosen name already exists on Windows as well as on | |
| Unix. tempfile.mkstemp() now fails early if parent directory is not valid | |
| (not exists or is a file) on Windows. | |
| - bpo-23780: Improved error message in os.path.join() with single argument. | |
| - bpo-6598: Increased time precision and random number range in | |
| email.utils.make_msgid() to strengthen the uniqueness of the message ID. | |
| - bpo-24091: Fixed various crashes in corner cases in C implementation of | |
| ElementTree. | |
| - bpo-21931: msilib.FCICreate() now raises TypeError in the case of a bad | |
| argument instead of a ValueError with a bogus FCI error number. Patch by | |
| Jeffrey Armstrong. | |
| - bpo-13866: *quote_via* argument added to urllib.parse.urlencode. | |
| - bpo-20098: New mangle_from policy option for email, default True for | |
| compat32, but False for all other policies. | |
| - bpo-24211: The email library now supports RFC 6532: it can generate | |
| headers using utf-8 instead of encoded words. | |
| - bpo-16314: Added support for the LZMA compression in distutils. | |
| - bpo-21804: poplib now supports RFC 6856 (UTF8). | |
| - bpo-18682: Optimized pprint functions for builtin scalar types. | |
| - bpo-22027: smtplib now supports RFC 6531 (SMTPUTF8). | |
| - bpo-23488: Random generator objects now consume 2x less memory on 64-bit. | |
| - bpo-1322: platform.dist() and platform.linux_distribution() functions are | |
| now deprecated. Initial patch by Vajrasky Kok. | |
| - bpo-22486: Added the math.gcd() function. The fractions.gcd() function | |
| now is deprecated. Based on patch by Mark Dickinson. | |
| - bpo-24064: Property() docstrings are now writeable. (Patch by Berker | |
| Peksag.) | |
| - bpo-22681: Added support for the koi8_t encoding. | |
| - bpo-22682: Added support for the kz1048 encoding. | |
| - bpo-23796: peek and read1 methods of BufferedReader now raise ValueError | |
| if they called on a closed object. Patch by John Hergenroeder. | |
| - bpo-21795: smtpd now supports the 8BITMIME extension whenever the new | |
| *decode_data* constructor argument is set to False. | |
| - bpo-24155: optimize heapq.heapify() for better cache performance when | |
| heapifying large lists. | |
| - bpo-21800: imaplib now supports RFC 5161 (enable), RFC 6855 | |
| (utf8/internationalized email) and automatically encodes non-ASCII | |
| usernames and passwords to UTF8. | |
| - bpo-20274: When calling a _sqlite.Connection, it now complains if passed | |
| any keyword arguments. Previously it silently ignored them. | |
| - bpo-20274: Remove ignored and erroneous "kwargs" parameters from three | |
| METH_VARARGS methods on _sqlite.Connection. | |
| - bpo-24134: assertRaises(), assertRaisesRegex(), assertWarns() and | |
| assertWarnsRegex() checks now emits a deprecation warning when callable is | |
| None or keyword arguments except msg is passed in the context manager | |
| mode. | |
| - bpo-24018: Add a collections.abc.Generator abstract base class. | |
| Contributed by Stefan Behnel. | |
| - bpo-23880: Tkinter's getint() and getdouble() now support Tcl_Obj. | |
| Tkinter's getdouble() now supports any numbers (in particular int). | |
| - bpo-22619: Added negative limit support in the traceback module. Based on | |
| patch by Dmitry Kazakov. | |
| - bpo-24094: Fix possible crash in json.encode with poorly behaved dict | |
| subclasses. | |
| - bpo-9246: On POSIX, os.getcwd() now supports paths longer than 1025 bytes. | |
| Patch written by William Orr. | |
| - bpo-17445: add difflib.diff_bytes() to support comparison of byte strings | |
| (fixes a regression from Python 2). | |
| - bpo-23917: Fall back to sequential compilation when ProcessPoolExecutor | |
| doesn't exist. Patch by Claudiu Popa. | |
| - bpo-23008: Fixed resolving attributes with boolean value is False in | |
| pydoc. | |
| - Fix asyncio issue 235: LifoQueue and PriorityQueue's put didn't increment | |
| unfinished tasks (this bug was introduced when JoinableQueue was merged | |
| with Queue). | |
| - bpo-23908: os functions now reject paths with embedded null character on | |
| Windows instead of silently truncating them. | |
| - bpo-23728: binascii.crc_hqx() could return an integer outside of the range | |
| 0-0xffff for empty data. | |
| - bpo-23887: urllib.error.HTTPError now has a proper repr() representation. | |
| Patch by Berker Peksag. | |
| - asyncio: New event loop APIs: set_task_factory() and get_task_factory(). | |
| - asyncio: async() function is deprecated in favour of ensure_future(). | |
| - bpo-24178: asyncio.Lock, Condition, Semaphore, and BoundedSemaphore | |
| support new 'async with' syntax. Contributed by Yury Selivanov. | |
| - bpo-24179: Support 'async for' for asyncio.StreamReader. Contributed by | |
| Yury Selivanov. | |
| - bpo-24184: Add AsyncIterator and AsyncIterable ABCs to collections.abc. | |
| Contributed by Yury Selivanov. | |
| - bpo-22547: Implement informative __repr__ for inspect.BoundArguments. | |
| Contributed by Yury Selivanov. | |
| - bpo-24190: Implement inspect.BoundArgument.apply_defaults() method. | |
| Contributed by Yury Selivanov. | |
| - bpo-20691: Add 'follow_wrapped' argument to | |
| inspect.Signature.from_callable() and inspect.signature(). Contributed by | |
| Yury Selivanov. | |
| - bpo-24248: Deprecate inspect.Signature.from_function() and | |
| inspect.Signature.from_builtin(). | |
| - bpo-23898: Fix inspect.classify_class_attrs() to support attributes with | |
| overloaded __eq__ and __bool__. Patch by Mike Bayer. | |
| - bpo-24298: Fix inspect.signature() to correctly unwrap wrappers around | |
| bound methods. | |
| IDLE | |
| ---- | |
| - bpo-23184: remove unused names and imports in idlelib. Initial patch by Al | |
| Sweigart. | |
| Tests | |
| ----- | |
| - bpo-21520: test_zipfile no longer fails if the word 'bad' appears anywhere | |
| in the name of the current directory. | |
| - bpo-9517: Move script_helper into the support package. Patch by Christie | |
| Wilson. | |
| Documentation | |
| ------------- | |
| - bpo-22155: Add File Handlers subsection with createfilehandler to tkinter | |
| doc. Remove obsolete example from FAQ. Patch by Martin Panter. | |
| - bpo-24029: Document the name binding behavior for submodule imports. | |
| - bpo-24077: Fix typo in man page for -I command option: -s, not -S | |
| Tools/Demos | |
| ----------- | |
| - bpo-24000: Improved Argument Clinic's mapping of converters to legacy | |
| "format units". Updated the documentation to match. | |
| - bpo-24001: Argument Clinic converters now use accept={type} instead of | |
| types={'type'} to specify the types the converter accepts. | |
| - bpo-23330: h2py now supports arbitrary filenames in #include. | |
| - bpo-24031: make patchcheck now supports git checkouts, too. | |
| What's New in Python 3.5.0 alpha 4? | |
| =================================== | |
| *Release date: 2015-04-19* | |
| Core and Builtins | |
| ----------------- | |
| - bpo-22980: Under Linux, GNU/KFreeBSD and the Hurd, C extensions now | |
| include the architecture triplet in the extension name, to make it easy to | |
| test builds for different ABIs in the same working tree. Under OS X, the | |
| extension name now includes :pep:`3149`-style information. | |
| - bpo-22631: Added Linux-specific socket constant CAN_RAW_FD_FRAMES. Patch | |
| courtesy of Joe Jevnik. | |
| - bpo-23731: Implement :pep:`488`: removal of .pyo files. | |
| - bpo-23726: Don't enable GC for user subclasses of non-GC types that don't | |
| add any new fields. Patch by Eugene Toder. | |
| - bpo-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. | |
| - bpo-22977: Fixed formatting Windows error messages on Wine. Patch by | |
| Martin Panter. | |
| - bpo-23466: %c, %o, %x, and %X in bytes formatting now raise TypeError on | |
| non-integer input. | |
| - bpo-24044: Fix possible null pointer dereference in list.sort in out of | |
| memory conditions. | |
| - bpo-21354: PyCFunction_New function is exposed by python DLL again. | |
| Library | |
| ------- | |
| - bpo-23840: tokenize.open() now closes the temporary binary file on error | |
| to fix a resource warning. | |
| - bpo-16914: new debuglevel 2 in smtplib adds timestamps to debug output. | |
| - bpo-7159: urllib.request now supports sending auth credentials | |
| automatically after the first 401. This enhancement is a superset of the | |
| enhancement from issue #19494 and supersedes that change. | |
| - bpo-23703: Fix a regression in urljoin() introduced in 901e4e52b20a. Patch | |
| by Demian Brecht. | |
| - bpo-4254: Adds _curses.update_lines_cols(). Patch by Arnon Yaari | |
| - bpo-19933: Provide default argument for ndigits in round. Patch by | |
| Vajrasky Kok. | |
| - bpo-23193: Add a numeric_owner parameter to tarfile.TarFile.extract and | |
| tarfile.TarFile.extractall. Patch by Michael Vogt and Eric Smith. | |
| - bpo-23342: Add a subprocess.run() function than returns a CalledProcess | |
| instance for a more consistent API than the existing call* functions. | |
| - bpo-21217: inspect.getsourcelines() now tries to compute the start and end | |
| lines from the code object, fixing an issue when a lambda function is used | |
| as decorator argument. Patch by Thomas Ballinger and Allison Kaptur. | |
| - bpo-24521: Fix possible integer overflows in the pickle module. | |
| - bpo-22931: Allow '[' and ']' in cookie values. | |
| - The keywords attribute of functools.partial is now always a dictionary. | |
| - bpo-23811: Add missing newline to the PyCompileError error message. Patch | |
| by Alex Shkop. | |
| - bpo-21116: Avoid blowing memory when allocating a multiprocessing shared | |
| array that's larger than 50% of the available RAM. Patch by Médéric | |
| Boquien. | |
| - bpo-22982: Improve BOM handling when seeking to multiple positions of a | |
| writable text file. | |
| - bpo-23464: Removed deprecated asyncio JoinableQueue. | |
| - bpo-23529: Limit the size of decompressed data when reading from GzipFile, | |
| BZ2File or LZMAFile. This defeats denial of service attacks using | |
| compressed bombs (i.e. compressed payloads which decompress to a huge | |
| size). Patch by Martin Panter and Nikolaus Rath. | |
| - bpo-21859: Added Python implementation of io.FileIO. | |
| - bpo-23865: close() methods in multiple modules now are idempotent and more | |
| robust at shutdown. If they need to release multiple resources, all are | |
| released even if errors occur. | |
| - bpo-23400: Raise same exception on both Python 2 and 3 if sem_open is not | |
| available. Patch by Davin Potts. | |
| - bpo-10838: The subprocess now module includes SubprocessError and | |
| TimeoutError in its list of exported names for the users wild enough to | |
| use ``from subprocess import *``. | |
| - bpo-23411: Added DefragResult, ParseResult, SplitResult, | |
| DefragResultBytes, ParseResultBytes, and SplitResultBytes to | |
| urllib.parse.__all__. Patch by Martin Panter. | |
| - bpo-23881: urllib.request.ftpwrapper constructor now closes the socket if | |
| the FTP connection failed to fix a ResourceWarning. | |
| - bpo-23853: :meth:`socket.socket.sendall` does no more reset the socket | |
| timeout each time data is sent successfully. The socket timeout is now the | |
| maximum total duration to send all data. | |
| - bpo-22721: An order of multiline pprint output of set or dict containing | |
| orderable and non-orderable elements no longer depends on iteration order | |
| of set or dict. | |
| - bpo-15133: _tkinter.tkapp.getboolean() now supports Tcl_Obj and always | |
| returns bool. tkinter.BooleanVar now validates input values (accepted | |
| bool, int, str, and Tcl_Obj). tkinter.BooleanVar.get() now always returns | |
| bool. | |
| - bpo-10590: xml.sax.parseString() now supports string argument. | |
| - bpo-23338: Fixed formatting ctypes error messages on Cygwin. Patch by | |
| Makoto Kato. | |
| - bpo-15582: inspect.getdoc() now follows inheritance chains. | |
| - bpo-2175: SAX parsers now support a character stream of InputSource | |
| object. | |
| - bpo-16840: Tkinter now supports 64-bit integers added in Tcl 8.4 and | |
| arbitrary precision integers added in Tcl 8.5. | |
| - bpo-23834: Fix socket.sendto(), use the C Py_ssize_t type to store the | |
| result of sendto() instead of the C int type. | |
| - bpo-23618: :meth:`socket.socket.connect` now waits until the connection | |
| completes instead of raising :exc:`InterruptedError` if the connection is | |
| interrupted by signals, signal handlers don't raise an exception and the | |
| socket is blocking or has a timeout. :meth:`socket.socket.connect` still | |
| raise :exc:`InterruptedError` for non-blocking sockets. | |
| - bpo-21526: Tkinter now supports new boolean type in Tcl 8.5. | |
| - bpo-23836: Fix the faulthandler module to handle reentrant calls to its | |
| signal handlers. | |
| - bpo-23838: linecache now clears the cache and returns an empty result on | |
| MemoryError. | |
| - bpo-10395: Added os.path.commonpath(). Implemented in posixpath and | |
| ntpath. Based on patch by Rafik Draoui. | |
| - bpo-23611: Serializing more "lookupable" objects (such as unbound methods | |
| or nested classes) now are supported with pickle protocols < 4. | |
| - bpo-13583: sqlite3.Row now supports slice indexing. | |
| - bpo-18473: Fixed 2to3 and 3to2 compatible pickle mappings. Fixed | |
| ambiguous reverse mappings. Added many new mappings. Import mapping is | |
| no longer applied to modules already mapped with full name mapping. | |
| - bpo-23485: select.select() is now retried automatically with the | |
| recomputed timeout when interrupted by a signal, except if the signal | |
| handler raises an exception. This change is part of the :pep:`475`. | |
| - bpo-23752: When built from an existing file descriptor, io.FileIO() now | |
| only calls fstat() once. Before fstat() was called twice, which was not | |
| necessary. | |
| - bpo-23704: collections.deque() objects now support __add__, __mul__, and | |
| __imul__(). | |
| - bpo-23171: csv.Writer.writerow() now supports arbitrary iterables. | |
| - bpo-23745: The new email header parser now handles duplicate MIME | |
| parameter names without error, similar to how get_param behaves. | |
| - bpo-22117: Fix os.utime(), it now rounds the timestamp towards minus | |
| infinity (-inf) instead of rounding towards zero. | |
| - bpo-23310: Fix MagicMock's initializer to work with __methods__, just like | |
| configure_mock(). Patch by Kasia Jachim. | |
| Build | |
| ----- | |
| - bpo-23817: FreeBSD now uses "1.0" in the SOVERSION as other operating | |
| systems, instead of just "1". | |
| - bpo-23501: Argument Clinic now generates code into separate files by | |
| default. | |
| Tests | |
| ----- | |
| - bpo-23799: Added test.support.start_threads() for running and cleaning up | |
| multiple threads. | |
| - bpo-22390: test.regrtest now emits a warning if temporary files or | |
| directories are left after running a test. | |
| Tools/Demos | |
| ----------- | |
| - bpo-18128: pygettext now uses standard +NNNN format in the | |
| POT-Creation-Date header. | |
| - bpo-23935: Argument Clinic's understanding of format units accepting | |
| bytes, bytearrays, and buffers is now consistent with both the | |
| documentation and the implementation. | |
| - bpo-23944: Argument Clinic now wraps long impl prototypes at column 78. | |
| - bpo-20586: Argument Clinic now ensures that functions without docstrings | |
| have signatures. | |
| - bpo-23492: Argument Clinic now generates argument parsing code with | |
| PyArg_Parse instead of PyArg_ParseTuple if possible. | |
| - bpo-23500: Argument Clinic is now smarter about generating the "#ifndef" | |
| (empty) definition of the methoddef macro: it's only generated once, even | |
| if Argument Clinic processes the same symbol multiple times, and it's | |
| emitted at the end of all processing rather than immediately after the | |
| first use. | |
| C API | |
| ----- | |
| - bpo-23998: PyImport_ReInitLock() now checks for lock allocation error | |
| What's New in Python 3.5.0 alpha 3? | |
| =================================== | |
| *Release date: 2015-03-28* | |
| Core and Builtins | |
| ----------------- | |
| - bpo-23573: Increased performance of string search operations (str.find, | |
| str.index, str.count, the in operator, str.split, str.partition) with | |
| arguments of different kinds (UCS1, UCS2, UCS4). | |
| - bpo-23753: Python doesn't support anymore platforms without stat() or | |
| fstat(), these functions are always required. | |
| - bpo-23681: The -b option now affects comparisons of bytes with int. | |
| - bpo-23632: Memoryviews now allow tuple indexing (including for | |
| multi-dimensional memoryviews). | |
| - bpo-23192: Fixed generator lambdas. Patch by Bruno Cauet. | |
| - bpo-23629: Fix the default __sizeof__ implementation for variable-sized | |
| objects. | |
| Library | |
| ------- | |
| - bpo-14260: The groupindex attribute of regular expression pattern object | |
| now is non-modifiable mapping. | |
| - bpo-23792: Ignore KeyboardInterrupt when the pydoc pager is active. This | |
| mimics the behavior of the standard unix pagers, and prevents pipepager | |
| from shutting down while the pager itself is still running. | |
| - bpo-23775: pprint() of OrderedDict now outputs the same representation as | |
| repr(). | |
| - bpo-23765: Removed IsBadStringPtr calls in ctypes | |
| - bpo-22364: Improved some re error messages using regex for hints. | |
| - bpo-23742: ntpath.expandvars() no longer loses unbalanced single quotes. | |
| - bpo-21717: The zipfile.ZipFile.open function now supports 'x' (exclusive | |
| creation) mode. | |
| - bpo-21802: The reader in BufferedRWPair now is closed even when closing | |
| writer failed in BufferedRWPair.close(). | |
| - bpo-23622: Unknown escapes in regular expressions that consist of ``'\'`` | |
| and ASCII letter now raise a deprecation warning and will be forbidden in | |
| Python 3.6. | |
| - bpo-23671: string.Template now allows specifying the "self" parameter as a | |
| keyword argument. string.Formatter now allows specifying the "self" and | |
| the "format_string" parameters as keyword arguments. | |
| - bpo-23502: The pprint module now supports mapping proxies. | |
| - bpo-17530: pprint now wraps long bytes objects and bytearrays. | |
| - bpo-22687: Fixed some corner cases in breaking words in tetxtwrap. Got rid | |
| of quadratic complexity in breaking long words. | |
| - bpo-4727: The copy module now uses pickle protocol 4 (PEP 3154) and | |
| supports copying of instances of classes whose __new__ method takes | |
| keyword-only arguments. | |
| - bpo-23491: Added a zipapp module to support creating executable zip file | |
| archives of Python code. Registered ".pyz" and ".pyzw" extensions on | |
| Windows for these archives (PEP 441). | |
| - bpo-23657: Avoid explicit checks for str in zipapp, adding support for | |
| pathlib.Path objects as arguments. | |
| - bpo-23688: Added support of arbitrary bytes-like objects and avoided | |
| unnecessary copying of memoryview in gzip.GzipFile.write(). Original patch | |
| by Wolfgang Maier. | |
| - bpo-23252: Added support for writing ZIP files to unseekable streams. | |
| - bpo-23647: Increase imaplib's MAXLINE to accommodate modern mailbox sizes. | |
| - bpo-23539: If body is None, http.client.HTTPConnection.request now sets | |
| Content-Length to 0 for PUT, POST, and PATCH headers to avoid 411 errors | |
| from some web servers. | |
| - bpo-22351: The nntplib.NNTP constructor no longer leaves the connection | |
| and socket open until the garbage collector cleans them up. Patch by | |
| Martin Panter. | |
| - bpo-23704: collections.deque() objects now support methods for index(), | |
| insert(), and copy(). This allows deques to be registered as a | |
| MutableSequence and it improves their substitutability for lists. | |
| - bpo-23715: :func:`signal.sigwaitinfo` and :func:`signal.sigtimedwait` are | |
| now retried when interrupted by a signal not in the *sigset* parameter, if | |
| the signal handler does not raise an exception. signal.sigtimedwait() | |
| recomputes the timeout with a monotonic clock when it is retried. | |
| - bpo-23001: Few functions in modules mmap, ossaudiodev, socket, ssl, and | |
| codecs, that accepted only read-only bytes-like object now accept writable | |
| bytes-like object too. | |
| - bpo-23646: If time.sleep() is interrupted by a signal, the sleep is now | |
| retried with the recomputed delay, except if the signal handler raises an | |
| exception (PEP 475). | |
| - bpo-23136: _strptime now uniformly handles all days in week 0, including | |
| Dec 30 of previous year. Based on patch by Jim Carroll. | |
| - bpo-23700: Iterator of NamedTemporaryFile now keeps a reference to | |
| NamedTemporaryFile instance. Patch by Bohuslav Kabrda. | |
| - bpo-22903: The fake test case created by unittest.loader when it fails | |
| importing a test module is now picklable. | |
| - bpo-22181: On Linux, os.urandom() now uses the new getrandom() syscall if | |
| available, syscall introduced in the Linux kernel 3.17. It is more | |
| reliable and more secure, because it avoids the need of a file descriptor | |
| and waits until the kernel has enough entropy. | |
| - bpo-2211: Updated the implementation of the http.cookies.Morsel class. | |
| Setting attributes key, value and coded_value directly now is deprecated. | |
| update() and setdefault() now transform and check keys. Comparing for | |
| equality now takes into account attributes key, value and coded_value. | |
| copy() now returns a Morsel, not a dict. repr() now contains all | |
| attributes. Optimized checking keys and quoting values. Added new tests. | |
| Original patch by Demian Brecht. | |
| - bpo-18983: Allow selection of output units in timeit. Patch by Julian | |
| Gindi. | |
| - bpo-23631: Fix traceback.format_list when a traceback has been mutated. | |
| - bpo-23568: Add rdivmod support to MagicMock() objects. Patch by Håkan | |
| Lövdahl. | |
| - bpo-2052: Add charset parameter to HtmlDiff.make_file(). | |
| - bpo-23668: Support os.truncate and os.ftruncate on Windows. | |
| - bpo-23138: Fixed parsing cookies with absent keys or values in cookiejar. | |
| Patch by Demian Brecht. | |
| - bpo-23051: multiprocessing.Pool methods imap() and imap_unordered() now | |
| handle exceptions raised by an iterator. Patch by Alon Diamant and Davin | |
| Potts. | |
| - bpo-23581: Add matmul support to MagicMock. Patch by Håkan Lövdahl. | |
| - bpo-23566: enable(), register(), dump_traceback() and | |
| dump_traceback_later() functions of faulthandler now accept file | |
| descriptors. Patch by Wei Wu. | |
| - bpo-22928: Disabled HTTP header injections in http.client. Original patch | |
| by Demian Brecht. | |
| - bpo-23615: Modules bz2, tarfile and tokenize now can be reloaded with | |
| imp.reload(). Patch by Thomas Kluyver. | |
| - bpo-23605: os.walk() now calls os.scandir() instead of os.listdir(). The | |
| usage of os.scandir() reduces the number of calls to os.stat(). Initial | |
| patch written by Ben Hoyt. | |
| Build | |
| ----- | |
| - bpo-23585: make patchcheck will ensure the interpreter is built. | |
| Tests | |
| ----- | |
| - bpo-23583: Added tests for standard IO streams in IDLE. | |
| - bpo-22289: Prevent test_urllib2net failures due to ftp connection timeout. | |
| Tools/Demos | |
| ----------- | |
| - bpo-22826: The result of open() in Tools/freeze/bkfile.py is now better | |
| compatible with regular files (in particular it now supports the context | |
| management protocol). | |
| What's New in Python 3.5.0 alpha 2? | |
| =================================== | |
| *Release date: 2015-03-09* | |
| Core and Builtins | |
| ----------------- | |
| - bpo-23571: PyObject_Call() and PyCFunction_Call() now raise a SystemError | |
| if a function returns a result and raises an exception. The SystemError is | |
| chained to the previous exception. | |
| Library | |
| ------- | |
| - bpo-22524: New os.scandir() function, part of the :pep:`471`: | |
| "os.scandir() function -- a better and faster directory iterator". Patch | |
| written by Ben Hoyt. | |
| - bpo-23103: Reduced the memory consumption of IPv4Address and IPv6Address. | |
| - bpo-21793: BaseHTTPRequestHandler again logs response code as numeric, not | |
| as stringified enum. Patch by Demian Brecht. | |
| - bpo-23476: In the ssl module, enable OpenSSL's X509_V_FLAG_TRUSTED_FIRST | |
| flag on certificate stores when it is available. | |
| - bpo-23576: Avoid stalling in SSL reads when EOF has been reached in the | |
| SSL layer but the underlying connection hasn't been closed. | |
| - bpo-23504: Added an __all__ to the types module. | |
| - bpo-23563: Optimized utility functions in urllib.parse. | |
| - bpo-7830: Flatten nested functools.partial. | |
| - bpo-20204: Added the __module__ attribute to _tkinter classes. | |
| - bpo-19980: Improved help() for non-recognized strings. help('') now shows | |
| the help on str. help('help') now shows the help on help(). Original | |
| patch by Mark Lawrence. | |
| - bpo-23521: Corrected pure python implementation of timedelta division. | |
| Eliminated OverflowError from ``timedelta * float`` for some floats; | |
| Corrected rounding in timedelta true division. | |
| - bpo-21619: Popen objects no longer leave a zombie after exit in the with | |
| statement if the pipe was broken. Patch by Martin Panter. | |
| - bpo-22936: Make it possible to show local variables in tracebacks for both | |
| the traceback module and unittest. | |
| - bpo-15955: Add an option to limit the output size in bz2.decompress(). | |
| Patch by Nikolaus Rath. | |
| - bpo-6639: Module-level turtle functions no longer raise TclError after | |
| closing the window. | |
| - bpo-814253: Group references and conditional group references now work in | |
| lookbehind assertions in regular expressions. (See also: bpo-9179) | |
| - bpo-23215: Multibyte codecs with custom error handlers that ignores errors | |
| consumed too much memory and raised SystemError or MemoryError. Original | |
| patch by Aleksi Torhamo. | |
| - bpo-5700: io.FileIO() called flush() after closing the file. flush() was | |
| not called in close() if closefd=False. | |
| - bpo-23374: Fixed pydoc failure with non-ASCII files when stdout encoding | |
| differs from file system encoding (e.g. on Mac OS). | |
| - bpo-23481: Remove RC4 from the SSL module's default cipher list. | |
| - bpo-21548: Fix pydoc.synopsis() and pydoc.apropos() on modules with empty | |
| docstrings. | |
| - bpo-22885: Fixed arbitrary code execution vulnerability in the dbm.dumb | |
| module. Original patch by Claudiu Popa. | |
| - bpo-23239: ssl.match_hostname() now supports matching of IP addresses. | |
| - bpo-23146: Fix mishandling of absolute Windows paths with forward slashes | |
| in pathlib. | |
| - bpo-23096: Pickle representation of floats with protocol 0 now is the same | |
| for both Python and C implementations. | |
| - bpo-19105: pprint now more efficiently uses free space at the right. | |
| - bpo-14910: Add allow_abbrev parameter to argparse.ArgumentParser. Patch by | |
| Jonathan Paugh, Steven Bethard, paul j3 and Daniel Eriksson. | |
| - bpo-21717: tarfile.open() now supports 'x' (exclusive creation) mode. | |
| - bpo-23344: marshal.dumps() is now 20-25% faster on average. | |
| - bpo-20416: marshal.dumps() with protocols 3 and 4 is now 40-50% faster on | |
| average. | |
| - bpo-23421: Fixed compression in tarfile CLI. Patch by wdv4758h. | |
| - bpo-23367: Fix possible overflows in the unicodedata module. | |
| - bpo-23361: Fix possible overflow in Windows subprocess creation code. | |
| - logging.handlers.QueueListener now takes a respect_handler_level keyword | |
| argument which, if set to True, will pass messages to handlers taking | |
| handler levels into account. | |
| - bpo-19705: turtledemo now has a visual sorting algorithm demo. Original | |
| patch from Jason Yeo. | |
| - bpo-23801: Fix issue where cgi.FieldStorage did not always ignore the | |
| entire preamble to a multipart body. | |
| Build | |
| ----- | |
| - bpo-23445: pydebug builds now use "gcc -Og" where possible, to make the | |
| resulting executable faster. | |
| - bpo-23686: Update OS X 10.5 installer build to use OpenSSL 1.0.2a. | |
| C API | |
| ----- | |
| - bpo-20204: Deprecation warning is now raised for builtin types without the | |
| __module__ attribute. | |
| Windows | |
| ------- | |
| - bpo-23465: Implement :pep:`486` - Make the Python Launcher aware of | |
| virtual environments. Patch by Paul Moore. | |
| - bpo-23437: Make user scripts directory versioned on Windows. Patch by Paul | |
| Moore. | |
| What's New in Python 3.5.0 alpha 1? | |
| =================================== | |
| *Release date: 2015-02-08* | |
| Core and Builtins | |
| ----------------- | |
| - bpo-23285: PEP 475 - EINTR handling. | |
| - bpo-22735: Fix many edge cases (including crashes) involving custom mro() | |
| implementations. | |
| - bpo-22896: Avoid using PyObject_AsCharBuffer(), PyObject_AsReadBuffer() | |
| and PyObject_AsWriteBuffer(). | |
| - bpo-21295: Revert some changes (issue #16795) to AST line numbers and | |
| column offsets that constituted a regression. | |
| - bpo-22986: Allow changing an object's __class__ between a dynamic type and | |
| static type in some cases. | |
| - bpo-15859: PyUnicode_EncodeFSDefault(), PyUnicode_EncodeMBCS() and | |
| PyUnicode_EncodeCodePage() now raise an exception if the object is not a | |
| Unicode object. For PyUnicode_EncodeFSDefault(), it was already the case | |
| on platforms other than Windows. Patch written by Campbell Barton. | |
| - bpo-21408: The default __ne__() now returns NotImplemented if __eq__() | |
| returned NotImplemented. Original patch by Martin Panter. | |
| - bpo-23321: Fixed a crash in str.decode() when error handler returned | |
| replacement string longer than malformed input data. | |
| - bpo-22286: The "backslashreplace" error handlers now works with decoding | |
| and translating. | |
| - bpo-23253: Delay-load ShellExecute[AW] in os.startfile for reduced startup | |
| overhead on Windows. | |
| - bpo-22038: pyatomic.h now uses stdatomic.h or GCC built-in functions for | |
| atomic memory access if available. Patch written by Vitor de Lima and | |
| Gustavo Temple. | |
| - bpo-20284: %-interpolation (aka printf) formatting added for bytes and | |
| bytearray. | |
| - bpo-23048: Fix jumping out of an infinite while loop in the pdb. | |
| - bpo-20335: bytes constructor now raises TypeError when encoding or errors | |
| is specified with non-string argument. Based on patch by Renaud Blanch. | |
| - bpo-22834: If the current working directory ends up being set to a | |
| non-existent directory then import will no longer raise FileNotFoundError. | |
| - bpo-22869: Move the interpreter startup & shutdown code to a new dedicated | |
| pylifecycle.c module | |
| - bpo-22847: Improve method cache efficiency. | |
| - bpo-22335: Fix crash when trying to enlarge a bytearray to 0x7fffffff | |
| bytes on a 32-bit platform. | |
| - bpo-22653: Fix an assertion failure in debug mode when doing a reentrant | |
| dict insertion in debug mode. | |
| - bpo-22643: Fix integer overflow in Unicode case operations (upper, lower, | |
| title, swapcase, casefold). | |
| - bpo-17636: Circular imports involving relative imports are now supported. | |
| - bpo-22604: Fix assertion error in debug mode when dividing a complex | |
| number by (nan+0j). | |
| - bpo-21052: Do not raise ImportWarning when sys.path_hooks or sys.meta_path | |
| are set to None. | |
| - bpo-16518: Use 'bytes-like object required' in error messages that | |
| previously used the far more cryptic "'x' does not support the buffer | |
| protocol. | |
| - bpo-22470: Fixed integer overflow issues in "backslashreplace", | |
| "xmlcharrefreplace", and "surrogatepass" error handlers. | |
| - bpo-22540: speed up `PyObject_IsInstance` and `PyObject_IsSubclass` in the | |
| common case that the second argument has metaclass `type`. | |
| - bpo-18711: Add a new `PyErr_FormatV` function, similar to `PyErr_Format` | |
| but accepting a `va_list` argument. | |
| - bpo-22520: Fix overflow checking when generating the repr of a unicode | |
| object. | |
| - bpo-22519: Fix overflow checking in PyBytes_Repr. | |
| - bpo-22518: Fix integer overflow issues in latin-1 encoding. | |
| - bpo-16324: _charset parameter of MIMEText now also accepts | |
| email.charset.Charset instances. Initial patch by Claude Paroz. | |
| - bpo-1764286: Fix inspect.getsource() to support decorated functions. Patch | |
| by Claudiu Popa. | |
| - bpo-18554: os.__all__ includes posix functions. | |
| - bpo-21391: Use os.path.abspath in the shutil module. | |
| - bpo-11471: avoid generating a JUMP_FORWARD instruction at the end of an | |
| if-block if there is no else-clause. Original patch by Eugene Toder. | |
| - bpo-22215: Now ValueError is raised instead of TypeError when str or bytes | |
| argument contains not permitted null character or byte. | |
| - bpo-22258: Fix the internal function set_inheritable() on Illumos. This | |
| platform exposes the function ``ioctl(FIOCLEX)``, but calling it fails | |
| with errno is ENOTTY: "Inappropriate ioctl for device". set_inheritable() | |
| now falls back to the slower ``fcntl()`` (``F_GETFD`` and then | |
| ``F_SETFD``). | |
| - bpo-21389: Displaying the __qualname__ of the underlying function in the | |
| repr of a bound method. | |
| - bpo-22206: Using pthread, PyThread_create_key() now sets errno to ENOMEM | |
| and returns -1 (error) on integer overflow. | |
| - bpo-20184: Argument Clinic based signature introspection added for 30 of | |
| the builtin functions. | |
| - bpo-22116: C functions and methods (of the 'builtin_function_or_method' | |
| type) can now be weakref'ed. Patch by Wei Wu. | |
| - bpo-22077: Improve index error messages for bytearrays, bytes, lists, and | |
| tuples by adding 'or slices'. Added ', not <typename>' for bytearrays. | |
| Original patch by Claudiu Popa. | |
| - bpo-20179: Apply Argument Clinic to bytes and bytearray. Patch by Tal | |
| Einat. | |
| - bpo-22082: Clear interned strings in slotdefs. | |
| - Upgrade Unicode database to Unicode 7.0.0. | |
| - bpo-21897: Fix a crash with the f_locals attribute with closure variables | |
| when frame.clear() has been called. | |
| - bpo-21205: Add a new ``__qualname__`` attribute to generator, the | |
| qualified name, and use it in the representation of a generator | |
| (``repr(gen)``). The default name of the generator (``__name__`` | |
| attribute) is now get from the function instead of the code. Use | |
| ``gen.gi_code.co_name`` to get the name of the code. | |
| - bpo-21669: With the aid of heuristics in SyntaxError.__init__, the parser | |
| now attempts to generate more meaningful (or at least more search engine | |
| friendly) error messages when "exec" and "print" are used as statements. | |
| - bpo-21642: In the conditional if-else expression, allow an integer written | |
| with no space between itself and the ``else`` keyword (e.g. ``True if | |
| 42else False``) to be valid syntax. | |
| - bpo-21523: Fix over-pessimistic computation of the stack effect of some | |
| opcodes in the compiler. This also fixes a quadratic compilation time | |
| issue noticeable when compiling code with a large number of "and" and "or" | |
| operators. | |
| - bpo-21418: Fix a crash in the builtin function super() when called without | |
| argument and without current frame (ex: embedded Python). | |
| - bpo-21425: Fix flushing of standard streams in the interactive | |
| interpreter. | |
| - bpo-21435: In rare cases, when running finalizers on objects in cyclic | |
| trash a bad pointer dereference could occur due to a subtle flaw in | |
| internal iteration logic. | |
| - bpo-21377: PyBytes_Concat() now tries to concatenate in-place when the | |
| first argument has a reference count of 1. Patch by Nikolaus Rath. | |
| - bpo-20355: -W command line options now have higher priority than the | |
| PYTHONWARNINGS environment variable. Patch by Arfrever. | |
| - bpo-21274: Define PATH_MAX for GNU/Hurd in Python/pythonrun.c. | |
| - bpo-20904: Support setting FPU precision on m68k. | |
| - bpo-21209: Fix sending tuples to custom generator objects with the yield | |
| from syntax. | |
| - bpo-21193: pow(a, b, c) now raises ValueError rather than TypeError when b | |
| is negative. Patch by Josh Rosenberg. | |
| - bpo-21176: PEP 465: Add the '@' operator for matrix multiplication. | |
| - bpo-21134: Fix segfault when str is called on an uninitialized | |
| UnicodeEncodeError, UnicodeDecodeError, or UnicodeTranslateError object. | |
| - bpo-19537: Fix PyUnicode_DATA() alignment under m68k. Patch by Andreas | |
| Schwab. | |
| - bpo-20929: Add a type cast to avoid shifting a negative number. | |
| - bpo-20731: Properly position in source code files even if they are opened | |
| in text mode. Patch by Serhiy Storchaka. | |
| - bpo-20637: Key-sharing now also works for instance dictionaries of | |
| subclasses. Patch by Peter Ingebretson. | |
| - bpo-8297: Attributes missing from modules now include the module name in | |
| the error text. Original patch by ysj.ray. | |
| - bpo-19995: %c, %o, %x, and %X now raise TypeError on non-integer input. | |
| - bpo-19655: The ASDL parser - used by the build process to generate code | |
| for managing the Python AST in C - was rewritten. The new parser is self | |
| contained and does not require to carry long the spark.py parser-generator | |
| library; spark.py was removed from the source base. | |
| - bpo-12546: Allow ``\x00`` to be used as a fill character when using str, | |
| int, float, and complex __format__ methods. | |
| - bpo-20480: Add ipaddress.reverse_pointer. Patch by Leon Weber. | |
| - bpo-13598: Modify string.Formatter to support auto-numbering of | |
| replacement fields. It now matches the behavior of str.format() in this | |
| regard. Patches by Phil Elson and Ramchandra Apte. | |
| - bpo-8931: Make alternate formatting ('#') for type 'c' raise an exception. | |
| In versions prior to 3.5, '#' with 'c' had no effect. Now specifying it is | |
| an error. Patch by Torsten Landschoff. | |
| - bpo-23165: Perform overflow checks before allocating memory in the | |
| _Py_char2wchar function. | |
| Library | |
| ------- | |
| - bpo-23399: pyvenv creates relative symlinks where possible. | |
| - bpo-20289: cgi.FieldStorage() now supports the context management | |
| protocol. | |
| - bpo-13128: Print response headers for CONNECT requests when debuglevel > | |
| 0. Patch by Demian Brecht. | |
| - bpo-15381: Optimized io.BytesIO to make less allocations and copyings. | |
| - bpo-22818: Splitting on a pattern that could match an empty string now | |
| raises a warning. Patterns that can only match empty strings are now | |
| rejected. | |
| - bpo-23099: Closing io.BytesIO with exported buffer is rejected now to | |
| prevent corrupting exported buffer. | |
| - bpo-23326: Removed __ne__ implementations. Since fixing default __ne__ | |
| implementation in issue #21408 they are redundant. | |
| - bpo-23363: Fix possible overflow in itertools.permutations. | |
| - bpo-23364: Fix possible overflow in itertools.product. | |
| - bpo-23366: Fixed possible integer overflow in itertools.combinations. | |
| - bpo-23369: Fixed possible integer overflow in | |
| _json.encode_basestring_ascii. | |
| - bpo-23353: Fix the exception handling of generators in | |
| PyEval_EvalFrameEx(). At entry, save or swap the exception state even if | |
| PyEval_EvalFrameEx() is called with throwflag=0. At exit, the exception | |
| state is now always restored or swapped, not only if why is WHY_YIELD or | |
| WHY_RETURN. Patch co-written with Antoine Pitrou. | |
| - bpo-14099: Restored support of writing ZIP files to tellable but | |
| non-seekable streams. | |
| - bpo-14099: Writing to ZipFile and reading multiple ZipExtFiles is | |
| threadsafe now. | |
| - bpo-19361: JSON decoder now raises JSONDecodeError instead of ValueError. | |
| - bpo-18518: timeit now rejects statements which can't be compiled outside a | |
| function or a loop (e.g. "return" or "break"). | |
| - bpo-23094: Fixed readline with frames in Python implementation of pickle. | |
| - bpo-23268: Fixed bugs in the comparison of ipaddress classes. | |
| - bpo-21408: Removed incorrect implementations of __ne__() which didn't | |
| returned NotImplemented if __eq__() returned NotImplemented. The default | |
| __ne__() now works correctly. | |
| - bpo-19996: :class:`email.feedparser.FeedParser` now handles (malformed) | |
| headers with no key rather than assuming the body has started. | |
| - bpo-20188: Support Application-Layer Protocol Negotiation (ALPN) in the | |
| ssl module. | |
| - bpo-23133: Pickling of ipaddress objects now produces more compact and | |
| portable representation. | |
| - bpo-23248: Update ssl error codes from latest OpenSSL git master. | |
| - bpo-23266: Much faster implementation of ipaddress.collapse_addresses() | |
| when there are many non-consecutive addresses. | |
| - bpo-23098: 64-bit dev_t is now supported in the os module. | |
| - bpo-21817: When an exception is raised in a task submitted to a | |
| ProcessPoolExecutor, the remote traceback is now displayed in the parent | |
| process. Patch by Claudiu Popa. | |
| - bpo-15955: Add an option to limit output size when decompressing LZMA | |
| data. Patch by Nikolaus Rath and Martin Panter. | |
| - bpo-23250: In the http.cookies module, capitalize "HttpOnly" and "Secure" | |
| as they are written in the standard. | |
| - bpo-23063: In the distutils' check command, fix parsing of reST with code | |
| or code-block directives. | |
| - bpo-23209: selectors.BaseSelector.get_key() now raises a RuntimeError if | |
| the selector is closed. And selectors.BaseSelector.close() now clears its | |
| internal reference to the selector mapping to break a reference cycle. | |
| Initial patch written by Martin Richard. (See also: bpo-23225) | |
| - bpo-17911: Provide a way to seed the linecache for a PEP-302 module | |
| without actually loading the code. | |
| - bpo-17911: Provide a new object API for traceback, including the ability | |
| to not lookup lines at all until the traceback is actually rendered, | |
| without any trace of the original objects being kept alive. | |
| - bpo-19777: Provide a home() classmethod on Path objects. Contributed by | |
| Victor Salgado and Mayank Tripathi. | |
| - bpo-23206: Make ``json.dumps(..., ensure_ascii=False)`` as fast as the | |
| default case of ``ensure_ascii=True``. Patch by Naoki Inada. | |
| - bpo-23185: Add math.inf and math.nan constants. | |
| - bpo-23186: Add ssl.SSLObject.shared_ciphers() and | |
| ssl.SSLSocket.shared_ciphers() to fetch the client's list ciphers sent at | |
| handshake. | |
| - bpo-23143: Remove compatibility with OpenSSLs older than 0.9.8. | |
| - bpo-23132: Improve performance and introspection support of comparison | |
| methods created by functool.total_ordering. | |
| - bpo-19776: Add an expanduser() method on Path objects. | |
| - bpo-23112: Fix SimpleHTTPServer to correctly carry the query string and | |
| fragment when it redirects to add a trailing slash. | |
| - bpo-21793: Added http.HTTPStatus enums (i.e. HTTPStatus.OK, | |
| HTTPStatus.NOT_FOUND). Patch by Demian Brecht. | |
| - bpo-23093: In the io, module allow more operations to work on detached | |
| streams. | |
| - bpo-23111: In the ftplib, make ssl.PROTOCOL_SSLv23 the default protocol | |
| version. | |
| - bpo-22585: On OpenBSD 5.6 and newer, os.urandom() now calls getentropy(), | |
| instead of reading /dev/urandom, to get pseudo-random bytes. | |
| - bpo-19104: pprint now produces evaluable output for wrapped strings. | |
| - bpo-23071: Added missing names to codecs.__all__. Patch by Martin Panter. | |
| - bpo-22783: Pickling now uses the NEWOBJ opcode instead of the NEWOBJ_EX | |
| opcode if possible. | |
| - bpo-15513: Added a __sizeof__ implementation for pickle classes. | |
| - bpo-19858: pickletools.optimize() now aware of the MEMOIZE opcode, can | |
| produce more compact result and no longer produces invalid output if input | |
| data contains MEMOIZE opcodes together with PUT or BINPUT opcodes. | |
| - bpo-22095: Fixed HTTPConnection.set_tunnel with default port. The port | |
| value in the host header was set to "None". Patch by Demian Brecht. | |
| - bpo-23016: A warning no longer produces an AttributeError when the program | |
| is run with pythonw.exe. | |
| - bpo-21775: shutil.copytree(): fix crash when copying to VFAT. An exception | |
| handler assumed that OSError objects always have a 'winerror' attribute. | |
| That is not the case, so the exception handler itself raised | |
| AttributeError when run on Linux (and, presumably, any other non-Windows | |
| OS). Patch by Greg Ward. | |
| - bpo-1218234: Fix inspect.getsource() to load updated source of reloaded | |
| module. Initial patch by Berker Peksag. | |
| - bpo-21740: Support wrapped callables in doctest. Patch by Claudiu Popa. | |
| - bpo-23009: Make sure selectors.EpollSelector.select() works when no FD is | |
| registered. | |
| - bpo-22959: In the constructor of http.client.HTTPSConnection, prefer the | |
| context's check_hostname attribute over the *check_hostname* parameter. | |
| - bpo-22696: Add function :func:`sys.is_finalizing` to know about | |
| interpreter shutdown. | |
| - bpo-16043: Add a default limit for the amount of data | |
| xmlrpclib.gzip_decode will return. This resolves CVE-2013-1753. | |
| - bpo-14099: ZipFile.open() no longer reopen the underlying file. Objects | |
| returned by ZipFile.open() can now operate independently of the ZipFile | |
| even if the ZipFile was created by passing in a file-like object as the | |
| first argument to the constructor. | |
| - bpo-22966: Fix __pycache__ pyc file name clobber when pyc_compile is asked | |
| to compile a source file containing multiple dots in the source file name. | |
| - bpo-21971: Update turtledemo doc and add module to the index. | |
| - bpo-21032: Fixed socket leak if HTTPConnection.getresponse() fails. | |
| Original patch by Martin Panter. | |
| - bpo-22407: Deprecated the use of re.LOCALE flag with str patterns or | |
| re.ASCII. It was newer worked. | |
| - bpo-22902: The "ip" command is now used on Linux to determine MAC address | |
| in uuid.getnode(). Pach by Bruno Cauet. | |
| - bpo-22960: Add a context argument to xmlrpclib.ServerProxy constructor. | |
| - bpo-22389: Add contextlib.redirect_stderr(). | |
| - bpo-21356: Make ssl.RAND_egd() optional to support LibreSSL. The | |
| availability of the function is checked during the compilation. Patch | |
| written by Bernard Spil. | |
| - bpo-22915: SAX parser now supports files opened with file descriptor or | |
| bytes path. | |
| - bpo-22609: Constructors and update methods of mapping classes in the | |
| collections module now accept the self keyword argument. | |
| - bpo-22940: Add readline.append_history_file. | |
| - bpo-19676: Added the "namereplace" error handler. | |
| - bpo-22788: Add *context* parameter to logging.handlers.HTTPHandler. | |
| - bpo-22921: Allow SSLContext to take the *hostname* parameter even if | |
| OpenSSL doesn't support SNI. | |
| - bpo-22894: TestCase.subTest() would cause the test suite to be stopped | |
| when in failfast mode, even in the absence of failures. | |
| - bpo-22796: HTTP cookie parsing is now stricter, in order to protect | |
| against potential injection attacks. | |
| - bpo-22370: Windows detection in pathlib is now more robust. | |
| - bpo-22841: Reject coroutines in asyncio add_signal_handler(). Patch by | |
| Ludovic.Gasc. | |
| - bpo-19494: Added urllib.request.HTTPBasicPriorAuthHandler. Patch by Matej | |
| Cepl. | |
| - bpo-22578: Added attributes to the re.error class. | |
| - bpo-22849: Fix possible double free in the io.TextIOWrapper constructor. | |
| - bpo-12728: Different Unicode characters having the same uppercase but | |
| different lowercase are now matched in case-insensitive regular | |
| expressions. | |
| - bpo-22821: Fixed fcntl() with integer argument on 64-bit big-endian | |
| platforms. | |
| - bpo-21650: Add an `--sort-keys` option to json.tool CLI. | |
| - bpo-22824: Updated reprlib output format for sets to use set literals. | |
| Patch contributed by Berker Peksag. | |
| - bpo-22824: Updated reprlib output format for arrays to display empty | |
| arrays without an unnecessary empty list. Suggested by Serhiy Storchaka. | |
| - bpo-22406: Fixed the uu_codec codec incorrectly ported to 3.x. Based on | |
| patch by Martin Panter. | |
| - bpo-17293: uuid.getnode() now determines MAC address on AIX using netstat. | |
| Based on patch by Aivars Kalvāns. | |
| - bpo-22769: Fixed ttk.Treeview.tag_has() when called without arguments. | |
| - bpo-22417: Verify certificates by default in httplib (PEP 476). | |
| - bpo-22775: Fixed unpickling of http.cookies.SimpleCookie with protocol 2 | |
| and above. Patch by Tim Graham. | |
| - bpo-22776: Brought excluded code into the scope of a try block in | |
| SysLogHandler.emit(). | |
| - bpo-22665: Add missing get_terminal_size and SameFileError to | |
| shutil.__all__. | |
| - bpo-6623: Remove deprecated Netrc class in the ftplib module. Patch by | |
| Matt Chaput. | |
| - bpo-17381: Fixed handling of case-insensitive ranges in regular | |
| expressions. | |
| - bpo-22410: Module level functions in the re module now cache compiled | |
| locale-dependent regular expressions taking into account the locale. | |
| - bpo-22759: Query methods on pathlib.Path() (exists(), is_dir(), etc.) now | |
| return False when the underlying stat call raises NotADirectoryError. | |
| - bpo-8876: distutils now falls back to copying files when hard linking | |
| doesn't work. This allows use with special filesystems such as VirtualBox | |
| shared folders. | |
| - bpo-22217: Implemented reprs of classes in the zipfile module. | |
| - bpo-22457: Honour load_tests in the start_dir of discovery. | |
| - bpo-18216: gettext now raises an error when a .mo file has an unsupported | |
| major version number. Patch by Aaron Hill. | |
| - bpo-13918: Provide a locale.delocalize() function which can remove | |
| locale-specific number formatting from a string representing a number, | |
| without then converting it to a specific type. Patch by Cédric Krier. | |
| - bpo-22676: Make the pickling of global objects which don't have a | |
| __module__ attribute less slow. | |
| - bpo-18853: Fixed ResourceWarning in shlex.__nain__. | |
| - bpo-9351: Defaults set with set_defaults on an argparse subparser are no | |
| longer ignored when also set on the parent parser. | |
| - bpo-7559: unittest test loading ImportErrors are reported as import errors | |
| with their import exception rather than as attribute errors after the | |
| import has already failed. | |
| - bpo-19746: Make it possible to examine the errors from unittest discovery | |
| without executing the test suite. The new `errors` attribute on TestLoader | |
| exposes these non-fatal errors encountered during discovery. | |
| - bpo-21991: Make email.headerregistry's header 'params' attributes be | |
| read-only (MappingProxyType). Previously the dictionary was modifiable | |
| but a new one was created on each access of the attribute. | |
| - bpo-22638: SSLv3 is now disabled throughout the standard library. It can | |
| still be enabled by instantiating a SSLContext manually. | |
| - bpo-22641: In asyncio, the default SSL context for client connections is | |
| now created using ssl.create_default_context(), for stronger security. | |
| - bpo-17401: Include closefd in io.FileIO repr. | |
| - bpo-21338: Add silent mode for compileall. quiet parameters of | |
| compile_{dir, file, path} functions now have a multilevel value. Also, -q | |
| option of the CLI now have a multilevel value. Patch by Thomas Kluyver. | |
| - bpo-20152: Convert the array and cmath modules to Argument Clinic. | |
| - bpo-18643: Add socket.socketpair() on Windows. | |
| - bpo-22435: Fix a file descriptor leak when socketserver bind fails. | |
| - bpo-13096: Fixed segfault in CTypes POINTER handling of large values. | |
| - bpo-11694: Raise ConversionError in xdrlib as documented. Patch by Filip | |
| Gruszczyński and Claudiu Popa. | |
| - bpo-19380: Optimized parsing of regular expressions. | |
| - bpo-1519638: Now unmatched groups are replaced with empty strings in | |
| re.sub() and re.subn(). | |
| - bpo-18615: sndhdr.what/whathdr now return a namedtuple. | |
| - bpo-22462: Fix pyexpat's creation of a dummy frame to make it appear in | |
| exception tracebacks. | |
| - bpo-21965: Add support for in-memory SSL to the ssl module. Patch by | |
| Geert Jansen. | |
| - bpo-21173: Fix len() on a WeakKeyDictionary when .clear() was called with | |
| an iterator alive. | |
| - bpo-11866: Eliminated race condition in the computation of names for new | |
| threads. | |
| - bpo-21905: Avoid RuntimeError in pickle.whichmodule() when sys.modules is | |
| mutated while iterating. Patch by Olivier Grisel. | |
| - bpo-11271: concurrent.futures.Executor.map() now takes a *chunksize* | |
| argument to allow batching of tasks in child processes and improve | |
| performance of ProcessPoolExecutor. Patch by Dan O'Reilly. | |
| - bpo-21883: os.path.join() and os.path.relpath() now raise a TypeError with | |
| more helpful error message for unsupported or mismatched types of | |
| arguments. | |
| - bpo-22219: The zipfile module CLI now adds entries for directories | |
| (including empty directories) in ZIP file. | |
| - bpo-22449: In the ssl.SSLContext.load_default_certs, consult the | |
| environmental variables SSL_CERT_DIR and SSL_CERT_FILE on Windows. | |
| - bpo-22508: The email.__version__ variable has been removed; the email code | |
| is no longer shipped separately from the stdlib, and __version__ hasn't | |
| been updated in several releases. | |
| - bpo-20076: Added non derived UTF-8 aliases to locale aliases table. | |
| - bpo-20079: Added locales supported in glibc 2.18 to locale alias table. | |
| - bpo-20218: Added convenience methods read_text/write_text and read_bytes/ | |
| write_bytes to pathlib.Path objects. | |
| - bpo-22396: On 32-bit AIX platform, don't expose os.posix_fadvise() nor | |
| os.posix_fallocate() because their prototypes in system headers are wrong. | |
| - bpo-22517: When an io.BufferedRWPair object is deallocated, clear its | |
| weakrefs. | |
| - bpo-22437: Number of capturing groups in regular expression is no longer | |
| limited by 100. | |
| - bpo-17442: InteractiveInterpreter now displays the full chained traceback | |
| in its showtraceback method, to match the built in interactive | |
| interpreter. | |
| - bpo-23392: Added tests for marshal C API that works with FILE*. | |
| - bpo-10510: distutils register and upload methods now use HTML standards | |
| compliant CRLF line endings. | |
| - bpo-9850: Fixed macpath.join() for empty first component. Patch by Oleg | |
| Oshmyan. | |
| - bpo-5309: distutils' build and build_ext commands now accept a ``-j`` | |
| option to enable parallel building of extension modules. | |
| - bpo-22448: Improve canceled timer handles cleanup to prevent unbound | |
| memory usage. Patch by Joshua Moore-Oliva. | |
| - bpo-22427: TemporaryDirectory no longer attempts to clean up twice when | |
| used in the with statement in generator. | |
| - bpo-22362: Forbidden ambiguous octal escapes out of range 0-0o377 in | |
| regular expressions. | |
| - bpo-20912: Now directories added to ZIP file have correct Unix and MS-DOS | |
| directory attributes. | |
| - bpo-21866: ZipFile.close() no longer writes ZIP64 central directory | |
| records if allowZip64 is false. | |
| - bpo-22278: Fix urljoin problem with relative urls, a regression observed | |
| after changes to issue22118 were submitted. | |
| - bpo-22415: Fixed debugging output of the GROUPREF_EXISTS opcode in the re | |
| module. Removed trailing spaces in debugging output. | |
| - bpo-22423: Unhandled exception in thread no longer causes unhandled | |
| AttributeError when sys.stderr is None. | |
| - bpo-21332: Ensure that ``bufsize=1`` in subprocess.Popen() selects line | |
| buffering, rather than block buffering. Patch by Akira Li. | |
| - bpo-21091: Fix API bug: email.message.EmailMessage.is_attachment is now a | |
| method. | |
| - bpo-21079: Fix email.message.EmailMessage.is_attachment to return the | |
| correct result when the header has parameters as well as a value. | |
| - bpo-22247: Add NNTPError to nntplib.__all__. | |
| - bpo-22366: urllib.request.urlopen will accept a context object | |
| (SSLContext) as an argument which will then be used for HTTPS connection. | |
| Patch by Alex Gaynor. | |
| - bpo-4180: The warnings registries are now reset when the filters are | |
| modified. | |
| - bpo-22419: Limit the length of incoming HTTP request in wsgiref server to | |
| 65536 bytes and send a 414 error code for higher lengths. Patch | |
| contributed by Devin Cook. | |
| - Lax cookie parsing in http.cookies could be a security issue when combined | |
| with non-standard cookie handling in some web browsers. Reported by | |
| Sergey Bobrov. | |
| - bpo-20537: logging methods now accept an exception instance as well as a | |
| Boolean value or exception tuple. Thanks to Yury Selivanov for the patch. | |
| - bpo-22384: An exception in Tkinter callback no longer crashes the program | |
| when it is run with pythonw.exe. | |
| - bpo-22168: Prevent turtle AttributeError with non-default Canvas on OS X. | |
| - bpo-21147: sqlite3 now raises an exception if the request contains a null | |
| character instead of truncating it. Based on patch by Victor Stinner. | |
| - bpo-13968: The glob module now supports recursive search in subdirectories | |
| using the ``**`` pattern. | |
| - bpo-21951: Fixed a crash in Tkinter on AIX when called Tcl command with | |
| empty string or tuple argument. | |
| - bpo-21951: Tkinter now most likely raises MemoryError instead of crash if | |
| the memory allocation fails. | |
| - bpo-22338: Fix a crash in the json module on memory allocation failure. | |
| - bpo-12410: imaplib.IMAP4 now supports the context management protocol. | |
| Original patch by Tarek Ziadé. | |
| - bpo-21270: We now override tuple methods in mock.call objects so that they | |
| can be used as normal call attributes. | |
| - bpo-16662: load_tests() is now unconditionally run when it is present in a | |
| package's __init__.py. TestLoader.loadTestsFromModule() still accepts | |
| use_load_tests, but it is deprecated and ignored. A new keyword-only | |
| attribute `pattern` is added and documented. Patch given by Robert | |
| Collins, tweaked by Barry Warsaw. | |
| - bpo-22226: First letter no longer is stripped from the "status" key in the | |
| result of Treeview.heading(). | |
| - bpo-19524: Fixed resource leak in the HTTP connection when an invalid | |
| response is received. Patch by Martin Panter. | |
| - bpo-20421: Add a .version() method to SSL sockets exposing the actual | |
| protocol version in use. | |
| - bpo-19546: configparser exceptions no longer expose implementation | |
| details. Chained KeyErrors are removed, which leads to cleaner tracebacks. | |
| Patch by Claudiu Popa. | |
| - bpo-22051: turtledemo no longer reloads examples to re-run them. | |
| Initialization of variables and gui setup should be done in main(), which | |
| is called each time a demo is run, but not on import. | |
| - bpo-21933: Turtledemo users can change the code font size with a menu | |
| selection or control(command) '-' or '+' or control-mousewheel. Original | |
| patch by Lita Cho. | |
| - bpo-21597: The separator between the turtledemo text pane and the drawing | |
| canvas can now be grabbed and dragged with a mouse. The code text pane | |
| can be widened to easily view or copy the full width of the text. The | |
| canvas can be widened on small screens. Original patches by Jan Kanis and | |
| Lita Cho. | |
| - bpo-18132: Turtledemo buttons no longer disappear when the window is | |
| shrunk. Original patches by Jan Kanis and Lita Cho. | |
| - bpo-22043: time.monotonic() is now always available. | |
| ``threading.Lock.acquire()``, ``threading.RLock.acquire()`` and socket | |
| operations now use a monotonic clock, instead of the system clock, when a | |
| timeout is used. | |
| - bpo-21527: Add a default number of workers to ThreadPoolExecutor equal to | |
| 5 times the number of CPUs. Patch by Claudiu Popa. | |
| - bpo-22216: smtplib now resets its state more completely after a quit. The | |
| most obvious consequence of the previous behavior was a STARTTLS failure | |
| during a connect/starttls/quit/connect/starttls sequence. | |
| - bpo-22098: ctypes' BigEndianStructure and LittleEndianStructure now define | |
| an empty __slots__ so that subclasses don't always get an instance dict. | |
| Patch by Claudiu Popa. | |
| - bpo-22185: Fix an occasional RuntimeError in threading.Condition.wait() | |
| caused by mutation of the waiters queue without holding the lock. Patch | |
| by Doug Zongker. | |
| - bpo-22287: On UNIX, _PyTime_gettimeofday() now uses | |
| clock_gettime(CLOCK_REALTIME) if available. As a side effect, Python now | |
| depends on the librt library on Solaris and on Linux (only with glibc | |
| older than 2.17). | |
| - bpo-22182: Use e.args to unpack exceptions correctly in | |
| distutils.file_util.move_file. Patch by Claudiu Popa. | |
| - The webbrowser module now uses subprocess's start_new_session=True rather | |
| than a potentially risky preexec_fn=os.setsid call. | |
| - bpo-22042: signal.set_wakeup_fd(fd) now raises an exception if the file | |
| descriptor is in blocking mode. | |
| - bpo-16808: inspect.stack() now returns a named tuple instead of a tuple. | |
| Patch by Daniel Shahaf. | |
| - bpo-22236: Fixed Tkinter images copying operations in NoDefaultRoot mode. | |
| - bpo-2527: Add a *globals* argument to timeit functions, in order to | |
| override the globals namespace in which the timed code is executed. Patch | |
| by Ben Roberts. | |
| - bpo-22118: Switch urllib.parse to use RFC 3986 semantics for the | |
| resolution of relative URLs, rather than RFCs 1808 and 2396. Patch by | |
| Demian Brecht. | |
| - bpo-21549: Added the "members" parameter to TarFile.list(). | |
| - bpo-19628: Allow compileall recursion depth to be specified with a -r | |
| option. | |
| - bpo-15696: Add a __sizeof__ implementation for mmap objects on Windows. | |
| - bpo-22068: Avoided reference loops with Variables and Fonts in Tkinter. | |
| - bpo-22165: SimpleHTTPRequestHandler now supports undecodable file names. | |
| - bpo-15381: Optimized line reading in io.BytesIO. | |
| - bpo-8797: Raise HTTPError on failed Basic Authentication immediately. | |
| Initial patch by Sam Bull. | |
| - bpo-20729: Restored the use of lazy iterkeys()/itervalues()/iteritems() in | |
| the mailbox module. | |
| - bpo-21448: Changed FeedParser feed() to avoid O(N\ :sup:`2`) behavior when | |
| parsing long line. Original patch by Raymond Hettinger. | |
| - bpo-22184: The functools LRU Cache decorator factory now gives an earlier | |
| and clearer error message when the user forgets the required parameters. | |
| - bpo-17923: glob() patterns ending with a slash no longer match non-dirs on | |
| AIX. Based on patch by Delhallt. | |
| - bpo-21725: Added support for RFC 6531 (SMTPUTF8) in smtpd. | |
| - bpo-22176: Update the ctypes module's libffi to v3.1. This release adds | |
| support for the Linux AArch64 and POWERPC ELF ABIv2 little endian | |
| architectures. | |
| - bpo-5411: Added support for the "xztar" format in the shutil module. | |
| - bpo-21121: Don't force 3rd party C extensions to be built with | |
| -Werror=declaration-after-statement. | |
| - bpo-21975: Fixed crash when using uninitialized sqlite3.Row (in particular | |
| when unpickling pickled sqlite3.Row). sqlite3.Row is now initialized in | |
| the __new__() method. | |
| - bpo-20170: Convert posixmodule to use Argument Clinic. | |
| - bpo-21539: Add an *exists_ok* argument to `Pathlib.mkdir()` to mimic | |
| `mkdir -p` and `os.makedirs()` functionality. When true, ignore | |
| FileExistsErrors. Patch by Berker Peksag. | |
| - bpo-22127: Bypass IDNA for pure-ASCII host names in the socket module (in | |
| particular for numeric IPs). | |
| - bpo-21047: set the default value for the *convert_charrefs* argument of | |
| HTMLParser to True. Patch by Berker Peksag. | |
| - Add an __all__ to html.entities. | |
| - bpo-15114: the strict mode and argument of HTMLParser, HTMLParser.error, | |
| and the HTMLParserError exception have been removed. | |
| - bpo-22085: Dropped support of Tk 8.3 in Tkinter. | |
| - bpo-21580: Now Tkinter correctly handles bytes arguments passed to Tk. In | |
| particular this allows initializing images from binary data. | |
| - bpo-22003: When initialized from a bytes object, io.BytesIO() now defers | |
| making a copy until it is mutated, improving performance and memory use on | |
| some use cases. Patch by David Wilson. | |
| - bpo-22018: On Windows, signal.set_wakeup_fd() now also supports sockets. A | |
| side effect is that Python depends to the WinSock library. | |
| - bpo-22054: Add os.get_blocking() and os.set_blocking() functions to get | |
| and set the blocking mode of a file descriptor (False if the O_NONBLOCK | |
| flag is set, True otherwise). These functions are not available on | |
| Windows. | |
| - bpo-17172: Make turtledemo start as active on OS X even when run with | |
| subprocess. Patch by Lita Cho. | |
| - bpo-21704: Fix build error for _multiprocessing when semaphores are not | |
| available. Patch by Arfrever Frehtes Taifersar Arahesis. | |
| - bpo-20173: Convert sha1, sha256, sha512 and md5 to ArgumentClinic. Patch | |
| by Vajrasky Kok. | |
| - Fix repr(_socket.socket) on Windows 64-bit: don't fail with OverflowError | |
| on closed socket. repr(socket.socket) already works fine. | |
| - bpo-22033: Reprs of most Python implemented classes now contain actual | |
| class name instead of hardcoded one. | |
| - bpo-21947: The dis module can now disassemble generator-iterator objects | |
| based on their gi_code attribute. Patch by Clement Rouault. | |
| - bpo-16133: The asynchat.async_chat.handle_read() method now ignores | |
| BlockingIOError exceptions. | |
| - bpo-22044: Fixed premature DECREF in call_tzinfo_method. Patch by Tom | |
| Flanagan. | |
| - bpo-19884: readline: Disable the meta modifier key if stdout is not a | |
| terminal to not write the ANSI sequence ``"\033[1034h"`` into stdout. This | |
| sequence is used on some terminal (ex: TERM=xterm-256color") to enable | |
| support of 8 bit characters. | |
| - bpo-4350: Removed a number of out-of-dated and non-working for a long time | |
| Tkinter methods. | |
| - bpo-6167: Scrollbar.activate() now returns the name of active element if | |
| the argument is not specified. Scrollbar.set() now always accepts only 2 | |
| arguments. | |
| - bpo-15275: Clean up and speed up the ntpath module. | |
| - bpo-21888: plistlib's load() and loads() now work if the fmt parameter is | |
| specified. | |
| - bpo-22032: __qualname__ instead of __name__ is now always used to format | |
| fully qualified class names of Python implemented classes. | |
| - bpo-22031: Reprs now always use hexadecimal format with the "0x" prefix | |
| when contain an id in form " at 0x...". | |
| - bpo-22018: signal.set_wakeup_fd() now raises an OSError instead of a | |
| ValueError on ``fstat()`` failure. | |
| - bpo-21044: tarfile.open() now handles fileobj with an integer 'name' | |
| attribute. Based on patch by Antoine Pietri. | |
| - bpo-21966: Respect -q command-line option when code module is ran. | |
| - bpo-19076: Don't pass the redundant 'file' argument to self.error(). | |
| - bpo-16382: Improve exception message of warnings.warn() for bad category. | |
| Initial patch by Phil Elson. | |
| - bpo-21932: os.read() now uses a :c:func:`Py_ssize_t` type instead of | |
| :c:expr:`int` for the size to support reading more than 2 GB at once. On | |
| Windows, the size is truncated to INT_MAX. As any call to os.read(), the | |
| OS may read less bytes than the number of requested bytes. | |
| - bpo-21942: Fixed source file viewing in pydoc's server mode on Windows. | |
| - bpo-11259: asynchat.async_chat().set_terminator() now raises a ValueError | |
| if the number of received bytes is negative. | |
| - bpo-12523: asynchat.async_chat.push() now raises a TypeError if it doesn't | |
| get a bytes string | |
| - bpo-21707: Add missing kwonlyargcount argument to | |
| ModuleFinder.replace_paths_in_code(). | |
| - bpo-20639: calling Path.with_suffix('') allows removing the suffix again. | |
| Patch by July Tikhonov. | |
| - bpo-21714: Disallow the construction of invalid paths using | |
| Path.with_name(). Original patch by Antony Lee. | |
| - bpo-15014: Added 'auth' method to smtplib to make implementing auth | |
| mechanisms simpler, and used it internally in the login method. | |
| - bpo-21151: Fixed a segfault in the winreg module when ``None`` is passed | |
| as a ``REG_BINARY`` value to SetValueEx. Patch by John Ehresman. | |
| - bpo-21090: io.FileIO.readall() does not ignore I/O errors anymore. Before, | |
| it ignored I/O errors if at least the first C call read() succeed. | |
| - bpo-5800: headers parameter of wsgiref.headers.Headers is now optional. | |
| Initial patch by Pablo Torres Navarrete and SilentGhost. | |
| - bpo-21781: ssl.RAND_add() now supports strings longer than 2 GB. | |
| - bpo-21679: Prevent extraneous fstat() calls during open(). Patch by | |
| Bohuslav Kabrda. | |
| - bpo-21863: cProfile now displays the module name of C extension functions, | |
| in addition to their own name. | |
| - bpo-11453: asyncore: emit a ResourceWarning when an unclosed file_wrapper | |
| object is destroyed. The destructor now closes the file if needed. The | |
| close() method can now be called twice: the second call does nothing. | |
| - bpo-21858: Better handling of Python exceptions in the sqlite3 module. | |
| - bpo-21476: Make sure the email.parser.BytesParser TextIOWrapper is | |
| discarded after parsing, so the input file isn't unexpectedly closed. | |
| - bpo-20295: imghdr now recognizes OpenEXR format images. | |
| - bpo-21729: Used the "with" statement in the dbm.dumb module to ensure | |
| files closing. Patch by Claudiu Popa. | |
| - bpo-21491: socketserver: Fix a race condition in child processes reaping. | |
| - bpo-21719: Added the ``st_file_attributes`` field to os.stat_result on | |
| Windows. | |
| - bpo-21832: Require named tuple inputs to be exact strings. | |
| - bpo-21722: The distutils "upload" command now exits with a non-zero return | |
| code when uploading fails. Patch by Martin Dengler. | |
| - bpo-21723: asyncio.Queue: support any type of number (ex: float) for the | |
| maximum size. Patch written by Vajrasky Kok. | |
| - bpo-21711: support for "site-python" directories has now been removed from | |
| the site module (it was deprecated in 3.4). | |
| - bpo-17552: new socket.sendfile() method allowing a file to be sent over a | |
| socket by using high-performance os.sendfile() on UNIX. Patch by Giampaolo | |
| Rodola'. | |
| - bpo-18039: dbm.dump.open() now always creates a new database when the flag | |
| has the value 'n'. Patch by Claudiu Popa. | |
| - bpo-21326: Add a new is_closed() method to asyncio.BaseEventLoop. | |
| run_forever() and run_until_complete() methods of asyncio.BaseEventLoop | |
| now raise an exception if the event loop was closed. | |
| - bpo-21766: Prevent a security hole in CGIHTTPServer by URL unquoting paths | |
| before checking for a CGI script at that path. | |
| - bpo-21310: Fixed possible resource leak in failed open(). | |
| - bpo-21256: Printout of keyword args should be in deterministic order in a | |
| mock function call. This will help to write better doctests. | |
| - bpo-21677: Fixed chaining nonnormalized exceptions in io close() methods. | |
| - bpo-11709: Fix the pydoc.help function to not fail when sys.stdin is not a | |
| valid file. | |
| - bpo-21515: tempfile.TemporaryFile now uses os.O_TMPFILE flag is available. | |
| - bpo-13223: Fix pydoc.writedoc so that the HTML documentation for methods | |
| that use 'self' in the example code is generated correctly. | |
| - bpo-21463: In urllib.request, fix pruning of the FTP cache. | |
| - bpo-21618: The subprocess module could fail to close open fds that were | |
| inherited by the calling process and already higher than POSIX resource | |
| limits would otherwise allow. On systems with a functioning /proc/self/fd | |
| or /dev/fd interface the max is now ignored and all fds are closed. | |
| - bpo-20383: Introduce importlib.util.module_from_spec() as the preferred | |
| way to create a new module. | |
| - bpo-21552: Fixed possible integer overflow of too long string lengths in | |
| the tkinter module on 64-bit platforms. | |
| - bpo-14315: The zipfile module now ignores extra fields in the central | |
| directory that are too short to be parsed instead of letting a | |
| struct.unpack error bubble up as this "bad data" appears in many real | |
| world zip files in the wild and is ignored by other zip tools. | |
| - bpo-13742: Added "key" and "reverse" parameters to heapq.merge(). (First | |
| draft of patch contributed by Simon Sapin.) | |
| - bpo-21402: tkinter.ttk now works when default root window is not set. | |
| - bpo-3015: _tkinter.create() now creates tkapp object with wantobject=1 by | |
| default. | |
| - bpo-10203: sqlite3.Row now truly supports sequence protocol. In | |
| particular it supports reverse() and negative indices. Original patch by | |
| Claudiu Popa. | |
| - bpo-18807: If copying (no symlinks) specified for a venv, then the python | |
| interpreter aliases (python, python3) are now created by copying rather | |
| than symlinking. | |
| - bpo-20197: Added support for the WebP image type in the imghdr module. | |
| Patch by Fabrice Aneche and Claudiu Popa. | |
| - bpo-21513: Speedup some properties of IP addresses (IPv4Address, | |
| IPv6Address) such as .is_private or .is_multicast. | |
| - bpo-21137: Improve the repr for threading.Lock() and its variants by | |
| showing the "locked" or "unlocked" status. Patch by Berker Peksag. | |
| - bpo-21538: The plistlib module now supports loading of binary plist files | |
| when reference or offset size is not a power of two. | |
| - bpo-21455: Add a default backlog to socket.listen(). | |
| - bpo-21525: Most Tkinter methods which accepted tuples now accept lists | |
| too. | |
| - bpo-22166: With the assistance of a new internal _codecs._forget_codec | |
| helping function, test_codecs now clears the encoding caches to avoid the | |
| appearance of a reference leak | |
| - bpo-22236: Tkinter tests now don't reuse default root window. New root | |
| window is created for every test class. | |
| - bpo-10744: Fix :pep:`3118` format strings on ctypes objects with a | |
| nontrivial shape. | |
| - bpo-20826: Optimize ipaddress.collapse_addresses(). | |
| - bpo-21487: Optimize ipaddress.summarize_address_range() and | |
| ipaddress.{IPv4Network,IPv6Network}.subnets(). | |
| - bpo-21486: Optimize parsing of netmasks in ipaddress.IPv4Network and | |
| ipaddress.IPv6Network. | |
| - bpo-13916: Disallowed the surrogatepass error handler for non UTF-\* | |
| encodings. | |
| - bpo-20998: Fixed re.fullmatch() of repeated single character pattern with | |
| ignore case. Original patch by Matthew Barnett. | |
| - bpo-21075: fileinput.FileInput now reads bytes from standard stream if | |
| binary mode is specified. Patch by Sam Kimbrel. | |
| - bpo-19775: Add a samefile() method to pathlib Path objects. Initial patch | |
| by Vajrasky Kok. | |
| - bpo-21226: Set up modules properly in PyImport_ExecCodeModuleObject (and | |
| friends). | |
| - bpo-21398: Fix a unicode error in the pydoc pager when the documentation | |
| contains characters not encodable to the stdout encoding. | |
| - bpo-16531: ipaddress.IPv4Network and ipaddress.IPv6Network now accept an | |
| (address, netmask) tuple argument, so as to easily construct network | |
| objects from existing addresses. | |
| - bpo-21156: importlib.abc.InspectLoader.source_to_code() is now a | |
| staticmethod. | |
| - bpo-21424: Simplified and optimized heaqp.nlargest() and nmsmallest() to | |
| make fewer tuple comparisons. | |
| - bpo-21396: Fix TextIOWrapper(..., write_through=True) to not force a | |
| flush() on the underlying binary stream. Patch by akira. | |
| - bpo-18314: Unlink now removes junctions on Windows. Patch by Kim Gräsman | |
| - bpo-21088: Bugfix for curses.window.addch() regression in 3.4.0. In | |
| porting to Argument Clinic, the first two arguments were reversed. | |
| - bpo-21407: _decimal: The module now supports function signatures. | |
| - bpo-10650: Remove the non-standard 'watchexp' parameter from the | |
| Decimal.quantize() method in the Python version. It had never been | |
| present in the C version. | |
| - bpo-21469: Reduced the risk of false positives in robotparser by checking | |
| to make sure that robots.txt has been read or does not exist prior to | |
| returning True in can_fetch(). | |
| - bpo-19414: Have the OrderedDict mark deleted links as unusable. This gives | |
| an early failure if the link is deleted during iteration. | |
| - bpo-21421: Add __slots__ to the MappingViews ABC. Patch by Josh Rosenberg. | |
| - bpo-21101: Eliminate double hashing in the C speed-up code for | |
| collections.Counter(). | |
| - bpo-21321: itertools.islice() now releases the reference to the source | |
| iterator when the slice is exhausted. Patch by Anton Afanasyev. | |
| - bpo-21057: TextIOWrapper now allows the underlying binary stream's read() | |
| or read1() method to return an arbitrary bytes-like object (such as a | |
| memoryview). Patch by Nikolaus Rath. | |
| - bpo-20951: SSLSocket.send() now raises either SSLWantReadError or | |
| SSLWantWriteError on a non-blocking socket if the operation would block. | |
| Previously, it would return 0. Patch by Nikolaus Rath. | |
| - bpo-13248: removed previously deprecated asyncore.dispatcher __getattr__ | |
| cheap inheritance hack. | |
| - bpo-9815: assertRaises now tries to clear references to local variables in | |
| the exception's traceback. | |
| - bpo-19940: ssl.cert_time_to_seconds() now interprets the given time string | |
| in the UTC timezone (as specified in RFC 5280), not the local timezone. | |
| - bpo-13204: Calling sys.flags.__new__ would crash the interpreter, now it | |
| raises a TypeError. | |
| - bpo-19385: Make operations on a closed dbm.dumb database always raise the | |
| same exception. | |
| - bpo-21207: Detect when the os.urandom cached fd has been closed or | |
| replaced, and open it anew. | |
| - bpo-21291: subprocess's Popen.wait() is now thread safe so that multiple | |
| threads may be calling wait() or poll() on a Popen instance at the same | |
| time without losing the Popen.returncode value. | |
| - bpo-21127: Path objects can now be instantiated from str subclass | |
| instances (such as ``numpy.str_``). | |
| - bpo-15002: urllib.response object to use _TemporaryFileWrapper (and | |
| _TemporaryFileCloser) facility. Provides a better way to handle file | |
| descriptor close. Patch contributed by Christian Theune. | |
| - bpo-12220: mindom now raises a custom ValueError indicating it doesn't | |
| support spaces in URIs instead of letting a 'split' ValueError bubble up. | |
| - bpo-21068: The ssl.PROTOCOL* constants are now enum members. | |
| - bpo-21276: posixmodule: Don't define USE_XATTRS on KFreeBSD and the Hurd. | |
| - bpo-21262: New method assert_not_called for Mock. It raises AssertionError | |
| if the mock has been called. | |
| - bpo-21238: New keyword argument `unsafe` to Mock. It raises | |
| `AttributeError` incase of an attribute startswith assert or assret. | |
| - bpo-20896: ssl.get_server_certificate() now uses PROTOCOL_SSLv23, not | |
| PROTOCOL_SSLv3, for maximum compatibility. | |
| - bpo-21239: patch.stopall() didn't work deterministically when the same | |
| name was patched more than once. | |
| - bpo-21203: Updated fileConfig and dictConfig to remove inconsistencies. | |
| Thanks to Jure Koren for the patch. | |
| - bpo-21222: Passing name keyword argument to mock.create_autospec now | |
| works. | |
| - bpo-21197: Add lib64 -> lib symlink in venvs on 64-bit non-OS X POSIX. | |
| - bpo-17498: Some SMTP servers disconnect after certain errors, violating | |
| strict RFC conformance. Instead of losing the error code when we issue | |
| the subsequent RSET, smtplib now returns the error code and defers raising | |
| the SMTPServerDisconnected error until the next command is issued. | |
| - bpo-17826: setting an iterable side_effect on a mock function created by | |
| create_autospec now works. Patch by Kushal Das. | |
| - bpo-7776: Fix ``Host:`` header and reconnection when using | |
| http.client.HTTPConnection.set_tunnel(). Patch by Nikolaus Rath. | |
| - bpo-20968: unittest.mock.MagicMock now supports division. Patch by | |
| Johannes Baiter. | |
| - bpo-21529: Fix arbitrary memory access in JSONDecoder.raw_decode with a | |
| negative second parameter. Bug reported by Guido Vranken. (See also: | |
| CVE-2014-4616) | |
| - bpo-21169: getpass now handles non-ascii characters that the input stream | |
| encoding cannot encode by re-encoding using the replace error handler. | |
| - bpo-21171: Fixed undocumented filter API of the rot13 codec. Patch by | |
| Berker Peksag. | |
| - bpo-20539: Improved math.factorial error message for large positive inputs | |
| and changed exception type (OverflowError -> ValueError) for large | |
| negative inputs. | |
| - bpo-21172: isinstance check relaxed from dict to collections.Mapping. | |
| - bpo-21155: asyncio.EventLoop.create_unix_server() now raises a ValueError | |
| if path and sock are specified at the same time. | |
| - bpo-21136: Avoid unnecessary normalization of Fractions resulting from | |
| power and other operations. Patch by Raymond Hettinger. | |
| - bpo-17621: Introduce importlib.util.LazyLoader. | |
| - bpo-21076: signal module constants were turned into enums. Patch by | |
| Giampaolo Rodola'. | |
| - bpo-20636: Improved the repr of Tkinter widgets. | |
| - bpo-19505: The items, keys, and values views of OrderedDict now support | |
| reverse iteration using reversed(). | |
| - bpo-21149: Improved thread-safety in logging cleanup during interpreter | |
| shutdown. Thanks to Devin Jeanpierre for the patch. | |
| - bpo-21058: Fix a leak of file descriptor in | |
| :func:`tempfile.NamedTemporaryFile`, close the file descriptor if | |
| :func:`io.open` fails | |
| - bpo-21200: Return None from pkgutil.get_loader() when __spec__ is missing. | |
| - bpo-21013: Enhance ssl.create_default_context() when used for server side | |
| sockets to provide better security by default. | |
| - bpo-20145: `assertRaisesRegex` and `assertWarnsRegex` now raise a | |
| TypeError if the second argument is not a string or compiled regex. | |
| - bpo-20633: Replace relative import by absolute import. | |
| - bpo-20980: Stop wrapping exception when using ThreadPool. | |
| - bpo-21082: In os.makedirs, do not set the process-wide umask. Note this | |
| changes behavior of makedirs when exist_ok=True. | |
| - bpo-20990: Fix issues found by pyflakes for multiprocessing. | |
| - bpo-21015: SSL contexts will now automatically select an elliptic curve | |
| for ECDH key exchange on OpenSSL 1.0.2 and later, and otherwise default to | |
| "prime256v1". | |
| - bpo-21000: Improve the command-line interface of json.tool. | |
| - bpo-20995: Enhance default ciphers used by the ssl module to enable better | |
| security and prioritize perfect forward secrecy. | |
| - bpo-20884: Don't assume that __file__ is defined on importlib.__init__. | |
| - bpo-21499: Ignore __builtins__ in several test_importlib.test_api tests. | |
| - bpo-20627: xmlrpc.client.ServerProxy is now a context manager. | |
| - bpo-19165: The formatter module now raises DeprecationWarning instead of | |
| PendingDeprecationWarning. | |
| - bpo-13936: Remove the ability of datetime.time instances to be considered | |
| false in boolean contexts. | |
| - bpo-18931: selectors module now supports /dev/poll on Solaris. Patch by | |
| Giampaolo Rodola'. | |
| - bpo-19977: When the ``LC_TYPE`` locale is the POSIX locale (``C`` locale), | |
| :py:data:`sys.stdin` and :py:data:`sys.stdout` are now using the | |
| ``surrogateescape`` error handler, instead of the ``strict`` error | |
| handler. | |
| - bpo-20574: Implement incremental decoder for cp65001 code (Windows code | |
| page 65001, Microsoft UTF-8). | |
| - bpo-20879: Delay the initialization of encoding and decoding tables for | |
| base32, ascii85 and base85 codecs in the base64 module, and delay the | |
| initialization of the unquote_to_bytes() table of the urllib.parse module, | |
| to not waste memory if these modules are not used. | |
| - bpo-19157: Include the broadcast address in the usuable hosts for IPv6 in | |
| ipaddress. | |
| - bpo-11599: When an external command (e.g. compiler) fails, distutils now | |
| prints out the whole command line (instead of just the command name) if | |
| the environment variable DISTUTILS_DEBUG is set. | |
| - bpo-4931: distutils should not produce unhelpful "error: None" messages | |
| anymore. distutils.util.grok_environment_error is kept but doc-deprecated. | |
| - bpo-20875: Prevent possible gzip "'read' is not defined" NameError. Patch | |
| by Claudiu Popa. | |
| - bpo-11558: ``email.message.Message.attach`` now returns a more useful | |
| error message if ``attach`` is called on a message for which | |
| ``is_multipart`` is False. | |
| - bpo-20283: RE pattern methods now accept the string keyword parameters as | |
| documented. The pattern and source keyword parameters are left as | |
| deprecated aliases. | |
| - bpo-20778: Fix modulefinder to work with bytecode-only modules. | |
| - bpo-20791: copy.copy() now doesn't make a copy when the input is a bytes | |
| object. Initial patch by Peter Otten. | |
| - bpo-19748: On AIX, time.mktime() now raises an OverflowError for year | |
| outsize range [1902; 2037]. | |
| - bpo-19573: inspect.signature: Use enum for parameter kind constants. | |
| - bpo-20726: inspect.signature: Make Signature and Parameter picklable. | |
| - bpo-17373: Add inspect.Signature.from_callable method. | |
| - bpo-20378: Improve repr of inspect.Signature and inspect.Parameter. | |
| - bpo-20816: Fix inspect.getcallargs() to raise correct TypeError for | |
| missing keyword-only arguments. Patch by Jeremiah Lowin. | |
| - bpo-20817: Fix inspect.getcallargs() to fail correctly if more than 3 | |
| arguments are missing. Patch by Jeremiah Lowin. | |
| - bpo-6676: Ensure a meaningful exception is raised when attempting to parse | |
| more than one XML document per pyexpat xmlparser instance. (Original | |
| patches by Hirokazu Yamamoto and Amaury Forgeot d'Arc, with suggested | |
| wording by David Gutteridge) | |
| - bpo-21117: Fix inspect.signature to better support functools.partial. Due | |
| to the specifics of functools.partial implementation, | |
| positional-or-keyword arguments passed as keyword arguments become | |
| keyword-only. | |
| - bpo-20334: inspect.Signature and inspect.Parameter are now hashable. | |
| Thanks to Antony Lee for bug reports and suggestions. | |
| - bpo-15916: doctest.DocTestSuite returns an empty unittest.TestSuite | |
| instead of raising ValueError if it finds no tests | |
| - bpo-21209: Fix asyncio.tasks.CoroWrapper to workaround a bug in yield-from | |
| implementation in CPythons prior to 3.4.1. | |
| - asyncio: Add gi_{frame,running,code} properties to CoroWrapper (upstream | |
| issue #163). | |
| - bpo-21311: Avoid exception in _osx_support with non-standard compiler | |
| configurations. Patch by John Szakmeister. | |
| - bpo-11571: Ensure that the turtle window becomes the topmost window when | |
| launched on OS X. | |
| - bpo-21801: Validate that __signature__ is None or an instance of | |
| Signature. | |
| - bpo-21923: Prevent AttributeError in | |
| distutils.sysconfig.customize_compiler due to possible uninitialized | |
| _config_vars. | |
| - bpo-21323: Fix http.server to again handle scripts in CGI subdirectories, | |
| broken by the fix for security issue #19435. Patch by Zach Byrne. | |
| - bpo-22733: Fix ffi_prep_args not zero-extending argument values correctly | |
| on 64-bit Windows. | |
| - bpo-23302: Default to TCP_NODELAY=1 upon establishing an HTTPConnection. | |
| Removed use of hard-coded MSS as it's an optimization that's no longer | |
| needed with Nagle disabled. | |
| IDLE | |
| ---- | |
| - bpo-20577: Configuration of the max line length for the FormatParagraph | |
| extension has been moved from the General tab of the Idle preferences | |
| dialog to the FormatParagraph tab of the Config Extensions dialog. Patch | |
| by Tal Einat. | |
| - bpo-16893: Update Idle doc chapter to match current Idle and add new | |
| information. | |
| - bpo-3068: Add Idle extension configuration dialog to Options menu. Changes | |
| are written to HOME/.idlerc/config-extensions.cfg. Original patch by Tal | |
| Einat. | |
| - bpo-16233: A module browser (File : Class Browser, Alt+C) requires an | |
| editor window with a filename. When Class Browser is requested otherwise, | |
| from a shell, output window, or 'Untitled' editor, Idle no longer displays | |
| an error box. It now pops up an Open Module box (Alt+M). If a valid name | |
| is entered and a module is opened, a corresponding browser is also opened. | |
| - bpo-4832: Save As to type Python files automatically adds .py to the name | |
| you enter (even if your system does not display it). Some systems | |
| automatically add .txt when type is Text files. | |
| - bpo-21986: Code objects are not normally pickled by the pickle module. To | |
| match this, they are no longer pickled when running under Idle. | |
| - bpo-17390: Adjust Editor window title; remove 'Python', move version to | |
| end. | |
| - bpo-14105: Idle debugger breakpoints no longer disappear when inserting or | |
| deleting lines. | |
| - bpo-17172: Turtledemo can now be run from Idle. Currently, the entry is on | |
| the Help menu, but it may move to Run. Patch by Ramchandra Apt and Lita | |
| Cho. | |
| - bpo-21765: Add support for non-ascii identifiers to HyperParser. | |
| - bpo-21940: Add unittest for WidgetRedirector. Initial patch by Saimadhav | |
| Heblikar. | |
| - bpo-18592: Add unittest for SearchDialogBase. Patch by Phil Webster. | |
| - bpo-21694: Add unittest for ParenMatch. Patch by Saimadhav Heblikar. | |
| - bpo-21686: add unittest for HyperParser. Original patch by Saimadhav | |
| Heblikar. | |
| - bpo-12387: Add missing upper(lower)case versions of default Windows key | |
| bindings for Idle so Caps Lock does not disable them. Patch by Roger | |
| Serwy. | |
| - bpo-21695: Closing a Find-in-files output window while the search is still | |
| in progress no longer closes Idle. | |
| - bpo-18910: Add unittest for textView. Patch by Phil Webster. | |
| - bpo-18292: Add unittest for AutoExpand. Patch by Saihadhav Heblikar. | |
| - bpo-18409: Add unittest for AutoComplete. Patch by Phil Webster. | |
| - bpo-21477: htest.py - Improve framework, complete set of tests. Patches by | |
| Saimadhav Heblikar | |
| - bpo-18104: Add idlelib/idle_test/htest.py with a few sample tests to begin | |
| consolidating and improving human-validated tests of Idle. Change other | |
| files as needed to work with htest. Running the module as __main__ runs | |
| all tests. | |
| - bpo-21139: Change default paragraph width to 72, the :pep:`8` | |
| recommendation. | |
| - bpo-21284: Paragraph reformat test passes after user changes reformat | |
| width. | |
| - bpo-17654: Ensure IDLE menus are customized properly on OS X for | |
| non-framework builds and for all variants of Tk. | |
| - bpo-23180: Rename IDLE "Windows" menu item to "Window". Patch by Al | |
| Sweigart. | |
| Build | |
| ----- | |
| - bpo-15506: Use standard PKG_PROG_PKG_CONFIG autoconf macro in the | |
| configure script. | |
| - bpo-22935: Allow the ssl module to be compiled if openssl doesn't support | |
| SSL 3. | |
| - bpo-22592: Drop support of the Borland C compiler to build Python. The | |
| distutils module still supports it to build extensions. | |
| - bpo-22591: Drop support of MS-DOS, especially of the DJGPP compiler | |
| (MS-DOS port of GCC). | |
| - bpo-16537: Check whether self.extensions is empty in setup.py. Patch by | |
| Jonathan Hosmer. | |
| - bpo-22359: Remove incorrect uses of recursive make. Patch by Jonas | |
| Wagner. | |
| - bpo-21958: Define HAVE_ROUND when building with Visual Studio 2013 and | |
| above. Patch by Zachary Turner. | |
| - bpo-18093: the programs that embed the CPython runtime are now in a | |
| separate "Programs" directory, rather than being kept in the Modules | |
| directory. | |
| - bpo-15759: "make suspicious", "make linkcheck" and "make doctest" in Doc/ | |
| now display special message when and only when there are failures. | |
| - bpo-21141: The Windows build process no longer attempts to find Perl, | |
| instead relying on OpenSSL source being configured and ready to build. | |
| The ``PCbuild\build_ssl.py`` script has been re-written and re-named to | |
| ``PCbuild\prepare_ssl.py``, and takes care of configuring OpenSSL source | |
| for both 32 and 64 bit platforms. OpenSSL sources obtained from | |
| svn.python.org will always be pre-configured and ready to build. | |
| - bpo-21037: Add a build option to enable AddressSanitizer support. | |
| - bpo-19962: The Windows build process now creates "python.bat" in the root | |
| of the source tree, which passes all arguments through to the most | |
| recently built interpreter. | |
| - bpo-21285: Refactor and fix curses configure check to always search in a | |
| ncursesw directory. | |
| - bpo-15234: For BerkeleyDB and Sqlite, only add the found library and | |
| include directories if they aren't already being searched. This avoids an | |
| explicit runtime library dependency. | |
| - bpo-17861: Tools/scripts/generate_opcode_h.py automatically regenerates | |
| Include/opcode.h from Lib/opcode.py if the latter gets any change. | |
| - bpo-20644: OS X installer build support for documentation build changes in | |
| 3.4.1: assume externally supplied sphinx-build is available in /usr/bin. | |
| - bpo-20022: Eliminate use of deprecated bundlebuilder in OS X builds. | |
| - bpo-15968: Incorporated Tcl, Tk, and Tix builds into the Windows build | |
| solution. | |
| - bpo-17095: Fix Modules/Setup *shared* support. | |
| - bpo-21811: Anticipated fixes to support OS X versions > 10.9. | |
| - bpo-21166: Prevent possible segfaults and other random failures of python | |
| --generate-posix-vars in pybuilddir.txt build target. | |
| - bpo-18096: Fix library order returned by python-config. | |
| - bpo-17219: Add library build dir for Python extension cross-builds. | |
| - bpo-22919: Windows build updated to support VC 14.0 (Visual Studio 2015), | |
| which will be used for the official release. | |
| - bpo-21236: Build _msi.pyd with cabinet.lib instead of fci.lib | |
| - bpo-17128: Use private version of OpenSSL for OS X 10.5+ installer. | |
| C API | |
| ----- | |
| - bpo-14203: Remove obsolete support for view==NULL in PyBuffer_FillInfo(), | |
| bytearray_getbuffer(), bytesiobuf_getbuffer() and array_buffer_getbuf(). | |
| All functions now raise BufferError in that case. | |
| - bpo-22445: PyBuffer_IsContiguous() now implements precise contiguity | |
| tests, compatible with NumPy's NPY_RELAXED_STRIDES_CHECKING compilation | |
| flag. Previously the function reported false negatives for corner cases. | |
| - bpo-22079: PyType_Ready() now checks that statically allocated type has no | |
| dynamically allocated bases. | |
| - bpo-22453: Removed non-documented macro PyObject_REPR(). | |
| - bpo-18395: Rename ``_Py_char2wchar()`` to :c:func:`Py_DecodeLocale`, | |
| rename ``_Py_wchar2char()`` to :c:func:`Py_EncodeLocale`, and document | |
| these functions. | |
| - bpo-21233: Add new C functions: PyMem_RawCalloc(), PyMem_Calloc(), | |
| PyObject_Calloc(), _PyObject_GC_Calloc(). bytes(int) is now using | |
| ``calloc()`` instead of ``malloc()`` for large objects which is faster and | |
| use less memory. | |
| - bpo-20942: PyImport_ImportFrozenModuleObject() no longer sets __file__ to | |
| match what importlib does; this affects _frozen_importlib as well as any | |
| module loaded using imp.init_frozen(). | |
| Documentation | |
| ------------- | |
| - bpo-19548: Update the codecs module documentation to better cover the | |
| distinction between text encodings and other codecs, together with other | |
| clarifications. Patch by Martin Panter. | |
| - bpo-22394: Doc/Makefile now supports ``make venv PYTHON=../python`` to | |
| create a venv for generating the documentation, e.g., ``make html | |
| PYTHON=venv/bin/python3``. | |
| - bpo-21514: The documentation of the json module now refers to new JSON RFC | |
| 7159 instead of obsoleted RFC 4627. | |
| - bpo-21777: The binary sequence methods on bytes and bytearray are now | |
| documented explicitly, rather than assuming users will be able to derive | |
| the expected behaviour from the behaviour of the corresponding str | |
| methods. | |
| - bpo-6916: undocument deprecated asynchat.fifo class. | |
| - bpo-17386: Expanded functionality of the ``Doc/make.bat`` script to make | |
| it much more comparable to ``Doc/Makefile``. | |
| - bpo-21312: Update the thread_foobar.h template file to include newer | |
| threading APIs. Patch by Jack McCracken. | |
| - bpo-21043: Remove the recommendation for specific CA organizations and to | |
| mention the ability to load the OS certificates. | |
| - bpo-20765: Add missing documentation for PurePath.with_name() and | |
| PurePath.with_suffix(). | |
| - bpo-19407: New package installation and distribution guides based on the | |
| Python Packaging Authority tools. Existing guides have been retained as | |
| legacy links from the distutils docs, as they still contain some required | |
| reference material for tool developers that isn't recorded anywhere else. | |
| - bpo-19697: Document cases where __main__.__spec__ is None. | |
| Tests | |
| ----- | |
| - bpo-18982: Add tests for CLI of the calendar module. | |
| - bpo-19548: Added some additional checks to test_codecs to ensure that | |
| statements in the updated documentation remain accurate. Patch by Martin | |
| Panter. | |
| - bpo-22838: All test_re tests now work with unittest test discovery. | |
| - bpo-22173: Update lib2to3 tests to use unittest test discovery. | |
| - bpo-16000: Convert test_curses to use unittest. | |
| - bpo-21456: Skip two tests in test_urllib2net.py if _ssl module not | |
| present. Patch by Remi Pointel. | |
| - bpo-20746: Fix test_pdb to run in refleak mode (-R). Patch by Xavier de | |
| Gaye. | |
| - bpo-22060: test_ctypes has been somewhat cleaned up and simplified; it now | |
| uses unittest test discovery to find its tests. | |
| - bpo-22104: regrtest.py no longer holds a reference to the suite of tests | |
| loaded from test modules that don't define test_main(). | |
| - bpo-22111: Assorted cleanups in test_imaplib. Patch by Milan Oberkirch. | |
| - bpo-22002: Added ``load_package_tests`` function to test.support and used | |
| it to implement/augment test discovery in test_asyncio, test_email, | |
| test_importlib, test_json, and test_tools. | |
| - bpo-21976: Fix test_ssl to accept LibreSSL version strings. Thanks to | |
| William Orr. | |
| - bpo-21918: Converted test_tools from a module to a package containing | |
| separate test files for each tested script. | |
| - bpo-9554: Use modern unittest features in test_argparse. Initial patch by | |
| Denver Coneybeare and Radu Voicilas. | |
| - bpo-20155: Changed HTTP method names in failing tests in test_httpservers | |
| so that packet filtering software (specifically Windows Base Filtering | |
| Engine) does not interfere with the transaction semantics expected by the | |
| tests. | |
| - bpo-19493: Refactored the ctypes test package to skip tests explicitly | |
| rather than silently. | |
| - bpo-18492: All resources are now allowed when tests are not run by | |
| regrtest.py. | |
| - bpo-21634: Fix pystone micro-benchmark: use floor division instead of true | |
| division to benchmark integers instead of floating point numbers. Set | |
| pystone version to 1.2. Patch written by Lennart Regebro. | |
| - bpo-21605: Added tests for Tkinter images. | |
| - bpo-21493: Added test for ntpath.expanduser(). Original patch by Claudiu | |
| Popa. | |
| - bpo-19925: Added tests for the spwd module. Original patch by Vajrasky | |
| Kok. | |
| - bpo-21522: Added Tkinter tests for Listbox.itemconfigure(), | |
| PanedWindow.paneconfigure(), and Menu.entryconfigure(). | |
| - bpo-17756: Fix test_code test when run from the installed location. | |
| - bpo-17752: Fix distutils tests when run from the installed location. | |
| - bpo-18604: Consolidated checks for GUI availability. All platforms now at | |
| least check whether Tk can be instantiated when the GUI resource is | |
| requested. | |
| - bpo-21275: Fix a socket test on KFreeBSD. | |
| - bpo-21223: Pass test_site/test_startup_imports when some of the extensions | |
| are built as builtins. | |
| - bpo-20635: Added tests for Tk geometry managers. | |
| - Add test case for freeze. | |
| - bpo-20743: Fix a reference leak in test_tcl. | |
| - bpo-21097: Move test_namespace_pkgs into test_importlib. | |
| - bpo-21503: Use test_both() consistently in test_importlib. | |
| - bpo-20939: Avoid various network test failures due to new redirect of | |
| http://www.python.org/ to https://www.python.org: use | |
| http://www.example.com instead. | |
| - bpo-20668: asyncio tests no longer rely on tests.txt file. (Patch by | |
| Vajrasky Kok) | |
| - bpo-21093: Prevent failures of ctypes test_macholib on OS X if a copy of | |
| libz exists in $HOME/lib or /usr/local/lib. | |
| - bpo-22770: Prevent some Tk segfaults on OS X when running gui tests. | |
| - bpo-23211: Workaround test_logging failure on some OS X 10.6 systems. | |
| - bpo-23345: Prevent test_ssl failures with large OpenSSL patch level values | |
| (like 0.9.8zc). | |
| Tools/Demos | |
| ----------- | |
| - bpo-22314: pydoc now works when the LINES environment variable is set. | |
| - bpo-22615: Argument Clinic now supports the "type" argument for the int | |
| converter. This permits using the int converter with enums and typedefs. | |
| - bpo-20076: The makelocalealias.py script no longer ignores UTF-8 mapping. | |
| - bpo-20079: The makelocalealias.py script now can parse the SUPPORTED file | |
| from glibc sources and supports command line options for source paths. | |
| - bpo-22201: Command-line interface of the zipfile module now correctly | |
| extracts ZIP files with directory entries. Patch by Ryan Wilson. | |
| - bpo-22120: For functions using an unsigned integer return converter, | |
| Argument Clinic now generates a cast to that type for the comparison to -1 | |
| in the generated code. (This suppresses a compilation warning.) | |
| - bpo-18974: Tools/scripts/diff.py now uses argparse instead of optparse. | |
| - bpo-21906: Make Tools/scripts/md5sum.py work in Python 3. Patch by Zachary | |
| Ware. | |
| - bpo-21629: Fix Argument Clinic's "--converters" feature. | |
| - Add support for ``yield from`` to 2to3. | |
| - Add support for the :pep:`465` matrix multiplication operator to 2to3. | |
| - bpo-16047: Fix module exception list and __file__ handling in freeze. | |
| Patch by Meador Inge. | |
| - bpo-11824: Consider ABI tags in freeze. Patch by Meador Inge. | |
| - bpo-20535: PYTHONWARNING no longer affects the run_tests.py script. Patch | |
| by Arfrever Frehtes Taifersar Arahesis. | |
| Windows | |
| ------- | |
| - bpo-23260: Update Windows installer | |
| - The bundled version of Tcl/Tk has been updated to 8.6.3. The most visible | |
| result of this change is the addition of new native file dialogs when | |
| running on Windows Vista or newer. See Tcl/Tk's TIP 432 for more | |
| information. Also, this version of Tcl/Tk includes support for Windows | |
| 10. | |
| - bpo-17896: The Windows build scripts now expect external library sources | |
| to be in ``PCbuild\..\externals`` rather than ``PCbuild\..\..``. | |
| - bpo-17717: The Windows build scripts now use a copy of NASM pulled from | |
| svn.python.org to build OpenSSL. | |
| - bpo-21907: Improved the batch scripts provided for building Python. | |
| - bpo-22644: The bundled version of OpenSSL has been updated to 1.0.1j. | |
| - bpo-10747: Use versioned labels in the Windows start menu. Patch by Olive | |
| Kilburn. | |
| - bpo-22980: .pyd files with a version and platform tag (for example, | |
| ".cp35-win32.pyd") will now be loaded in preference to those without tags. | |
| **(For information about older versions, consult the HISTORY file.)** |