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