blob: 0360de494ee1c732a94ea98faf9e3c6e9dc0c657 [file] [log] [blame]
Victor Stinner01adf062014-03-18 00:53:32 +01001****************************
2 What's New In Python 3.5
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.5, compared to 3.4.
49
50For full details, see the :source:`Misc/NEWS` file.
51
Benjamin Peterson52d14932015-03-27 16:07:35 -040052.. 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.5 moves towards release,
56 so it's worth checking back even after reading earlier versions.
Victor Stinner01adf062014-03-18 00:53:32 +010057
58
59.. seealso::
60
Berker Peksagfa0423b2014-10-09 11:38:19 +030061 :pep:`478` - Python 3.5 Release Schedule
Victor Stinner01adf062014-03-18 00:53:32 +010062
63
64Summary -- Release highlights
65=============================
66
Victor Stinner93692bb2015-03-30 15:04:45 +020067.. This section singles out the most important changes in Python 3.5.
Victor Stinner01adf062014-03-18 00:53:32 +010068 Brevity is key.
69
70New syntax features:
71
Benjamin Peterson14ef1a12015-05-13 11:19:27 -040072* :pep:`465`, a new matrix multiplication operator: ``a @ b``.
73* :pep:`492`, coroutines with async and await syntax.
Victor Stinner01adf062014-03-18 00:53:32 +010074
75New library modules:
76
Brett Cannoncc4dfc12015-03-13 10:40:49 -040077* :mod:`zipapp`: :ref:`Improving Python ZIP Application Support
78 <whatsnew-zipapp>` (:pep:`441`).
Victor Stinner01adf062014-03-18 00:53:32 +010079
80New built-in features:
81
Victor Stinner93692bb2015-03-30 15:04:45 +020082* ``bytes % args``, ``bytearray % args``: :pep:`461` - Adding ``%`` formatting
83 to bytes and bytearray
Gregory P. Smith8cb65692015-04-25 23:22:26 +000084* ``b'\xf0\x9f\x90\x8d'.hex()``, ``bytearray(b'\xf0\x9f\x90\x8d').hex()``,
85 ``memoryview(b'\xf0\x9f\x90\x8d').hex()``: :issue:`9951` - A ``hex`` method
86 has been added to bytes, bytearray, and memoryview.
Victor Stinner01adf062014-03-18 00:53:32 +010087
88Implementation improvements:
89
Victor Stinner71430292014-03-18 01:18:21 +010090* When the ``LC_TYPE`` locale is the POSIX locale (``C`` locale),
91 :py:data:`sys.stdin` and :py:data:`sys.stdout` are now using the
92 ``surrogateescape`` error handler, instead of the ``strict`` error handler
93 (:issue:`19977`).
Victor Stinner01adf062014-03-18 00:53:32 +010094
Brett Cannonf299abd2015-04-13 14:21:02 -040095* :pep:`488`, the elimination of ``.pyo`` files.
96
Victor Stinner01adf062014-03-18 00:53:32 +010097Significantly Improved Library Modules:
98
99* None yet.
100
101Security improvements:
102
103* None yet.
104
105Please read on for a comprehensive list of user-facing changes.
106
107
108.. PEP-sized items next.
109
110.. _pep-4XX:
111
112.. PEP 4XX: Virtual Environments
113.. =============================
114
115
116.. (Implemented by Foo Bar.)
117
118.. .. seealso::
119
120 :pep:`4XX` - Python Virtual Environments
121 PEP written by Carl Meyer
122
123
Benjamin Peterson5562c9032015-05-13 11:19:06 -0400124PEP 461 - Adding formatting to bytes and bytearray
125--------------------------------------------------
Victor Stinner93692bb2015-03-30 15:04:45 +0200126
127This PEP proposes adding % formatting operations similar to Python 2's ``str``
128type to :class:`bytes` and :class:`bytearray`.
129
130Examples::
131
132 >>> b'Hello %s!' % b'World'
133 b'Hello World!'
134 >>> b'x=%i y=%f' % (1, 2.5)
135 b'x=1 y=2.500000'
136
137Unicode is not allowed for ``%s``, but it is accepted by ``%a`` (equivalent of
138``repr(obj).encode('ascii', 'backslashreplace')``)::
139
140 >>> b'Hello %s!' % 'World'
141 Traceback (most recent call last):
142 File "<stdin>", line 1, in <module>
143 TypeError: %b requires bytes, or an object that implements __bytes__, not 'str'
144 >>> b'price: %a' % '10€'
145 b"price: '10\\u20ac'"
146
147.. seealso::
148
149 :pep:`461` -- Adding % formatting to bytes and bytearray
150
151
152PEP 465 - A dedicated infix operator for matrix multiplication
153--------------------------------------------------------------
154
155This PEP proposes a new binary operator to be used for matrix multiplication,
R David Murrayef2a3972015-04-01 09:15:02 -0400156called ``@``. (Mnemonic: ``@`` is ``*`` for mATrices.)
Victor Stinner93692bb2015-03-30 15:04:45 +0200157
158.. seealso::
159
160 :pep:`465` -- A dedicated infix operator for matrix multiplication
161
Victor Stinner6036e442015-03-08 01:58:04 +0100162
163PEP 471 - os.scandir() function -- a better and faster directory iterator
164-------------------------------------------------------------------------
165
Victor Stinner37f20342015-03-10 13:29:41 +0100166:pep:`471` adds a new directory iteration function, :func:`os.scandir`,
167to the standard library. Additionally, :func:`os.walk` is now
168implemented using :func:`os.scandir`, which speeds it up by 3-5 times
169on POSIX systems and by 7-20 times on Windows systems.
170
171PEP and implementation written by Ben Hoyt with the help of Victor Stinner.
Victor Stinner6036e442015-03-08 01:58:04 +0100172
173.. seealso::
174
175 :pep:`471` -- os.scandir() function -- a better and faster directory
Victor Stinner37f20342015-03-10 13:29:41 +0100176 iterator
Victor Stinner6036e442015-03-08 01:58:04 +0100177
178
Charles-François Natali6e6c59b2015-02-07 13:27:50 +0000179PEP 475: Retry system calls failing with EINTR
180----------------------------------------------
181
Victor Stinnerf70e1ca2015-03-30 21:16:11 +0200182:pep:`475` adds support for automatic retry of system calls failing with
183:py:data:`~errno.EINTR`: this means that user code doesn't have to deal with
184EINTR or :exc:`InterruptedError` manually, and should make it more robust
185against asynchronous signal reception.
Charles-François Natali6e6c59b2015-02-07 13:27:50 +0000186
187.. seealso::
188
189 :pep:`475` -- Retry system calls failing with EINTR
Victor Stinner01adf062014-03-18 00:53:32 +0100190
191
Steve Dower76998fe2015-02-26 14:25:33 -0800192PEP 486: Make the Python Launcher aware of virtual environments
193---------------------------------------------------------------
194
195:pep:`486` makes the Windows launcher (see :pep:`397`) aware of an active
196virtual environment. When the default interpreter would be used and the
197``VIRTUAL_ENV`` environment variable is set, the interpreter in the virtual
198environment will be used.
199
200.. seealso::
201
202 :pep:`486` -- Make the Python Launcher aware of virtual environments
203
Brett Cannonf299abd2015-04-13 14:21:02 -0400204
205PEP 488: Elimination of PYO files
206---------------------------------
207
208:pep:`488` does away with the concept of ``.pyo`` files. This means that
209``.pyc`` files represent both unoptimized and optimized bytecode. To prevent
210the need to constantly regenerate bytecode files, ``.pyc`` files now have an
211optional ``opt-`` tag in their name when the bytecode is optimized. This has
212the side-effect of no more bytecode file name clashes when running under either
213``-O`` or ``-OO``, thus allowing unoptimized, ``-O``, and ``-OO`` bytecode files
214to all exist simultaneously. :func:`importlib.util.cache_from_source` has an
215updated API to help with this change.
216
217.. seealso::
218
219 :pep:`488` -- Elimination of PYO files
220
221
Victor Stinner01adf062014-03-18 00:53:32 +0100222Other Language Changes
223======================
224
225Some smaller changes made to the core Python language are:
226
Serhiy Storchaka07985ef2015-01-25 22:56:57 +0200227* Added the ``'namereplace'`` error handlers. The ``'backslashreplace'``
228 error handlers now works with decoding and translating.
229 (Contributed by Serhiy Storchaka in :issue:`19676` and :issue:`22286`.)
Victor Stinner01adf062014-03-18 00:53:32 +0100230
Serhiy Storchaka1dd49822015-03-20 16:54:57 +0200231* The :option:`-b` option now affects comparisons of :class:`bytes` with
232 :class:`int`. (Contributed by Serhiy Storchaka in :issue:`23681`)
Victor Stinner01adf062014-03-18 00:53:32 +0100233
Serhiy Storchakaad8a1c32015-05-12 23:16:55 +0300234* New Kazakh :ref:`codec <standard-encodings>` ``kz1048``. (Contributed by
235 Serhiy Storchaka in :issue:`22682`.)
236
Raymond Hettingereac503a2015-05-13 01:09:59 -0700237* Property docstrings are now writable. This is especially useful for
238 :func:`collections.namedtuple` docstrings.
239 (Contributed by Berker Peksag in :issue:`24064`.)
240
Serhiy Storchakaf0eeedf2015-05-12 23:24:19 +0300241* New Tajik :ref:`codec <standard-encodings>` ``koi8_t``. (Contributed by
242 Serhiy Storchaka in :issue:`22681`.)
243
Victor Stinner01adf062014-03-18 00:53:32 +0100244
245New Modules
246===========
247
Brett Cannoncc4dfc12015-03-13 10:40:49 -0400248.. _whatsnew-zipapp:
Victor Stinner01adf062014-03-18 00:53:32 +0100249
Brett Cannoncc4dfc12015-03-13 10:40:49 -0400250zipapp
251------
252
253The new :mod:`zipapp` module (specified in :pep:`441`) provides an API and
254command line tool for creating executable Python Zip Applications, which
255were introduced in Python 2.6 in :issue:`1739468` but which were not well
256publicised, either at the time or since.
257
258With the new module, bundling your application is as simple as putting all
259the files, including a ``__main__.py`` file, into a directory ``myapp``
260and running::
261
262 $ python -m zipapp myapp
263 $ python myapp.pyz
Victor Stinner01adf062014-03-18 00:53:32 +0100264
265
266Improved Modules
267================
268
Berker Peksag8089cd62015-02-14 01:39:17 +0200269argparse
270--------
271
272* :class:`~argparse.ArgumentParser` now allows to disable
273 :ref:`abbreviated usage <prefix-matching>` of long options by setting
274 :ref:`allow_abbrev` to ``False``.
275 (Contributed by Jonathan Paugh, Steven Bethard, paul j3 and Daniel Eriksson.)
276
Berker Peksagbf5e9602015-02-06 10:21:37 +0200277cgi
278---
279
Berker Peksagbd09d7b2015-02-11 15:32:34 +0200280* :class:`~cgi.FieldStorage` now supports the context management protocol.
Berker Peksagbf5e9602015-02-06 10:21:37 +0200281 (Contributed by Berker Peksag in :issue:`20289`.)
282
R David Murrayc31e6222014-09-29 11:25:00 -0400283code
284----
285
286* The :func:`code.InteractiveInterpreter.showtraceback` method now prints
Serhiy Storchakac1ded292014-11-02 19:22:02 +0200287 the full chained traceback, just like the interactive interpreter.
Berker Peksag088ca8b2015-02-06 10:17:49 +0200288 (Contributed by Claudiu Popa in :issue:`17442`.)
R David Murrayc31e6222014-09-29 11:25:00 -0400289
Raymond Hettingereac503a2015-05-13 01:09:59 -0700290collections
291-----------
292
293* You can now update docstrings produced by :func:`collections.namedtuple`::
294
295 Point = namedtuple('Point', ['x', 'y'])
296 Point.__doc__ = 'ordered pair'
297 Point.x.__doc__ = 'abscissa'
298 Point.y.__doc__ = 'ordinate'
299
300 (Contributed by Berker Peksag in :issue:`24064`.)
301
Brett Cannonf1a8df02014-09-12 10:39:48 -0400302compileall
303----------
304
305* :func:`compileall.compile_dir` and :mod:`compileall`'s command-line interface
306 can now do parallel bytecode compilation.
Serhiy Storchakac1ded292014-11-02 19:22:02 +0200307 (Contributed by Claudiu Popa in :issue:`16104`.)
Brett Cannonf1a8df02014-09-12 10:39:48 -0400308
Berker Peksagbb44fe02014-11-28 23:28:06 +0200309contextlib
310----------
311
312* The new :func:`contextlib.redirect_stderr` context manager(similar to
313 :func:`contextlib.redirect_stdout`) makes it easier for utility scripts to
314 handle inflexible APIs that write their output to :data:`sys.stderr` and
315 don't provide any options to redirect it.
316 (Contributed by Berker Peksag in :issue:`22389`.)
317
Steve Dowerd2bc3892015-04-15 18:06:05 -0400318curses
319------
320* The new :func:`curses.update_lines_cols` function updates the variables
321 :envvar:`curses.LINES` and :envvar:`curses.COLS`.
322
Berker Peksag102029d2015-03-15 01:18:47 +0200323difflib
324-------
325
326* The charset of the HTML document generated by :meth:`difflib.HtmlDiff.make_file`
327 can now be customized by using *charset* keyword-only parameter. The default
328 charset of HTML document changed from ``'ISO-8859-1'`` to ``'utf-8'``.
329 (Contributed by Berker Peksag in :issue:`2052`.)
330
Greg Ward4d9d2562015-04-20 20:21:21 -0400331* It's now possible to compare lists of byte strings with
332 :func:`difflib.diff_bytes` (fixes a regression from Python 2).
333
Berker Peksag618e3152015-01-27 02:59:09 +0200334distutils
335---------
336
337* The ``build`` and ``build_ext`` commands now accept a ``-j``
338 option to enable parallel building of extension modules.
339 (Contributed by Antoine Pitrou in :issue:`5309`.)
340
Serhiy Storchakab9cec6a2015-05-16 22:13:27 +0300341* Added support for the LZMA compression.
342 (Contributed by Serhiy Storchaka in :issue:`16314`.)
343
Antoine Pitroub9d9ce72014-05-15 22:47:33 +0200344doctest
345-------
Giampaolo Rodola'e09fb712014-04-04 15:34:17 +0200346
Antoine Pitroub9d9ce72014-05-15 22:47:33 +0200347* :func:`doctest.DocTestSuite` returns an empty :class:`unittest.TestSuite` if
Serhiy Storchakac1ded292014-11-02 19:22:02 +0200348 *module* contains no docstrings instead of raising :exc:`ValueError`.
349 (Contributed by Glenn Jones in :issue:`15916`.)
Antoine Pitroub9d9ce72014-05-15 22:47:33 +0200350
R David Murrayb744f3a2015-05-16 15:41:07 -0400351email
352-----
353
354* A new method :meth:`~email.message.Message.get_content_disposition` provides
355 easy access to a canonical value for the :mailheader:`Content-Disposition`
356 header (``None`` if there is no such header). (Contributed by Abhilash Raj
357 in :issue:`21083`.)
358
Serhiy Storchakac2edcdd2014-09-11 12:17:37 +0300359glob
360----
361
362* :func:`~glob.iglob` and :func:`~glob.glob` now support recursive search in
363 subdirectories using the "``**``" pattern.
364 (Contributed by Serhiy Storchaka in :issue:`13968`.)
365
Serhiy Storchaka38684c32014-09-09 19:07:49 +0300366imaplib
367-------
368
369* :class:`IMAP4` now supports the context management protocol. When used in a
370 :keyword:`with` statement, the IMAP4 ``LOGOUT`` command will be called
371 automatically at the end of the block. (Contributed by Tarek Ziadé and
Serhiy Storchakac1ded292014-11-02 19:22:02 +0200372 Serhiy Storchaka in :issue:`4972`.)
Serhiy Storchaka38684c32014-09-09 19:07:49 +0300373
R David Murraya6429db2015-05-10 19:17:23 -0400374* :mod:`imaplib` now supports :rfc:`5161`: the :meth:`~imaplib.IMAP4.enable`
375 extension), and :rfc:`6855`: utf-8 support (internationalized email, via the
376 ``UTF8=ACCEPT`` argument to :meth:`~imaplib.IMAP4.enable`). A new attribute,
377 :attr:`~imaplib.IMAP4.utf8_enabled`, tracks whether or not :rfc:`6855`
378 support is enabled. Milan Oberkirch, R. David Murray, and Maciej Szulik in
379 :issue:`21800`.)
380
381* :mod:`imaplib` now automatically encodes non-ASCII string usernames and
382 passwords using ``UTF8``, as recommended by the RFCs. (Contributed by Milan
383 Oberkirch in :issue:`21800`.)
384
R David Murray2f608202014-06-26 12:27:57 -0400385imghdr
386------
387
388* :func:`~imghdr.what` now recognizes the `OpenEXR <http://www.openexr.com>`_
Berker Peksag088ca8b2015-02-06 10:17:49 +0200389 format. (Contributed by Martin Vignali and Claudiu Popa in :issue:`20295`.)
R David Murray2f608202014-06-26 12:27:57 -0400390
Antoine Pitroub9d9ce72014-05-15 22:47:33 +0200391importlib
392---------
393
394* :class:`importlib.util.LazyLoader` allows for the lazy loading of modules in
Serhiy Storchakac1ded292014-11-02 19:22:02 +0200395 applications where startup time is paramount.
396 (Contributed by Brett Cannon in :issue:`17621`.)
Antoine Pitroub9d9ce72014-05-15 22:47:33 +0200397
398* :func:`importlib.abc.InspectLoader.source_to_code` is now a
399 static method to make it easier to work with source code in a string.
400 With a module object that you want to initialize you can then use
401 ``exec(code, module.__dict__)`` to execute the code in the module.
402
Brett Cannon2a17bde2014-05-30 14:55:29 -0400403* :func:`importlib.util.module_from_spec` is now the preferred way to create a
404 new module. Compared to :class:`types.ModuleType`, this new function will set
405 the various import-controlled attributes based on the passed-in spec object.
406
Antoine Pitroub9d9ce72014-05-15 22:47:33 +0200407inspect
408-------
Victor Stinner01adf062014-03-18 00:53:32 +0100409
Yury Selivanova5d63dd2014-03-27 11:31:43 -0400410* :class:`inspect.Signature` and :class:`inspect.Parameter` are now
Serhiy Storchakac1ded292014-11-02 19:22:02 +0200411 picklable and hashable. (Contributed by Yury Selivanov in :issue:`20726`
412 and :issue:`20334`.)
Yury Selivanova5d63dd2014-03-27 11:31:43 -0400413
Yury Selivanovb907a512015-05-16 13:45:09 -0400414* New method :meth:`inspect.BoundArguments.apply_defaults`. (Contributed
415 by Yury Selivanov in :issue:`24190`.)
416
Yury Selivanovda396452014-03-27 12:09:24 -0400417* New class method :meth:`inspect.Signature.from_callable`, which makes
Serhiy Storchakac1ded292014-11-02 19:22:02 +0200418 subclassing of :class:`~inspect.Signature` easier. (Contributed
419 by Yury Selivanov and Eric Snow in :issue:`17373`.)
Yury Selivanovda396452014-03-27 12:09:24 -0400420
Antoine Pitrou0dfce562014-05-15 22:55:40 +0200421ipaddress
422---------
423
424* :class:`ipaddress.IPv4Network` and :class:`ipaddress.IPv6Network` now
425 accept an ``(address, netmask)`` tuple argument, so as to easily construct
Serhiy Storchakac1ded292014-11-02 19:22:02 +0200426 network objects from existing addresses. (Contributed by Peter Moody
427 and Antoine Pitrou in :issue:`16531`.)
Antoine Pitrou0dfce562014-05-15 22:55:40 +0200428
Berker Peksag39e4c4d2014-11-10 09:56:54 +0200429json
430----
431
432* The output of :mod:`json.tool` command line interface is now in the same
433 order as the input. Use the :option:`--sort-keys` option to sort the output
434 of dictionaries alphabetically by key. (Contributed by Berker Peksag in
435 :issue:`21650`.)
436
Serhiy Storchaka47efb4a2015-01-26 13:16:30 +0200437* JSON decoder now raises :exc:`json.JSONDecodeError` instead of
438 :exc:`ValueError`. (Contributed by Serhiy Storchaka in :issue:`19361`.)
439
Zachary Ware63f277b2014-06-19 09:46:37 -0500440os
441--
442
Victor Stinner37f20342015-03-10 13:29:41 +0100443* New :func:`os.scandir` function that exposes file information from
444 the operating system when listing a directory. :func:`os.scandir`
445 returns an iterator of :class:`os.DirEntry` objects corresponding to
446 the entries in the directory given by *path*. (Contributed by Ben
447 Hoyt with the help of Victor Stinner in :issue:`22524`.)
Victor Stinner6036e442015-03-08 01:58:04 +0100448
Victor Stinnere1d24f72014-07-24 12:44:07 +0200449* :class:`os.stat_result` now has a :attr:`~os.stat_result.st_file_attributes`
Serhiy Storchakac1ded292014-11-02 19:22:02 +0200450 attribute on Windows. (Contributed by Ben Hoyt in :issue:`21719`.)
Zachary Ware63f277b2014-06-19 09:46:37 -0500451
Serhiy Storchaka38220932015-03-31 15:31:53 +0300452os.path
453-------
454
455* New :func:`~os.path.commonpath` function that extracts common path prefix.
456 Unlike the :func:`~os.path.commonprefix` function, it always returns a valid
457 patch. (Contributed by Rafik Draoui and Serhiy Storchaka in :issue:`10395`.)
458
Serhiy Storchaka58e41342015-03-31 14:07:24 +0300459pickle
460------
461
462* Serializing more "lookupable" objects (such as unbound methods or nested
463 classes) now are supported with pickle protocols < 4.
464 (Contributed by Serhiy Storchaka in :issue:`23611`.)
465
R David Murrayb8cd3e42015-05-16 15:05:53 -0400466poplib
467------
468
469* A new command :meth:`~poplib.POP3.utf8` enables :rfc:`6856`
470 (internationalized email) support if the POP server supports it. (Contributed
471 by Milan OberKirch in :issue:`21804`.)
472
Serhiy Storchaka9baa5b22014-09-29 22:49:23 +0300473re
474--
475
476* Number of capturing groups in regular expression is no longer limited by 100.
477 (Contributed by Serhiy Storchaka in :issue:`22437`.)
478
Serhiy Storchaka7438e4b2014-10-10 11:06:31 +0300479* Now unmatched groups are replaced with empty strings in :func:`re.sub`
480 and :func:`re.subn`. (Contributed by Serhiy Storchaka in :issue:`1519638`.)
481
Mark Dickinsona5d0c7c2015-01-11 11:55:29 +0000482math
483----
484
485* :data:`math.inf` and :data:`math.nan` constants added. (Contributed by Mark
486 Dickinson in :issue:`23185`.)
487
R David Murray6ffface2014-06-11 14:40:13 -0400488shutil
489------
490
491* :func:`~shutil.move` now accepts a *copy_function* argument, allowing,
492 for example, :func:`~shutil.copy` to be used instead of the default
493 :func:`~shutil.copy2` if there is a need to ignore metadata. (Contributed by
494 Claudiu Popa in :issue:`19840`.)
495
Antoine Pitroub9d9ce72014-05-15 22:47:33 +0200496signal
497------
Brett Cannona04dbe42014-04-04 13:53:38 -0400498
Victor Stinnerbbe38032015-04-01 16:32:32 +0200499* On Windows, :func:`signal.set_wakeup_fd` now also supports socket handles.
500 (Contributed by Victor Stinner in :issue:`22018`.)
501
Antoine Pitroub9d9ce72014-05-15 22:47:33 +0200502* Different constants of :mod:`signal` module are now enumeration values using
503 the :mod:`enum` module. This allows meaningful names to be printed during
Serhiy Storchakac1ded292014-11-02 19:22:02 +0200504 debugging, instead of integer “magic numbers”. (Contributed by Giampaolo
505 Rodola' in :issue:`21076`.)
R David Murray1976d9b2014-04-14 20:28:36 -0400506
R David Murray554bcbf2014-06-11 11:18:08 -0400507smtpd
508-----
509
510* Both :class:`~smtpd.SMTPServer` and :class:`smtpd.SMTPChannel` now accept a
511 *decode_data* keyword to determine if the DATA portion of the SMTP
512 transaction is decoded using the ``utf-8`` codec or is instead provided to
513 :meth:`~smtpd.SMTPServer.process_message` as a byte string. The default
514 is ``True`` for backward compatibility reasons, but will change to ``False``
R David Murraya33df312015-05-11 12:11:40 -0400515 in Python 3.6. If *decode_data* is set to ``False``, the
516 :meth:`~smtpd.SMTPServer.process_message` method must be prepared to accept
517 keyword arguments. (Contributed by Maciej Szulik in :issue:`19662`.)
518
519* :class:`~smtpd.SMTPServer` now advertises the ``8BITMIME`` extension
520 (:rfc:`6152`) if if *decode_data* has been set ``True``. If the client
521 specifies ``BODY=8BITMIME`` on the ``MAIL`` command, it is passed to
522 :meth:`~smtpd.SMTPServer.process_message` via the ``mail_options`` keyword.
523 (Contributed by Milan Oberkirch and R. David Murray in :issue:`21795`.)
524
525* :class:`~smtpd.SMTPServer` now supports the ``SMTPUTF8`` extension
526 (:rfc:`6531`: Internationalized Email). If the client specified ``SMTPUTF8
527 BODY=8BITMIME`` on the ``MAIL`` command, they are passed to
528 :meth:`~smtpd.SMTPServer.process_message` via the ``mail_options`` keyword.
529 It is the responsibility of the :meth:`~smtpd.SMTPServer.process_message`
530 method to correctly handle the ``SMTPUTF8`` data. (Contributed by Milan
531 Oberkirch in :issue:`21725`.)
R David Murray554bcbf2014-06-11 11:18:08 -0400532
R David Murray6fe56a32014-06-11 13:48:58 -0400533* It is now possible to provide, directly or via name resolution, IPv6
534 addresses in the :class:`~smtpd.SMTPServer` constructor, and have it
535 successfully connect. (Contributed by Milan Oberkirch in :issue:`14758`.)
536
R David Murray76e13c12014-07-03 14:47:46 -0400537smtplib
538-------
539
540* A new :meth:`~smtplib.SMTP.auth` method provides a convenient way to
Serhiy Storchakac1ded292014-11-02 19:22:02 +0200541 implement custom authentication mechanisms.
542 (Contributed by Milan Oberkirch in :issue:`15014`.)
R David Murray76e13c12014-07-03 14:47:46 -0400543
R David Murray0c49b892015-04-16 17:14:42 -0400544* Additional debuglevel (2) shows timestamps for debug messages in
545 :class:`smtplib.SMTP`. (Contributed by Gavin Chappell and Maciej Szulik in
546 :issue:`16914`.)
547
R David Murraycee7cf62015-05-16 13:58:14 -0400548* :mod:`smtplib` now support :rfc:`6531` (SMTPUTF8). (Contributed by
549 Milan Oberkirch and R. David Murray in :issue:`22027`.)
550
R David Murray4487dd02014-10-09 16:59:30 -0400551sndhdr
552------
553
554* :func:`~sndhdr.what` and :func:`~sndhdr.whathdr` now return
Serhiy Storchakac1ded292014-11-02 19:22:02 +0200555 :func:`~collections.namedtuple`.
556 (Contributed by Claudiu Popa in :issue:`18615`.)
R David Murray4487dd02014-10-09 16:59:30 -0400557
Giampaolo Rodola'915d1412014-06-11 03:54:30 +0200558socket
559------
560
561* New :meth:`socket.socket.sendfile` method allows to send a file over a socket
562 by using high-performance :func:`os.sendfile` function on UNIX resulting in
563 uploads being from 2x to 3x faster than when using plain
564 :meth:`socket.socket.send`.
Serhiy Storchakac1ded292014-11-02 19:22:02 +0200565 (Contributed by Giampaolo Rodola' in :issue:`17552`.)
Giampaolo Rodola'915d1412014-06-11 03:54:30 +0200566
Gregory P. Smith6e730002015-04-14 16:14:25 -0700567subprocess
568----------
569
570* The new :func:`subprocess.run` function runs subprocesses and returns a
571 :class:`subprocess.CompletedProcess` object. It Provides a more consistent
572 API than :func:`~subprocess.call`, :func:`~subprocess.check_call` and
573 :func:`~subprocess.check_output`.
574
Eric V. Smith7a803892015-04-15 10:27:58 -0400575sysconfig
576---------
577
578* The user scripts directory on Windows is now versioned.
579 (Contributed by Paul Moore in :issue:`23437`.)
580
581tarfile
582-------
583
584* The :func:`tarfile.open` function now supports ``'x'`` (exclusive creation)
585 mode. (Contributed by Berker Peksag in :issue:`21717`.)
586
587* The :meth:`~tarfile.TarFile.extractall` and :meth:`~tarfile.TarFile.extract`
588 methods now take a keyword parameter *numeric_only*. If set to ``True``,
589 the extracted files and directories will be owned by the numeric uid and gid
590 from the tarfile. If set to ``False`` (the default, and the behavior in
591 versions prior to 3.5), they will be owned bythe named user and group in the
592 tarfile. (Contributed by Michael Vogt and Eric Smith in :issue:`23193`.)
593
Victor Stinnerae586492014-09-02 23:18:25 +0200594time
595----
596
Berker Peksag882c95c2014-10-09 11:46:56 +0300597* The :func:`time.monotonic` function is now always available. (Contributed by
598 Victor Stinner in :issue:`22043`.)
Victor Stinnerae586492014-09-02 23:18:25 +0200599
Berker Peksagbd09d7b2015-02-11 15:32:34 +0200600urllib
601------
Nick Coghlanc216c482014-11-12 23:33:50 +1000602
R David Murray4c7f9952015-04-16 16:36:18 -0400603* A new :class:`~urllib.request.HTTPPasswordMgrWithPriorAuth` allows HTTP Basic
604 Authentication credentials to be managed so as to eliminate unnecessary
605 ``401`` response handling, or to unconditionally send credentials
606 on the first request in order to communicate with servers that return a
607 ``404`` response instead of a ``401`` if the ``Authorization`` header is not
608 sent. (Contributed by Matej Cepl in :issue:`19494` and Akshit Khurana in
609 :issue:`7159`.)
Nick Coghlanc216c482014-11-12 23:33:50 +1000610
Berker Peksag3e887222014-07-02 08:37:22 +0300611wsgiref
612-------
613
614* *headers* parameter of :class:`wsgiref.headers.Headers` is now optional.
615 (Contributed by Pablo Torres Navarrete and SilentGhost in :issue:`5800`.)
616
Antoine Pitroub9d9ce72014-05-15 22:47:33 +0200617xmlrpc
618------
619
Serhiy Storchakac1ded292014-11-02 19:22:02 +0200620* :class:`xmlrpc.client.ServerProxy` is now a :term:`context manager`.
621 (Contributed by Claudiu Popa in :issue:`20627`.)
Brett Cannon6eaac132014-05-09 12:28:22 -0400622
Serhiy Storchaka61de0872015-04-02 21:00:13 +0300623xml.sax
624-------
625
626* SAX parsers now support a character stream of
627 :class:`~xml.sax.xmlreader.InputSource` object.
628 (Contributed by Serhiy Storchaka in :issue:`2175`.)
629
Victor Stinner95bb7142015-03-12 15:32:03 +0100630faulthandler
631------------
632
633* :func:`~faulthandler.enable`, :func:`~faulthandler.register`,
634 :func:`~faulthandler.dump_traceback` and
635 :func:`~faulthandler.dump_traceback_later` functions now accept file
636 descriptors. (Contributed by Wei Wu in :issue:`23566`.)
637
Serhiy Storchaka77d89972015-03-23 01:09:35 +0200638zipfile
639-------
640
641* Added support for writing ZIP files to unseekable streams.
642 (Contributed by Serhiy Storchaka in :issue:`23252`.)
643
Serhiy Storchaka764fc9b2015-03-25 10:09:41 +0200644* The :func:`zipfile.ZipFile.open` function now supports ``'x'`` (exclusive
645 creation) mode. (Contributed by Serhiy Storchaka in :issue:`21717`.)
646
Victor Stinner01adf062014-03-18 00:53:32 +0100647
648Optimizations
649=============
650
Antoine Pitroub9d9ce72014-05-15 22:47:33 +0200651The following performance enhancements have been added:
Victor Stinner01adf062014-03-18 00:53:32 +0100652
Victor Stinner37f20342015-03-10 13:29:41 +0100653* :func:`os.walk` has been sped up by 3-5x on POSIX systems and 7-20x
654 on Windows. This was done using the new :func:`os.scandir` function,
655 which exposes file information from the underlying ``readdir`` and
656 ``FindFirstFile``/``FindNextFile`` system calls. (Contributed by
657 Ben Hoyt with help from Victor Stinner in :issue:`23605`.)
658
Brett Cannonf299abd2015-04-13 14:21:02 -0400659* Construction of ``bytes(int)`` (filled by zero bytes) is faster and uses less
Victor Stinner2bc4d952014-06-02 22:22:42 +0200660 memory for large objects. ``calloc()`` is used instead of ``malloc()`` to
Victor Stinnerdb067af2014-05-02 22:31:14 +0200661 allocate memory for these objects.
Victor Stinner01adf062014-03-18 00:53:32 +0100662
Antoine Pitrou0dfce562014-05-15 22:55:40 +0200663* Some operations on :class:`~ipaddress.IPv4Network` and
664 :class:`~ipaddress.IPv6Network` have been massively sped up, such as
665 :meth:`~ipaddress.IPv4Network.subnets`, :meth:`~ipaddress.IPv4Network.supernet`,
666 :func:`~ipaddress.summarize_address_range`, :func:`~ipaddress.collapse_addresses`.
667 The speed up can range from 3x to 15x.
668 (:issue:`21486`, :issue:`21487`, :issue:`20826`)
669
Serhiy Storchaka87d0b452015-02-03 11:30:10 +0200670* Many operations on :class:`io.BytesIO` are now 50% to 100% faster.
Berker Peksag9121fe82015-02-15 00:45:57 +0200671 (Contributed by Serhiy Storchaka in :issue:`15381` and David Wilson in
672 :issue:`22003`.)
Serhiy Storchaka87d0b452015-02-03 11:30:10 +0200673
Serhiy Storchakac1efe5f2015-02-11 15:54:54 +0200674* :func:`marshal.dumps` is now faster (65%-85% with versions 3--4, 20-25% with
675 versions 0--2 on typical data, and up to 5x in best cases).
676 (Contributed by Serhiy Storchaka in :issue:`20416` and :issue:`23344`.)
Serhiy Storchakace921c622015-02-11 15:53:31 +0200677
Serhiy Storchaka0d4df752015-05-12 23:12:45 +0300678* The UTF-32 encoder is now 3x to 7x faster. (Contributed by Serhiy Storchaka
679 in :issue:`15027`.)
680
Victor Stinner01adf062014-03-18 00:53:32 +0100681
682Build and C API Changes
683=======================
684
685Changes to Python's build process and to the C API include:
686
Victor Stinnerdb067af2014-05-02 22:31:14 +0200687* New ``calloc`` functions:
688
689 * :c:func:`PyMem_RawCalloc`
690 * :c:func:`PyMem_Calloc`
691 * :c:func:`PyObject_Calloc`
692 * :c:func:`_PyObject_GC_Calloc`
Victor Stinner01adf062014-03-18 00:53:32 +0100693
694
695Deprecated
696==========
697
698Unsupported Operating Systems
699-----------------------------
700
Zachary Ware38019d12015-04-13 15:51:59 -0500701* Windows XP - Per :PEP:`11`, Microsoft support of Windows XP has ended.
Victor Stinner01adf062014-03-18 00:53:32 +0100702
703
704Deprecated Python modules, functions and methods
705------------------------------------------------
706
Brett Cannona77d0c32014-03-21 10:52:33 -0400707* The :mod:`formatter` module has now graduated to full deprecation and is still
708 slated for removal in Python 3.6.
Victor Stinner01adf062014-03-18 00:53:32 +0100709
R David Murray554bcbf2014-06-11 11:18:08 -0400710* :mod:`smtpd` has in the past always decoded the DATA portion of email
711 messages using the ``utf-8`` codec. This can now be controlled by the new
712 *decode_data* keyword to :class:`~smtpd.SMTPServer`. The default value is
713 ``True``, but this default is deprecated. Specify the *decode_data* keyword
714 with an appropriate value to avoid the deprecation warning.
715
R David Murray1813c172015-03-29 17:09:21 -0400716* Directly assigning values to the :attr:`~http.cookies.Morsel.key`,
717 :attr:`~http.cookies.Morsel.value` and
718 :attr:`~http.cookies.Morsel.coded_value` of :class:`~http.cookies.Morsel`
719 objects is deprecated. Use the :func:`~http.cookies.Morsel.set` method
720 instead. In addition, the undocumented *LegalChars* parameter of
721 :func:`~http.cookies.Morsel.set` is deprecated, and is now ignored.
Serhiy Storchaka9c1a9b22015-03-18 10:59:57 +0200722
Serhiy Storchakab876df42015-03-24 22:30:46 +0200723* Passing a format string as keyword argument *format_string* to the
724 :meth:`~string.Formatter.format` method of the :class:`string.Formatter`
725 class has been deprecated.
726
Berker Peksag2f3742b2015-05-13 12:32:20 +0300727* :func:`platform.dist` and :func:`platform.linux_distribution` functions are
728 now deprecated and will be removed in Python 3.7. Linux distributions use
729 too many different ways of describing themselves, so the functionality is
730 left to a package.
731 (Contributed by Vajrasky Kok and Berker Peksag in :issue:`1322`.)
Victor Stinner01adf062014-03-18 00:53:32 +0100732
733Deprecated functions and types of the C API
734-------------------------------------------
735
736* None yet.
737
738
739Deprecated features
740-------------------
741
742* None yet.
743
744
R David Murraydf75fee2014-10-03 13:02:47 -0400745Removed
746=======
747
Berker Peksag8f791d32014-11-01 10:45:57 +0200748API and Feature Removals
749------------------------
750
751The following obsolete and previously deprecated APIs and features have been
752removed:
753
R David Murraydf75fee2014-10-03 13:02:47 -0400754* The ``__version__`` attribute has been dropped from the email package. The
755 email code hasn't been shipped separately from the stdlib for a long time,
756 and the ``__version__`` string was not updated in the last few releases.
757
Berker Peksag8f791d32014-11-01 10:45:57 +0200758* The internal ``Netrc`` class in the :mod:`ftplib` module was deprecated in
Serhiy Storchakac1ded292014-11-02 19:22:02 +0200759 3.4, and has now been removed.
760 (Contributed by Matt Chaput in :issue:`6623`.)
R David Murraydf75fee2014-10-03 13:02:47 -0400761
Brett Cannonf299abd2015-04-13 14:21:02 -0400762* The concept of ``.pyo`` files has been removed.
763
R David Murraye81a7732015-04-12 18:47:56 -0400764* The JoinableQueue class in the provisional asyncio module was deprecated
765 in 3.4.4 and is now removed (:issue:`23464`).
766
767
Victor Stinner01adf062014-03-18 00:53:32 +0100768Porting to Python 3.5
769=====================
770
771This section lists previously described changes and other bugfixes
772that may require changes to your code.
773
Victor Stinnerdb067af2014-05-02 22:31:14 +0200774Changes in the Python API
775-------------------------
776
Victor Stinnerf70e1ca2015-03-30 21:16:11 +0200777* :pep:`475`: Examples of functions which are now retried when interrupted
778 instead of raising :exc:`InterruptedError` if the signal handler does not
779 raise an exception:
Victor Stinnera766ddf2015-03-26 23:50:57 +0100780
Victor Stinner45ca48b2015-03-31 12:10:33 +0200781 - :func:`open`, :func:`os.open`, :func:`io.open`
Victor Stinneracd8e7c2015-04-02 13:56:29 +0200782 - functions of the :mod:`faulthandler` module
783 - :mod:`os` functions:
784
785 * :func:`os.fchdir`
786 * :func:`os.fchmod`
787 * :func:`os.fchown`
788 * :func:`os.fdatasync`
789 * :func:`os.fstat`
790 * :func:`os.fstatvfs`
791 * :func:`os.fsync`
792 * :func:`os.ftruncate`
793 * :func:`os.mkfifo`
794 * :func:`os.mknod`
795 * :func:`os.posix_fadvise`
796 * :func:`os.posix_fallocate`
797 * :func:`os.pread`
798 * :func:`os.pwrite`
799 * :func:`os.read`
800 * :func:`os.readv`
801 * :func:`os.sendfile`
802 * :func:`os.wait3`
803 * :func:`os.wait4`
804 * :func:`os.wait`
805 * :func:`os.waitid`
806 * :func:`os.waitpid`
807 * :func:`os.write`
808 * :func:`os.writev`
809 * special cases: :func:`os.close` and :func:`os.dup2` now ignore
810 :py:data:`~errno.EINTR` error, the syscall is not retried (see the PEP
811 for the rationale)
812
Victor Stinner4448c082015-03-31 11:48:34 +0200813 - :func:`select.select`, :func:`select.poll.poll`, :func:`select.epoll.poll`,
Victor Stinner45ca48b2015-03-31 12:10:33 +0200814 :func:`select.kqueue.control`, :func:`select.devpoll.poll`
Victor Stinner708d9ba2015-04-02 11:49:42 +0200815 - :func:`socket.socket` methods:
816
817 * :meth:`~socket.socket.accept`
Victor Stinner81c41db2015-04-02 11:50:57 +0200818 * :meth:`~socket.socket.connect` (except for non-blocking sockets)
Victor Stinner708d9ba2015-04-02 11:49:42 +0200819 * :meth:`~socket.socket.recv`
820 * :meth:`~socket.socket.recvfrom`
821 * :meth:`~socket.socket.recvmsg`
822 * :meth:`~socket.socket.send`
823 * :meth:`~socket.socket.sendall`
824 * :meth:`~socket.socket.sendmsg`
825 * :meth:`~socket.socket.sendto`
826
Victor Stinnereb011cb2015-03-31 12:19:15 +0200827 - :func:`signal.sigtimedwait`, :func:`signal.sigwaitinfo`
Victor Stinnera766ddf2015-03-26 23:50:57 +0100828 - :func:`time.sleep`
829
Benjamin Petersonee6bdc02014-03-20 18:00:35 -0500830* Before Python 3.5, a :class:`datetime.time` object was considered to be false
831 if it represented midnight in UTC. This behavior was considered obscure and
832 error-prone and has been removed in Python 3.5. See :issue:`13936` for full
833 details.
Antoine Pitrou92c4d452014-04-29 10:05:59 +0200834
835* :meth:`ssl.SSLSocket.send()` now raises either :exc:`ssl.SSLWantReadError`
836 or :exc:`ssl.SSLWantWriteError` on a non-blocking socket if the operation
837 would block. Previously, it would return 0. See :issue:`20951`.
Victor Stinnerdb067af2014-05-02 22:31:14 +0200838
Victor Stinner40ee3012014-06-16 15:59:28 +0200839* The ``__name__`` attribute of generator is now set from the function name,
840 instead of being set from the code name. Use ``gen.gi_code.co_name`` to
841 retrieve the code name. Generators also have a new ``__qualname__``
842 attribute, the qualified name, which is now used for the representation
843 of a generator (``repr(gen)``). See :issue:`21205`.
844
Ezio Melotti045160b2014-08-02 18:54:30 +0300845* The deprecated "strict" mode and argument of :class:`~html.parser.HTMLParser`,
846 :meth:`HTMLParser.error`, and the :exc:`HTMLParserError` exception have been
Serhiy Storchakac1ded292014-11-02 19:22:02 +0200847 removed. (Contributed by Ezio Melotti in :issue:`15114`.)
Ezio Melotti045160b2014-08-02 18:54:30 +0300848 The *convert_charrefs* argument of :class:`~html.parser.HTMLParser` is
Serhiy Storchakac1ded292014-11-02 19:22:02 +0200849 now ``True`` by default. (Contributed by Berker Peksag in :issue:`21047`.)
Ezio Melotti045160b2014-08-02 18:54:30 +0300850
R David Murray861470c2014-10-05 11:47:01 -0400851* Although it is not formally part of the API, it is worth noting for porting
852 purposes (ie: fixing tests) that error messages that were previously of the
853 form "'sometype' does not support the buffer protocol" are now of the form "a
Serhiy Storchakac1ded292014-11-02 19:22:02 +0200854 bytes-like object is required, not 'sometype'". (Contributed by Ezio Melotti
855 in :issue:`16518`.)
R David Murray861470c2014-10-05 11:47:01 -0400856
Brett Cannonb6e25562014-11-21 12:19:28 -0500857* If the current directory is set to a directory that no longer exists then
858 :exc:`FileNotFoundError` will no longer be raised and instead
859 :meth:`~importlib.machinery.FileFinder.find_spec` will return ``None``
860 **without** caching ``None`` in :data:`sys.path_importer_cache` which is
861 different than the typical case (:issue:`22834`).
862
Berker Peksag088ca8b2015-02-06 10:17:49 +0200863* HTTP status code and messages from :mod:`http.client` and :mod:`http.server`
864 were refactored into a common :class:`~http.HTTPStatus` enum. The values in
865 :mod:`http.client` and :mod:`http.server` remain available for backwards
866 compatibility. (Contributed by Demian Brecht in :issue:`21793`.)
Serhiy Storchakae4db7692014-12-23 16:28:28 +0200867
Brett Cannon02d84542015-01-09 11:39:21 -0500868* When an import loader defines :meth:`~importlib.machinery.Loader.exec_module`
869 it is now expected to also define
870 :meth:`~importlib.machinery.Loader.create_module` (raises a
871 :exc:`DeprecationWarning` now, will be an error in Python 3.6). If the loader
872 inherits from :class:`importlib.abc.Loader` then there is nothing to do, else
873 simply define :meth:`~importlib.machinery.Loader.create_module` to return
874 ``None`` (:issue:`23014`).
875
Serhiy Storchaka83e80272015-02-03 11:04:19 +0200876* :func:`re.split` always ignored empty pattern matches, so the ``'x*'``
877 pattern worked the same as ``'x+'``, and the ``'\b'`` pattern never worked.
878 Now :func:`re.split` raises a warning if the pattern could match
879 an empty string. For compatibility use patterns that never match an empty
880 string (e.g. ``'x+'`` instead of ``'x*'``). Patterns that could only match
881 an empty string (such as ``'\b'``) now raise an error.
882
R David Murray1813c172015-03-29 17:09:21 -0400883* The :class:`~http.cookies.Morsel` dict-like interface has been made self
884 consistent: morsel comparison now takes the :attr:`~http.cookies.Morsel.key`
885 and :attr:`~http.cookies.Morsel.value` into account,
886 :meth:`~http.cookies.Morsel.copy` now results in a
R David Murrayba6ea9b2015-03-30 11:48:50 -0400887 :class:`~http.cookies.Morsel` instance rather than a :class:`dict`, and
888 :meth:`~http.cookies.Morsel.update` will now raise an exception if any of the
R David Murray1813c172015-03-29 17:09:21 -0400889 keys in the update dictionary are invalid. In addition, the undocumented
890 *LegalChars* parameter of :func:`~http.cookies.Morsel.set` is deprecated and
891 is now ignored. (:issue:`2211`)
892
Brett Cannonf299abd2015-04-13 14:21:02 -0400893* :pep:`488` has removed ``.pyo`` files from Python and introduced the optional
894 ``opt-`` tag in ``.pyc`` file names. The
895 :func:`importlib.util.cache_from_source` has gained an *optimization*
896 parameter to help control the ``opt-`` tag. Because of this, the
897 *debug_override* parameter of the function is now deprecated. `.pyo` files
898 are also no longer supported as a file argument to the Python interpreter and
899 thus serve no purpose when distributed on their own (i.e. sourcless code
900 distribution). Due to the fact that the magic number for bytecode has changed
901 in Python 3.5, all old `.pyo` files from previous versions of Python are
902 invalid regardless of this PEP.
903
Larry Hastingsa6cc5512015-04-13 17:48:40 -0400904 * The :mod:`socket` module now exports the CAN_RAW_FD_FRAMES constant on linux
905 3.6 and greater.
906
R David Murray2b781292015-04-16 12:15:09 -0400907* The `pygettext.py` Tool now uses the standard +NNNN format for timezones in
908 the POT-Creation-Date header.
909
R David Murray0c49b892015-04-16 17:14:42 -0400910* The :mod:`smtplib` module now uses :data:`sys.stderr` instead of previous
911 module level :data:`stderr` variable for debug output. If your (test)
912 program depends on patching the module level variable to capture the debug
913 output, you will need to update it to capture sys.stderr instead.
914
R David Murray2b781292015-04-16 12:15:09 -0400915
Victor Stinnerdb067af2014-05-02 22:31:14 +0200916Changes in the C API
917--------------------
918
Stefan Krahf5324d72015-01-29 14:29:51 +0100919* The undocumented :c:member:`~PyMemoryViewObject.format` member of the
920 (non-public) :c:type:`PyMemoryViewObject` structure has been removed.
921
922 All extensions relying on the relevant parts in ``memoryobject.h``
923 must be rebuilt.
924
Victor Stinnerd8f0d922014-06-02 21:57:10 +0200925* The :c:type:`PyMemAllocator` structure was renamed to
926 :c:type:`PyMemAllocatorEx` and a new ``calloc`` field was added.
Serhiy Storchakadf4518c2014-11-18 23:34:33 +0200927
928* Removed non-documented macro :c:macro:`PyObject_REPR` which leaked references.
929 Use format character ``%R`` in :c:func:`PyUnicode_FromFormat`-like functions
930 to format the :func:`repr` of the object.
Serhiy Storchaka490055a2015-03-01 10:03:02 +0200931
932* Because the lack of the :attr:`__module__` attribute breaks pickling and
933 introspection, a deprecation warning now is raised for builtin type without
934 the :attr:`__module__` attribute. Would be an AttributeError in future.
935 (:issue:`20204`)
Yury Selivanov50960882015-05-12 00:15:05 -0400936
937* As part of PEP 492 implementation, ``tp_reserved`` slot of
938 ``PyTypeObject`` was replaced with ``tp_as_async`` slot.