Python 3.10.0a3

This commit is contained in:
Pablo Galindo 2020-12-07 19:33:00 +00:00
parent c0afb7fa0e
commit 8bae2a958e
No known key found for this signature in database
GPG Key ID: FFE87404168BD847
148 changed files with 1573 additions and 372 deletions

View File

@ -20,10 +20,10 @@
#define PY_MINOR_VERSION 10 #define PY_MINOR_VERSION 10
#define PY_MICRO_VERSION 0 #define PY_MICRO_VERSION 0
#define PY_RELEASE_LEVEL PY_RELEASE_LEVEL_ALPHA #define PY_RELEASE_LEVEL PY_RELEASE_LEVEL_ALPHA
#define PY_RELEASE_SERIAL 2 #define PY_RELEASE_SERIAL 3
/* Version as a string */ /* Version as a string */
#define PY_VERSION "3.10.0a2+" #define PY_VERSION "3.10.0a3"
/*--end constants--*/ /*--end constants--*/
/* Version as a single 4-byte hex number, e.g. 0x010502B2 == 1.5.2b2. /* Version as a single 4-byte hex number, e.g. 0x010502B2 == 1.5.2b2.

View File

@ -1,5 +1,5 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
# Autogenerated by Sphinx on Tue Nov 3 00:01:01 2020 # Autogenerated by Sphinx on Mon Dec 7 19:34:00 2020
topics = {'assert': 'The "assert" statement\n' topics = {'assert': 'The "assert" statement\n'
'**********************\n' '**********************\n'
'\n' '\n'
@ -5301,24 +5301,23 @@ topics = {'assert': 'The "assert" statement\n'
'for the\n' 'for the\n'
'conversion. The alternate form is defined differently for ' 'conversion. The alternate form is defined differently for '
'different\n' 'different\n'
'types. This option is only valid for integer, float, ' 'types. This option is only valid for integer, float and '
'complex and\n' 'complex\n'
'Decimal types. For integers, when binary, octal, or ' 'types. For integers, when binary, octal, or hexadecimal '
'hexadecimal output\n' 'output is\n'
'is used, this option adds the prefix respective "\'0b\'", ' 'used, this option adds the prefix respective "\'0b\'", '
'"\'0o\'", or\n' '"\'0o\'", or "\'0x\'"\n'
'"\'0x\'" to the output value. For floats, complex and ' 'to the output value. For float and complex the alternate '
'Decimal the\n' 'form causes\n'
'alternate form causes the result of the conversion to ' 'the result of the conversion to always contain a '
'always contain a\n' 'decimal-point\n'
'decimal-point character, even if no digits follow it. ' 'character, even if no digits follow it. Normally, a '
'Normally, a\n' 'decimal-point\n'
'decimal-point character appears in the result of these ' 'character appears in the result of these conversions only '
'conversions\n' 'if a digit\n'
'only if a digit follows it. In addition, for "\'g\'" and ' 'follows it. In addition, for "\'g\'" and "\'G\'" '
'"\'G\'"\n' 'conversions, trailing\n'
'conversions, trailing zeros are not removed from the ' 'zeros are not removed from the result.\n'
'result.\n'
'\n' '\n'
'The "\',\'" option signals the use of a comma for a ' 'The "\',\'" option signals the use of a comma for a '
'thousands separator.\n' 'thousands separator.\n'
@ -5456,9 +5455,8 @@ topics = {'assert': 'The "assert" statement\n'
'the integer\n' 'the integer\n'
'to a floating point number before formatting.\n' 'to a floating point number before formatting.\n'
'\n' '\n'
'The available presentation types for floating point and ' 'The available presentation types for "float" and "Decimal" '
'decimal values\n' 'values are:\n'
'are:\n'
'\n' '\n'
' ' ' '
'+-----------+------------------------------------------------------------+\n' '+-----------+------------------------------------------------------------+\n'
@ -5467,24 +5465,50 @@ topics = {'assert': 'The "assert" statement\n'
'|\n' '|\n'
' ' ' '
'|===========|============================================================|\n' '|===========|============================================================|\n'
' | "\'e\'" | Exponent notation. Prints the number in ' ' | "\'e\'" | Scientific notation. For a given '
'scientific |\n' 'precision "p", formats |\n'
' | | notation using the letter e to indicate ' ' | | the number in scientific notation with the '
'the exponent. |\n' 'letter e |\n'
' | | The default precision is ' ' | | separating the coefficient from the '
'"6". |\n' 'exponent. The |\n'
' | | coefficient has one digit before and "p" '
'digits after the |\n'
' | | decimal point, for a total of "p + 1" '
'significant digits. |\n'
' | | With no precision given, uses a precision '
'of "6" digits |\n'
' | | after the decimal point for "float", and '
'shows all |\n'
' | | coefficient digits for "Decimal". If no '
'digits follow the |\n'
' | | decimal point, the decimal point is also '
'removed unless |\n'
' | | the "#" option is '
'used. |\n'
' ' ' '
'+-----------+------------------------------------------------------------+\n' '+-----------+------------------------------------------------------------+\n'
' | "\'E\'" | Exponent notation. Same as "\'e\'" ' ' | "\'E\'" | Scientific notation. Same as "\'e\'" '
'except it uses an upper |\n' 'except it uses an upper |\n'
' | | case E as the separator ' ' | | case E as the separator '
'character. |\n' 'character. |\n'
' ' ' '
'+-----------+------------------------------------------------------------+\n' '+-----------+------------------------------------------------------------+\n'
' | "\'f\'" | Fixed-point notation. Displays the ' ' | "\'f\'" | Fixed-point notation. For a given '
'number as a fixed-point |\n' 'precision "p", formats |\n'
' | | number. The default precision is ' ' | | the number as a decimal number with '
'"6". |\n' 'exactly "p" digits |\n'
' | | following the decimal point. With no '
'precision given, uses |\n'
' | | a precision of "6" digits after the '
'decimal point for |\n'
' | | "float", and uses a precision large enough '
'to show all |\n'
' | | coefficient digits for "Decimal". If no '
'digits follow the |\n'
' | | decimal point, the decimal point is also '
'removed unless |\n'
' | | the "#" option is '
'used. |\n'
' ' ' '
'+-----------+------------------------------------------------------------+\n' '+-----------+------------------------------------------------------------+\n'
' | "\'F\'" | Fixed-point notation. Same as "\'f\'", ' ' | "\'F\'" | Fixed-point notation. Same as "\'f\'", '
@ -5530,9 +5554,14 @@ topics = {'assert': 'The "assert" statement\n'
' | | regardless of the precision. A precision ' ' | | regardless of the precision. A precision '
'of "0" is |\n' 'of "0" is |\n'
' | | treated as equivalent to a precision of ' ' | | treated as equivalent to a precision of '
'"1". The default |\n' '"1". With no |\n'
' | | precision is ' ' | | precision given, uses a precision of "6" '
'"6". |\n' 'significant |\n'
' | | digits for "float", and shows all '
'coefficient digits for |\n'
' | | '
'"Decimal". '
'|\n'
' ' ' '
'+-----------+------------------------------------------------------------+\n' '+-----------+------------------------------------------------------------+\n'
' | "\'G\'" | General format. Same as "\'g\'" except ' ' | "\'G\'" | General format. Same as "\'g\'" except '

1504
Misc/NEWS.d/3.10.0a3.rst Normal file

File diff suppressed because it is too large Load Diff

View File

@ -1,2 +0,0 @@
Addressed three compiler warnings found by undefined behavior sanitizer
(ubsan).

View File

@ -1 +0,0 @@
Support was removed for AIX 5.3 and below. See :issue:`40680`.

View File

@ -1,3 +0,0 @@
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.

View File

@ -1,3 +0,0 @@
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.

View File

@ -1,4 +0,0 @@
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.

View File

@ -1 +0,0 @@
remove libnet dependency from detect_socket() for VxWorks

View File

@ -1,6 +0,0 @@
: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.

View File

@ -1 +0,0 @@
:c:func:`PyType_GetSlot()` can now accept static types.

View File

@ -1 +0,0 @@
Add dedicated entry to PyAsyncMethods for sending values

View File

@ -1,4 +0,0 @@
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.

View File

@ -1,3 +0,0 @@
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.

View File

@ -1,2 +0,0 @@
The :c:func:`PyType_FromModuleAndSpec` function now accepts NULL ``tp_doc``
slot.

View File

@ -1,3 +0,0 @@
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.

View File

@ -1,2 +0,0 @@
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.

View File

@ -1,5 +0,0 @@
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.

View File

@ -1,7 +0,0 @@
: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.

View File

@ -1,3 +0,0 @@
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.

View File

@ -1,3 +0,0 @@
Removed the undocumented ``PyOS_InitInterrupts()`` function. Initializing
Python already implicitly installs signal handlers: see
:c:member:`PyConfig.install_signal_handlers`. Patch by Victor Stinner.

View File

@ -1 +0,0 @@
Port _hashlib extension module to multiphase initialization (:pep:`489`)

View File

@ -1 +0,0 @@
Port _random extension module to multiphase initialization (:pep:`489`)

View File

@ -1,2 +0,0 @@
Port :mod:`grp` and :mod:`pwd` extension modules to multiphase
initialization (:pep:`489`)

View File

@ -1,2 +0,0 @@
Port :mod:`symtable` extension module to multiphase initialization
(:pep:`489`)

View File

@ -1,4 +0,0 @@
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;``.

View File

@ -1 +0,0 @@
Port _queue extension module to multiphase initialization (:pep:`489`)

View File

@ -1 +0,0 @@
Port :mod:`gc` extension module to multiphase initialization (:pep:`489`)

View File

@ -1 +0,0 @@
Port :mod:`spwd` extension module to multiphase initialization (:pep:`489`)

View File

@ -1 +0,0 @@
Port _struct extension module to multiphase initialization (:pep:`489`)

View File

@ -1 +0,0 @@
Port _posixshmem extension module to multiphase initialization (:pep:`489`)

View File

@ -1,2 +0,0 @@
Port _posixsubprocess extension module to multiphase initialization
(:pep:`489`).

View File

@ -1,2 +0,0 @@
Port :mod:`select` extension module to multiphase initialization
(:pep:`489`).

View File

@ -1,3 +0,0 @@
The :c:func:`PyType_FromSpecWithBases` and
:c:func:`PyType_FromModuleAndSpec` functions now accept a single class as
the *bases* argument.

View File

@ -1,2 +0,0 @@
The import system triggers a `ImportWarning` when it falls back to using
`load_module()`.

View File

@ -1,5 +0,0 @@
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`.)

View File

@ -1 +0,0 @@
Convert :mod:`mmap` to use heap types.

View File

@ -1,2 +0,0 @@
Improved accuracy of line tracing events and f_lineno attribute of Frame
objects. See PEP 626 for details.

View File

@ -1 +0,0 @@
Convert :mod:`queue` to use heap types.

View File

@ -1,3 +0,0 @@
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.

View File

@ -1,3 +0,0 @@
Optimise constant subexpressions that appear as part of named expressions
(previously the AST optimiser did not descend into named expressions).
Patch by Nick Coghlan.

View File

@ -1 +0,0 @@
:class:`types.GenericAlias` objects can now be the targets of weakrefs.

View File

@ -1,4 +0,0 @@
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.

View File

@ -1 +0,0 @@
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.

View File

@ -1 +0,0 @@
Allow an unparenthesized walrus in subscript indexes.

View File

@ -1,2 +0,0 @@
Fix a regression introduced by the new parser, where an unparenthesized walrus operator
was not allowed within generator expressions.

View File

@ -1,2 +0,0 @@
Change function parameters annotations internal representation to tuple
of strings. Patch provided by Yurii Karabas.

View File

@ -1,2 +0,0 @@
Allow assignment expressions in set literals and set comprehensions as per
PEP 572. Patch by Pablo Galindo.

View File

@ -1,4 +0,0 @@
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)``).

View File

@ -1,2 +0,0 @@
Port the ``_warnings`` extension module to the multi-phase initialization
API (:pep:`489`). Patch by Victor Stinner.

View File

@ -1,2 +0,0 @@
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.

View File

@ -1,2 +0,0 @@
PEP 626: After a return, the f_lineno attribute of a frame is always the
last line executed.

View File

@ -1,2 +0,0 @@
Improve handling of exceptions near recursion limit. Converts a number of
Fatal Errors in RecursionErrors.

View File

@ -1,26 +0,0 @@
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.

View File

@ -1,4 +0,0 @@
``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.

View File

@ -1,2 +0,0 @@
Language and version switchers, previously maintained in every cpython
branches, are now handled by docsbuild-script.

View File

@ -1 +0,0 @@
Fix the URL for the IMAP protocol documents.

View File

@ -1,2 +0,0 @@
Tentative to deprecate ``make suspicious`` by first removing it from the CI
and documentation builds, but keeping it around for manual uses.

View File

@ -1 +0,0 @@
Get docstrings for IDLE calltips more often by using inspect.getdoc.

View File

@ -1 +0,0 @@
Fix reporting offset of the RE error in searchengine.

View File

@ -1,3 +0,0 @@
Keep IDLE running on macOS. Remove obsolete workaround that prevented
running files with shortcuts when using new universal2 installers built
on macOS 11.

View File

@ -1 +0,0 @@
Add slice support to :attr:`pathlib.PurePath.parents`.

View File

@ -1,2 +0,0 @@
Add an ``is_async`` identifier to :mod:`pyclbr`'s ``Function`` objects.
Patch by Batuhan Taskaya

View File

@ -1 +0,0 @@
Fix time-of-check/time-of-action issue in subprocess.Popen.send_signal.

View File

@ -1 +0,0 @@
Add AsyncContextDecorator to contextlib to support async context manager as a decorator.

View File

@ -1,2 +0,0 @@
Add func:`os.eventfd` to provide a low level interface for Linux's event
notification file descriptor.

View File

@ -1,2 +0,0 @@
:mod:`urllib.request` and :mod:`http.client` now send ``http/1.1`` ALPN
extension during TLS handshake when no custom context is supplied.

View File

@ -1,4 +0,0 @@
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.

View File

@ -1,2 +0,0 @@
Added missing connect_accepted_socket() method to
``asyncio.AbstractEventLoop``.

View File

@ -1 +0,0 @@
:attr:`pathlib.PurePath.parents` now supports negative indexing. Patch contributed by Yaroslav Pankovych.

View File

@ -1 +0,0 @@
Add async context manager support for contextlib.nullcontext.

View File

@ -1,2 +0,0 @@
Clarify the error message for :exc:`asyncio.IncompleteReadError` when
``expected`` is ``None``.

View File

@ -1,2 +0,0 @@
Expose the :c:func:`splice` as :func:`os.splice` in the :mod:`os` module.
Patch by Pablo Galindo

View File

@ -1 +0,0 @@
Fix :meth:`pprint.PrettyPrinter.format` overrides being ignored for contents of small containers. The :func:`pprint._safe_repr` function was removed.

View File

@ -1 +0,0 @@
Added support for the XPath ``!=`` operator in xml.etree

View File

@ -1,2 +0,0 @@
Convert :mod:`sqlite3` to use heap types (PEP 384).
Patch by Erlend E. Aasland.

View File

@ -1 +0,0 @@
Enum: fix regression involving inheriting a multiply-inherited enum

View File

@ -1,4 +0,0 @@
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.

View File

@ -1,5 +0,0 @@
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.

View File

@ -1,2 +0,0 @@
The `load_module()` methods found in importlib now trigger a
DeprecationWarning.

View File

@ -1,2 +0,0 @@
Update various modules in the stdlib to fall back on `__spec__.loader` when
`__loader__` isn't defined on a module.

View File

@ -1 +0,0 @@
Improve asyncio.wait function to create the futures set just one time.

View File

@ -1,4 +0,0 @@
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.

View File

@ -1 +0,0 @@
webbrowser: Ignore *NotADirectoryError* when calling ``xdg-settings``.

View File

@ -1,3 +0,0 @@
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.

View File

@ -1 +0,0 @@
Fixed writing binary Plist files larger than 4 GiB.

View File

@ -1,3 +0,0 @@
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.

View File

@ -1,3 +0,0 @@
``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.

View File

@ -1,2 +0,0 @@
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.

View File

@ -1,5 +0,0 @@
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().

View File

@ -1,3 +0,0 @@
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.

View File

@ -1 +0,0 @@
Fix `os.sendfile()` on illumos.

View File

@ -1 +0,0 @@
The ``onerror`` callback from ``shutil.rmtree`` now receives correct function when ``os.open`` fails.

View File

@ -1 +0,0 @@
Port _ssl extension module to heap types.

View File

@ -1,3 +0,0 @@
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.

View File

@ -1 +0,0 @@
Fixed support of non-BMP characters in :mod:`tkinter` on macOS.

View File

@ -1,5 +0,0 @@
: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.

View File

@ -1,2 +0,0 @@
Fix various issues with ``typing.Literal`` parameter handling (flatten,
deduplicate, use type to cache key). Patch provided by Yurii Karabas.

View File

@ -1,4 +0,0 @@
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``.

View File

@ -1,3 +0,0 @@
: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.

Some files were not shown because too many files have changed in this diff Show More