Commit 868460c5 authored by Ned Deily's avatar Ned Deily

Merge tag 'v3.7.0a4'

parents d135f20a 07c9d854
......@@ -20,10 +20,10 @@
#define PY_MINOR_VERSION 7
#define PY_MICRO_VERSION 0
#define PY_RELEASE_LEVEL PY_RELEASE_LEVEL_ALPHA
#define PY_RELEASE_SERIAL 3
#define PY_RELEASE_SERIAL 4
/* Version as a string */
#define PY_VERSION "3.7.0a3+"
#define PY_VERSION "3.7.0a4"
/*--end constants--*/
/* Version as a single 4-byte hex number, e.g. 0x010502B2 == 1.5.2b2.
......
This diff is collapsed.
This diff is collapsed.
:c:func:`Py_SetProgramName` and :c:func:`Py_SetPythonHome` now take the
``const wchar *`` arguments instead of ``wchar *``.
Moved the pygetopt.h header into internal/, since it has no public APIs.
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.
Py_Initialize() doesn't reset the memory allocators to default if the
``PYTHONMALLOC`` environment variable is not set.
Move constant folding from bytecode layer to AST layer.
Original patch by Eugene Toder.
Implement PEP 552 (Deterministic pycs). Python now supports invalidating
bytecode cache files bashed on a source content hash rather than source
last-modified time.
The `atexit` module now has its callback stored per interpreter.
PEP 562: Add support for module ``__getattr__`` and ``__dir__``. Implemented by Ivan
Levkivskyi.
PEP 560: Add support for __mro_entries__ and __class_getitem__. Implemented
by Ivan Levkivskyi.
`-X dev` now injects a ``'default'`` entry into sys.warnoptions, ensuring
that it behaves identically to actually passing ``-Wdefault`` at the command
line.
``-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.
Improve the error message logic for object.__new__ and object.__init__.
Patch by Sanyam Khurana.
Don't byte swap the input keys to the SipHash algorithm on big-endian
platforms. This should ensure siphash gives consistent results across
platforms.
Implement TracebackType.__new__ to allow Python-level creation of
traceback objects, and make TracebackType.tb_next mutable.
Fix an unnecessary ifdef in the include of VersionHelpers.h in socketmodule
on Windows.
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.
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``.
The ``__debug__`` constant is now optimized out at compile time. This fixes also
bpo-22091.
The error message of a TypeError raised when unpack non-iterable is now more
specific.
Make MRO computation faster when a class inherits from a single base.
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.
Add AIX uuid library support for RFC4122 using uuid_create() in libc.a
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.
Add get_loop() method to Server and AbstractServer classes.
``TextIOWrapper.reconfigure()`` supports changing *encoding*, *errors*, and
*newline*.
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.
Add contextlib.AbstractAsyncContextManager. Patch by Jelle Zijlstra.
Importing native path module (``posixpath``, ``ntpath``) now works even if
the ``os`` module still is not imported.
ast.literal_eval() is now more strict. Addition and subtraction of
arbitrary numbers no longer allowed.
Ensure TCP_NODELAY is set on Linux. Tests by Victor Stinner.
The picklers do no longer allocate temporary memory when dumping large
``bytes`` and ``str`` objects into a file object. Instead the data is
directly streamed into the underlying file object.
Previously the C implementation would buffer all content and issue a
single call to ``file.write`` at the end of the dump. With protocol 4
this behavior has changed to issue one call to ``file.write`` per frame.
The Python pickler with protocol 4 now dumps each frame content as a
memoryview to an IOBytes instance that is never reused and the
memoryview is no longer released after the call to write. This makes it
possible for the file object to delay access to the memoryview of
previous frames without forcing any additional memory copy as was
already possible with the C pickler.
Fix ctypes.util.find_library() for AIX
by implementing ctypes._aix.find_library()
Patch by: Michael Felt aka aixtools
ctypes.util.find_library has always returned None on a standard AIX.
With this patch there is support for both AIX and svr4 shared libraries.
None is returned only when there is nothinbg found. Normal behavior is now:
on AIX find_library("FOO") returns either libFOO.a(libFOO.so) or libFOO.so
while legacy names e.g., find_library("c") returns libc.a(shr.o)
or libc.a(shr_64.o) - depending on 32 or 64-bit operations.
Include RTLD_MEMBER to mode to support AIX legacy library(member) names
(Modules/_ctype/posixmodule.c), ctypes/__init__.py and configure.ac)
os.statvfs() includes the f_fsid field from statvfs(2)
The getnode() ip getter now uses 'ip link' instead of 'ip link list'.
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.
``functools.singledispatch`` now supports registering implementations using
type annotations.
Convert asyncio to use *async/await* syntax. Old styled ``yield from`` is
still supported too.
Changed MIME type of .bmp from 'image/x-ms-bmp' to 'image/bmp'
Deprecate ``yield from lock``, ``await lock``, ``with (yield from lock)``
and ``with await lock`` for asyncio synchronization primitives.
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.
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.
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.
Raise ``NotImplementedError`` instead of ``SystemError`` on platforms where
``chmod(..., follow_symlinks=False)`` is not supported. Patch by Anthony
Sottile.
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.
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()``.
Implement asyncio._get_running_loop() and get_event_loop() in C. This makes
them 4x faster.
Revert incorrect fix based on misunderstanding of _Py_PyAtExit() semantics.
Abort asyncio SSLProtocol connection if handshake not complete within 10s
:func:`re.sub()` now replaces empty matches adjacent to a previous non-empty
match.
Fix ``stop_serving`` in asyncio proactor loop kill all listening servers
Fix bdist_wininst of distutils for CRT v142: it binary compatible with CRT
v140.
:func:`urllib.parse.urlsplit()` does not convert zone-id (scope) to lower case
for scoped IPv6 addresses in hostnames now.
Convert asyncio functions that were documented as coroutines to coroutines.
Affected functions: loop.sock_sendall, loop.sock_recv, loop.sock_accept,
loop.run_in_executor, loop.getaddrinfo, loop.getnameinfo.
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``.
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.
Optimize asyncio.Future schedule/add/remove callback. The optimization
shows 3-6% performance improvements of async/await code.
Use fastpath in asyncio.sleep if delay<0 (2x boost)
asyncio.transport.resume_reading() and pause_reading() are now idempotent.
New transport.is_reading() method is added.
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.
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.
Don't unsubscribe signals in asyncio UNIX event loop on interpreter shutdown.
asyncio: Add Task.get_loop() and Future.get_loop()
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.
``functools.lru_cache`` uses less memory (3 words for each cached key) and
takes about 1/3 time for cyclic GC.
Return the new file descriptor (i.e., the second argument) from ``os.dup2``.
Previously, ``None`` was always returned.
Improve frame repr() to mention filename, code name and current line number.
Add dataclasses.is_dataclass(obj), which returns True if obj is a dataclass
or an instance of one.
Make type information optional on dataclasses.make_dataclass(). If omitted,
the string 'typing.Any' is used.
Add params to dataclasses.make_dataclasses(): init, repr, eq, order, hash,
and frozen. Pass them through to dataclass().
Now that dict is defined as keeping insertion order, drop OrderedDict and
just use plain dict.
Adjust C locale coercion testing for the empty locale and POSIX locale
cases to more readily adjust to platform dependent behaviour.
Fix faulthandler_suppress_crash_report() used to prevent core dump files
when testing crashes. getrlimit() returns zero on success.
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.
Implement support for `subprocess.Popen(close_fds=True)` on Windows. Patch
by Segev Finer.
This is Python version 3.7.0 alpha 3+
=====================================
This is Python version 3.7.0 alpha 4
====================================
.. image:: https://travis-ci.org/python/cpython.svg?branch=master
:alt: CPython build status on Travis CI
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment