blob: 2b6193a215242b206ba00d9c09154babed7842b8 [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
93* None yet.
94
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
115.. PEP-sized items next.
116
117.. _pep-4XX:
118
Nick Coghlan03074fd2012-09-30 18:51:53 +0530119.. PEP 4XX: Example PEP
120.. ====================
Georg Brandlb80f5112012-09-30 09:11:58 +0200121
122
123.. (Implemented by Foo Bar.)
124
125.. .. seealso::
126
Nick Coghlan03074fd2012-09-30 18:51:53 +0530127 :pep:`4XX` - Example PEP
128 PEP written by Example Author
Georg Brandlb80f5112012-09-30 09:11:58 +0200129
130
131
132
133Other Language Changes
134======================
135
136Some smaller changes made to the core Python language are:
137
Georg Brandl50de8502012-09-30 14:39:18 +0200138* Unicode database updated to UCD version 6.2.
Georg Brandlb80f5112012-09-30 09:11:58 +0200139
140
141
142New Modules
143===========
144
145.. module name
146.. -----------
147
148* None yet.
149
150
151Improved Modules
152================
153
R David Murray8e37d5d2013-04-13 14:49:48 -0400154
R David Murray5a9d7062012-11-21 15:09:21 -0500155doctest
156-------
157
158Added ``FAIL_FAST`` flag to halt test running as soon as the first failure is
159detected. (Contributed by R. David Murray and Daniel Urban in :issue:`16522`.)
Georg Brandlb80f5112012-09-30 09:11:58 +0200160
R David Murray8e37d5d2013-04-13 14:49:48 -0400161
162smtplib
163-------
164
165:exc:`~smtplib.SMTPException` is now a subclass of :exc:`IOError`, which allows
166both socket level errors and SMTP protocol level errors to be caught in one
167try/except statement by code that only cares whether or not an error occurred.
168(:issue:`2118`).
169
170
R David Murray671cd322013-04-10 12:31:43 -0400171wave
172----
173
174The :meth:`~wave.getparams` method now returns a namedtuple rather than a
175plain tuple. (Contributed by Claudiu Popa in :issue:`17487`.)
176
Georg Brandlb80f5112012-09-30 09:11:58 +0200177
178Optimizations
179=============
180
181Major performance enhancements have been added:
182
Victor Stinnere64322e2012-10-30 23:12:47 +0100183* The UTF-32 decoder is now 3x to 4x faster.
Georg Brandlb80f5112012-09-30 09:11:58 +0200184
185
186Build and C API Changes
187=======================
188
189Changes to Python's build process and to the C API include:
190
191* None yet.
192
193
194Deprecated
195==========
196
197Unsupported Operating Systems
198-----------------------------
199
200* None yet.
201
202
203Deprecated Python modules, functions and methods
204------------------------------------------------
205
Terry Jan Reedy2b6c26e2013-03-21 19:36:26 -0400206* :meth:`difflib.SequenceMatcher.isbjunk` and
207 :meth:`difflib.SequenceMatcher.isbpopulur`: use ``x in sm.bjunk`` and
208 ``x in sm.bpopular``, where sm is a :class:`~difflib.SequenceMatcher` object.
Georg Brandlb80f5112012-09-30 09:11:58 +0200209
210
211Deprecated functions and types of the C API
212-------------------------------------------
213
214* None yet.
215
216
217Deprecated features
218-------------------
219
220* None yet.
221
222
Benjamin Peterson88f3b232012-10-04 12:45:10 -0400223Porting to Python 3.4
Georg Brandlb80f5112012-09-30 09:11:58 +0200224=====================
225
226This section lists previously described changes and other bugfixes
227that may require changes to your code.
228
Brett Cannon777622b2013-04-09 17:03:10 -0400229* The ABCs defined in :mod:`importlib.abc` now either raise the appropriate
230 exception or return a default value instead of raising
231 :exc:`NotImplementedError` blindly. This will only affect code calling
232 :func:`super` and falling through all the way to the ABCs. For compatibility,
233 catch both :exc:`NotImplementedError` or the appropriate exception as needed.