blob: eb64c6a2b648dd5a0220fab8b5b5b87313c9c3d0 [file] [log] [blame]
Ned Deily4829bc62016-09-12 17:29:04 -04001****************************
2 What's New In Python 3.7
3****************************
4
5:Release: |release|
6:Date: |today|
7
8.. Rules for maintenance:
9
10 * Anyone can add text to this document. Do not spend very much time
11 on the wording of your changes, because your text will probably
12 get rewritten to some degree.
13
14 * The maintainer will go through Misc/NEWS periodically and add
15 changes; it's therefore more important to add your changes to
16 Misc/NEWS than to this file.
17
18 * This is not a complete list of every single change; completeness
19 is the purpose of Misc/NEWS. Some changes I consider too small
20 or esoteric to include. If such a change is added to the text,
21 I'll just remove it. (This is another reason you shouldn't spend
22 too much time on writing your addition.)
23
24 * If you want to draw your new text to the attention of the
25 maintainer, add 'XXX' to the beginning of the paragraph or
26 section.
27
28 * It's OK to just add a fragmentary note about a change. For
29 example: "XXX Describe the transmogrify() function added to the
30 socket module." The maintainer will research the change and
31 write the necessary text.
32
33 * You can comment out your additions if you like, but it's not
34 necessary (especially when a final release is some months away).
35
36 * Credit the author of a patch or bugfix. Just the name is
37 sufficient; the e-mail address isn't necessary.
38
39 * It's helpful to add the bug/patch number as a comment:
40
41 XXX Describe the transmogrify() function added to the socket
42 module.
43 (Contributed by P.Y. Developer in :issue:`12345`.)
44
45 This saves the maintainer the effort of going through the Mercurial log
46 when researching a change.
47
48This article explains the new features in Python 3.7, compared to 3.6.
49
Steve Dower3e7d93d2016-09-22 17:11:53 -070050For full details, see the :ref:`changelog <changelog>`.
Ned Deily4829bc62016-09-12 17:29:04 -040051
52.. note::
53
54 Prerelease users should be aware that this document is currently in draft
55 form. It will be updated substantially as Python 3.7 moves towards release,
56 so it's worth checking back even after reading earlier versions.
57
58
59Summary -- Release highlights
60=============================
61
62.. This section singles out the most important changes in Python 3.7.
63 Brevity is key.
64
65
66.. PEP-sized items next.
67
68
69
70New Features
71============
72
Nick Coghlan6ea41862017-06-11 13:16:15 +100073.. _whatsnew37-pep538:
74
75PEP 538: Legacy C Locale Coercion
76---------------------------------
77
78An ongoing challenge within the Python 3 series has been determining a sensible
79default strategy for handling the "7-bit ASCII" text encoding assumption
80currently implied by the use of the default C locale on non-Windows platforms.
81
82:pep:`538` updates the default interpreter command line interface to
83automatically coerce that locale to an available UTF-8 based locale as
84described in the documentation of the new :envvar:`PYTHONCOERCECLOCALE`
85environment variable. Automatically setting ``LC_CTYPE`` this way means that
86both the core interpreter and locale-aware C extensions (such as
87:mod:`readline`) will assume the use of UTF-8 as the default text encoding,
88rather than ASCII.
89
90The platform support definition in :pep:`11` has also been updated to limit
91full text handling support to suitably configured non-ASCII based locales.
92
93As part of this change, the default error handler for ``stdin`` and ``stdout``
94is now ``surrogateescape`` (rather than ``strict``) when using any of the
95defined coercion target locales (currently ``C.UTF-8``, ``C.utf8``, and
96``UTF-8``). The default error handler for ``stderr`` continues to be
97``backslashreplace``, regardless of locale.
98
Nick Coghlaneb817952017-06-18 12:29:42 +100099Locale coercion is silent by default, but to assist in debugging potentially
100locale related integration problems, explicit warnings (emitted directly on
101``stderr`` can be requested by setting ``PYTHONCOERCECLOCALE=warn``. This
102setting will also cause the Python runtime to emit a warning if the legacy C
103locale remains active when the core interpreter is initialized.
Nick Coghlan6ea41862017-06-11 13:16:15 +1000104
105.. seealso::
106
107 :pep:`538` -- Coercing the legacy C locale to a UTF-8 based locale
108 PEP written and implemented by Nick Coghlan.
Ned Deily4829bc62016-09-12 17:29:04 -0400109
Barry Warsaw36c1d1f2017-10-05 12:11:18 -0400110.. _whatsnew37-pep553:
111
112PEP 553: Built-in breakpoint()
113------------------------------
114
115:pep:`553` describes a new built-in called ``breakpoint()`` which makes it
116easy and consistent to enter the Python debugger. Built-in ``breakpoint()``
117calls ``sys.breakpointhook()``. By default, this latter imports ``pdb`` and
118then calls ``pdb.set_trace()``, but by binding ``sys.breakpointhook()`` to the
119function of your choosing, ``breakpoint()`` can enter any debugger. Or, the
120environment variable :envvar:`PYTHONBREAKPOINT` can be set to the callable of
121your debugger of choice. Set ``PYTHONBREAKPOINT=0`` to completely disable
122built-in ``breakpoint()``.
123
124.. seealso::
125
126 :pep:`553` -- Built-in breakpoint()
127 PEP written and implemented by Barry Warsaw
128
Ned Deily4829bc62016-09-12 17:29:04 -0400129
Masayuki Yamamoto731e1892017-10-06 19:41:34 +0900130.. _whatsnew37-pep539:
131
132PEP 539: A New C-API for Thread-Local Storage in CPython
133--------------------------------------------------------
134
135While Python provides a C API for thread-local storage support; the existing
136:ref:`Thread Local Storage (TLS) API <thread-local-storage-api>` has used
137:c:type:`int` to represent TLS keys across all platforms. This has not
138generally been a problem for officially-support platforms, but that is neither
139POSIX-compliant, nor portable in any practical sense.
140
141:pep:`539` changes this by providing a new :ref:`Thread Specific Storage (TSS)
142API <thread-specific-storage-api>` to CPython which supersedes use of the
143existing TLS API within the CPython interpreter, while deprecating the existing
144API. The TSS API uses a new type :c:type:`Py_tss_t` instead of :c:type:`int`
145to represent TSS keys--an opaque type the definition of which may depend on
146the underlying TLS implementation. Therefore, this will allow to build CPython
147on platforms where the native TLS key is defined in a way that cannot be safely
148cast to :c:type:`int`.
149
150Note that on platforms where the native TLS key is defined in a way that cannot
151be safely cast to :c:type:`int`, all functions of the existing TLS API will be
152no-op and immediately return failure. This indicates clearly that the old API
153is not supported on platforms where it cannot be used reliably, and that no
154effort will be made to add such support.
155
156.. seealso::
157
158 :pep:`539` -- A New C-API for Thread-Local Storage in CPython
159 PEP written by Erik M. Bray; implementation by Masayuki Yamamoto.
160
161
Victor Stinnerc29b5852017-11-02 07:28:27 -0700162PEP 564: Add new time functions with nanosecond resolution
163----------------------------------------------------------
164
165Add six new "nanosecond" variants of existing functions to the :mod:`time`
166module:
167
168* :func:`time.clock_gettime_ns`
169* :func:`time.clock_settime_ns`
170* :func:`time.monotonic_ns`
171* :func:`time.perf_counter_ns`
172* :func:`time.process_time_ns`
173* :func:`time.time_ns`
174
175While similar to the existing functions without the ``_ns`` suffix, they
176provide nanosecond resolution: they return a number of nanoseconds as a Python
177``int``.
178
179The ``time.time_ns()`` resolution is 3 times better than the ``time.time()``
180resolution on Linux and Windows.
181
182.. seealso::
183
184 :pep:`564` -- Add new time functions with nanosecond resolution
185 PEP written and implemented by Victor Stinner
186
187
Ned Deily4829bc62016-09-12 17:29:04 -0400188Other Language Changes
189======================
190
Serhiy Storchaka5bb8b912016-12-16 19:19:02 +0200191* More than 255 arguments can now be passed to a function, and a function can
Garvit Khatri1cf93a72017-03-28 23:43:38 +0800192 now have more than 255 parameters. (Contributed by Serhiy Storchaka in
193 :issue:`12844` and :issue:`18896`.)
Ned Deily4829bc62016-09-12 17:29:04 -0400194
Serhiy Storchakadd1da7f2016-12-19 18:51:37 +0200195* :meth:`bytes.fromhex` and :meth:`bytearray.fromhex` now ignore all ASCII
Garvit Khatri1cf93a72017-03-28 23:43:38 +0800196 whitespace, not only spaces. (Contributed by Robert Xiao in :issue:`28927`.)
Serhiy Storchakadd1da7f2016-12-19 18:51:37 +0200197
Matthias Bussonnier1bc15642017-02-22 07:06:50 -0800198* :exc:`ImportError` now displays module name and module ``__file__`` path when
Garvit Khatri1cf93a72017-03-28 23:43:38 +0800199 ``from ... import ...`` fails. (Contributed by Matthias Bussonnier in :issue:`29546`.)
Matthias Bussonnier1bc15642017-02-22 07:06:50 -0800200
Serhiy Storchakaf93234b2017-05-09 22:31:05 +0300201* Circular imports involving absolute imports with binding a submodule to
202 a name are now supported.
203 (Contributed by Serhiy Storchaka in :issue:`30024`.)
204
Serhiy Storchaka7e19dbc2017-05-13 12:40:52 +0300205* ``object.__format__(x, '')`` is now equivalent to ``str(x)`` rather than
206 ``format(str(self), '')``.
207 (Contributed by Serhiy Storchaka in :issue:`28974`.)
208
Ned Deily4829bc62016-09-12 17:29:04 -0400209
210New Modules
211===========
212
213* None yet.
214
215
216Improved Modules
217================
218
Pierre Quentelcc3fa202017-05-08 14:08:34 +0200219
R. David Murray0f6b9d22017-09-06 20:25:40 -0400220argparse
221--------
222
223The :meth:`~argparse.ArgumentParser.parse_intermixed_args` supports letting
224the user intermix options and positional arguments on the command line,
225as is possible in many unix commands. It supports most but not all
226argparse features. (Contributed by paul.j3 in :issue:`14191`.)
227
228
Xiang Zhang13f1f422017-05-03 11:16:21 +0800229binascii
230--------
231
232The :func:`~binascii.b2a_uu` function now accepts an optional *backtick*
233keyword argument. When it's true, zeros are represented by ``'`'``
234instead of spaces. (Contributed by Xiang Zhang in :issue:`30103`.)
235
Oz N Tiram8b7a4cc2017-06-06 11:35:59 +0200236
237calendar
238--------
239
Walter Dörwaldf5c58c72017-06-26 18:31:52 +0200240The class :class:`~calendar.HTMLCalendar` has new class attributes which ease
241the customisation of the CSS classes in the produced HTML calendar.
Oz N Tiram8b7a4cc2017-06-06 11:35:59 +0200242(Contributed by Oz Tiram in :issue:`30095`.)
243
244cgi
245---
246
247:func:`~cgi.parse_multipart` returns the same results as
248:class:`~FieldStorage` : for non-file fields, the value associated to a key
249is a list of strings, not bytes.
250(Contributed by Pierre Quentel in :issue:`29979`.)
251
Jelle Zijlstra2e624692017-04-30 18:25:58 -0700252contextlib
253----------
254
255:func:`contextlib.asynccontextmanager` has been added. (Contributed by
256Jelle Zijlstra in :issue:`29679`.)
257
Serhiy Storchakaeab3ff72017-10-24 19:36:17 +0300258crypt
259-----
260
261Added support for the Blowfish method.
262(Contributed by Serhiy Storchaka in :issue:`31664`.)
263
Serhiy Storchaka1efbf922017-06-11 14:09:39 +0300264dis
265---
266
267The :func:`~dis.dis` function now is able to
268disassemble nested code objects (the code of comprehensions, generator
269expressions and nested functions, and the code used for building nested
270classes). (Contributed by Serhiy Storchaka in :issue:`11822`.)
271
Ryan Gonzalezf9f87f02017-04-14 04:00:25 -0500272distutils
273---------
274
275README.rst is now included in the list of distutils standard READMEs and
276therefore included in source distributions.
277(Contributed by Ryan Gonzalez in :issue:`11913`.)
278
Pierre Quentel351adda2017-04-02 12:26:12 +0200279http.server
280-----------
281
282:class:`~http.server.SimpleHTTPRequestHandler` supports the HTTP
283If-Modified-Since header. The server returns the 304 response status if the
284target file was not modified after the time specified in the header.
285(Contributed by Pierre Quentel in :issue:`29654`.)
286
Stéphane Wirtela17a2f52017-05-24 09:29:06 +0200287Add the parameter ``directory`` to the :class:`~http.server.SimpleHTTPRequestHandler`
288and the ``--directory`` to the command line of the module :mod:`~http.server`.
289With this parameter, the server serves the specified directory, by default it uses the current working directory.
290(Contributed by Stéphane Wirtel and Julien Palard in :issue:`28707`.)
291
Garvit Khatri1cf93a72017-03-28 23:43:38 +0800292locale
293------
294
295Added another argument *monetary* in :meth:`format_string` of :mod:`locale`.
296If *monetary* is true, the conversion uses monetary thousands separator and
297grouping strings. (Contributed by Garvit in :issue:`10379`.)
298
Mark Dickinsona0ce3752017-04-05 18:34:27 +0100299math
300----
301
302New :func:`~math.remainder` function, implementing the IEEE 754-style remainder
303operation. (Contributed by Mark Dickinson in :issue:`29962`.)
304
Serhiy Storchaka8f6b3442017-03-07 14:33:21 +0200305os
306--
307
Garvit Khatri1cf93a72017-03-28 23:43:38 +0800308Added support for :class:`bytes` paths in :func:`~os.fwalk`. (Contributed by
309Serhiy Storchaka in :issue:`28682`.)
Serhiy Storchaka8f6b3442017-03-07 14:33:21 +0200310
Serhiy Storchakaea720fe2017-03-30 09:12:31 +0300311Added support for :ref:`file descriptors <path_fd>` in :func:`~os.scandir`
312on Unix. (Contributed by Serhiy Storchaka in :issue:`25996`.)
313
Antoine Pitrouf7ecfac2017-05-28 11:35:14 +0200314New function :func:`os.register_at_fork` allows registering Python callbacks
315to be executed on a process fork. (Contributed by Antoine Pitrou in
316:issue:`16500`.)
317
Barry Warsaw35425d62017-09-22 12:29:42 -0400318pdb
319---
320
321:func:`~pdb.set_trace` now takes an optional ``header`` keyword-only
322argument. If given, this is printed to the console just before debugging
323begins.
324
Serhiy Storchaka3557b052017-10-24 23:31:42 +0300325re
326--
327
328The flags :const:`re.ASCII`, :const:`re.LOCALE` and :const:`re.UNICODE`
329can be set within the scope of a group.
330(Contributed by Serhiy Storchaka in :issue:`31690`.)
331
Barry Warsaw973b9012017-09-04 17:29:27 -0400332string
333------
334
335:class:`string.Template` now lets you to optionally modify the regular
336expression pattern for braced placeholders and non-braced placeholders
337separately. (Contributed by Barry Warsaw in :issue:`1198569`.)
338
Victor Stinnera64ce972017-11-02 04:19:19 -0700339time
340----
341
Victor Stinnerc29b5852017-11-02 07:28:27 -0700342The :pep:`564` added six new functions with nanosecond resolution:
343
344* :func:`time.clock_gettime_ns`
345* :func:`time.clock_settime_ns`
346* :func:`time.monotonic_ns`
347* :func:`time.perf_counter_ns`
348* :func:`time.process_time_ns`
349* :func:`time.time_ns`
350
Victor Stinnera64ce972017-11-02 04:19:19 -0700351Add new clock identifiers:
352
353* :data:`time.CLOCK_BOOTTIME` (Linux): Identical to
354 :data:`time.CLOCK_MONOTONIC`, except it also includes any time that the
355 system is suspended.
356* :data:`time.CLOCK_PROF` (FreeBSD, NetBSD and OpenBSD): High-resolution
357 per-process timer from the CPU.
358* :data:`time.CLOCK_UPTIME` (FreeBSD, OpenBSD): Time whose absolute value is
359 the time the system has been running and not suspended, providing accurate
360 uptime measurement, both absolute and interval.
361
Serhiy Storchakad9c956f2017-01-11 20:13:03 +0200362unittest.mock
363-------------
364
365The :const:`~unittest.mock.sentinel` attributes now preserve their identity
Garvit Khatri1cf93a72017-03-28 23:43:38 +0800366when they are :mod:`copied <copy>` or :mod:`pickled <pickle>`. (Contributed by
367Serhiy Storchaka in :issue:`20804`.)
Serhiy Storchakad9c956f2017-01-11 20:13:03 +0200368
Mario Corchero552be9d2017-10-17 12:35:11 +0100369New function :const:`~unittest.mock.seal` will disable the creation of mock
370children by preventing to get or set any new attribute on the sealed mock.
371The sealing process is performed recursively. (Contributed by Mario Corchero
372in :issue:`30541`.)
373
Xiang Zhang267b9d22017-02-28 17:12:52 +0800374xmlrpc.server
375-------------
376
377:meth:`register_function` of :class:`xmlrpc.server.SimpleXMLRPCDispatcher` and
Garvit Khatri1cf93a72017-03-28 23:43:38 +0800378its subclasses can be used as a decorator. (Contributed by Xiang Zhang in
379:issue:`7769`.)
Xiang Zhang267b9d22017-02-28 17:12:52 +0800380
Benjamin Peterson279a9622017-06-22 22:31:08 -0700381unicodedata
382-----------
383
384The internal :mod:`unicodedata` database has been upgraded to use `Unicode 10
385<http://www.unicode.org/versions/Unicode10.0.0/>`_. (Contributed by Benjamin
386Peterson.)
387
Ratnadeep Debnath21024f02017-02-25 14:30:28 +0530388urllib.parse
389------------
390
Daniel Himmelsteindadca482017-08-10 21:45:12 -0400391:func:`urllib.parse.quote` has been updated from RFC 2396 to RFC 3986,
Ratnadeep Debnath21024f02017-02-25 14:30:28 +0530392adding `~` to the set of characters that is never quoted by default.
393(Contributed by Christian Theune and Ratnadeep Debnath in :issue:`16285`.)
394
Xiang Zhang13f1f422017-05-03 11:16:21 +0800395uu
396--
397
398Function :func:`~uu.encode` now accepts an optional *backtick*
399keyword argument. When it's true, zeros are represented by ``'`'``
400instead of spaces. (Contributed by Xiang Zhang in :issue:`30103`.)
401
scoder101a5e82017-09-30 15:35:21 +0200402xml.etree
403---------
404
405:ref:`ElementPath <elementtree-xpath>` predicates in the :meth:`find`
406methods can now compare text of the current node with ``[. = "text"]``,
407not only text in children. Predicates also allow adding spaces for
408better readability. (Contributed by Stefan Behnel in :issue:`31648`.)
409
Paul Moore0780bf72017-08-26 18:04:12 +0100410zipapp
411------
412
413Function :func:`zipapp.create_archive` now accepts an optional *filter*
Zhiming Wangd87b1052017-09-29 13:31:52 -0400414argument to allow the user to select which files should be included in the
415archive, and an optional *compressed* argument to generate a compressed
Paul Moore0780bf72017-08-26 18:04:12 +0100416archive.
417
Zhiming Wangd87b1052017-09-29 13:31:52 -0400418A command line option ``--compress`` has also been added to support
419compression.
420
Ned Deily4829bc62016-09-12 17:29:04 -0400421
422Optimizations
423=============
424
Yury Selivanovf2392132016-12-13 19:03:51 -0500425* Added two new opcodes: ``LOAD_METHOD`` and ``CALL_METHOD`` to avoid
426 instantiation of bound method objects for method calls, which results
Garvit Khatri1cf93a72017-03-28 23:43:38 +0800427 in method calls being faster up to 20%. (Contributed by Yury Selivanov and
428 INADA Naoki in :issue:`26110`.)
Yury Selivanovf2392132016-12-13 19:03:51 -0500429
Serhiy Storchaka0a58f722017-03-30 09:11:10 +0300430* Searching some unlucky Unicode characters (like Ukrainian capital "Є")
431 in a string was to 25 times slower than searching other characters.
432 Now it is slower only by 3 times in worst case.
433 (Contributed by Serhiy Storchaka in :issue:`24821`.)
434
Serhiy Storchaka97553fd2017-03-11 23:37:16 +0200435* Fast implementation from standard C library is now used for functions
Paul Romano992f6132017-09-15 12:00:57 -0500436 :func:`~math.erf` and :func:`~math.erfc` in the :mod:`math` module.
437 (Contributed by Serhiy Storchaka in :issue:`26121`.)
Serhiy Storchaka97553fd2017-03-11 23:37:16 +0200438
Serhiy Storchakaea720fe2017-03-30 09:12:31 +0300439* The :func:`os.fwalk` function has been sped up by 2 times. This was done
440 using the :func:`os.scandir` function.
441 (Contributed by Serhiy Storchaka in :issue:`25996`.)
442
Serhiy Storchaka6d336a02017-05-09 23:37:14 +0300443* Optimized case-insensitive matching and searching of :mod:`regular
444 expressions <re>`. Searching some patterns can now be up to 20 times faster.
445 (Contributed by Serhiy Storchaka in :issue:`30285`.)
446
INADA Naokic1c47c12017-10-05 17:19:26 +0900447* :func:`re.compile` now converts ``flags`` parameter to int object if
448 it is ``RegexFlag``. It is now as fast as Python 3.5, and faster than
449 Python 3.6 about 10% depending on the pattern.
450 (Contributed by INADA Naoki in :issue:`31671`.)
451
Giampaolo Rodolafbfaa6f2017-06-09 22:20:41 +0200452* :meth:`selectors.EpollSelector.modify`, :meth:`selectors.PollSelector.modify`
453 and :meth:`selectors.DevpollSelector.modify` may be around 10% faster under
454 heavy loads. (Contributed by Giampaolo Rodola' in :issue:`30014`)
Ned Deily4829bc62016-09-12 17:29:04 -0400455
456Build and C API Changes
457=======================
458
Zachary Waref40d4dd2016-09-17 01:25:24 -0500459* A full copy of libffi is no longer bundled for use when building the
460 :mod:`_ctypes <ctypes>` module on non-OSX UNIX platforms. An installed copy
461 of libffi is now required when building ``_ctypes`` on such platforms.
462 Contributed by Zachary Ware in :issue:`27979`.
Ned Deily4829bc62016-09-12 17:29:04 -0400463
Serhiy Storchaka007d7ff2016-11-22 07:58:08 +0200464* The fields :c:member:`name` and :c:member:`doc` of structures
465 :c:type:`PyMemberDef`, :c:type:`PyGetSetDef`,
466 :c:type:`PyStructSequence_Field`, :c:type:`PyStructSequence_Desc`,
467 and :c:type:`wrapperbase` are now of type ``const char *`` rather of
468 ``char *``. (Contributed by Serhiy Storchaka in :issue:`28761`.)
469
Serhiy Storchaka2a404b62017-01-22 23:07:07 +0200470* The result of :c:func:`PyUnicode_AsUTF8AndSize` and :c:func:`PyUnicode_AsUTF8`
Garvit Khatri1cf93a72017-03-28 23:43:38 +0800471 is now of type ``const char *`` rather of ``char *``. (Contributed by Serhiy
472 Storchaka in :issue:`28769`.)
Serhiy Storchaka2a404b62017-01-22 23:07:07 +0200473
Oren Milman0ccc0f62017-10-08 11:17:46 +0300474* The result of :c:func:`PyMapping_Keys`, :c:func:`PyMapping_Values` and
475 :c:func:`PyMapping_Items` is now always a list, rather than a list or a
476 tuple. (Contributed by Oren Milman in :issue:`28280`.)
477
Serhiy Storchaka6e08baf2017-01-25 13:27:44 +0200478* Added functions :c:func:`PySlice_Unpack` and :c:func:`PySlice_AdjustIndices`.
479 (Contributed by Serhiy Storchaka in :issue:`27867`.)
480
Antoine Pitrouf7ecfac2017-05-28 11:35:14 +0200481* :c:func:`PyOS_AfterFork` is deprecated in favour of the new functions
482 :c:func:`PyOS_BeforeFork`, :c:func:`PyOS_AfterFork_Parent` and
483 :c:func:`PyOS_AfterFork_Child`. (Contributed by Antoine Pitrou in
484 :issue:`16500`.)
485
Zachary Warecb8c0482017-06-15 22:34:59 -0500486* The Windows build process no longer depends on Subversion to pull in external
487 sources, a Python script is used to download zipfiles from GitHub instead.
488 If Python 3.6 is not found on the system (via ``py -3.6``), NuGet is used to
489 download a copy of 32-bit Python for this purpose. (Contributed by Zachary
490 Ware in :issue:`30450`.)
491
xdegaye56d1f5c2017-10-26 15:09:06 +0200492* The ``PyExc_RecursionErrorInst`` singleton that was part of the public API
493 has been removed as its members being never cleared may cause a segfault
494 during finalization of the interpreter. Contributed by Xavier de Gaye in
495 :issue:`22898` and :issue:`30697`.
496
Antoine Pitroua6a4dc82017-09-07 18:56:24 +0200497* Support for building ``--without-threads`` is removed.
498 (Contributed by Antoine Pitrou in :issue:`31370`.).
499
Ned Deily4829bc62016-09-12 17:29:04 -0400500
Nick Coghlan5a851672017-09-08 10:14:16 +1000501Other CPython Implementation Changes
502====================================
503
504* Trace hooks may now opt out of receiving ``line`` events from the interpreter
505 by setting the new ``f_trace_lines`` attribute to :const:`False` on the frame
506 being traced. (Contributed by Nick Coghlan in :issue:`31344`.)
507
508* Trace hooks may now opt in to receiving ``opcode`` events from the interpreter
509 by setting the new ``f_trace_opcodes`` attribute to :const:`True` on the frame
510 being traced. (Contributed by Nick Coghlan in :issue:`31344`.)
511
512
Ned Deily4829bc62016-09-12 17:29:04 -0400513Deprecated
514==========
515
Serhiy Storchaka6e08baf2017-01-25 13:27:44 +0200516- Function :c:func:`PySlice_GetIndicesEx` is deprecated and replaced with
517 a macro if ``Py_LIMITED_API`` is not set or set to the value between
518 ``0x03050400`` and ``0x03060000`` (not including) or ``0x03060100`` or
519 higher. (Contributed by Serhiy Storchaka in :issue:`27867`.)
Ned Deily4829bc62016-09-12 17:29:04 -0400520
Garvit Khatri1cf93a72017-03-28 23:43:38 +0800521- Deprecated :meth:`format` from :mod:`locale`, use the :meth:`format_string`
522 instead. (Contributed by Garvit in :issue:`10379`.)
523
Matthias Bussonnier1d4601c2017-02-15 18:00:32 -0800524- Methods
525 :meth:`MetaPathFinder.find_module() <importlib.abc.MetaPathFinder.find_module>`
526 (replaced by
527 :meth:`MetaPathFinder.find_spec() <importlib.abc.MetaPathFinder.find_spec>`
528 ) and
529 :meth:`PathEntryFinder.find_loader() <importlib.abc.PathEntryFinder.find_loader>`
530 (replaced by
531 :meth:`PathEntryFinder.find_spec() <importlib.abc.PathEntryFinder.find_spec>`)
532 both deprecated in Python 3.4 now emit :exc:`DeprecationWarning`. (Contributed
533 by Matthias Bussonnier in :issue:`29576`)
534
Serhiy Storchakaf6595982017-03-12 13:15:01 +0200535- Using non-integer value for selecting a plural form in :mod:`gettext` is
Garvit Khatri1cf93a72017-03-28 23:43:38 +0800536 now deprecated. It never correctly worked. (Contributed by Serhiy Storchaka
537 in :issue:`28692`.)
Serhiy Storchakaf6595982017-03-12 13:15:01 +0200538
Victor Stinner89a1c932017-05-15 11:01:21 +0200539- The :mod:`macpath` is now deprecated and will be removed in Python 3.8.
540
Ned Deily4829bc62016-09-12 17:29:04 -0400541
Serhiy Storchakaaefa7eb2017-03-23 15:48:39 +0200542Changes in the C API
543--------------------
544
545- The type of results of :c:func:`PyThread_start_new_thread` and
546 :c:func:`PyThread_get_thread_ident`, and the *id* parameter of
547 :c:func:`PyThreadState_SetAsyncExc` changed from :c:type:`long` to
548 :c:type:`unsigned long`.
549 (Contributed by Serhiy Storchaka in :issue:`6532`.)
550
Serhiy Storchakae613e6a2017-06-27 16:03:14 +0300551- :c:func:`PyUnicode_AsWideCharString` now raises a :exc:`ValueError` if the
552 second argument is *NULL* and the :c:type:`wchar_t*` string contains null
553 characters. (Contributed by Serhiy Storchaka in :issue:`30708`.)
554
Serhiy Storchakaaefa7eb2017-03-23 15:48:39 +0200555
Steve (Gadget) Barnes5b8f9722017-06-28 20:14:52 +0100556Windows Only
557------------
558- The python launcher, (py.exe), can accept 32 & 64 bit specifiers **without**
559 having to specify a minor version as well. So ``py -3-32`` and ``py -3-64``
560 become valid as well as ``py -3.7-32``, also the -*m*-64 and -*m.n*-64 forms
561 are now accepted to force 64 bit python even if 32 bit would have otherwise
562 been used. If the specified version is not available py.exe will error exit.
563 (Contributed by Steve Barnes in :issue:`30291`.)
564
565- The launcher can be run as "py -0" to produce a list of the installed pythons,
566 *with default marked with an asterix*. Running "py -0p" will include the paths.
567 If py is run with a version specifier that cannot be matched it will also print
568 the *short form* list of available specifiers.
569 (Contributed by Steve Barnes in :issue:`30362`.)
570
Ned Deily4829bc62016-09-12 17:29:04 -0400571Removed
572=======
573
Serhiy Storchakaff3dbe92016-12-06 19:25:19 +0200574API and Feature Removals
575------------------------
576
Victor Stinner01b5aab2017-10-24 02:02:00 -0700577* The ``os.stat_float_times()`` function has been removed. It was introduced in
578 Python 2.3 for backward compatibility with Python 2.2, and was deprecated
579 since Python 3.1.
580
Serhiy Storchakaff3dbe92016-12-06 19:25:19 +0200581* Unknown escapes consisting of ``'\'`` and an ASCII letter in replacement
Serhiy Storchakab2d61792017-01-13 21:14:40 +0200582 templates for :func:`re.sub` were deprecated in Python 3.5, and will now
583 cause an error.
Ned Deily4829bc62016-09-12 17:29:04 -0400584
Serhiy Storchaka4f76fb12017-01-13 13:25:24 +0200585* Removed support of the *exclude* argument in :meth:`tarfile.TarFile.add`.
Serhiy Storchakab2d61792017-01-13 21:14:40 +0200586 It was deprecated in Python 2.7 and 3.2. Use the *filter* argument instead.
Serhiy Storchaka4f76fb12017-01-13 13:25:24 +0200587
Serhiy Storchaka9ed707e2017-01-13 20:55:05 +0200588* The ``splitunc()`` function in the :mod:`ntpath` module was deprecated in
589 Python 3.1, and has now been removed. Use the :func:`~os.path.splitdrive`
590 function instead.
591
Raymond Hettinger8b57d732017-09-10 10:23:36 -0700592* :func:`collections.namedtuple` no longer supports the *verbose* parameter
593 or ``_source`` attribute which showed the generated source code for the
594 named tuple class. This was part of an optimization designed to speed-up
595 class creation. (Contributed by Jelle Zijlstra with further improvements
596 by INADA Naoki, Serhiy Storchaka, and Raymond Hettinger in :issue:`28638`.)
597
Serhiy Storchaka2e564242017-03-06 17:01:06 +0200598* Functions :func:`bool`, :func:`float`, :func:`list` and :func:`tuple` no
599 longer take keyword arguments. The first argument of :func:`int` can now
Daniel Porteous77f68e32017-06-21 10:21:48 +1000600 be passed only as positional argument.
Serhiy Storchaka2e564242017-03-06 17:01:06 +0200601
Serhiy Storchakaedef3582017-05-15 13:21:31 +0300602* Removed previously deprecated in Python 2.4 classes ``Plist``, ``Dict`` and
603 ``_InternalDict`` in the :mod:`plistlib` module. Dict values in the result
604 of functions :func:`~plistlib.readPlist` and
605 :func:`~plistlib.readPlistFromBytes` are now normal dicts. You no longer
606 can use attribute access to access items of these dictionaries.
607
Ned Deily4829bc62016-09-12 17:29:04 -0400608
609Porting to Python 3.7
610=====================
611
612This section lists previously described changes and other bugfixes
613that may require changes to your code.
614
615
Serhiy Storchaka009b0a12017-01-13 09:10:51 +0200616Changes in the Python API
617-------------------------
618
Sanyam Khuranab9c3da52017-06-13 22:41:14 +0530619* :meth:`pkgutil.walk_packages` now raises ValueError if *path* is a string.
620 Previously an empty list was returned. (Contributed by Sanyam Khurana in
621 :issue:`24744`.)
622
Serhiy Storchaka009b0a12017-01-13 09:10:51 +0200623* A format string argument for :meth:`string.Formatter.format`
624 is now :ref:`positional-only <positional-only_parameter>`.
Garvit Khatri1cf93a72017-03-28 23:43:38 +0800625 Passing it as a keyword argument was deprecated in Python 3.5. (Contributed
626 by Serhiy Storchaka in :issue:`29193`.)
Serhiy Storchakacc283372017-01-13 09:23:15 +0200627
628* Attributes :attr:`~http.cookies.Morsel.key`,
629 :attr:`~http.cookies.Morsel.value` and
630 :attr:`~http.cookies.Morsel.coded_value` of class
631 :class:`http.cookies.Morsel` are now read-only.
Serhiy Storchakab2d61792017-01-13 21:14:40 +0200632 Assigning to them was deprecated in Python 3.5.
Serhiy Storchakacc283372017-01-13 09:23:15 +0200633 Use the :meth:`~http.cookies.Morsel.set` method for setting them.
634 (Contributed by Serhiy Storchaka in :issue:`29192`.)
INADA Naoki015bce62017-01-16 17:23:30 +0900635
INADA Naokicb41b272017-02-23 00:31:59 +0900636* ``Module``, ``FunctionDef``, ``AsyncFunctionDef``, and
637 ``ClassDef`` AST nodes now have a new ``docstring`` field.
638 The first statement in their body is not considered as a docstring
639 anymore. ``co_firstlineno`` and ``co_lnotab`` of code object for class
Garvit Khatri1cf93a72017-03-28 23:43:38 +0800640 and module are affected by this change. (Contributed by INADA Naoki and
641 Eugene Toder in :issue:`29463`.)
INADA Naoki015bce62017-01-16 17:23:30 +0900642
Serhiy Storchakae304e332017-03-24 13:27:42 +0200643* The *mode* argument of :func:`os.makedirs` no longer affects the file
644 permission bits of newly-created intermediate-level directories.
645 To set their file permission bits you can set the umask before invoking
646 ``makedirs()``.
647 (Contributed by Serhiy Storchaka in :issue:`19930`.)
648
Victor Stinnerf87b85f2017-06-23 15:11:12 +0200649* The :attr:`struct.Struct.format` type is now :class:`str` instead of
650 :class:`bytes`. (Contributed by Victor Stinner in :issue:`21071`.)
651
Segev Finer9f3bdcb2017-06-28 23:51:00 +0300652* Due to internal changes in :mod:`socket` you won't be able to
653 :func:`socket.fromshare` a socket :func:`~socket.socket.share`-ed in older
654 Python versions.
655
Utkarsh Upadhyay8e453182017-07-28 14:42:56 +0200656* ``repr`` for :class:`datetime.timedelta` has changed to include keyword arguments
657 in the output. (Contributed by Utkarsh Upadhyay in :issue:`30302`.)
658
Serhiy Storchakae304e332017-03-24 13:27:42 +0200659
Serhiy Storchaka4d3f0842017-10-08 12:53:34 +0300660Changes in the C API
661--------------------
662
663* The function :c:func:`PySlice_GetIndicesEx` is considered not safe for
664 resizable sequences. If the slice indices are not instances of :class:`int`,
665 but objects that implement the :meth:`!__index__` method, the sequence can be
666 resized after passing its length to :c:func:`!PySlice_GetIndicesEx`. This
667 can lead to returning indices out of the length of the sequence. For
668 avoiding possible problems use new functions :c:func:`PySlice_Unpack` and
669 :c:func:`PySlice_AdjustIndices`.
670 (Contributed by Serhiy Storchaka in :issue:`27867`.)
671
672
INADA Naoki015bce62017-01-16 17:23:30 +0900673CPython bytecode changes
674------------------------
675
Martin Panter91a88662017-01-24 00:30:06 +0000676* Added two new opcodes: :opcode:`LOAD_METHOD` and :opcode:`CALL_METHOD`.
INADA Naoki015bce62017-01-16 17:23:30 +0900677 (Contributed by Yury Selivanov and INADA Naoki in :issue:`26110`.)
Julien Palard809d1732017-10-24 11:22:22 +0200678
679
680Documentation
681=============
682
683.. _whatsnew37-pep545:
684
685PEP 545: Python Documentation Translations
686------------------------------------------
687
688:pep:`545` describes the process to translate Python documentation,
689and two translations have been added:
690
691- Japanese: https://docs.python.org/ja/ and associated github
692 repository: https://github.com/python/python-docs-ja
693
694- French: https://docs.python.org/fr/ and associated github
695 repository: https://github.com/python/python-docs-fr
696
697(Contributed by Julien Palard, Inada Naoki, and Victor Stinner in
698:issue:`issue26546`.)