blob: a0c20a0ad88c3d5ac4631c68597ca9b91fb835ed [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
Ned Deily4829bc62016-09-12 17:29:04 -0400162Other Language Changes
163======================
164
Serhiy Storchaka5bb8b912016-12-16 19:19:02 +0200165* More than 255 arguments can now be passed to a function, and a function can
Garvit Khatri1cf93a72017-03-28 23:43:38 +0800166 now have more than 255 parameters. (Contributed by Serhiy Storchaka in
167 :issue:`12844` and :issue:`18896`.)
Ned Deily4829bc62016-09-12 17:29:04 -0400168
Serhiy Storchakadd1da7f2016-12-19 18:51:37 +0200169* :meth:`bytes.fromhex` and :meth:`bytearray.fromhex` now ignore all ASCII
Garvit Khatri1cf93a72017-03-28 23:43:38 +0800170 whitespace, not only spaces. (Contributed by Robert Xiao in :issue:`28927`.)
Serhiy Storchakadd1da7f2016-12-19 18:51:37 +0200171
Matthias Bussonnier1bc15642017-02-22 07:06:50 -0800172* :exc:`ImportError` now displays module name and module ``__file__`` path when
Garvit Khatri1cf93a72017-03-28 23:43:38 +0800173 ``from ... import ...`` fails. (Contributed by Matthias Bussonnier in :issue:`29546`.)
Matthias Bussonnier1bc15642017-02-22 07:06:50 -0800174
Serhiy Storchakaf93234b2017-05-09 22:31:05 +0300175* Circular imports involving absolute imports with binding a submodule to
176 a name are now supported.
177 (Contributed by Serhiy Storchaka in :issue:`30024`.)
178
Serhiy Storchaka7e19dbc2017-05-13 12:40:52 +0300179* ``object.__format__(x, '')`` is now equivalent to ``str(x)`` rather than
180 ``format(str(self), '')``.
181 (Contributed by Serhiy Storchaka in :issue:`28974`.)
182
Ned Deily4829bc62016-09-12 17:29:04 -0400183
184New Modules
185===========
186
187* None yet.
188
189
190Improved Modules
191================
192
Pierre Quentelcc3fa202017-05-08 14:08:34 +0200193
R. David Murray0f6b9d22017-09-06 20:25:40 -0400194argparse
195--------
196
197The :meth:`~argparse.ArgumentParser.parse_intermixed_args` supports letting
198the user intermix options and positional arguments on the command line,
199as is possible in many unix commands. It supports most but not all
200argparse features. (Contributed by paul.j3 in :issue:`14191`.)
201
202
Xiang Zhang13f1f422017-05-03 11:16:21 +0800203binascii
204--------
205
206The :func:`~binascii.b2a_uu` function now accepts an optional *backtick*
207keyword argument. When it's true, zeros are represented by ``'`'``
208instead of spaces. (Contributed by Xiang Zhang in :issue:`30103`.)
209
Oz N Tiram8b7a4cc2017-06-06 11:35:59 +0200210
211calendar
212--------
213
Walter Dörwaldf5c58c72017-06-26 18:31:52 +0200214The class :class:`~calendar.HTMLCalendar` has new class attributes which ease
215the customisation of the CSS classes in the produced HTML calendar.
Oz N Tiram8b7a4cc2017-06-06 11:35:59 +0200216(Contributed by Oz Tiram in :issue:`30095`.)
217
218cgi
219---
220
221:func:`~cgi.parse_multipart` returns the same results as
222:class:`~FieldStorage` : for non-file fields, the value associated to a key
223is a list of strings, not bytes.
224(Contributed by Pierre Quentel in :issue:`29979`.)
225
Jelle Zijlstra2e624692017-04-30 18:25:58 -0700226contextlib
227----------
228
229:func:`contextlib.asynccontextmanager` has been added. (Contributed by
230Jelle Zijlstra in :issue:`29679`.)
231
Serhiy Storchaka1efbf922017-06-11 14:09:39 +0300232dis
233---
234
235The :func:`~dis.dis` function now is able to
236disassemble nested code objects (the code of comprehensions, generator
237expressions and nested functions, and the code used for building nested
238classes). (Contributed by Serhiy Storchaka in :issue:`11822`.)
239
Ryan Gonzalezf9f87f02017-04-14 04:00:25 -0500240distutils
241---------
242
243README.rst is now included in the list of distutils standard READMEs and
244therefore included in source distributions.
245(Contributed by Ryan Gonzalez in :issue:`11913`.)
246
Pierre Quentel351adda2017-04-02 12:26:12 +0200247http.server
248-----------
249
250:class:`~http.server.SimpleHTTPRequestHandler` supports the HTTP
251If-Modified-Since header. The server returns the 304 response status if the
252target file was not modified after the time specified in the header.
253(Contributed by Pierre Quentel in :issue:`29654`.)
254
Stéphane Wirtela17a2f52017-05-24 09:29:06 +0200255Add the parameter ``directory`` to the :class:`~http.server.SimpleHTTPRequestHandler`
256and the ``--directory`` to the command line of the module :mod:`~http.server`.
257With this parameter, the server serves the specified directory, by default it uses the current working directory.
258(Contributed by Stéphane Wirtel and Julien Palard in :issue:`28707`.)
259
Garvit Khatri1cf93a72017-03-28 23:43:38 +0800260locale
261------
262
263Added another argument *monetary* in :meth:`format_string` of :mod:`locale`.
264If *monetary* is true, the conversion uses monetary thousands separator and
265grouping strings. (Contributed by Garvit in :issue:`10379`.)
266
Mark Dickinsona0ce3752017-04-05 18:34:27 +0100267math
268----
269
270New :func:`~math.remainder` function, implementing the IEEE 754-style remainder
271operation. (Contributed by Mark Dickinson in :issue:`29962`.)
272
Serhiy Storchaka8f6b3442017-03-07 14:33:21 +0200273os
274--
275
Garvit Khatri1cf93a72017-03-28 23:43:38 +0800276Added support for :class:`bytes` paths in :func:`~os.fwalk`. (Contributed by
277Serhiy Storchaka in :issue:`28682`.)
Serhiy Storchaka8f6b3442017-03-07 14:33:21 +0200278
Serhiy Storchakaea720fe2017-03-30 09:12:31 +0300279Added support for :ref:`file descriptors <path_fd>` in :func:`~os.scandir`
280on Unix. (Contributed by Serhiy Storchaka in :issue:`25996`.)
281
Antoine Pitrouf7ecfac2017-05-28 11:35:14 +0200282New function :func:`os.register_at_fork` allows registering Python callbacks
283to be executed on a process fork. (Contributed by Antoine Pitrou in
284:issue:`16500`.)
285
Barry Warsaw35425d62017-09-22 12:29:42 -0400286pdb
287---
288
289:func:`~pdb.set_trace` now takes an optional ``header`` keyword-only
290argument. If given, this is printed to the console just before debugging
291begins.
292
Barry Warsaw973b9012017-09-04 17:29:27 -0400293string
294------
295
296:class:`string.Template` now lets you to optionally modify the regular
297expression pattern for braced placeholders and non-braced placeholders
298separately. (Contributed by Barry Warsaw in :issue:`1198569`.)
299
Serhiy Storchakad9c956f2017-01-11 20:13:03 +0200300unittest.mock
301-------------
302
303The :const:`~unittest.mock.sentinel` attributes now preserve their identity
Garvit Khatri1cf93a72017-03-28 23:43:38 +0800304when they are :mod:`copied <copy>` or :mod:`pickled <pickle>`. (Contributed by
305Serhiy Storchaka in :issue:`20804`.)
Serhiy Storchakad9c956f2017-01-11 20:13:03 +0200306
Xiang Zhang267b9d22017-02-28 17:12:52 +0800307xmlrpc.server
308-------------
309
310:meth:`register_function` of :class:`xmlrpc.server.SimpleXMLRPCDispatcher` and
Garvit Khatri1cf93a72017-03-28 23:43:38 +0800311its subclasses can be used as a decorator. (Contributed by Xiang Zhang in
312:issue:`7769`.)
Xiang Zhang267b9d22017-02-28 17:12:52 +0800313
Benjamin Peterson279a9622017-06-22 22:31:08 -0700314unicodedata
315-----------
316
317The internal :mod:`unicodedata` database has been upgraded to use `Unicode 10
318<http://www.unicode.org/versions/Unicode10.0.0/>`_. (Contributed by Benjamin
319Peterson.)
320
Ratnadeep Debnath21024f02017-02-25 14:30:28 +0530321urllib.parse
322------------
323
Daniel Himmelsteindadca482017-08-10 21:45:12 -0400324:func:`urllib.parse.quote` has been updated from RFC 2396 to RFC 3986,
Ratnadeep Debnath21024f02017-02-25 14:30:28 +0530325adding `~` to the set of characters that is never quoted by default.
326(Contributed by Christian Theune and Ratnadeep Debnath in :issue:`16285`.)
327
Xiang Zhang13f1f422017-05-03 11:16:21 +0800328uu
329--
330
331Function :func:`~uu.encode` now accepts an optional *backtick*
332keyword argument. When it's true, zeros are represented by ``'`'``
333instead of spaces. (Contributed by Xiang Zhang in :issue:`30103`.)
334
scoder101a5e82017-09-30 15:35:21 +0200335xml.etree
336---------
337
338:ref:`ElementPath <elementtree-xpath>` predicates in the :meth:`find`
339methods can now compare text of the current node with ``[. = "text"]``,
340not only text in children. Predicates also allow adding spaces for
341better readability. (Contributed by Stefan Behnel in :issue:`31648`.)
342
Paul Moore0780bf72017-08-26 18:04:12 +0100343zipapp
344------
345
346Function :func:`zipapp.create_archive` now accepts an optional *filter*
Zhiming Wangd87b1052017-09-29 13:31:52 -0400347argument to allow the user to select which files should be included in the
348archive, and an optional *compressed* argument to generate a compressed
Paul Moore0780bf72017-08-26 18:04:12 +0100349archive.
350
Zhiming Wangd87b1052017-09-29 13:31:52 -0400351A command line option ``--compress`` has also been added to support
352compression.
353
Ned Deily4829bc62016-09-12 17:29:04 -0400354
355Optimizations
356=============
357
Yury Selivanovf2392132016-12-13 19:03:51 -0500358* Added two new opcodes: ``LOAD_METHOD`` and ``CALL_METHOD`` to avoid
359 instantiation of bound method objects for method calls, which results
Garvit Khatri1cf93a72017-03-28 23:43:38 +0800360 in method calls being faster up to 20%. (Contributed by Yury Selivanov and
361 INADA Naoki in :issue:`26110`.)
Yury Selivanovf2392132016-12-13 19:03:51 -0500362
Serhiy Storchaka0a58f722017-03-30 09:11:10 +0300363* Searching some unlucky Unicode characters (like Ukrainian capital "Є")
364 in a string was to 25 times slower than searching other characters.
365 Now it is slower only by 3 times in worst case.
366 (Contributed by Serhiy Storchaka in :issue:`24821`.)
367
Serhiy Storchaka97553fd2017-03-11 23:37:16 +0200368* Fast implementation from standard C library is now used for functions
Paul Romano992f6132017-09-15 12:00:57 -0500369 :func:`~math.erf` and :func:`~math.erfc` in the :mod:`math` module.
370 (Contributed by Serhiy Storchaka in :issue:`26121`.)
Serhiy Storchaka97553fd2017-03-11 23:37:16 +0200371
Serhiy Storchakaea720fe2017-03-30 09:12:31 +0300372* The :func:`os.fwalk` function has been sped up by 2 times. This was done
373 using the :func:`os.scandir` function.
374 (Contributed by Serhiy Storchaka in :issue:`25996`.)
375
Serhiy Storchaka6d336a02017-05-09 23:37:14 +0300376* Optimized case-insensitive matching and searching of :mod:`regular
377 expressions <re>`. Searching some patterns can now be up to 20 times faster.
378 (Contributed by Serhiy Storchaka in :issue:`30285`.)
379
INADA Naokic1c47c12017-10-05 17:19:26 +0900380* :func:`re.compile` now converts ``flags`` parameter to int object if
381 it is ``RegexFlag``. It is now as fast as Python 3.5, and faster than
382 Python 3.6 about 10% depending on the pattern.
383 (Contributed by INADA Naoki in :issue:`31671`.)
384
Giampaolo Rodolafbfaa6f2017-06-09 22:20:41 +0200385* :meth:`selectors.EpollSelector.modify`, :meth:`selectors.PollSelector.modify`
386 and :meth:`selectors.DevpollSelector.modify` may be around 10% faster under
387 heavy loads. (Contributed by Giampaolo Rodola' in :issue:`30014`)
Ned Deily4829bc62016-09-12 17:29:04 -0400388
389Build and C API Changes
390=======================
391
Zachary Waref40d4dd2016-09-17 01:25:24 -0500392* A full copy of libffi is no longer bundled for use when building the
393 :mod:`_ctypes <ctypes>` module on non-OSX UNIX platforms. An installed copy
394 of libffi is now required when building ``_ctypes`` on such platforms.
395 Contributed by Zachary Ware in :issue:`27979`.
Ned Deily4829bc62016-09-12 17:29:04 -0400396
Serhiy Storchaka007d7ff2016-11-22 07:58:08 +0200397* The fields :c:member:`name` and :c:member:`doc` of structures
398 :c:type:`PyMemberDef`, :c:type:`PyGetSetDef`,
399 :c:type:`PyStructSequence_Field`, :c:type:`PyStructSequence_Desc`,
400 and :c:type:`wrapperbase` are now of type ``const char *`` rather of
401 ``char *``. (Contributed by Serhiy Storchaka in :issue:`28761`.)
402
Serhiy Storchaka2a404b62017-01-22 23:07:07 +0200403* The result of :c:func:`PyUnicode_AsUTF8AndSize` and :c:func:`PyUnicode_AsUTF8`
Garvit Khatri1cf93a72017-03-28 23:43:38 +0800404 is now of type ``const char *`` rather of ``char *``. (Contributed by Serhiy
405 Storchaka in :issue:`28769`.)
Serhiy Storchaka2a404b62017-01-22 23:07:07 +0200406
Oren Milman0ccc0f62017-10-08 11:17:46 +0300407* The result of :c:func:`PyMapping_Keys`, :c:func:`PyMapping_Values` and
408 :c:func:`PyMapping_Items` is now always a list, rather than a list or a
409 tuple. (Contributed by Oren Milman in :issue:`28280`.)
410
Serhiy Storchaka6e08baf2017-01-25 13:27:44 +0200411* Added functions :c:func:`PySlice_Unpack` and :c:func:`PySlice_AdjustIndices`.
412 (Contributed by Serhiy Storchaka in :issue:`27867`.)
413
Antoine Pitrouf7ecfac2017-05-28 11:35:14 +0200414* :c:func:`PyOS_AfterFork` is deprecated in favour of the new functions
415 :c:func:`PyOS_BeforeFork`, :c:func:`PyOS_AfterFork_Parent` and
416 :c:func:`PyOS_AfterFork_Child`. (Contributed by Antoine Pitrou in
417 :issue:`16500`.)
418
Zachary Warecb8c0482017-06-15 22:34:59 -0500419* The Windows build process no longer depends on Subversion to pull in external
420 sources, a Python script is used to download zipfiles from GitHub instead.
421 If Python 3.6 is not found on the system (via ``py -3.6``), NuGet is used to
422 download a copy of 32-bit Python for this purpose. (Contributed by Zachary
423 Ware in :issue:`30450`.)
424
Antoine Pitroua6a4dc82017-09-07 18:56:24 +0200425* Support for building ``--without-threads`` is removed.
426 (Contributed by Antoine Pitrou in :issue:`31370`.).
427
Ned Deily4829bc62016-09-12 17:29:04 -0400428
Nick Coghlan5a851672017-09-08 10:14:16 +1000429Other CPython Implementation Changes
430====================================
431
432* Trace hooks may now opt out of receiving ``line`` events from the interpreter
433 by setting the new ``f_trace_lines`` attribute to :const:`False` on the frame
434 being traced. (Contributed by Nick Coghlan in :issue:`31344`.)
435
436* Trace hooks may now opt in to receiving ``opcode`` events from the interpreter
437 by setting the new ``f_trace_opcodes`` attribute to :const:`True` on the frame
438 being traced. (Contributed by Nick Coghlan in :issue:`31344`.)
439
440
Ned Deily4829bc62016-09-12 17:29:04 -0400441Deprecated
442==========
443
Serhiy Storchaka6e08baf2017-01-25 13:27:44 +0200444- Function :c:func:`PySlice_GetIndicesEx` is deprecated and replaced with
445 a macro if ``Py_LIMITED_API`` is not set or set to the value between
446 ``0x03050400`` and ``0x03060000`` (not including) or ``0x03060100`` or
447 higher. (Contributed by Serhiy Storchaka in :issue:`27867`.)
Ned Deily4829bc62016-09-12 17:29:04 -0400448
Garvit Khatri1cf93a72017-03-28 23:43:38 +0800449- Deprecated :meth:`format` from :mod:`locale`, use the :meth:`format_string`
450 instead. (Contributed by Garvit in :issue:`10379`.)
451
Matthias Bussonnier1d4601c2017-02-15 18:00:32 -0800452- Methods
453 :meth:`MetaPathFinder.find_module() <importlib.abc.MetaPathFinder.find_module>`
454 (replaced by
455 :meth:`MetaPathFinder.find_spec() <importlib.abc.MetaPathFinder.find_spec>`
456 ) and
457 :meth:`PathEntryFinder.find_loader() <importlib.abc.PathEntryFinder.find_loader>`
458 (replaced by
459 :meth:`PathEntryFinder.find_spec() <importlib.abc.PathEntryFinder.find_spec>`)
460 both deprecated in Python 3.4 now emit :exc:`DeprecationWarning`. (Contributed
461 by Matthias Bussonnier in :issue:`29576`)
462
Serhiy Storchakaf6595982017-03-12 13:15:01 +0200463- Using non-integer value for selecting a plural form in :mod:`gettext` is
Garvit Khatri1cf93a72017-03-28 23:43:38 +0800464 now deprecated. It never correctly worked. (Contributed by Serhiy Storchaka
465 in :issue:`28692`.)
Serhiy Storchakaf6595982017-03-12 13:15:01 +0200466
Victor Stinner89a1c932017-05-15 11:01:21 +0200467- The :mod:`macpath` is now deprecated and will be removed in Python 3.8.
468
Ned Deily4829bc62016-09-12 17:29:04 -0400469
Serhiy Storchakaaefa7eb2017-03-23 15:48:39 +0200470Changes in the C API
471--------------------
472
473- The type of results of :c:func:`PyThread_start_new_thread` and
474 :c:func:`PyThread_get_thread_ident`, and the *id* parameter of
475 :c:func:`PyThreadState_SetAsyncExc` changed from :c:type:`long` to
476 :c:type:`unsigned long`.
477 (Contributed by Serhiy Storchaka in :issue:`6532`.)
478
Serhiy Storchakae613e6a2017-06-27 16:03:14 +0300479- :c:func:`PyUnicode_AsWideCharString` now raises a :exc:`ValueError` if the
480 second argument is *NULL* and the :c:type:`wchar_t*` string contains null
481 characters. (Contributed by Serhiy Storchaka in :issue:`30708`.)
482
Serhiy Storchakaaefa7eb2017-03-23 15:48:39 +0200483
Steve (Gadget) Barnes5b8f9722017-06-28 20:14:52 +0100484Windows Only
485------------
486- The python launcher, (py.exe), can accept 32 & 64 bit specifiers **without**
487 having to specify a minor version as well. So ``py -3-32`` and ``py -3-64``
488 become valid as well as ``py -3.7-32``, also the -*m*-64 and -*m.n*-64 forms
489 are now accepted to force 64 bit python even if 32 bit would have otherwise
490 been used. If the specified version is not available py.exe will error exit.
491 (Contributed by Steve Barnes in :issue:`30291`.)
492
493- The launcher can be run as "py -0" to produce a list of the installed pythons,
494 *with default marked with an asterix*. Running "py -0p" will include the paths.
495 If py is run with a version specifier that cannot be matched it will also print
496 the *short form* list of available specifiers.
497 (Contributed by Steve Barnes in :issue:`30362`.)
498
Ned Deily4829bc62016-09-12 17:29:04 -0400499Removed
500=======
501
Serhiy Storchakaff3dbe92016-12-06 19:25:19 +0200502API and Feature Removals
503------------------------
504
505* Unknown escapes consisting of ``'\'`` and an ASCII letter in replacement
Serhiy Storchakab2d61792017-01-13 21:14:40 +0200506 templates for :func:`re.sub` were deprecated in Python 3.5, and will now
507 cause an error.
Ned Deily4829bc62016-09-12 17:29:04 -0400508
Serhiy Storchaka4f76fb12017-01-13 13:25:24 +0200509* Removed support of the *exclude* argument in :meth:`tarfile.TarFile.add`.
Serhiy Storchakab2d61792017-01-13 21:14:40 +0200510 It was deprecated in Python 2.7 and 3.2. Use the *filter* argument instead.
Serhiy Storchaka4f76fb12017-01-13 13:25:24 +0200511
Serhiy Storchaka9ed707e2017-01-13 20:55:05 +0200512* The ``splitunc()`` function in the :mod:`ntpath` module was deprecated in
513 Python 3.1, and has now been removed. Use the :func:`~os.path.splitdrive`
514 function instead.
515
Raymond Hettinger8b57d732017-09-10 10:23:36 -0700516* :func:`collections.namedtuple` no longer supports the *verbose* parameter
517 or ``_source`` attribute which showed the generated source code for the
518 named tuple class. This was part of an optimization designed to speed-up
519 class creation. (Contributed by Jelle Zijlstra with further improvements
520 by INADA Naoki, Serhiy Storchaka, and Raymond Hettinger in :issue:`28638`.)
521
Serhiy Storchaka2e564242017-03-06 17:01:06 +0200522* Functions :func:`bool`, :func:`float`, :func:`list` and :func:`tuple` no
523 longer take keyword arguments. The first argument of :func:`int` can now
Daniel Porteous77f68e32017-06-21 10:21:48 +1000524 be passed only as positional argument.
Serhiy Storchaka2e564242017-03-06 17:01:06 +0200525
Serhiy Storchakaedef3582017-05-15 13:21:31 +0300526* Removed previously deprecated in Python 2.4 classes ``Plist``, ``Dict`` and
527 ``_InternalDict`` in the :mod:`plistlib` module. Dict values in the result
528 of functions :func:`~plistlib.readPlist` and
529 :func:`~plistlib.readPlistFromBytes` are now normal dicts. You no longer
530 can use attribute access to access items of these dictionaries.
531
Ned Deily4829bc62016-09-12 17:29:04 -0400532
533Porting to Python 3.7
534=====================
535
536This section lists previously described changes and other bugfixes
537that may require changes to your code.
538
539
Serhiy Storchaka009b0a12017-01-13 09:10:51 +0200540Changes in the Python API
541-------------------------
542
Sanyam Khuranab9c3da52017-06-13 22:41:14 +0530543* :meth:`pkgutil.walk_packages` now raises ValueError if *path* is a string.
544 Previously an empty list was returned. (Contributed by Sanyam Khurana in
545 :issue:`24744`.)
546
Serhiy Storchaka009b0a12017-01-13 09:10:51 +0200547* A format string argument for :meth:`string.Formatter.format`
548 is now :ref:`positional-only <positional-only_parameter>`.
Garvit Khatri1cf93a72017-03-28 23:43:38 +0800549 Passing it as a keyword argument was deprecated in Python 3.5. (Contributed
550 by Serhiy Storchaka in :issue:`29193`.)
Serhiy Storchakacc283372017-01-13 09:23:15 +0200551
552* Attributes :attr:`~http.cookies.Morsel.key`,
553 :attr:`~http.cookies.Morsel.value` and
554 :attr:`~http.cookies.Morsel.coded_value` of class
555 :class:`http.cookies.Morsel` are now read-only.
Serhiy Storchakab2d61792017-01-13 21:14:40 +0200556 Assigning to them was deprecated in Python 3.5.
Serhiy Storchakacc283372017-01-13 09:23:15 +0200557 Use the :meth:`~http.cookies.Morsel.set` method for setting them.
558 (Contributed by Serhiy Storchaka in :issue:`29192`.)
INADA Naoki015bce62017-01-16 17:23:30 +0900559
INADA Naokicb41b272017-02-23 00:31:59 +0900560* ``Module``, ``FunctionDef``, ``AsyncFunctionDef``, and
561 ``ClassDef`` AST nodes now have a new ``docstring`` field.
562 The first statement in their body is not considered as a docstring
563 anymore. ``co_firstlineno`` and ``co_lnotab`` of code object for class
Garvit Khatri1cf93a72017-03-28 23:43:38 +0800564 and module are affected by this change. (Contributed by INADA Naoki and
565 Eugene Toder in :issue:`29463`.)
INADA Naoki015bce62017-01-16 17:23:30 +0900566
Serhiy Storchakae304e332017-03-24 13:27:42 +0200567* The *mode* argument of :func:`os.makedirs` no longer affects the file
568 permission bits of newly-created intermediate-level directories.
569 To set their file permission bits you can set the umask before invoking
570 ``makedirs()``.
571 (Contributed by Serhiy Storchaka in :issue:`19930`.)
572
Victor Stinnerf87b85f2017-06-23 15:11:12 +0200573* The :attr:`struct.Struct.format` type is now :class:`str` instead of
574 :class:`bytes`. (Contributed by Victor Stinner in :issue:`21071`.)
575
Segev Finer9f3bdcb2017-06-28 23:51:00 +0300576* Due to internal changes in :mod:`socket` you won't be able to
577 :func:`socket.fromshare` a socket :func:`~socket.socket.share`-ed in older
578 Python versions.
579
Utkarsh Upadhyay8e453182017-07-28 14:42:56 +0200580* ``repr`` for :class:`datetime.timedelta` has changed to include keyword arguments
581 in the output. (Contributed by Utkarsh Upadhyay in :issue:`30302`.)
582
Serhiy Storchakae304e332017-03-24 13:27:42 +0200583
Serhiy Storchaka4d3f0842017-10-08 12:53:34 +0300584Changes in the C API
585--------------------
586
587* The function :c:func:`PySlice_GetIndicesEx` is considered not safe for
588 resizable sequences. If the slice indices are not instances of :class:`int`,
589 but objects that implement the :meth:`!__index__` method, the sequence can be
590 resized after passing its length to :c:func:`!PySlice_GetIndicesEx`. This
591 can lead to returning indices out of the length of the sequence. For
592 avoiding possible problems use new functions :c:func:`PySlice_Unpack` and
593 :c:func:`PySlice_AdjustIndices`.
594 (Contributed by Serhiy Storchaka in :issue:`27867`.)
595
596
INADA Naoki015bce62017-01-16 17:23:30 +0900597CPython bytecode changes
598------------------------
599
Martin Panter91a88662017-01-24 00:30:06 +0000600* Added two new opcodes: :opcode:`LOAD_METHOD` and :opcode:`CALL_METHOD`.
INADA Naoki015bce62017-01-16 17:23:30 +0900601 (Contributed by Yury Selivanov and INADA Naoki in :issue:`26110`.)