blob: 406894743d9a72ae9079b04cc24d72b534fd5685 [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
97* None yet.
98
99Implementation improvements:
100
Kristjan Valur Jonssona1e82442013-03-26 13:56:14 +0000101* A more efficient :mod:`marshal` format <http://bugs.python.org/issue16475>.
Georg Brandlb80f5112012-09-30 09:11:58 +0200102
103Significantly Improved Library Modules:
104
Christian Heimes4a0270d2012-10-06 02:23:36 +0200105* SHA-3 (Keccak) support for :mod:`hashlib`.
Antoine Pitrou2463e5f2013-03-28 22:24:43 +0100106* TLSv1.1 and TLSv1.2 support for :mod:`ssl`.
Georg Brandlb80f5112012-09-30 09:11:58 +0200107
108Security improvements:
109
110* None yet.
111
112Please read on for a comprehensive list of user-facing changes.
113
114
Victor Stinner0507bf52013-07-07 02:05:46 +0200115PEP 445: Add new APIs to customize Python memory allocators
116===========================================================
Georg Brandlb80f5112012-09-30 09:11:58 +0200117
Victor Stinner0507bf52013-07-07 02:05:46 +0200118The :pep:`445` adds new Application Programming Interfaces (API) to customize
119Python memory allocators.
Georg Brandlb80f5112012-09-30 09:11:58 +0200120
121
122
123Other Language Changes
124======================
125
126Some smaller changes made to the core Python language are:
127
Georg Brandl50de8502012-09-30 14:39:18 +0200128* Unicode database updated to UCD version 6.2.
Georg Brandlb80f5112012-09-30 09:11:58 +0200129
R David Murray9a2f1392013-06-28 13:31:19 -0400130* :func:`min` and :func:`max` now accept a *default* argument that can be used
131 to specify the value they return if the iterable they are evaluating has no
132 elements. Contributed by Julian Berman in :issue:`18111`.
Georg Brandlb80f5112012-09-30 09:11:58 +0200133
134
135New Modules
136===========
137
138.. module name
139.. -----------
140
141* None yet.
142
143
144Improved Modules
145================
146
R David Murray8e37d5d2013-04-13 14:49:48 -0400147
Nick Coghlanb39fd0c2013-05-06 23:59:20 +1000148dis
149---
150
151The :mod:`dis` module is now built around an :class:`Instruction` class that
152provides details of individual bytecode operations and a
153:func:`get_instructions` iterator that emits the Instruction stream for a
154given piece of Python code. The various display tools in the :mod:`dis`
155module have been updated to be based on these new components.
156
157The new :class:`dis.Bytecode` class provides an object-oriented API for
158inspecting bytecode, both in human-readable form and for iterating over
159instructions.
160
161(Contributed by Nick Coghlan, Ryan Kelly and Thomas Kluyver in :issue:`11816`)
162
R David Murray5a9d7062012-11-21 15:09:21 -0500163doctest
164-------
165
R David Murray5707d502013-06-23 14:24:13 -0400166Added :data:`~doctest.FAIL_FAST` flag to halt test running as soon as the first
167failure is detected. (Contributed by R. David Murray and Daniel Urban in
168:issue:`16522`.)
169
170Updated the doctest command line interface to use :mod:`argparse`, and added
171``-o`` and ``-f`` options to the interface. ``-o`` allows doctest options to
172be specified on the command line, and ``-f`` is a shorthand for ``-o
173FAIL_FAST`` (to parallel the similar option supported by the :mod:`unittest`
174CLI). (Contributed by R. David Murray in :issue:`11390`.)
Georg Brandlb80f5112012-09-30 09:11:58 +0200175
R David Murray8e37d5d2013-04-13 14:49:48 -0400176
Victor Stinner854ffcb2013-06-21 00:36:30 +0200177functools
178---------
179
180New :func:`functools.singledispatch` decorator: see the :pep:`443`.
181
R David Murray8e37d5d2013-04-13 14:49:48 -0400182smtplib
183-------
184
R David Murray8a345962013-04-14 06:46:35 -0400185:exc:`~smtplib.SMTPException` is now a subclass of :exc:`OSError`, which allows
R David Murray8e37d5d2013-04-13 14:49:48 -0400186both socket level errors and SMTP protocol level errors to be caught in one
187try/except statement by code that only cares whether or not an error occurred.
188(:issue:`2118`).
189
Christian Heimes24cd4cf2013-06-22 19:31:58 +0200190ssl
191---
192
Christian Heimes70833a82013-06-22 19:34:17 +0200193TLSv1.1 and TLSv1.2 support (Contributed by Michele Orrรน and Antoine Pitrou
194in :issue:`16692`)
195
Christian Heimes24cd4cf2013-06-22 19:31:58 +0200196New diagnostic functions :func:`~ssl.get_default_verify_paths`,
197:meth:`~ssl.SSLContext.cert_store_stats` and
198:meth:`~ssl.SSLContext.get_ca_certs`
199
200Add :func:`ssl.enum_cert_store` to retrieve certificates and CRL from Windows'
201cert store.
202
203(Contributed by Christian Heimes in :issue:`18143`, :issue:`18147` and
204:issue:`17134`)
R David Murray8e37d5d2013-04-13 14:49:48 -0400205
R David Murray671cd322013-04-10 12:31:43 -0400206wave
207----
208
209The :meth:`~wave.getparams` method now returns a namedtuple rather than a
210plain tuple. (Contributed by Claudiu Popa in :issue:`17487`.)
211
Christian Heimesc77d9f32013-06-22 21:05:02 +0200212stat
213---
214
215The stat module is now backed by a C implementation in :mod:`_stat`. A C
216implementation is required as most of the values aren't standardized and
217platform-dependent. (Contributed by Christian Heimes in :issue:`11016`.)
Georg Brandlb80f5112012-09-30 09:11:58 +0200218
219Optimizations
220=============
221
222Major performance enhancements have been added:
223
Victor Stinnere64322e2012-10-30 23:12:47 +0100224* The UTF-32 decoder is now 3x to 4x faster.
Georg Brandlb80f5112012-09-30 09:11:58 +0200225
226
227Build and C API Changes
228=======================
229
230Changes to Python's build process and to the C API include:
231
232* None yet.
233
234
235Deprecated
236==========
237
238Unsupported Operating Systems
239-----------------------------
240
241* None yet.
242
243
244Deprecated Python modules, functions and methods
245------------------------------------------------
246
Terry Jan Reedy2b6c26e2013-03-21 19:36:26 -0400247* :meth:`difflib.SequenceMatcher.isbjunk` and
Andrew Kuchling0d0813a2013-06-15 13:29:09 -0400248 :meth:`difflib.SequenceMatcher.isbpopular` were removed: use ``x in sm.bjunk`` and
249 ``x in sm.bpopular``, where *sm* is a :class:`~difflib.SequenceMatcher` object.
Georg Brandlb80f5112012-09-30 09:11:58 +0200250
Brett Cannon82b3d6a2013-06-14 22:37:11 -0400251* :func:`importlib.util.module_for_loader` is pending deprecation. Using
252 :func:`importlib.util.module_to_load` and
253 :meth:`importlib.abc.Loader.init_module_attrs` allows subclasses of a loader
254 to more easily customize module loading.
255
Brett Cannone4f41de2013-06-16 13:13:40 -0400256* The :mod:`imp` module is pending deprecation. To keep compatibility with
257 Python 2/3 code bases, the module's removal is currently not scheduled.
258
Georg Brandlb80f5112012-09-30 09:11:58 +0200259
260Deprecated functions and types of the C API
261-------------------------------------------
262
263* None yet.
264
265
266Deprecated features
267-------------------
268
Brett Cannon82b3d6a2013-06-14 22:37:11 -0400269* None yet.
Georg Brandlb80f5112012-09-30 09:11:58 +0200270
271
Benjamin Peterson88f3b232012-10-04 12:45:10 -0400272Porting to Python 3.4
Georg Brandlb80f5112012-09-30 09:11:58 +0200273=====================
274
275This section lists previously described changes and other bugfixes
276that may require changes to your code.
277
Brett Cannon777622b2013-04-09 17:03:10 -0400278* The ABCs defined in :mod:`importlib.abc` now either raise the appropriate
279 exception or return a default value instead of raising
280 :exc:`NotImplementedError` blindly. This will only affect code calling
281 :func:`super` and falling through all the way to the ABCs. For compatibility,
282 catch both :exc:`NotImplementedError` or the appropriate exception as needed.
Brett Cannon4c14b5d2013-05-04 13:56:58 -0400283
284* The module type now initializes the :attr:`__package__` and :attr:`__loader__`
285 attributes to ``None`` by default. To determine if these attributes were set
286 in a backwards-compatible fashion, use e.g.
Brett Cannon3dc48d62013-05-28 18:35:54 -0400287 ``getattr(module, '__loader__', None) is not None``.
288
289* :meth:`importlib.util.module_for_loader` now sets ``__loader__`` and
290 ``__package__`` unconditionally to properly support reloading. If this is not
291 desired then you will need to set these attributes manually. You can use
Brett Cannon028d5122013-05-31 18:02:11 -0400292 :func:`importlib.util.module_to_load` for module management.
Brett Cannon3e0651b2013-05-31 23:18:39 -0400293
294* Import now resets relevant attributes (e.g. ``__name__``, ``__loader__``,
295 ``__package__``, ``__file__``, ``__cached__``) unconditionally when reloading.
296
297* Frozen packages no longer set ``__path__`` to a list containg the package name
298 but an empty list instead. Determing if a module is a package should be done
299 using ``hasattr(module, '__path__')``.
Brett Cannon8f5ac512013-06-12 23:29:18 -0400300
301* :c:func:`PyErr_SetImportError` now sets :exc:`TypeError` when its **msg**
Brett Cannon82da8882013-07-04 17:48:16 -0400302 argument is not set. Previously only ``NULL`` was returned with no exception
303 set.
Brett Cannon33915eb2013-06-14 18:33:00 -0400304
305* :func:`py_compile.compile` now raises :exc:`FileExistsError` if the file path
306 it would write to is a symlink or a non-regular file. This is to act as a
307 warning that import will overwrite those files with a regular file regardless
308 of what type of file path they were originally.
Brett Cannonf4375ef2013-06-16 18:05:54 -0400309
310* :meth:`importlib.abc.SourceLoader.get_source` no longer raises
311 :exc:`ImportError` when the source code being loaded triggers a
312 :exc:`SyntaxError` or :exc:`UnicodeDecodeError`. As :exc:`ImportError` is
313 meant to be raised only when source code cannot be found but it should, it was
314 felt to be over-reaching/overloading of that meaning when the source code is
315 found but improperly structured. If you were catching ImportError before and
316 wish to continue to ignore syntax or decoding issues, catch all three
Victor Stinner84e33c82013-06-21 00:31:55 +0200317 exceptions now.