blob: 2fa452fff7552e4637c12a4a72f0930188b31d02 [file] [log] [blame]
Giampaolo Rodolà3108f982011-02-24 20:59:48 +00001****************************
2 What's New In Python 3.3
3****************************
4
5:Author: Raymond Hettinger
6:Release: |release|
7:Date: |today|
8
Éric Araujob07b97f2011-10-05 01:03:34 +02009.. Rules for maintenance:
Giampaolo Rodolà3108f982011-02-24 20:59:48 +000010
11 * Anyone can add text to this document. Do not spend very much time
12 on the wording of your changes, because your text will probably
13 get rewritten to some degree.
14
15 * The maintainer will go through Misc/NEWS periodically and add
16 changes; it's therefore more important to add your changes to
17 Misc/NEWS than to this file.
18
19 * This is not a complete list of every single change; completeness
20 is the purpose of Misc/NEWS. Some changes I consider too small
21 or esoteric to include. If such a change is added to the text,
22 I'll just remove it. (This is another reason you shouldn't spend
23 too much time on writing your addition.)
24
25 * If you want to draw your new text to the attention of the
26 maintainer, add 'XXX' to the beginning of the paragraph or
27 section.
28
29 * It's OK to just add a fragmentary note about a change. For
30 example: "XXX Describe the transmogrify() function added to the
31 socket module." The maintainer will research the change and
32 write the necessary text.
33
34 * You can comment out your additions if you like, but it's not
35 necessary (especially when a final release is some months away).
36
37 * Credit the author of a patch or bugfix. Just the name is
38 sufficient; the e-mail address isn't necessary.
39
40 * It's helpful to add the bug/patch number as a comment:
41
Giampaolo Rodolà3108f982011-02-24 20:59:48 +000042 XXX Describe the transmogrify() function added to the socket
43 module.
Éric Araujob07b97f2011-10-05 01:03:34 +020044 (Contributed by P.Y. Developer in :issue:`12345`.)
Giampaolo Rodolà3108f982011-02-24 20:59:48 +000045
Éric Araujob07b97f2011-10-05 01:03:34 +020046 This saves the maintainer the effort of going through the Mercurial log
Giampaolo Rodolà3108f982011-02-24 20:59:48 +000047 when researching a change.
48
49This article explains the new features in Python 3.3, compared to 3.2.
50
51
Stefan Krah9a2d99e2012-02-25 12:24:21 +010052PEP 3118: New memoryview implementation and buffer protocol documentation
53=========================================================================
54
55:issue:`10181` - memoryview bug fixes and features.
56 Written by Stefan Krah.
57
58The new memoryview implementation comprehensively fixes all ownership and
59lifetime issues of dynamically allocated fields in the Py_buffer struct
60that led to multiple crash reports. Additionally, several functions that
61crashed or returned incorrect results for non-contiguous or multi-dimensional
62input have been fixed.
63
64The memoryview object now has a PEP-3118 compliant getbufferproc()
65that checks the consumer's request type. Many new features have been
66added, most of them work in full generality for non-contiguous arrays
67and arrays with suboffsets.
68
69The documentation has been updated, clearly spelling out responsibilities
70for both exporters and consumers. Buffer request flags are grouped into
71basic and compound flags. The memory layout of non-contiguous and
72multi-dimensional NumPy-style arrays is explained.
73
74Features
75--------
76
77* All native single character format specifiers in struct module syntax
78 (optionally prefixed with '@') are now supported.
79
80* With some restrictions, the cast() method allows changing of format and
81 shape of C-contiguous arrays.
82
83* Multi-dimensional list representations are supported for any array type.
84
85* Multi-dimensional comparisons are supported for any array type.
86
87* All array types are hashable if the exporting object is hashable
88 and the view is read-only.
89
90* Arbitrary slicing of any 1-D arrays type is supported. For example, it
91 is now possible to reverse a memoryview in O(1) by using a negative step.
92
93API changes
94-----------
95
96* The maximum number of dimensions is officially limited to 64.
97
98* The representation of empty shape, strides and suboffsets is now
99 an empty tuple instead of None.
100
101* Accessing a memoryview element with format 'B' (unsigned bytes)
102 now returns an integer (in accordance with the struct module syntax).
103 For returning a bytes object the view must be cast to 'c' first.
104
Stefan Krah54c32032012-02-29 17:47:21 +0100105* For further changes see `Build and C API Changes`_ and `Porting C code`_ .
Stefan Krah9a2d99e2012-02-25 12:24:21 +0100106
Antoine Pitrou037ffbf2011-10-24 00:25:41 +0200107.. _pep-393:
108
Ezio Melotti48a2f8f2011-09-29 00:18:19 +0300109PEP 393: Flexible String Representation
110=======================================
111
Antoine Pitroufd9b4162011-10-24 00:14:43 +0200112The Unicode string type is changed to support multiple internal
113representations, depending on the character with the largest Unicode ordinal
114(1, 2, or 4 bytes) in the represented string. This allows a space-efficient
115representation in common cases, but gives access to full UCS-4 on all
116systems. For compatibility with existing APIs, several representations may
117exist in parallel; over time, this compatibility should be phased out.
Ezio Melotti397546a2011-09-29 08:34:36 +0300118
Antoine Pitroufd9b4162011-10-24 00:14:43 +0200119On the Python side, there should be no downside to this change.
Ezio Melotti397546a2011-09-29 08:34:36 +0300120
Antoine Pitroufd9b4162011-10-24 00:14:43 +0200121On the C API side, PEP 393 is fully backward compatible. The legacy API
122should remain available at least five years. Applications using the legacy
123API will not fully benefit of the memory reduction, or - worse - may use
124a bit more memory, because Python may have to maintain two versions of each
125string (in the legacy format and in the new efficient storage).
126
Antoine Pitrou0599b5b2011-11-29 22:45:07 +0100127Functionality
128-------------
129
Antoine Pitroufd9b4162011-10-24 00:14:43 +0200130Changes introduced by :pep:`393` are the following:
Ezio Melotti48a2f8f2011-09-29 00:18:19 +0300131
Ezio Melotti397546a2011-09-29 08:34:36 +0300132* Python now always supports the full range of Unicode codepoints, including
133 non-BMP ones (i.e. from ``U+0000`` to ``U+10FFFF``). The distinction between
134 narrow and wide builds no longer exists and Python now behaves like a wide
Antoine Pitroufd9b4162011-10-24 00:14:43 +0200135 build, even under Windows.
Ezio Melotti397546a2011-09-29 08:34:36 +0300136
Antoine Pitroufd9b4162011-10-24 00:14:43 +0200137* With the death of narrow builds, the problems specific to narrow builds have
138 also been fixed, for example:
Ezio Melotti397546a2011-09-29 08:34:36 +0300139
140 * :func:`len` now always returns 1 for non-BMP characters,
141 so ``len('\U0010FFFF') == 1``;
142
143 * surrogate pairs are not recombined in string literals,
144 so ``'\uDBFF\uDFFF' != '\U0010FFFF'``;
145
Antoine Pitroufd9b4162011-10-24 00:14:43 +0200146 * indexing or slicing non-BMP characters returns the expected value,
Ezio Melotti397546a2011-09-29 08:34:36 +0300147 so ``'\U0010FFFF'[0]`` now returns ``'\U0010FFFF'`` and not ``'\uDBFF'``;
148
Antoine Pitroud136aec2011-11-17 01:48:06 +0100149 * all other functions in the standard library now correctly handle
Antoine Pitroufd9b4162011-10-24 00:14:43 +0200150 non-BMP codepoints.
Ezio Melotti397546a2011-09-29 08:34:36 +0300151
Ezio Melotti48a2f8f2011-09-29 00:18:19 +0300152* The value of :data:`sys.maxunicode` is now always ``1114111`` (``0x10FFFF``
153 in hexadecimal). The :c:func:`PyUnicode_GetMax` function still returns
154 either ``0xFFFF`` or ``0x10FFFF`` for backward compatibility, and it should
155 not be used with the new Unicode API (see :issue:`13054`).
156
Ezio Melotti397546a2011-09-29 08:34:36 +0300157* The :file:`./configure` flag ``--with-wide-unicode`` has been removed.
Victor Stinner7d637ab2011-09-29 02:56:16 +0200158
Antoine Pitrou0599b5b2011-11-29 22:45:07 +0100159Performance and resource usage
160------------------------------
161
162The storage of Unicode strings now depends on the highest codepoint in the string:
163
164* pure ASCII and Latin1 strings (``U+0000-U+00FF``) use 1 byte per codepoint;
165
166* BMP strings (``U+0000-U+FFFF``) use 2 bytes per codepoint;
167
168* non-BMP strings (``U+10000-U+10FFFF``) use 4 bytes per codepoint.
169
Martin v. Löwisde157cc2012-03-06 08:42:17 +0100170The net effect is that for most applications, memory usage of string
171storage should decrease significantly - especially compared to former
172wide unicode builds - as, in many cases, strings will be pure ASCII
173even in international contexts (because many strings store non-human
174language data, such as XML fragments, HTTP headers, JSON-encoded data,
175etc.). We also hope that it will, for the same reasons, increase CPU
176cache efficiency on non-trivial applications. The memory usage of
177Python 3.3 is two to three times smaller than Python 3.2, and a little
178bit better than Python 2.7, on a Django benchmark (see the PEP for
179details).
Antoine Pitrou0599b5b2011-11-29 22:45:07 +0100180
Éric Araujob07b97f2011-10-05 01:03:34 +0200181
Victor Stinnera1bf2982011-10-12 20:35:02 +0200182PEP 3151: Reworking the OS and IO exception hierarchy
183=====================================================
184
185:pep:`3151` - Reworking the OS and IO exception hierarchy
Antoine Pitrou01fd26c2011-10-24 00:07:02 +0200186 PEP written and implemented by Antoine Pitrou.
Victor Stinnera1bf2982011-10-12 20:35:02 +0200187
Antoine Pitrou01fd26c2011-10-24 00:07:02 +0200188The hierarchy of exceptions raised by operating system errors is now both
189simplified and finer-grained.
Victor Stinnera1bf2982011-10-12 20:35:02 +0200190
Antoine Pitrou01fd26c2011-10-24 00:07:02 +0200191You don't have to worry anymore about choosing the appropriate exception
192type between :exc:`OSError`, :exc:`IOError`, :exc:`EnvironmentError`,
193:exc:`WindowsError`, :exc:`mmap.error`, :exc:`socket.error` or
194:exc:`select.error`. All these exception types are now only one:
195:exc:`OSError`. The other names are kept as aliases for compatibility
196reasons.
Victor Stinnera1bf2982011-10-12 20:35:02 +0200197
Antoine Pitrou01fd26c2011-10-24 00:07:02 +0200198Also, it is now easier to catch a specific error condition. Instead of
199inspecting the ``errno`` attribute (or ``args[0]``) for a particular
200constant from the :mod:`errno` module, you can catch the adequate
201:exc:`OSError` subclass. The available subclasses are the following:
Victor Stinnera1bf2982011-10-12 20:35:02 +0200202
Antoine Pitrou01fd26c2011-10-24 00:07:02 +0200203* :exc:`BlockingIOError`
204* :exc:`ChildProcessError`
205* :exc:`ConnectionError`
206* :exc:`FileExistsError`
207* :exc:`FileNotFoundError`
208* :exc:`InterruptedError`
209* :exc:`IsADirectoryError`
210* :exc:`NotADirectoryError`
211* :exc:`PermissionError`
212* :exc:`ProcessLookupError`
213* :exc:`TimeoutError`
Victor Stinnera1bf2982011-10-12 20:35:02 +0200214
Antoine Pitrou01fd26c2011-10-24 00:07:02 +0200215And the :exc:`ConnectionError` itself has finer-grained subclasses:
Victor Stinnera1bf2982011-10-12 20:35:02 +0200216
Antoine Pitrou01fd26c2011-10-24 00:07:02 +0200217* :exc:`BrokenPipeError`
218* :exc:`ConnectionAbortedError`
219* :exc:`ConnectionRefusedError`
220* :exc:`ConnectionResetError`
Victor Stinnera1bf2982011-10-12 20:35:02 +0200221
222Thanks to the new exceptions, common usages of the :mod:`errno` can now be
Antoine Pitrou01fd26c2011-10-24 00:07:02 +0200223avoided. For example, the following code written for Python 3.2::
Victor Stinnera1bf2982011-10-12 20:35:02 +0200224
225 from errno import ENOENT, EACCES, EPERM
226
227 try:
228 with open("document.txt") as f:
229 content = f.read()
230 except IOError as err:
231 if err.errno == ENOENT:
232 print("document.txt file is missing")
233 elif err.errno in (EACCES, EPERM):
234 print("You are not allowed to read document.txt")
235 else:
236 raise
237
Antoine Pitrou01fd26c2011-10-24 00:07:02 +0200238can now be written without the :mod:`errno` import and without manual
239inspection of exception attributes::
Victor Stinnera1bf2982011-10-12 20:35:02 +0200240
241 try:
242 with open("document.txt") as f:
243 content = f.read()
244 except FileNotFoundError:
245 print("document.txt file is missing")
246 except PermissionError:
247 print("You are not allowed to read document.txt")
248
249
Nick Coghlan1f7ce622012-01-13 21:43:40 +1000250PEP 380: Syntax for Delegating to a Subgenerator
251================================================
252
Nick Coghlanab7bf212012-02-26 17:49:52 +1000253:pep:`380` - Syntax for Delegating to a Subgenerator
254 PEP written by Greg Ewing.
255
Nick Coghlan1f7ce622012-01-13 21:43:40 +1000256PEP 380 adds the ``yield from`` expression, allowing a generator to delegate
257part of its operations to another generator. This allows a section of code
258containing 'yield' to be factored out and placed in another generator.
259Additionally, the subgenerator is allowed to return with a value, and the
260value is made available to the delegating generator.
261While designed primarily for use in delegating to a subgenerator, the ``yield
262from`` expression actually allows delegation to arbitrary subiterators.
263
264(Implementation by Greg Ewing, integrated into 3.3 by Renaud Blanch, Ryan
265Kelly and Nick Coghlan, documentation by Zbigniew Jędrzejewski-Szmek and
266Nick Coghlan)
267
268
Nick Coghlanab7bf212012-02-26 17:49:52 +1000269PEP 409: Suppressing exception context
270======================================
271
272:pep:`409` - Suppressing exception context
273 PEP written by Ethan Furman, implemented by Ethan Furman and Nick Coghlan.
274
275PEP 409 introduces new syntax that allows the display of the chained
276exception context to be disabled. This allows cleaner error messages in
277applications that convert between exception types::
278
279 >>> class D:
280 ... def __init__(self, extra):
281 ... self._extra_attributes = extra
282 ... def __getattr__(self, attr):
283 ... try:
284 ... return self._extra_attributes[attr]
285 ... except KeyError:
286 ... raise AttributeError(attr) from None
287 ...
288 >>> D({}).x
289 Traceback (most recent call last):
290 File "<stdin>", line 1, in <module>
291 File "<stdin>", line 8, in __getattr__
292 AttributeError: x
293
294Without the ``from None`` suffix to suppress the cause, the original
295exception would be displayed by default::
296
297 >>> class C:
298 ... def __init__(self, extra):
299 ... self._extra_attributes = extra
300 ... def __getattr__(self, attr):
301 ... try:
302 ... return self._extra_attributes[attr]
303 ... except KeyError:
304 ... raise AttributeError(attr)
305 ...
306 >>> C({}).x
307 Traceback (most recent call last):
308 File "<stdin>", line 6, in __getattr__
309 KeyError: 'x'
310
311 During handling of the above exception, another exception occurred:
312
313 Traceback (most recent call last):
314 File "<stdin>", line 1, in <module>
315 File "<stdin>", line 8, in __getattr__
316 AttributeError: x
317
318No debugging capability is lost, as the original exception context remains
319available if needed (for example, if an intervening library has incorrectly
320suppressed valuable underlying details)::
321
322 >>> try:
323 ... D({}).x
324 ... except AttributeError as exc:
325 ... print(repr(exc.__context__))
326 ...
327 KeyError('x',)
328
329
Antoine Pitrou6bbd76b2011-11-25 19:10:05 +0100330PEP 3155: Qualified name for classes and functions
331==================================================
332
333:pep:`3155` - Qualified name for classes and functions
334 PEP written and implemented by Antoine Pitrou.
335
336Functions and class objects have a new ``__qualname__`` attribute representing
337the "path" from the module top-level to their definition. For global functions
338and classes, this is the same as ``__name__``. For other functions and classes,
339it provides better information about where they were actually defined, and
340how they might be accessible from the global scope.
341
342Example with (non-bound) methods::
Nick Coghlan2dfe6b02012-01-14 14:19:49 +1000343
Antoine Pitrou6bbd76b2011-11-25 19:10:05 +0100344 >>> class C:
345 ... def meth(self):
346 ... pass
347 >>> C.meth.__name__
348 'meth'
349 >>> C.meth.__qualname__
350 'C.meth'
351
352Example with nested classes::
353
354 >>> class C:
355 ... class D:
356 ... def meth(self):
357 ... pass
358 ...
359 >>> C.D.__name__
360 'D'
361 >>> C.D.__qualname__
362 'C.D'
363 >>> C.D.meth.__name__
364 'meth'
365 >>> C.D.meth.__qualname__
366 'C.D.meth'
367
368Example with nested functions::
369
370 >>> def outer():
371 ... def inner():
372 ... pass
373 ... return inner
374 ...
375 >>> outer().__name__
376 'inner'
377 >>> outer().__qualname__
378 'outer.<locals>.inner'
379
Antoine Pitroue7ede062011-11-25 19:11:26 +0100380The string representation of those objects is also changed to include the
Antoine Pitrou6bbd76b2011-11-25 19:10:05 +0100381new, more precise information::
382
383 >>> str(C.D)
384 "<class '__main__.C.D'>"
385 >>> str(C.D.meth)
386 '<function C.D.meth at 0x7f46b9fe31e0>'
387
388
Giampaolo Rodolà3108f982011-02-24 20:59:48 +0000389Other Language Changes
390======================
391
392Some smaller changes made to the core Python language are:
393
Antoine Pitrou7b578b32011-11-29 22:47:11 +0100394* Added support for Unicode name aliases and named sequences.
395 Both :func:`unicodedata.lookup()` and ``'\N{...}'`` now resolve name aliases,
396 and :func:`unicodedata.lookup()` resolves named sequences too.
Giampaolo Rodolà3108f982011-02-24 20:59:48 +0000397
Antoine Pitrou7b578b32011-11-29 22:47:11 +0100398 (Contributed by Ezio Melotti in :issue:`12753`)
Ezio Melotti931b8aa2011-10-21 21:57:36 +0300399
Antoine Pitrou7b578b32011-11-29 22:47:11 +0100400* Equality comparisons on :func:`range` objects now return a result reflecting
401 the equality of the underlying sequences generated by those range objects.
Ezio Melotti931b8aa2011-10-21 21:57:36 +0300402
Sandro Tosicd899122012-01-22 12:16:04 +0100403 (:issue:`13201`)
Giampaolo Rodolà3108f982011-02-24 20:59:48 +0000404
Antoine Pitrou7b578b32011-11-29 22:47:11 +0100405* The ``count()``, ``find()``, ``rfind()``, ``index()`` and ``rindex()``
406 methods of :class:`bytes` and :class:`bytearray` objects now accept an
407 integer between 0 and 255 as their first argument.
Mark Dickinson36645682011-10-23 19:53:01 +0100408
Antoine Pitrou7b578b32011-11-29 22:47:11 +0100409 (:issue:`12170`)
Mark Dickinson36645682011-10-23 19:53:01 +0100410
Antoine Pitrou7b578b32011-11-29 22:47:11 +0100411* Memoryview objects are now hashable when the underlying object is hashable.
Mark Dickinson36645682011-10-23 19:53:01 +0100412
Antoine Pitrou7b578b32011-11-29 22:47:11 +0100413 (Contributed by Antoine Pitrou in :issue:`13411`)
Petri Lehtinen61ea8a02011-11-24 22:00:46 +0200414
415
Victor Stinner46606ce2011-11-20 18:27:55 +0100416New and Improved Modules
417========================
Giampaolo Rodolà3108f982011-02-24 20:59:48 +0000418
Victor Stinnerf4c54ff2012-02-08 01:48:34 +0100419abc
420---
421
422Improved support for abstract base classes containing descriptors composed with
423abstract methods. The recommended approach to declaring abstract descriptors is
424now to provide :attr:`__isabstractmethod__` as a dynamically updated
425property. The built-in descriptors have been updated accordingly.
426
427 * :class:`abc.abstractproperty` has been deprecated, use :class:`property`
428 with :func:`abc.abstractmethod` instead.
429 * :class:`abc.abstractclassmethod` has been deprecated, use
430 :class:`classmethod` with :func:`abc.abstractmethod` instead.
431 * :class:`abc.abstractstaticmethod` has been deprecated, use
432 :class:`staticmethod` with :func:`abc.abstractmethod` instead.
433
434(Contributed by Darren Dale in :issue:`11610`)
435
Meador Ingec5dbb3d2011-09-20 21:48:16 -0500436array
437-----
438
439The :mod:`array` module supports the :c:type:`long long` type using ``q`` and
440``Q`` type codes.
441
442(Contributed by Oren Tirosh and Hirokazu Yamamoto in :issue:`1172711`)
443
444
Nadeem Vawdad7e5c6e2012-02-12 01:34:18 +0200445bz2
446---
447
448The :mod:`bz2` module has been rewritten from scratch. In the process, several
449new features have been added:
450
451* :class:`bz2.BZ2File` can now read from and write to arbitrary file-like
452 objects, by means of its constructor's *fileobj* argument.
453
454 (Contributed by Nadeem Vawda in :issue:`5863`)
455
456* :class:`bz2.BZ2File` and :func:`bz2.decompress` can now decompress
457 multi-stream inputs (such as those produced by the :program:`pbzip2` tool).
458 :class:`bz2.BZ2File` can now also be used to create this type of file, using
459 the ``'a'`` (append) mode.
460
461 (Contributed by Nir Aides in :issue:`1625`)
462
463* :class:`bz2.BZ2File` now implements all of the :class:`io.BufferedIOBase` API,
464 except for the :meth:`detach` and :meth:`truncate` methods.
465
466
Victor Stinner2cded9c2011-07-08 01:45:13 +0200467codecs
468------
469
Antoine Pitrou4f863432012-02-12 02:12:47 +0100470The :mod:`~encodings.mbcs` codec has been rewritten to handle correctly
Georg Brandlff962c52012-02-04 08:55:56 +0100471``replace`` and ``ignore`` error handlers on all Windows versions. The
472:mod:`~encodings.mbcs` codec now supports all error handlers, instead of only
473``replace`` to encode and ``ignore`` to decode.
Victor Stinner3a50e702011-10-18 21:21:00 +0200474
Georg Brandlff962c52012-02-04 08:55:56 +0100475A new Windows-only codec has been added: ``cp65001`` (:issue:`13216`). It is the
476Windows code page 65001 (Windows UTF-8, ``CP_UTF8``). For example, it is used
477by ``sys.stdout`` if the console output code page is set to cp65001 (e.g., using
478``chcp 65001`` command).
Victor Stinner2f3ca9f2011-10-27 01:38:56 +0200479
Georg Brandlff962c52012-02-04 08:55:56 +0100480Multibyte CJK decoders now resynchronize faster. They only ignore the first
Georg Brandl6c0929b2011-07-09 11:43:33 +0200481byte of an invalid byte sequence. For example, ``b'\xff\n'.decode('gb2312',
482'replace')`` now returns a ``\n`` after the replacement character.
Victor Stinner2cded9c2011-07-08 01:45:13 +0200483
Georg Brandl6c0929b2011-07-09 11:43:33 +0200484(:issue:`12016`)
Victor Stinner2cded9c2011-07-08 01:45:13 +0200485
Georg Brandlff962c52012-02-04 08:55:56 +0100486Incremental CJK codec encoders are no longer reset at each call to their
487encode() methods. For example::
Victor Stinner2cded9c2011-07-08 01:45:13 +0200488
489 $ ./python -q
490 >>> import codecs
491 >>> encoder = codecs.getincrementalencoder('hz')('strict')
492 >>> b''.join(encoder.encode(x) for x in '\u52ff\u65bd\u65bc\u4eba\u3002 Bye.')
493 b'~{NpJ)l6HK!#~} Bye.'
494
Georg Brandl6c0929b2011-07-09 11:43:33 +0200495This example gives ``b'~{Np~}~{J)~}~{l6~}~{HK~}~{!#~} Bye.'`` with older Python
Victor Stinner2cded9c2011-07-08 01:45:13 +0200496versions.
497
Georg Brandl6c0929b2011-07-09 11:43:33 +0200498(:issue:`12100`)
Victor Stinner2cded9c2011-07-08 01:45:13 +0200499
Victor Stinner9f4b1e92011-11-10 20:56:30 +0100500The ``unicode_internal`` codec has been deprecated.
501
Éric Araujo84b8ed82011-08-29 21:42:47 +0200502crypt
503-----
504
Victor Stinnerc78fb332011-09-21 03:35:44 +0200505Addition of salt and modular crypt format and the :func:`~crypt.mksalt`
506function to the :mod:`crypt` module.
Éric Araujo84b8ed82011-08-29 21:42:47 +0200507
508(:issue:`10924`)
509
Victor Stinnera7878b72011-07-14 23:07:44 +0200510curses
511------
512
Victor Stinner0fdfceb2011-11-25 22:10:02 +0100513 * If the :mod:`curses` module is linked to the ncursesw library, use Unicode
514 functions when Unicode strings or characters are passed (e.g.
515 :c:func:`waddwstr`), and bytes functions otherwise (e.g. :c:func:`waddstr`).
516 * Use the locale encoding instead of ``utf-8`` to encode Unicode strings.
517 * :class:`curses.window` has a new :attr:`curses.window.encoding` attribute.
Victor Stinnerc78fb332011-09-21 03:35:44 +0200518 * The :class:`curses.window` class has a new :meth:`~curses.window.get_wch`
519 method to get a wide character
520 * The :mod:`curses` module has a new :meth:`~curses.unget_wch` function to
521 push a wide character so the next :meth:`~curses.window.get_wch` will return
522 it
Victor Stinnera7878b72011-07-14 23:07:44 +0200523
Victor Stinnerc78fb332011-09-21 03:35:44 +0200524(Contributed by Iñigo Serna in :issue:`6755`)
Victor Stinnera7878b72011-07-14 23:07:44 +0200525
Victor Stinner024e37a2011-03-31 01:31:06 +0200526faulthandler
527------------
528
529New module: :mod:`faulthandler`.
530
531 * :envvar:`PYTHONFAULTHANDLER`
532 * :option:`-X` ``faulthandler``
533
Victor Stinner811db3b2011-09-21 03:20:03 +0200534ftplib
535------
536
537The :class:`~ftplib.FTP_TLS` class now provides a new
538:func:`~ftplib.FTP_TLS.ccc` function to revert control channel back to
Florent Xicluna6d57d212011-10-23 22:23:57 +0200539plaintext. This can be useful to take advantage of firewalls that know how to
Victor Stinner811db3b2011-09-21 03:20:03 +0200540handle NAT with non-secure FTP without opening fixed ports.
541
542(Contributed by Giampaolo Rodolà in :issue:`12139`)
543
544
Antoine Pitrou5a8bc6f2011-11-17 02:20:48 +0100545imaplib
546-------
547
548The :class:`~imaplib.IMAP4_SSL` constructor now accepts an SSLContext
549parameter to control parameters of the secure channel.
550
551(Contributed by Sijin Joseph in :issue:`8808`)
552
553
Charles-François Natalidc3044c2012-01-09 22:40:02 +0100554io
555--
556
Charles-François Natalid612de12012-01-14 11:51:00 +0100557The :func:`~io.open` function has a new ``'x'`` mode that can be used to
558exclusively create a new file, and raise a :exc:`FileExistsError` if the file
559already exists. It is based on the C11 'x' mode to fopen().
Charles-François Natalidc3044c2012-01-09 22:40:02 +0100560
561(Contributed by David Townshend in :issue:`12760`)
562
563
Nadeem Vawda34599222011-12-09 01:32:46 +0200564lzma
565----
566
567The newly-added :mod:`lzma` module provides data compression and decompression
568using the LZMA algorithm, including support for the ``.xz`` and ``.lzma``
569file formats.
570
571(Contributed by Nadeem Vawda and Per Øyvind Karlsen in :issue:`6715`)
572
573
Victor Stinnerfa0e3d52011-05-09 01:01:09 +0200574math
575----
576
577The :mod:`math` module has a new function:
578
579 * :func:`~math.log2`: return the base-2 logarithm of *x*
580 (Written by Mark Dickinson in :issue:`11888`).
581
582
583nntplib
584-------
585
586The :class:`nntplib.NNTP` class now supports the context manager protocol to
587unconditionally consume :exc:`socket.error` exceptions and to close the NNTP
588connection when done::
589
590 >>> from nntplib import NNTP
Ezio Melotti3c14b4e2011-07-13 11:44:44 +0300591 >>> with NNTP('news.gmane.org') as n:
Victor Stinnerfa0e3d52011-05-09 01:01:09 +0200592 ... n.group('gmane.comp.python.committers')
593 ...
Ezio Melotti04f648c2011-07-26 09:37:46 +0300594 ('211 1755 1 1755 gmane.comp.python.committers', 1755, 1, 1755, 'gmane.comp.python.committers')
Victor Stinnerfa0e3d52011-05-09 01:01:09 +0200595 >>>
596
597(Contributed by Giampaolo Rodolà in :issue:`9795`)
598
599
Giampaolo Rodolàc9c2c8b2011-02-25 14:39:16 +0000600os
601--
602
Charles-François Natalia003af12011-06-01 20:30:52 +0200603* The :mod:`os` module has a new :func:`~os.pipe2` function that makes it
604 possible to create a pipe with :data:`~os.O_CLOEXEC` or
605 :data:`~os.O_NONBLOCK` flags set atomically. This is especially useful to
606 avoid race conditions in multi-threaded programs.
607
Giampaolo Rodolà18e8bcb2011-02-25 20:57:54 +0000608* The :mod:`os` module has a new :func:`~os.sendfile` function which provides
609 an efficent "zero-copy" way for copying data from one file (or socket)
610 descriptor to another. The phrase "zero-copy" refers to the fact that all of
611 the copying of data between the two descriptors is done entirely by the
612 kernel, with no copying of data into userspace buffers. :func:`~os.sendfile`
613 can be used to efficiently copy data from a file on disk to a network socket,
614 e.g. for downloading a file.
Giampaolo Rodolàc9c2c8b2011-02-25 14:39:16 +0000615
Giampaolo Rodolà18e8bcb2011-02-25 20:57:54 +0000616 (Patch submitted by Ross Lagerwall and Giampaolo Rodolà in :issue:`10882`.)
617
618* The :mod:`os` module has two new functions: :func:`~os.getpriority` and
619 :func:`~os.setpriority`. They can be used to get or set process
620 niceness/priority in a fashion similar to :func:`os.nice` but extended to all
621 processes instead of just the current one.
622
623 (Patch submitted by Giampaolo Rodolà in :issue:`10784`.)
Giampaolo Rodolà3108f982011-02-24 20:59:48 +0000624
Charles-François Natali7372b062012-02-05 15:15:38 +0100625* The :mod:`os` module has a new :func:`~os.fwalk` function similar to
626 :func:`~os.walk` except that it also yields file descriptors referring to the
627 directories visited. This is especially useful to avoid symlink races.
628
Victor Stinnere5064372011-10-14 00:08:29 +0200629* "at" functions (:issue:`4761`):
630
631 * :func:`~os.faccessat`
632 * :func:`~os.fchmodat`
633 * :func:`~os.fchownat`
634 * :func:`~os.fstatat`
635 * :func:`~os.futimesat`
Victor Stinnere5064372011-10-14 00:08:29 +0200636 * :func:`~os.linkat`
637 * :func:`~os.mkdirat`
638 * :func:`~os.mkfifoat`
639 * :func:`~os.mknodat`
640 * :func:`~os.openat`
641 * :func:`~os.readlinkat`
642 * :func:`~os.renameat`
643 * :func:`~os.symlinkat`
644 * :func:`~os.unlinkat`
645 * :func:`~os.utimensat`
Victor Stinnere5064372011-10-14 00:08:29 +0200646
647* extended attributes (:issue:`12720`):
648
649 * :func:`~os.fgetxattr`
650 * :func:`~os.flistxattr`
651 * :func:`~os.fremovexattr`
652 * :func:`~os.fsetxattr`
653 * :func:`~os.getxattr`
654 * :func:`~os.lgetxattr`
655 * :func:`~os.listxattr`
656 * :func:`~os.llistxattr`
657 * :func:`~os.lremovexattr`
658 * :func:`~os.lsetxattr`
659 * :func:`~os.removexattr`
660 * :func:`~os.setxattr`
661
662* Scheduler functions (:issue:`12655`):
663
664 * :func:`~os.sched_get_priority_max`
665 * :func:`~os.sched_get_priority_min`
666 * :func:`~os.sched_getaffinity`
667 * :func:`~os.sched_getparam`
668 * :func:`~os.sched_getscheduler`
669 * :func:`~os.sched_rr_get_interval`
670 * :func:`~os.sched_setaffinity`
671 * :func:`~os.sched_setparam`
672 * :func:`~os.sched_setscheduler`
673 * :func:`~os.sched_yield`
674
675* Add some extra posix functions to the os module (:issue:`10812`):
676
677 * :func:`~os.fexecve`
678 * :func:`~os.futimens`
Victor Stinnere5064372011-10-14 00:08:29 +0200679 * :func:`~os.futimes`
680 * :func:`~os.lockf`
681 * :func:`~os.lutimes`
Victor Stinnere5064372011-10-14 00:08:29 +0200682 * :func:`~os.posix_fadvise`
683 * :func:`~os.posix_fallocate`
684 * :func:`~os.pread`
685 * :func:`~os.pwrite`
686 * :func:`~os.readv`
687 * :func:`~os.sync`
688 * :func:`~os.truncate`
689 * :func:`~os.waitid`
690 * :func:`~os.writev`
691
692* Other new functions:
693
Charles-François Natali77940902012-02-06 19:54:48 +0100694 * :func:`~os.flistdir` (:issue:`10755`)
Victor Stinnere5064372011-10-14 00:08:29 +0200695 * :func:`~os.getgrouplist` (:issue:`9344`)
696
Giampaolo Rodolà424298a2011-03-03 18:34:06 +0000697
Éric Araujo765e94f2011-06-03 17:26:59 +0200698packaging
699---------
700
701:mod:`distutils` has undergone additions and refactoring under a new name,
702:mod:`packaging`, to allow developers to break backward compatibility.
703:mod:`distutils` is still provided in the standard library, but users are
704encouraged to transition to :mod:`packaging`. For older versions of Python, a
705backport compatible with 2.4+ and 3.1+ will be made available on PyPI under the
706name :mod:`distutils2`.
707
708.. TODO add examples and howto to the packaging docs and link to them
709
710
Victor Stinner383c3fc2011-05-25 01:35:05 +0200711pydoc
712-----
713
Victor Stinner6daa33c2011-05-25 01:41:22 +0200714The Tk GUI and the :func:`~pydoc.serve` function have been removed from the
715:mod:`pydoc` module: ``pydoc -g`` and :func:`~pydoc.serve` have been deprecated
716in Python 3.2.
Victor Stinner383c3fc2011-05-25 01:35:05 +0200717
718
Victor Stinnerf4c54ff2012-02-08 01:48:34 +0100719sched
720-----
Victor Stinner754851f2011-04-19 23:58:51 +0200721
Victor Stinnerf4c54ff2012-02-08 01:48:34 +0100722* :meth:`~sched.scheduler.run` now accepts a *blocking* parameter which when
723 set to False makes the method execute the scheduled events due to expire
724 soonest (if any) and then return immediately.
725 This is useful in case you want to use the :class:`~sched.scheduler` in
726 non-blocking applications. (Contributed by Giampaolo Rodolà in :issue:`13449`)
Victor Stinner754851f2011-04-19 23:58:51 +0200727
Victor Stinnerf4c54ff2012-02-08 01:48:34 +0100728* :class:`~sched.scheduler` class can now be safely used in multi-threaded
729 environments. (Contributed by Josiah Carlson and Giampaolo Rodolà in
730 :issue:`8684`)
731
732* *timefunc* and *delayfunct* parameters of :class:`~sched.scheduler` class
733 constructor are now optional and defaults to :func:`time.time` and
734 :func:`time.sleep` respectively. (Contributed by Chris Clark in
735 :issue:`13245`)
736
737* :meth:`~sched.scheduler.enter` and :meth:`~sched.scheduler.enterabs`
738 *argument* parameter is now optional. (Contributed by Chris Clark in
739 :issue:`13245`)
740
741* :meth:`~sched.scheduler.enter` and :meth:`~sched.scheduler.enterabs`
742 now accept a *kwargs* parameter. (Contributed by Chris Clark in
743 :issue:`13245`)
744
745
746shutil
747------
748
749* The :mod:`shutil` module has these new fuctions:
750
751 * :func:`~shutil.disk_usage`: provides total, used and free disk space
752 statistics. (Contributed by Giampaolo Rodolà in :issue:`12442`)
753 * :func:`~shutil.chown`: allows one to change user and/or group of the given
754 path also specifying the user/group names and not only their numeric
755 ids. (Contributed by Sandro Tosi in :issue:`12191`)
Victor Stinnera9293352011-04-30 15:21:58 +0200756
Victor Stinnerfa0e3d52011-05-09 01:01:09 +0200757
Victor Stinnera9293352011-04-30 15:21:58 +0200758signal
759------
760
Victor Stinnerfa0e3d52011-05-09 01:01:09 +0200761* The :mod:`signal` module has new functions:
Victor Stinnera9293352011-04-30 15:21:58 +0200762
Victor Stinnerb3e72192011-05-08 01:46:11 +0200763 * :func:`~signal.pthread_sigmask`: fetch and/or change the signal mask of the
764 calling thread (Contributed by Jean-Paul Calderone in :issue:`8407`) ;
765 * :func:`~signal.pthread_kill`: send a signal to a thread ;
766 * :func:`~signal.sigpending`: examine pending functions ;
767 * :func:`~signal.sigwait`: wait a signal.
Ross Lagerwallbc808222011-06-25 12:13:40 +0200768 * :func:`~signal.sigwaitinfo`: wait for a signal, returning detailed
769 information about it.
770 * :func:`~signal.sigtimedwait`: like :func:`~signal.sigwaitinfo` but with a
771 timeout.
Victor Stinnera9293352011-04-30 15:21:58 +0200772
Victor Stinnerd49b1f12011-05-08 02:03:15 +0200773* The signal handler writes the signal number as a single byte instead of
774 a nul byte into the wakeup file descriptor. So it is possible to wait more
775 than one signal and know which signals were raised.
776
Victor Stinner388196e2011-05-10 17:13:00 +0200777* :func:`signal.signal` and :func:`signal.siginterrupt` raise an OSError,
778 instead of a RuntimeError: OSError has an errno attribute.
779
Victor Stinnerf4c54ff2012-02-08 01:48:34 +0100780smtplib
781-------
782
783The :class:`~smtplib.SMTP_SSL` constructor and the :meth:`~smtplib.SMTP.starttls`
784method now accept an SSLContext parameter to control parameters of the secure
785channel.
786
787(Contributed by Kasun Herath in :issue:`8809`)
788
789
Nick Coghlan96fe56a2011-08-22 11:55:57 +1000790socket
791------
792
Charles-François Natali47413c12011-10-06 19:47:44 +0200793* The :class:`~socket.socket` class now exposes additional methods to process
794 ancillary data when supported by the underlying platform:
Nick Coghlan96fe56a2011-08-22 11:55:57 +1000795
Charles-François Natali47413c12011-10-06 19:47:44 +0200796 * :func:`~socket.socket.sendmsg`
797 * :func:`~socket.socket.recvmsg`
798 * :func:`~socket.socket.recvmsg_into`
Nick Coghlan96fe56a2011-08-22 11:55:57 +1000799
Charles-François Natali47413c12011-10-06 19:47:44 +0200800 (Contributed by David Watson in :issue:`6560`, based on an earlier patch by
801 Heiko Wundram)
802
803* The :class:`~socket.socket` class now supports the PF_CAN protocol family
804 (http://en.wikipedia.org/wiki/Socketcan), on Linux
805 (http://lwn.net/Articles/253425).
806
807 (Contributed by Matthias Fuchs, updated by Tiago Gonçalves in :issue:`10141`)
808
Charles-François Natali10b8cf42011-11-10 19:21:37 +0100809* The :class:`~socket.socket` class now supports the PF_RDS protocol family
810 (http://en.wikipedia.org/wiki/Reliable_Datagram_Sockets and
811 http://oss.oracle.com/projects/rds/).
Victor Stinner754851f2011-04-19 23:58:51 +0200812
Victor Stinnerf4c54ff2012-02-08 01:48:34 +0100813
Victor Stinner99c8b162011-05-24 12:05:19 +0200814ssl
815---
816
Antoine Pitrou2c0a9672011-11-17 02:09:13 +0100817* The :mod:`ssl` module has two new random generation functions:
Victor Stinner99c8b162011-05-24 12:05:19 +0200818
819 * :func:`~ssl.RAND_bytes`: generate cryptographically strong
820 pseudo-random bytes.
821 * :func:`~ssl.RAND_pseudo_bytes`: generate pseudo-random bytes.
822
Antoine Pitrou2c0a9672011-11-17 02:09:13 +0100823 (Contributed by Victor Stinner in :issue:`12049`)
824
825* The :mod:`ssl` module now exposes a finer-grained exception hierarchy
826 in order to make it easier to inspect the various kinds of errors.
827
828 (Contributed by Antoine Pitrou in :issue:`11183`)
829
830* :meth:`~ssl.SSLContext.load_cert_chain` now accepts a *password* argument
831 to be used if the private key is encrypted.
832
833 (Contributed by Adam Simpkins in :issue:`12803`)
834
Antoine Pitrou73fc8142011-12-23 20:58:36 +0100835* Diffie-Hellman key exchange, both regular and Elliptic Curve-based, is
836 now supported through the :meth:`~ssl.SSLContext.load_dh_params` and
837 :meth:`~ssl.SSLContext.set_ecdh_curve` methods.
838
839 (Contributed by Antoine Pitrou in :issue:`13626` and :issue:`13627`)
840
Antoine Pitrou2c0a9672011-11-17 02:09:13 +0100841* SSL sockets have a new :meth:`~ssl.SSLSocket.get_channel_binding` method
842 allowing the implementation of certain authentication mechanisms such as
843 SCRAM-SHA-1-PLUS.
844
845 (Contributed by Jacek Konieczny in :issue:`12551`)
846
Antoine Pitrou73fc8142011-12-23 20:58:36 +0100847* You can query the SSL compression algorithm used by an SSL socket, thanks
848 to its new :meth:`~ssl.SSLSocket.compression` method.
849
850 (Contributed by Antoine Pitrou in :issue:`13634`)
851
852
Victor Stinnerf4c54ff2012-02-08 01:48:34 +0100853sys
854---
Giampaolo Rodola'210e7ca2011-07-01 13:55:36 +0200855
Victor Stinnerf4c54ff2012-02-08 01:48:34 +0100856* The :mod:`sys` module has a new :data:`~sys.thread_info` :term:`struct
857 sequence` holding informations about the thread implementation.
Giampaolo Rodola'210e7ca2011-07-01 13:55:36 +0200858
Victor Stinnerf4c54ff2012-02-08 01:48:34 +0100859 (:issue:`11223`)
Giampaolo Rodola'096dcb12011-06-27 11:17:51 +0200860
Antoine Pitrou5a8bc6f2011-11-17 02:20:48 +0100861
Victor Stinnerf4c54ff2012-02-08 01:48:34 +0100862time
863----
Antoine Pitrou5a8bc6f2011-11-17 02:20:48 +0100864
Victor Stinnerf4c54ff2012-02-08 01:48:34 +0100865The :mod:`time` module has new functions:
866
867* :func:`~time.clock_getres` and :func:`~time.clock_gettime` functions and
868 ``CLOCK_xxx`` constants.
869* :func:`~time.monotonic`: monotonic clock.
870* :func:`~time.wallclock`.
871
872(Contributed by Victor Stinner in :issue:`10278`)
873
Antoine Pitrou5a8bc6f2011-11-17 02:20:48 +0100874
Senthil Kumarande49d642011-10-16 23:54:44 +0800875urllib
876------
877
878The :class:`~urllib.request.Request` class, now accepts a *method* argument
879used by :meth:`~urllib.request.Request.get_method` to determine what HTTP method
Senthil Kumarana41c9422011-10-20 02:37:08 +0800880should be used. For example, this will send a ``'HEAD'`` request::
Senthil Kumarande49d642011-10-16 23:54:44 +0800881
882 >>> urlopen(Request('http://www.python.org', method='HEAD'))
883
884(:issue:`1673007`)
Giampaolo Rodola'096dcb12011-06-27 11:17:51 +0200885
Giampaolo Rodola'be55d992011-11-22 13:33:34 +0100886
Giampaolo Rodolà3108f982011-02-24 20:59:48 +0000887Optimizations
888=============
889
890Major performance enhancements have been added:
891
Victor Stinner46606ce2011-11-20 18:27:55 +0100892* Thanks to the :pep:`393`, some operations on Unicode strings has been optimized:
893
894 * the memory footprint is divided by 2 to 4 depending on the text
Victor Stinnera996f1e2011-11-21 13:14:43 +0100895 * encode an ASCII string to UTF-8 doesn't need to encode characters anymore,
896 the UTF-8 representation is shared with the ASCII representation
Victor Stinner6099a032011-12-18 14:22:26 +0100897 * the UTF-8 encoder has been optimized
898 * repeating a single ASCII letter and getting a substring of a ASCII strings
899 is 4 times faster
Giampaolo Rodolà3108f982011-02-24 20:59:48 +0000900
901
902Build and C API Changes
903=======================
904
905Changes to Python's build process and to the C API include:
906
Stefan Krah95b1ba62012-02-29 17:27:21 +0100907* New :pep:`3118` related function:
908
909 * :c:func:`PyMemoryView_FromMemory`
910
Victor Stinner46606ce2011-11-20 18:27:55 +0100911* The :pep:`393` added new Unicode types, macros and functions:
912
Victor Stinnera996f1e2011-11-21 13:14:43 +0100913 * High-level API:
914
915 * :c:func:`PyUnicode_CopyCharacters`
916 * :c:func:`PyUnicode_FindChar`
917 * :c:func:`PyUnicode_GetLength`, :c:macro:`PyUnicode_GET_LENGTH`
918 * :c:func:`PyUnicode_New`
919 * :c:func:`PyUnicode_Substring`
920 * :c:func:`PyUnicode_ReadChar`, :c:func:`PyUnicode_WriteChar`
921
922 * Low-level API:
923
924 * :c:type:`Py_UCS1`, :c:type:`Py_UCS2`, :c:type:`Py_UCS4` types
925 * :c:type:`PyASCIIObject` and :c:type:`PyCompactUnicodeObject` structures
926 * :c:macro:`PyUnicode_READY`
927 * :c:func:`PyUnicode_FromKindAndData`
928 * :c:func:`PyUnicode_AsUCS4`, :c:func:`PyUnicode_AsUCS4Copy`
929 * :c:macro:`PyUnicode_DATA`, :c:macro:`PyUnicode_1BYTE_DATA`,
930 :c:macro:`PyUnicode_2BYTE_DATA`, :c:macro:`PyUnicode_4BYTE_DATA`
931 * :c:macro:`PyUnicode_KIND` with :c:type:`PyUnicode_Kind` enum:
932 :c:data:`PyUnicode_WCHAR_KIND`, :c:data:`PyUnicode_1BYTE_KIND`,
933 :c:data:`PyUnicode_2BYTE_KIND`, :c:data:`PyUnicode_4BYTE_KIND`
934 * :c:macro:`PyUnicode_READ`, :c:macro:`PyUnicode_READ_CHAR`, :c:macro:`PyUnicode_WRITE`
935 * :c:macro:`PyUnicode_MAX_CHAR_VALUE`
936
Giampaolo Rodolà3108f982011-02-24 20:59:48 +0000937
938
Victor Stinnerd1be8782011-12-09 00:10:41 +0100939Deprecated
940==========
941
Georg Brandl0cd25c92011-04-29 13:45:54 +0200942Unsupported Operating Systems
Victor Stinnerd1be8782011-12-09 00:10:41 +0100943-----------------------------
Victor Stinnerb90db4c2011-04-26 22:48:24 +0200944
Brian Curtin49a40cd2011-05-02 22:30:06 -0500945OS/2 and VMS are no longer supported due to the lack of a maintainer.
946
947Windows 2000 and Windows platforms which set ``COMSPEC`` to ``command.com``
948are no longer supported due to maintenance burden.
Victor Stinnerb90db4c2011-04-26 22:48:24 +0200949
950
Victor Stinner46606ce2011-11-20 18:27:55 +0100951Deprecated Python modules, functions and methods
Victor Stinnerd1be8782011-12-09 00:10:41 +0100952------------------------------------------------
Victor Stinner19bd0692011-11-16 00:18:57 +0100953
954* The :mod:`packaging` module replaces the :mod:`distutils` module
955* The ``unicode_internal`` codec has been deprecated because of the
Sandro Tosicd899122012-01-22 12:16:04 +0100956 :pep:`393`, use UTF-8, UTF-16 (``utf-16-le`` or ``utf-16-be``), or UTF-32
957 (``utf-32-le`` or ``utf-32-be``)
Victor Stinner19bd0692011-11-16 00:18:57 +0100958* :meth:`ftplib.FTP.nlst` and :meth:`ftplib.FTP.dir`: use
Victor Stinner46606ce2011-11-20 18:27:55 +0100959 :meth:`ftplib.FTP.mlsd`
Victor Stinner19bd0692011-11-16 00:18:57 +0100960* :func:`platform.popen`: use the :mod:`subprocess` module. Check especially
961 the :ref:`subprocess-replacements` section.
962* :issue:`13374`: The Windows bytes API has been deprecated in the :mod:`os`
Victor Stinner46606ce2011-11-20 18:27:55 +0100963 module. Use Unicode filenames, instead of bytes filenames, to not depend on
Victor Stinner19bd0692011-11-16 00:18:57 +0100964 the ANSI code page anymore and to support any filename.
Florent Xiclunaa72a98f2012-02-13 11:03:30 +0100965* :issue:`13988`: The :mod:`xml.etree.cElementTree` module is deprecated. The
966 accelerator is used automatically whenever available.
Victor Stinner19bd0692011-11-16 00:18:57 +0100967
968
Victor Stinner46606ce2011-11-20 18:27:55 +0100969Deprecated functions and types of the C API
Victor Stinnerd1be8782011-12-09 00:10:41 +0100970-------------------------------------------
Victor Stinner46606ce2011-11-20 18:27:55 +0100971
972The :c:type:`Py_UNICODE` has been deprecated by the :pep:`393` and will be
973removed in Python 4. All functions using this type are deprecated:
974
Victor Stinner46606ce2011-11-20 18:27:55 +0100975Unicode functions and methods using :c:type:`Py_UNICODE` and
976:c:type:`Py_UNICODE*` types:
977
978 * :c:macro:`PyUnicode_FromUnicode`: use :c:func:`PyUnicode_FromWideChar` or
979 :c:func:`PyUnicode_FromKindAndData`
980 * :c:macro:`PyUnicode_AS_UNICODE`, :c:func:`PyUnicode_AsUnicode`,
981 :c:func:`PyUnicode_AsUnicodeAndSize`: use :c:func:`PyUnicode_AsWideCharString`
982 * :c:macro:`PyUnicode_AS_DATA`: use :c:macro:`PyUnicode_DATA` with
983 :c:macro:`PyUnicode_READ` and :c:macro:`PyUnicode_WRITE`
984 * :c:macro:`PyUnicode_GET_SIZE`, :c:func:`PyUnicode_GetSize`: use
985 :c:macro:`PyUnicode_GET_LENGTH` or :c:func:`PyUnicode_GetLength`
986 * :c:macro:`PyUnicode_GET_DATA_SIZE`: use
987 ``PyUnicode_GET_LENGTH(str) * PyUnicode_KIND(str)`` (only work on ready
988 strings)
Victor Stinnerbf6e5602011-12-12 01:53:47 +0100989 * :c:func:`PyUnicode_AsUnicodeCopy`: use :c:func:`PyUnicode_AsUCS4Copy` or
990 :c:func:`PyUnicode_AsWideCharString`
Victor Stinnerab595942011-12-17 04:59:06 +0100991 * :c:func:`PyUnicode_GetMax`
992
Victor Stinner46606ce2011-11-20 18:27:55 +0100993
Victor Stinnera996f1e2011-11-21 13:14:43 +0100994Functions and macros manipulating Py_UNICODE* strings:
995
996 * :c:macro:`Py_UNICODE_strlen`: use :c:func:`PyUnicode_GetLength` or
997 :c:macro:`PyUnicode_GET_LENGTH`
998 * :c:macro:`Py_UNICODE_strcat`: use :c:func:`PyUnicode_CopyCharacters` or
999 :c:func:`PyUnicode_FromFormat`
1000 * :c:macro:`Py_UNICODE_strcpy`, :c:macro:`Py_UNICODE_strncpy`,
1001 :c:macro:`Py_UNICODE_COPY`: use :c:func:`PyUnicode_CopyCharacters` or
1002 :c:func:`PyUnicode_Substring`
1003 * :c:macro:`Py_UNICODE_strcmp`: use :c:func:`PyUnicode_Compare`
1004 * :c:macro:`Py_UNICODE_strncmp`: use :c:func:`PyUnicode_Tailmatch`
1005 * :c:macro:`Py_UNICODE_strchr`, :c:macro:`Py_UNICODE_strrchr`: use
1006 :c:func:`PyUnicode_FindChar`
Victor Stinner606e19d2012-01-04 03:59:16 +01001007 * :c:macro:`Py_UNICODE_FILL`: use :c:func:`PyUnicode_Fill`
Victor Stinnerab595942011-12-17 04:59:06 +01001008 * :c:macro:`Py_UNICODE_MATCH`
Victor Stinnera996f1e2011-11-21 13:14:43 +01001009
Victor Stinner46606ce2011-11-20 18:27:55 +01001010Encoders:
1011
1012 * :c:func:`PyUnicode_Encode`: use :c:func:`PyUnicode_AsEncodedObject`
1013 * :c:func:`PyUnicode_EncodeUTF7`
Victor Stinnera996f1e2011-11-21 13:14:43 +01001014 * :c:func:`PyUnicode_EncodeUTF8`: use :c:func:`PyUnicode_AsUTF8` or
1015 :c:func:`PyUnicode_AsUTF8String`
Victor Stinner46606ce2011-11-20 18:27:55 +01001016 * :c:func:`PyUnicode_EncodeUTF32`
1017 * :c:func:`PyUnicode_EncodeUTF16`
1018 * :c:func:`PyUnicode_EncodeUnicodeEscape:` use
1019 :c:func:`PyUnicode_AsUnicodeEscapeString`
1020 * :c:func:`PyUnicode_EncodeRawUnicodeEscape:` use
1021 :c:func:`PyUnicode_AsRawUnicodeEscapeString`
1022 * :c:func:`PyUnicode_EncodeLatin1`: use :c:func:`PyUnicode_AsLatin1String`
1023 * :c:func:`PyUnicode_EncodeASCII`: use :c:func:`PyUnicode_AsASCIIString`
1024 * :c:func:`PyUnicode_EncodeCharmap`
1025 * :c:func:`PyUnicode_TranslateCharmap`
1026 * :c:func:`PyUnicode_EncodeMBCS`: use :c:func:`PyUnicode_AsMBCSString` or
1027 :c:func:`PyUnicode_EncodeCodePage` (with ``CP_ACP`` code_page)
1028 * :c:func:`PyUnicode_EncodeDecimal`,
1029 :c:func:`PyUnicode_TransformDecimalToASCII`
1030
1031
Giampaolo Rodolà3108f982011-02-24 20:59:48 +00001032Porting to Python 3.3
1033=====================
1034
1035This section lists previously described changes and other bugfixes
Antoine Pitrou037ffbf2011-10-24 00:25:41 +02001036that may require changes to your code.
1037
1038Porting Python code
1039-------------------
Giampaolo Rodolà3108f982011-02-24 20:59:48 +00001040
Victor Stinner19bd0692011-11-16 00:18:57 +01001041* :issue:`12326`: On Linux, sys.platform doesn't contain the major version
Victor Stinnerff3d9392011-08-20 23:39:26 +02001042 anymore. It is now always 'linux', instead of 'linux2' or 'linux3' depending
1043 on the Linux version used to build Python. Replace sys.platform == 'linux2'
1044 with sys.platform.startswith('linux'), or directly sys.platform == 'linux' if
1045 you don't need to support older Python versions.
Éric Araujoc09fca62011-03-23 02:06:24 +01001046
Antoine Pitrou037ffbf2011-10-24 00:25:41 +02001047Porting C code
1048--------------
1049
Stefan Krah54c32032012-02-29 17:47:21 +01001050* In the course of changes to the buffer API the undocumented
1051 :c:member:`~Py_buffer.smalltable` member of the
1052 :c:type:`Py_buffer` structure has been removed and the
1053 layout of the :c:type:`PyMemoryViewObject` has changed.
1054
1055 All extensions relying on the relevant parts in ``memoryobject.h``
1056 or ``object.h`` must be rebuilt.
1057
Antoine Pitrou037ffbf2011-10-24 00:25:41 +02001058* Due to :ref:`PEP 393 <pep-393>`, the :c:type:`Py_UNICODE` type and all
1059 functions using this type are deprecated (but will stay available for
1060 at least five years). If you were using low-level Unicode APIs to
1061 construct and access unicode objects and you want to benefit of the
1062 memory footprint reduction provided by the PEP 393, you have to convert
1063 your code to the new :doc:`Unicode API <../c-api/unicode>`.
1064
1065 However, if you only have been using high-level functions such as
1066 :c:func:`PyUnicode_Concat()`, :c:func:`PyUnicode_Join` or
1067 :c:func:`PyUnicode_FromFormat()`, your code will automatically take
1068 advantage of the new unicode representations.
1069
Antoine Pitrouc229e6e2012-02-20 19:41:11 +01001070Building C extensions
1071---------------------
1072
1073* The range of possible file names for C extensions has been narrowed.
1074 Very rarely used spellings have been suppressed: under POSIX, files
1075 named ``xxxmodule.so``, ``xxxmodule.abi3.so`` and
1076 ``xxxmodule.cpython-*.so`` are no longer recognized as implementing
1077 the ``xxx`` module. If you had been generating such files, you have
1078 to switch to the other spellings (i.e., remove the ``module`` string
1079 from the file names).
1080
1081 (implemented in :issue:`14040`.)
1082
1083
Antoine Pitrou037ffbf2011-10-24 00:25:41 +02001084Other issues
1085------------
1086
Éric Araujoc09fca62011-03-23 02:06:24 +01001087.. Issue #11591: When :program:`python` was started with :option:`-S`,
1088 ``import site`` will not add site-specific paths to the module search
1089 paths. In previous versions, it did. See changeset for doc changes in
1090 various files. Contributed by Carl Meyer with editions by Éric Araujo.
Éric Araujobe3bd572011-03-26 01:55:15 +01001091
Éric Araujobfc97292011-11-14 18:18:15 +01001092.. Issue #10998: the -Q command-line flag and related artifacts have been
Éric Araujobe3bd572011-03-26 01:55:15 +01001093 removed. Code checking sys.flags.division_warning will need updating.
1094 Contributed by Éric Araujo.