blob: 1c30d4319944517e38874b962fce86a09082ed81 [file] [log] [blame]
Georg Brandlb80f5112012-09-30 09:11:58 +02001****************************
2 What's New In Python 3.4
3****************************
4
Georg Brandl3b80d342012-10-28 13:37:54 +01005.. :Author: Someone <email>
6 (uncomment if there is a principal author)
Georg Brandlb80f5112012-09-30 09:11:58 +02007
8.. Rules for maintenance:
9
Nick Coghlan03074fd2012-09-30 18:51:53 +053010 * Anyone can add text to this document, but the maintainer reserves the
11 right to rewrite any additions. In particular, for obscure or esoteric
12 features, the maintainer may reduce any addition to a simple reference to
13 the new documentation rather than explaining the feature inline.
Georg Brandlb80f5112012-09-30 09:11:58 +020014
Nick Coghlan03074fd2012-09-30 18:51:53 +053015 * While the maintainer will periodically go through Misc/NEWS
16 and add changes, it's best not to rely on this. We know from experience
17 that any changes that aren't in the What's New documentation around the
18 time of the original release will remain largely unknown to the community
19 for years, even if they're added later. We also know from experience that
20 other priorities can arise, and the maintainer will run out of time to do
21 updates - in such cases, end users will be much better served by partial
22 notifications that at least give a hint about new features to
23 investigate.
Georg Brandlb80f5112012-09-30 09:11:58 +020024
25 * This is not a complete list of every single change; completeness
Nick Coghlan03074fd2012-09-30 18:51:53 +053026 is the purpose of Misc/NEWS. The What's New should focus on changes that
27 are visible to Python *users* and that *require* a feature release (i.e.
28 most bug fixes should only be recorded in Misc/NEWS)
29
30 * PEPs should not be marked Final until they have an entry in What's New.
31 A placeholder entry that is just a section header and a link to the PEP
32 (e.g ":pep:`397` has been implemented") is acceptable. If a PEP has been
33 implemented and noted in What's New, don't forget to mark it as Final!
Georg Brandlb80f5112012-09-30 09:11:58 +020034
35 * If you want to draw your new text to the attention of the
36 maintainer, add 'XXX' to the beginning of the paragraph or
37 section.
38
Nick Coghlan03074fd2012-09-30 18:51:53 +053039 * It's OK to add just a very brief note about a change. For
40 example: "The :ref:`~socket.transmogrify()` function was added to the
41 :mod:`socket` module." The maintainer will research the change and
42 write the necessary text (if appropriate). The advantage of doing this
43 is that even if no more descriptive text is ever added, readers will at
44 least have a notification that the new feature exists and a link to the
45 relevant documentation.
Georg Brandlb80f5112012-09-30 09:11:58 +020046
47 * You can comment out your additions if you like, but it's not
48 necessary (especially when a final release is some months away).
49
50 * Credit the author of a patch or bugfix. Just the name is
51 sufficient; the e-mail address isn't necessary.
52
53 * It's helpful to add the bug/patch number as a comment:
54
Nick Coghlan03074fd2012-09-30 18:51:53 +053055 The :ref:`~socket.transmogrify()` function was added to the
56 :mod:`socket` module. (Contributed by P.Y. Developer in :issue:`12345`.)
Georg Brandlb80f5112012-09-30 09:11:58 +020057
58 This saves the maintainer the effort of going through the Mercurial log
59 when researching a change.
60
Nick Coghlan03074fd2012-09-30 18:51:53 +053061 * Cross referencing tip: :ref:`mod.attr` will display as ``mod.attr``,
62 while :ref:`~mod.attr` will display as ``attr``.
63
Georg Brandlb80f5112012-09-30 09:11:58 +020064This article explains the new features in Python 3.4, compared to 3.3.
65
Nick Coghlan03074fd2012-09-30 18:51:53 +053066.. Python 3.4 was released on TBD.
Georg Brandlb80f5112012-09-30 09:11:58 +020067
Ezio Melotti25bbe5e2012-11-17 19:30:48 +020068For full details, see the
69`changelog <http://docs.python.org/3.4/whatsnew/changelog.html>`_.
Georg Brandlb80f5112012-09-30 09:11:58 +020070
71.. note:: Prerelease users should be aware that this document is currently in
72 draft form. It will be updated substantially as Python 3.4 moves towards
73 release, so it's worth checking back even after reading earlier versions.
74
75
76.. seealso::
77
Nick Coghlan03074fd2012-09-30 18:51:53 +053078 .. :pep:`4XX` - Python 3.4 Release Schedule
Georg Brandlb80f5112012-09-30 09:11:58 +020079
80
81Summary -- Release highlights
82=============================
83
Kristjan Valur Jonssona1e82442013-03-26 13:56:14 +000084.. This section singles out the most important changes in Python 3.4.
Georg Brandlb80f5112012-09-30 09:11:58 +020085 Brevity is key.
86
87New syntax features:
88
89* None yet.
90
91New library modules:
92
Victor Stinner84e33c82013-06-21 00:31:55 +020093* :mod:`enum`: Implementation of the :pep:`435`.
Georg Brandlb80f5112012-09-30 09:11:58 +020094
95New built-in features:
96
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +020097* :ref:`PEP 442: Safe object finalization <pep-442>`.
98* :ref:`PEP 445: Configurable memory allocators <pep-445>`.
Georg Brandlb80f5112012-09-30 09:11:58 +020099
100Implementation improvements:
101
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200102* A more efficient :mod:`marshal` format (:issue:`16475`).
103* Improve finalization of Python modules to avoid setting their globals
104 to None, in most cases (:issue:`18214`).
Georg Brandlb80f5112012-09-30 09:11:58 +0200105
106Significantly Improved Library Modules:
107
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200108* Single-dispatch generic functions (:pep:`443`)
109* SHA-3 (Keccak) support for :mod:`hashlib`.
110* TLSv1.1 and TLSv1.2 support for :mod:`ssl`.
Richard Oudkerk84ed9a62013-08-14 15:35:41 +0100111* :mod:`multiprocessing` now has option to avoid using :func:`os.fork`
112 on Unix (:issue:`8713`).
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200113
Georg Brandlb80f5112012-09-30 09:11:58 +0200114Security improvements:
115
Christian Heimesad73a9c2013-08-10 16:36:18 +0200116* command line option for :ref:`isolated mode <using-on-misc-options>`,
117 :issue:`16499`.
Georg Brandlb80f5112012-09-30 09:11:58 +0200118
119Please read on for a comprehensive list of user-facing changes.
120
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200121.. _pep-445:
122
123PEP 445: Add new APIs to customize Python memory allocators
124===========================================================
Georg Brandlb80f5112012-09-30 09:11:58 +0200125
Victor Stinner0507bf52013-07-07 02:05:46 +0200126The :pep:`445` adds new Application Programming Interfaces (API) to customize
127Python memory allocators.
Georg Brandlb80f5112012-09-30 09:11:58 +0200128
129
Antoine Pitrou796564c2013-07-30 19:59:21 +0200130.. _pep-442:
131
132PEP 442: Safe object finalization
133=================================
134
135This PEP removes the current limitations and quirks of object finalization.
136With it, objects with :meth:`__del__` methods, as well as generators
137with :keyword:`finally` clauses, can be finalized when they are part of a
138reference cycle.
139
140.. seealso::
141
142 :pep:`442` - Safe object finalization
143 PEP written and implemented by Antoine Pitrou
144
Georg Brandlb80f5112012-09-30 09:11:58 +0200145
146Other Language Changes
147======================
148
149Some smaller changes made to the core Python language are:
150
Georg Brandl50de8502012-09-30 14:39:18 +0200151* Unicode database updated to UCD version 6.2.
Georg Brandlb80f5112012-09-30 09:11:58 +0200152
R David Murray9a2f1392013-06-28 13:31:19 -0400153* :func:`min` and :func:`max` now accept a *default* argument that can be used
154 to specify the value they return if the iterable they are evaluating has no
155 elements. Contributed by Julian Berman in :issue:`18111`.
Georg Brandlb80f5112012-09-30 09:11:58 +0200156
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200157* Module objects are now :mod:`weakref`'able.
158
Georg Brandlb80f5112012-09-30 09:11:58 +0200159
160New Modules
161===========
162
163.. module name
164.. -----------
165
166* None yet.
167
168
169Improved Modules
170================
171
Antoine Pitroud6cbd342013-08-12 20:48:15 +0200172aifc
173----
174
175The :meth:`~aifc.getparams` method now returns a namedtuple rather than a
176plain tuple. (Contributed by Claudiu Popa in :issue:`17818`.)
177
178
179colorsys
180--------
181
182The number of digits in the coefficients for the RGB --- YIQ conversions have
183been expanded so that they match the FCC NTSC versions. The change in
184results should be less than 1% and may better match results found elsewhere.
185
R David Murray8e37d5d2013-04-13 14:49:48 -0400186
Nick Coghlanb39fd0c2013-05-06 23:59:20 +1000187dis
188---
189
190The :mod:`dis` module is now built around an :class:`Instruction` class that
191provides details of individual bytecode operations and a
192:func:`get_instructions` iterator that emits the Instruction stream for a
193given piece of Python code. The various display tools in the :mod:`dis`
194module have been updated to be based on these new components.
195
196The new :class:`dis.Bytecode` class provides an object-oriented API for
197inspecting bytecode, both in human-readable form and for iterating over
198instructions.
199
200(Contributed by Nick Coghlan, Ryan Kelly and Thomas Kluyver in :issue:`11816`)
201
Antoine Pitroud6cbd342013-08-12 20:48:15 +0200202
R David Murray5a9d7062012-11-21 15:09:21 -0500203doctest
204-------
205
R David Murray5707d502013-06-23 14:24:13 -0400206Added :data:`~doctest.FAIL_FAST` flag to halt test running as soon as the first
207failure is detected. (Contributed by R. David Murray and Daniel Urban in
208:issue:`16522`.)
209
210Updated the doctest command line interface to use :mod:`argparse`, and added
211``-o`` and ``-f`` options to the interface. ``-o`` allows doctest options to
212be specified on the command line, and ``-f`` is a shorthand for ``-o
213FAIL_FAST`` (to parallel the similar option supported by the :mod:`unittest`
214CLI). (Contributed by R. David Murray in :issue:`11390`.)
Georg Brandlb80f5112012-09-30 09:11:58 +0200215
R David Murray8e37d5d2013-04-13 14:49:48 -0400216
R David Murraybb17d2b2013-08-09 16:15:28 -0400217email
218-----
219
220:meth:`~email.message.Message.as_string` now accepts a *policy* argument to
221override the default policy of the message when generating a string
222representation of it. This means that ``as_string`` can now be used in more
223circumstances, instead of having to create and use a :mod:`~email.generator` in
224order to pass formatting parameters to its ``flatten`` method.
225
226New method :meth:`~email.message.Message.as_bytes` added to produce a bytes
227representation of the message in a fashion similar to how ``as_string``
228produces a string representation. It does not accept the *maxheaderlen*
229argument, but does accept the *unixfrom* and *policy* arguments. The
230:class:`~email.message.Message` :meth:`~email.message.Message.__bytes__` method
231calls it, meaning that ``bytes(mymsg)`` will now produce the intuitive
232result: a bytes object containing the fully formatted message.
233
234(Contributed by R. David Murray in :issue:`18600`.)
235
236
Victor Stinner854ffcb2013-06-21 00:36:30 +0200237functools
238---------
239
240New :func:`functools.singledispatch` decorator: see the :pep:`443`.
241
Nick Coghlane8c45d62013-07-28 20:00:01 +1000242
Antoine Pitroud6cbd342013-08-12 20:48:15 +0200243inspect
244-------
245
246:func:`~inspect.unwrap` makes it easy to unravel wrapper function chains
247created by :func:`functools.wraps` (and any other API that sets the
248``__wrapped__`` attribute on a wrapper function).
249
250
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200251mmap
252----
253
254mmap objects can now be weakref'ed.
255
256(Contributed by Valerie Lambert in :issue:`4885`.)
257
258
Richard Oudkerk84ed9a62013-08-14 15:35:41 +0100259multiprocessing
260---------------
261
262On Unix two new *start methods* have been added for starting processes
263using :mod:`multiprocessing`. These make the mixing of processes with
264threads more robust. See :issue:`8713`.
265
266Also, except when using the old *fork* start method, child processes
267will no longer inherit unneeded handles/file descriptors from their parents.
268
269
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200270poplib
271------
272
273New :meth:`~poplib.POP3.stls` method to switch a clear-text POP3 session into
274an encrypted POP3 session.
275
276New :meth:`~poplib.POP3.capa` method to query the capabilities advertised by the
277POP3 server.
278
279(Contributed by Lorenzo Catucci in :issue:`4473`.)
280
281
R David Murray8e37d5d2013-04-13 14:49:48 -0400282smtplib
283-------
284
R David Murray8a345962013-04-14 06:46:35 -0400285:exc:`~smtplib.SMTPException` is now a subclass of :exc:`OSError`, which allows
R David Murray8e37d5d2013-04-13 14:49:48 -0400286both socket level errors and SMTP protocol level errors to be caught in one
287try/except statement by code that only cares whether or not an error occurred.
288(:issue:`2118`).
289
Antoine Pitroud6cbd342013-08-12 20:48:15 +0200290
Christian Heimes24cd4cf2013-06-22 19:31:58 +0200291ssl
292---
293
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200294TLSv1.1 and TLSv1.2 support.
Christian Heimes70833a82013-06-22 19:34:17 +0200295
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200296(Contributed by Michele Orrù and Antoine Pitrou in :issue:`16692`)
Christian Heimes24cd4cf2013-06-22 19:31:58 +0200297
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200298* New diagnostic functions :func:`~ssl.get_default_verify_paths`,
299 :meth:`~ssl.SSLContext.cert_store_stats` and
300 :meth:`~ssl.SSLContext.get_ca_certs`
301
302* Add :func:`ssl.enum_cert_store` to retrieve certificates and CRL from Windows'
303 cert store.
Christian Heimes24cd4cf2013-06-22 19:31:58 +0200304
305(Contributed by Christian Heimes in :issue:`18143`, :issue:`18147` and
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200306 :issue:`17134`.)
307
308Support for server-side SNI using the new
309:meth:`ssl.SSLContext.set_servername_callback` method.
310
311(Contributed by Daniel Black in :issue:`8109`.)
312
313
Antoine Pitroud6cbd342013-08-12 20:48:15 +0200314stat
315----
316
317The :mod:`stat` module is now backed by a C implementation in :mod:`_stat`. A C
318implementation is required as most of the values aren't standardized and
319platform-dependent. (Contributed by Christian Heimes in :issue:`11016`.)
320
321The module supports new file types: door, event port and whiteout.
322
323
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200324struct
325------
326
327Streaming struct unpacking using :func:`struct.iter_unpack`.
328
329(Contributed by Antoine Pitrou in :issue:`17804`.)
330
331
332urllib
333------
334
335Add support.for ``data:`` URLs in :mod:`urllib.request`.
336
337(Contributed by Mathias Panzenböck in :issue:`16423`.)
338
339
340unittest
341--------
342
343Support for easy dynamically-generated subtests using the
344:meth:`~unittest.TestCase.subTest` context manager.
345
346(Contributed by Antoine Pitrou in :issue:`16997`.)
347
R David Murray8e37d5d2013-04-13 14:49:48 -0400348
R David Murray671cd322013-04-10 12:31:43 -0400349wave
350----
351
352The :meth:`~wave.getparams` method now returns a namedtuple rather than a
353plain tuple. (Contributed by Claudiu Popa in :issue:`17487`.)
354
R David Murrayc91d5ee2013-07-31 13:46:08 -0400355:meth:`wave.open` now supports the context manager protocol. (Contributed
356by Claudiu Popa in :issue:`17616`.)
357
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200358
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200359weakref
360-------
361
362New :class:`~weakref.WeakMethod` class simulates weak references to bound
363methods.
364
365(Contributed by Antoine Pitrou in :issue:`14631`.)
366
367
368xml.etree
369---------
370
371Add an event-driven parser for non-blocking applications,
372:class:`~xml.etree.ElementTree.IncrementalParser`.
373
374(Contributed by Antoine Pitrou in :issue:`17782`.)
375
376
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200377Other improvements
378==================
379
380Tab-completion is now enabled by default in the interactive interpreter.
381
382(Contributed by Antoine Pitrou and Éric Araujo in :issue:`5845`.)
383
384
Georg Brandlb80f5112012-09-30 09:11:58 +0200385Optimizations
386=============
387
388Major performance enhancements have been added:
389
Victor Stinnere64322e2012-10-30 23:12:47 +0100390* The UTF-32 decoder is now 3x to 4x faster.
Georg Brandlb80f5112012-09-30 09:11:58 +0200391
392
393Build and C API Changes
394=======================
395
396Changes to Python's build process and to the C API include:
397
398* None yet.
399
400
401Deprecated
402==========
403
404Unsupported Operating Systems
405-----------------------------
406
Victor Stinnerf3fd13b2013-08-04 10:30:57 +0200407* OS/2
Victor Stinnerf3fd13b2013-08-04 10:30:57 +0200408* Windows 2000
Georg Brandlb80f5112012-09-30 09:11:58 +0200409
410
411Deprecated Python modules, functions and methods
412------------------------------------------------
413
Terry Jan Reedy2b6c26e2013-03-21 19:36:26 -0400414* :meth:`difflib.SequenceMatcher.isbjunk` and
Andrew Kuchling0d0813a2013-06-15 13:29:09 -0400415 :meth:`difflib.SequenceMatcher.isbpopular` were removed: use ``x in sm.bjunk`` and
416 ``x in sm.bpopular``, where *sm* is a :class:`~difflib.SequenceMatcher` object.
Georg Brandlb80f5112012-09-30 09:11:58 +0200417
Brett Cannon82b3d6a2013-06-14 22:37:11 -0400418* :func:`importlib.util.module_for_loader` is pending deprecation. Using
419 :func:`importlib.util.module_to_load` and
420 :meth:`importlib.abc.Loader.init_module_attrs` allows subclasses of a loader
421 to more easily customize module loading.
422
Brett Cannone4f41de2013-06-16 13:13:40 -0400423* The :mod:`imp` module is pending deprecation. To keep compatibility with
424 Python 2/3 code bases, the module's removal is currently not scheduled.
425
Georg Brandlb80f5112012-09-30 09:11:58 +0200426
427Deprecated functions and types of the C API
428-------------------------------------------
429
430* None yet.
431
432
433Deprecated features
434-------------------
435
Brett Cannon82b3d6a2013-06-14 22:37:11 -0400436* None yet.
Georg Brandlb80f5112012-09-30 09:11:58 +0200437
438
Benjamin Peterson88f3b232012-10-04 12:45:10 -0400439Porting to Python 3.4
Georg Brandlb80f5112012-09-30 09:11:58 +0200440=====================
441
442This section lists previously described changes and other bugfixes
443that may require changes to your code.
444
Brett Cannon777622b2013-04-09 17:03:10 -0400445* The ABCs defined in :mod:`importlib.abc` now either raise the appropriate
446 exception or return a default value instead of raising
447 :exc:`NotImplementedError` blindly. This will only affect code calling
448 :func:`super` and falling through all the way to the ABCs. For compatibility,
449 catch both :exc:`NotImplementedError` or the appropriate exception as needed.
Brett Cannon4c14b5d2013-05-04 13:56:58 -0400450
451* The module type now initializes the :attr:`__package__` and :attr:`__loader__`
452 attributes to ``None`` by default. To determine if these attributes were set
453 in a backwards-compatible fashion, use e.g.
Brett Cannon3dc48d62013-05-28 18:35:54 -0400454 ``getattr(module, '__loader__', None) is not None``.
455
456* :meth:`importlib.util.module_for_loader` now sets ``__loader__`` and
457 ``__package__`` unconditionally to properly support reloading. If this is not
458 desired then you will need to set these attributes manually. You can use
Brett Cannon028d5122013-05-31 18:02:11 -0400459 :func:`importlib.util.module_to_load` for module management.
Brett Cannon3e0651b2013-05-31 23:18:39 -0400460
461* Import now resets relevant attributes (e.g. ``__name__``, ``__loader__``,
462 ``__package__``, ``__file__``, ``__cached__``) unconditionally when reloading.
463
464* Frozen packages no longer set ``__path__`` to a list containg the package name
465 but an empty list instead. Determing if a module is a package should be done
466 using ``hasattr(module, '__path__')``.
Brett Cannon8f5ac512013-06-12 23:29:18 -0400467
468* :c:func:`PyErr_SetImportError` now sets :exc:`TypeError` when its **msg**
Brett Cannon82da8882013-07-04 17:48:16 -0400469 argument is not set. Previously only ``NULL`` was returned with no exception
470 set.
Brett Cannon33915eb2013-06-14 18:33:00 -0400471
472* :func:`py_compile.compile` now raises :exc:`FileExistsError` if the file path
473 it would write to is a symlink or a non-regular file. This is to act as a
474 warning that import will overwrite those files with a regular file regardless
475 of what type of file path they were originally.
Brett Cannonf4375ef2013-06-16 18:05:54 -0400476
477* :meth:`importlib.abc.SourceLoader.get_source` no longer raises
478 :exc:`ImportError` when the source code being loaded triggers a
479 :exc:`SyntaxError` or :exc:`UnicodeDecodeError`. As :exc:`ImportError` is
480 meant to be raised only when source code cannot be found but it should, it was
481 felt to be over-reaching/overloading of that meaning when the source code is
482 found but improperly structured. If you were catching ImportError before and
483 wish to continue to ignore syntax or decoding issues, catch all three
Victor Stinner84e33c82013-06-21 00:31:55 +0200484 exceptions now.
Nick Coghlan24c05bc2013-07-15 21:13:08 +1000485
486* :func:`functools.update_wrapper` and :func:`functools.wraps` now correctly
487 set the ``__wrapped__`` attribute even if the wrapped function had a
488 wrapped attribute set. This means ``__wrapped__`` attributes now correctly
489 link a stack of decorated functions rather than every ``__wrapped__``
490 attribute in the chain referring to the innermost function. Introspection
Nick Coghlane8c45d62013-07-28 20:00:01 +1000491 libraries that assumed the previous behaviour was intentional can use
492 :func:`inspect.unwrap` to gain equivalent behaviour.