blob: 859c64b717baa2a3c0ac896419a9749bc0437a85 [file] [log] [blame]
Georg Brandl116aa622007-08-15 14:28:22 +00001****************************
2 What's New in Python 3.0
3****************************
4
Andrew M. Kuchlingbbb809e2007-09-01 19:26:28 +00005:Author: Guido van Rossum
Georg Brandl5a165582007-08-31 06:15:01 +00006:Release: 0.1
Georg Brandl116aa622007-08-15 14:28:22 +00007
Georg Brandl5a165582007-08-31 06:15:01 +00008.. Rules for maintenance:
9
10 * Anyone can add text to this document. Do not spend very much time
11 on the wording of your changes, because your text will probably
12 get rewritten to some degree.
13
14 * The maintainer will go through Misc/NEWS periodically and add
15 changes; it's therefore more important to add your changes to
16 Misc/NEWS than to this file.
17
18 * This is not a complete list of every single change; completeness
19 is the purpose of Misc/NEWS. Some changes I consider too small
20 or esoteric to include. If such a change is added to the text,
21 I'll just remove it. (This is another reason you shouldn't spend
22 too much time on writing your addition.)
23
24 * If you want to draw your new text to the attention of the
25 maintainer, add 'XXX' to the beginning of the paragraph or
26 section.
27
28 * It's OK to just add a fragmentary note about a change. For
29 example: "XXX Describe the transmogrify() function added to the
30 socket module." The maintainer will research the change and
31 write the necessary text.
32
33 * You can comment out your additions if you like, but it's not
34 necessary (especially when a final release is some months away).
35
36 * Credit the author of a patch or bugfix. Just the name is
37 sufficient; the e-mail address isn't necessary.
38
39 * It's helpful to add the bug/patch number as a comment:
40
41 % Patch 12345
42 XXX Describe the transmogrify() function added to the socket
43 module.
44 (Contributed by P.Y. Developer.)
45
46 This saves the maintainer the effort of going through the SVN log
47 when researching a change.
Georg Brandl116aa622007-08-15 14:28:22 +000048
Guido van Rossumb197f3c2007-08-31 00:37:00 +000049This article explains the new features in Python 3.0, comparing to 2.6
50(or in some cases 2.5, since 2.6 isn't released yet).
Georg Brandl116aa622007-08-15 14:28:22 +000051
Guido van Rossumb197f3c2007-08-31 00:37:00 +000052The best estimate for a release date is August 2008.
53
54This article doesn't attempt to provide a complete specification of
55the new features, but instead provides a convenient overview. For
56full details, you should refer to the documentation for Python 3.0. If
57you want to understand the complete implementation and design
58rationale, refer to the PEP for a particular new feature.
Georg Brandl116aa622007-08-15 14:28:22 +000059
Georg Brandl5a165582007-08-31 06:15:01 +000060.. Compare with previous release in 2 - 3 sentences here.
61.. add hyperlink when the documentation becomes available online.
Georg Brandl116aa622007-08-15 14:28:22 +000062
Georg Brandl5a165582007-08-31 06:15:01 +000063.. ======================================================================
64.. Large, PEP-level features and changes should be described here.
65.. Should there be a new section here for 3k migration?
66.. Or perhaps a more general section describing module changes/deprecation?
67.. sets module deprecated
68.. ======================================================================
Georg Brandl116aa622007-08-15 14:28:22 +000069
70
Guido van Rossumb197f3c2007-08-31 00:37:00 +000071Common Stumbling Blocks
72=======================
73
74This section briefly lists the changes that are more likely to trip
75people up, without necessarily raising obvious errors. These are all
76explained in more detail below. (I'm not listing syntactic changes
77and removed or renamed features here, since those tend to produce hard
78and fast errors; it's the subtle behavioral changes in code that
79remains syntactically valid that trips people up. I'm also omitting
80changes to rarely used features.)
81
Guido van Rossumdff1c312007-09-06 14:46:41 +000082* The ``print`` statement has been replaced with a ``print()`` function,
83 with keyword arguments to replace most of the special syntax of the
84 old ``print`` statement (PEP 3105). Examples::
85
86 Old: print "The answer is", 2*2
87 New: print("The answer is", 2*2)
88
89 Old: print x, # Trailing comma suppresses newline
90 New: print(x, end=" ") # Appends a space instead of a newline
91
92 Old: print # Prints a newline
93 New: print() # You must call the function!
94
95 Old: print >>sys.stderr, "fatal error"
96 New: print("fatal error", file=sys.stderr)
97
98 Old: print (x, y) # prints repr((x, y))
99 New: print((x, y)) # Not the same as print(x, y)!
100
101 You can also customize the separator between items, e.g.::
102
103 print("There are <", 2**32, "> possibilities!", sep="")
104
105 which produces::
106
107 There are <4294967296> possibilities!
108
109 Notes about the ``print()`` function:
110
111 * The ``print()`` function doesn't support the "softspace" feature of
112 the old ``print`` statement. For example, in Python 2.x,
113 ``print "A\n", "B"`` would write ``"A\nB\n"``; but in Python 3.0,
114 ``print("A\n", "B")`` writes ``"A\n B\n"``.
115
116 * Initially, you'll be finding yourself typing the old ``print x``
117 a lot in interactive mode. Time to retrain your fingers to type
118 ``print(x)`` instead!
119
120 * When using the ``2to3`` source-to-source conversion tool, all
121 ``print`` statements are autmatically converted to ``print()``
122 function calls, so this is mostly a non-issue for larger projects.
123
Guido van Rossumb197f3c2007-08-31 00:37:00 +0000124* Python 3.0 uses strings and bytes instead of the Unicode strings and
125 8-bit strings. This means that pretty much all code that uses
126 Unicode, encodings or binary data in any way has to change. The
127 change is for the better, as in the 2.x world there were numerous
128 bugs having to do with mixing encoded and unencoded text.
129
130* Text files enforce an encoding; binary files use bytes. This means
131 that if a file is opened using an incorrect mode or encoding, I/O
132 will likely fail.
133
Guido van Rossumb197f3c2007-08-31 00:37:00 +0000134* ``map()`` and ``filter()`` return iterators. A quick fix is e.g.
135 ``list(map(...))``, but a better fix is often to use a list
136 comprehension (especially when the original code uses ``lambda``).
137 Particularly tricky is ``map()`` invoked for the side effects of the
138 function; the correct transformation is to use a for-loop.
139
140* ``dict`` methods ``.keys()``, ``.items()`` and ``.values()`` return
141 views instead of lists. For example, this no longer works:
142 ``k = d.keys(); k.sort()``. Use ``k = sorted(d)`` instead.
143
144* ``1/2`` returns a float. Use ``1//2`` to get the truncating behavior.
145
Georg Brandlcc595bd2007-12-09 09:04:01 +0000146* The ``repr()`` of a long integer doesn't include the trailing ``L``
147 anymore, so code that unconditionally strips that character will
148 chop off the last digit instead.
Guido van Rossumb197f3c2007-08-31 00:37:00 +0000149
Guido van Rossumb197f3c2007-08-31 00:37:00 +0000150
151Strings and Bytes
152=================
153
Georg Brandl5a165582007-08-31 06:15:01 +0000154* There is only one string type; its name is ``str`` but its behavior
Guido van Rossumb197f3c2007-08-31 00:37:00 +0000155 and implementation are more like ``unicode`` in 2.x.
156
Christian Heimesf534f7b2008-01-25 11:02:28 +0000157* The ``basestring`` superclass has been removed. The ``2to3`` tool
158 replaces every occurence of ``basestring`` with ``str``.
159
Guido van Rossum98297ee2007-11-06 21:34:58 +0000160* PEP 3137: There is a new type, ``bytes``, to represent binary data
Guido van Rossumb197f3c2007-08-31 00:37:00 +0000161 (and encoded text, which is treated as binary data until you decide
162 to decode it). The ``str`` and ``bytes`` types cannot be mixed; you
163 must always explicitly convert between them, using the ``.encode()``
Guido van Rossum98297ee2007-11-06 21:34:58 +0000164 (str -> bytes) or ``.decode()`` (bytes -> str) methods.
Guido van Rossumb197f3c2007-08-31 00:37:00 +0000165
166* PEP 3112: Bytes literals. E.g. b"abc".
167
168* PEP 3120: UTF-8 default source encoding.
169
170* PEP 3131: Non-ASCII identifiers. (However, the standard library
171 remains ASCII-only with the exception of contributor names in
172 comments.)
173
174* PEP 3116: New I/O Implementation. The API is nearly 100% backwards
175 compatible, but completely reimplemented (currently mostly in
176 Python). Also, binary files use bytes instead of strings.
177
178* The ``StringIO`` and ``cStringIO`` modules are gone. Instead,
179 import ``StringIO`` or ``BytesIO`` from the ``io`` module.
180
181
182PEP 3101: A New Approach to String Formatting
183=============================================
184
Georg Brandl396ef802008-02-02 10:30:18 +0000185.. XXX expand this
186
187* A new system for built-in string formatting operations replaces
188 the ``%`` string formatting operator.
Guido van Rossumb197f3c2007-08-31 00:37:00 +0000189
190
Georg Brandl396ef802008-02-02 10:30:18 +0000191PEP 3106: Revamping dict ``.keys()``, ``.items()`` and ``.values()``
192====================================================================
Guido van Rossumb197f3c2007-08-31 00:37:00 +0000193
Georg Brandl396ef802008-02-02 10:30:18 +0000194.. XXX expand this
195
196* The ``.iterkeys()``, ``.itervalues()`` and ``.iteritems()`` methods
197 have been removed.
198
199* ``.keys()``, ``.values()`` and ``.items()`` return objects with set
200 behavior that reference the underlying dict.
Guido van Rossumb197f3c2007-08-31 00:37:00 +0000201
202
203PEP 3107: Function Annotations
204==============================
205
Georg Brandl396ef802008-02-02 10:30:18 +0000206.. XXX expand this
207
208* A standardized way of annotating a function's parameters and return
209 values.
Guido van Rossumb197f3c2007-08-31 00:37:00 +0000210
211
212Exception Stuff
213===============
214
215* PEP 352: Exceptions must derive from BaseException. This is the
Georg Brandl5a165582007-08-31 06:15:01 +0000216 root of the exception hierarchy.
Guido van Rossumb197f3c2007-08-31 00:37:00 +0000217
218* StandardException was removed (already in 2.6).
219
Georg Brandl5a165582007-08-31 06:15:01 +0000220* Dropping sequence behavior (slicing!) and ``.message`` attribute of
221 exception instances.
Guido van Rossumb197f3c2007-08-31 00:37:00 +0000222
223* PEP 3109: Raising exceptions. You must now use ``raise
224 Exception(args)`` instead of ``raise Exception, args``.
225
226* PEP 3110: Catching exceptions.
227
228* PEP 3134: Exception chaining. (The ``__context__`` feature from the
229 PEP hasn't been implemented yet in 3.0a1.)
230
Georg Brandl396ef802008-02-02 10:30:18 +0000231* A few exception messages are improved when Windows fails to load an
232 extension module. For example, ``error code 193`` is now ``%1 is not
233 a valid Win32 application``. Strings now deal with non-English
234 locales.
235
Guido van Rossumb197f3c2007-08-31 00:37:00 +0000236
237New Class and Metaclass Stuff
238=============================
239
240* Classic classes are gone.
241
242* PEP 3115: New Metaclass Syntax.
243
Skip Montanaroa86f5d42007-09-04 02:48:01 +0000244* PEP 3119: Abstract Base Classes (ABCs); ``@abstractmethod`` and
Guido van Rossumb197f3c2007-08-31 00:37:00 +0000245 ``@abstractproperty`` decorators; collection ABCs.
246
247* PEP 3129: Class decorators.
248
249* PEP 3141: Numeric ABCs.
250
251
Georg Brandl116aa622007-08-15 14:28:22 +0000252Other Language Changes
253======================
254
Guido van Rossumb197f3c2007-08-31 00:37:00 +0000255Here are most of the changes that Python 3.0 makes to the core Python
256language and built-in functions.
Georg Brandl116aa622007-08-15 14:28:22 +0000257
Guido van Rossumb197f3c2007-08-31 00:37:00 +0000258* Removed backticks (use ``repr()`` instead).
259
260* Removed ``<>`` (use ``!=`` instead).
261
Georg Brandl396ef802008-02-02 10:30:18 +0000262* ``!=`` now returns the opposite of ``==``, unless ``==`` returns
263 ``NotImplemented``.
264
Guido van Rossumb197f3c2007-08-31 00:37:00 +0000265* ``as`` and ``with`` are keywords.
266
Georg Brandl396ef802008-02-02 10:30:18 +0000267* ``True``, ``False``, and ``None`` are keywords.
268
Guido van Rossumb197f3c2007-08-31 00:37:00 +0000269* PEP 237: ``long`` renamed to ``int``. That is, there is only one
270 built-in integral type, named ``int``; but it behaves like the old
Georg Brandlcc595bd2007-12-09 09:04:01 +0000271 ``long`` type, with the exception that the literal suffix ``L`` is
272 neither supported by the parser nor produced by ``repr()`` anymore.
Walter Dörwald32f523e2008-01-25 11:33:18 +0000273 ``sys.maxint`` was also removed since the int type has no maximum
Christian Heimesbad17e72008-01-25 11:10:11 +0000274 value anymore.
Guido van Rossumb197f3c2007-08-31 00:37:00 +0000275
276* PEP 238: int division returns a float.
277
278* The ordering operators behave differently: for example, ``x < y``
279 where ``x`` and ``y`` have incompatible types raises ``TypeError``
280 instead of returning a pseudo-random boolean.
281
282* ``__getslice__()`` and friends killed. The syntax ``a[i:j]`` now
283 translates to ``a.__getitem__(slice(i, j))`` (or ``__setitem__``
Georg Brandl5a165582007-08-31 06:15:01 +0000284 or ``__delitem__``, depending on context).
Guido van Rossumb197f3c2007-08-31 00:37:00 +0000285
286* PEP 3102: Keyword-only arguments. Named parameters occurring after
287 ``*args`` in the parameter list *must* be specified using keyword
Georg Brandl5a165582007-08-31 06:15:01 +0000288 syntax in the call. You can also use a bare ``*`` in the parameter
289 list to indicate that you don't accept a variable-length argument
290 list, but you do have keyword-only arguments.
Guido van Rossumb197f3c2007-08-31 00:37:00 +0000291
292* PEP 3104: ``nonlocal`` statement. Using ``nonlocal x`` you can now
293 assign directly to a variable in an outer (but non-global) scope.
294
Guido van Rossumb197f3c2007-08-31 00:37:00 +0000295* PEP 3111: ``raw_input()`` renamed to ``input()``. That is, the new
296 ``input()`` function reads a line from ``sys.stdin`` and returns it
297 with the trailing newline stripped. It raises ``EOFError`` if the
298 input is terminated prematurely. To get the old behavior of
299 ``input()``, use ``eval(input())``.
300
301* ``xrange()`` renamed to ``range()``.
302
303* PEP 3113: Tuple parameter unpacking removed. You can no longer write
304 ``def foo(a, (b, c)): ...``. Use ``def foo(a, b_c): b, c = b_c``
305 instead.
306
Georg Brandl5a165582007-08-31 06:15:01 +0000307* PEP 3114: ``.next()`` renamed to ``.__next__()``, new builtin
308 ``next()`` to call the ``__next__()`` method on an object.
Guido van Rossumb197f3c2007-08-31 00:37:00 +0000309
310* PEP 3127: New octal literals; binary literals and ``bin()``.
311 Instead of ``0666``, you write ``0o666``. The oct() function is
312 modified accordingly. Also, ``0b1010`` equals 10, and ``bin(10)``
Georg Brandl5a165582007-08-31 06:15:01 +0000313 returns ``"0b1010"``. ``0666`` is now a ``SyntaxError``.
Guido van Rossumb197f3c2007-08-31 00:37:00 +0000314
315* PEP 3132: Extended Iterable Unpacking. You can now write things
316 like ``a, b, *rest = some_sequence``. And even ``*rest, a =
Georg Brandl5a165582007-08-31 06:15:01 +0000317 stuff``. The ``rest`` object is always a list; the right-hand
Guido van Rossumb197f3c2007-08-31 00:37:00 +0000318 side may be any iterable.
319
320* PEP 3135: New ``super()``. You can now invoke ``super()`` without
321 arguments and the right class and instance will automatically be
322 chosen. With arguments, its behavior is unchanged.
323
324* ``zip()``, ``map()`` and ``filter()`` return iterators.
325
326* ``string.letters`` and its friends (``.lowercase`` and
327 ``.uppercase``) are gone. Use ``string.ascii_letters``
328 etc. instead.
329
Georg Brandl5a165582007-08-31 06:15:01 +0000330* Removed: ``apply()``, ``callable()``, ``coerce()``, ``execfile()``,
331 ``file()``, ``reduce()``, ``reload()``.
Guido van Rossumb197f3c2007-08-31 00:37:00 +0000332
333* Removed: ``dict.has_key()``.
334
335* ``exec`` is now a function.
336
Georg Brandl396ef802008-02-02 10:30:18 +0000337* There is a new free format floating point representation, which is
338 based on "Floating-Point Printer Sample Code", by Robert G. Burger.
339 ``repr(11./5)`` now returns ``2.2`` instead of ``2.2000000000000002``.
340
341* The ``__oct__()`` and ``__hex__()`` special methods are removed --
342 ``oct()`` and ``hex()`` use ``__index__()`` now to convert the
343 argument to an integer.
344
345* There is now a ``bin()`` builtin function.
346
347* Support is removed for ``__members__`` and ``__methods__``.
348
349* ``nb_nonzero`` is now ``nb_bool`` and ``__nonzero__`` is now
350 ``__bool__``.
351
352* Removed ``sys.maxint``. Use ``sys.maxsize``.
353
Georg Brandl116aa622007-08-15 14:28:22 +0000354
Georg Brandl5a165582007-08-31 06:15:01 +0000355.. ======================================================================
Georg Brandl116aa622007-08-15 14:28:22 +0000356
357
358Optimizations
359-------------
360
361* Detailed changes are listed here.
362
Guido van Rossumb197f3c2007-08-31 00:37:00 +0000363The net result of the 3.0 generalizations is that Python 3.0 runs the
Guido van Rossumb3922cb2007-08-31 14:03:28 +0000364pystone benchmark around 33% slower than Python 2.5. There's room for
365improvement; we expect to be optimizing string and integer operations
366significantly before the final 3.0 release!
Georg Brandl116aa622007-08-15 14:28:22 +0000367
Georg Brandl5a165582007-08-31 06:15:01 +0000368.. ======================================================================
Georg Brandl116aa622007-08-15 14:28:22 +0000369
370
371New, Improved, and Deprecated Modules
372=====================================
373
Guido van Rossumb197f3c2007-08-31 00:37:00 +0000374As usual, Python's standard library received a number of enhancements
375and bug fixes. Here's a partial list of the most notable changes,
376sorted alphabetically by module name. Consult the :file:`Misc/NEWS`
377file in the source tree for a more complete list of changes, or look
Skip Montanaro4edae682007-09-04 02:52:00 +0000378through the Subversion logs for all the details.
Georg Brandl116aa622007-08-15 14:28:22 +0000379
Guido van Rossumb197f3c2007-08-31 00:37:00 +0000380* The ``cPickle`` module is gone. Use ``pickle`` instead. Eventually
381 we'll have a transparent accelerator module.
Georg Brandl116aa622007-08-15 14:28:22 +0000382
Georg Brandl396ef802008-02-02 10:30:18 +0000383* The ``imageop`` module is gone.
384
385* The ``audiodev``, ``Bastion``, ``bsddb185``, ``exceptions``,
386 ``linuxaudiodev``, ``md5``, ``MimeWriter``, ``mimify``, ``popen2``,
387 ``rexec``, ``sets``, ``sha``, ``stringold``, ``strop``, ``sunaudiodev``,
388 ``timing``, and ``xmllib`` modules are gone.
389
390* The ``new`` module is gone.
391
392* The methods ``os.tmpnam()``, ``os.tempnam()`` and ``os.tmpfile()`` have
393 been removed in favor of the ``tempfile`` module.
394
Georg Brandl5a165582007-08-31 06:15:01 +0000395.. ======================================================================
396.. whole new modules get described in subsections here
Georg Brandl116aa622007-08-15 14:28:22 +0000397
Georg Brandl5a165582007-08-31 06:15:01 +0000398.. ======================================================================
Georg Brandl116aa622007-08-15 14:28:22 +0000399
400
401Build and C API Changes
402=======================
403
404Changes to Python's build process and to the C API include:
405
Guido van Rossumb197f3c2007-08-31 00:37:00 +0000406* PEP 3118: New Buffer API.
407
408* PEP 3121: Extension Module Initialization & Finalization.
409
Georg Brandl5a165582007-08-31 06:15:01 +0000410* PEP 3123: Making ``PyObject_HEAD`` conform to standard C.
Georg Brandl116aa622007-08-15 14:28:22 +0000411
Georg Brandl396ef802008-02-02 10:30:18 +0000412* No more C API support for restricted execution.
413
414* ``PyNumber_Coerce()``, ``PyNumber_CoerceEx()``, ``PyMember_Get``,
415 and ``PyMember_Set`` C APIs are removed.
416
417* New C API ``PyImport_ImportModuleNoBlock()``, works like
418 ``PyImport_ImportModule()`` but won't block on the import lock (returning
419 an error instead).
420
Georg Brandl5a165582007-08-31 06:15:01 +0000421.. ======================================================================
Georg Brandl116aa622007-08-15 14:28:22 +0000422
423
424Port-Specific Changes
425---------------------
426
427Platform-specific changes go here.
428
Georg Brandl396ef802008-02-02 10:30:18 +0000429
Georg Brandl5a165582007-08-31 06:15:01 +0000430.. ======================================================================
Georg Brandl116aa622007-08-15 14:28:22 +0000431
432
433.. _section-other:
434
435Other Changes and Fixes
436=======================
437
Guido van Rossumb197f3c2007-08-31 00:37:00 +0000438As usual, there were a bunch of other improvements and bugfixes
439scattered throughout the source tree. A search through the change
440logs finds there were XXX patches applied and YYY bugs fixed between
441Python 2.6 and 3.0. Both figures are likely to be underestimates.
Georg Brandl116aa622007-08-15 14:28:22 +0000442
443Some of the more notable changes are:
444
445* Details go here.
446
Georg Brandl5a165582007-08-31 06:15:01 +0000447.. ======================================================================
Georg Brandl116aa622007-08-15 14:28:22 +0000448
449
450Porting to Python 3.0
451=====================
452
Guido van Rossumb197f3c2007-08-31 00:37:00 +0000453This section lists previously described changes that may require
454changes to your code:
Georg Brandl116aa622007-08-15 14:28:22 +0000455
456* Everything is all in the details!
457
Georg Brandl72748582008-01-20 10:59:44 +0000458* Developers can include :file:`intobject.h` after :file:`Python.h` for
459 some ``PyInt_`` aliases.
Christian Heimesf78b1c62007-12-02 16:52:32 +0000460
Georg Brandl5a165582007-08-31 06:15:01 +0000461.. ======================================================================
Georg Brandl116aa622007-08-15 14:28:22 +0000462
463
464.. _acks:
465
466Acknowledgements
467================
468
Guido van Rossumb197f3c2007-08-31 00:37:00 +0000469The author would like to thank the following people for offering
470suggestions, corrections and assistance with various drafts of this
Georg Brandl5a165582007-08-31 06:15:01 +0000471article: Georg Brandl.
Georg Brandl116aa622007-08-15 14:28:22 +0000472