blob: 058d55c43b3f4e8a7d7c2d1cec70c294ee425119 [file] [log] [blame]
Tim Petersd7b5e882001-01-25 03:36:26 +00001What's New in Python 2.1 alpha 2?
2=================================
3Core language, builtins, and interpreter
4
5
6Standard library
7
8- random.py is now self-contained, and offers all the functionality of
9 the now-deprecated whrandom.py. See the docs for details. random.py
10 also supports new functions getstate() and setstate(), for saving
11 and restoring the internal state of all the generators.
12
13
Tim Petersa3a3a032000-11-30 05:22:44 +000014What's New in Python 2.1 alpha 1?
15=================================
16
17Core language, builtins, and interpreter
18
Marc-André Lemburgebb195b2001-01-20 10:34:52 +000019- There is a new Unicode companion to the PyObject_Str() API
20 called PyObject_Unicode(). It behaves in the same way as the
21 former, but assures that the returned value is an Unicode object
22 (applying the usual coercion if necessary).
Marc-André Lemburgad7c98e2001-01-17 17:09:53 +000023
Guido van Rossumf98eda02001-01-17 15:54:45 +000024- The comparison operators support "rich comparison overloading" (PEP
25 207). C extension types can provide a rich comparison function in
26 the new tp_richcompare slot in the type object. The cmp() function
27 and the C function PyObject_Compare() first try the new rich
28 comparison operators before trying the old 3-way comparison. There
29 is also a new C API PyObject_RichCompare() (which also falls back on
30 the old 3-way comparison, but does not constrain the outcome of the
31 rich comparison to a Boolean result).
32
33 The rich comparison function takes two objects (at least one of
34 which is guaranteed to have the type that provided the function) and
35 an integer indicating the opcode, which can be Py_LT, Py_LE, Py_EQ,
36 Py_NE, Py_GT, Py_GE (for <, <=, ==, !=, >, >=), and returns a Python
37 object, which may be NotImplemented (in which case the tp_compare
38 slot function is used as a fallback, if defined).
39
40 Classes can overload individual comparison operators by defining one
41 or more of the methods__lt__, __le__, __eq__, __ne__, __gt__,
Guido van Rossuma88479f2001-01-18 14:28:08 +000042 __ge__. There are no explicit "reflected argument" versions of
43 these; instead, __lt__ and __gt__ are each other's reflection,
44 likewise for__le__ and __ge__; __eq__ and __ne__ are their own
45 reflection (similar at the C level). No other implications are
46 made; in particular, Python does not assume that == is the Boolean
47 inverse of !=, or that < is the Boolean inverse of >=. This makes
48 it possible to define types with partial orderings.
Guido van Rossumf98eda02001-01-17 15:54:45 +000049
50 Classes or types that want to implement (in)equality tests but not
51 the ordering operators (i.e. unordered types) should implement ==
52 and !=, and raise an error for the ordering operators.
53
Guido van Rossuma88479f2001-01-18 14:28:08 +000054 It is possible to define types whose rich comparison results are not
Guido van Rossumf98eda02001-01-17 15:54:45 +000055 Boolean; e.g. a matrix type might want to return a matrix of bits
56 for A < B, giving elementwise comparisons. Such types should ensure
57 that any interpretation of their value in a Boolean context raises
58 an exception, e.g. by defining __nonzero__ (or the tp_nonzero slot
59 at the C level) to always raise an exception.
60
Guido van Rossuma88479f2001-01-18 14:28:08 +000061- Complex numbers use rich comparisons to define == and != but raise
62 an exception for <, <=, > and >=. Unfortunately, this also means
63 that cmp() of two complex numbers raises an exception when the two
64 numbers differ. Since it is not mathematically meaningful to compare
65 complex numbers except for equality, I hope that this doesn't break
66 too much code.
67
Barry Warsaw573b5412001-01-15 20:43:18 +000068- Functions and methods now support getting and setting arbitrarily
69 named attributes (PEP 232). Functions have a new __dict__
70 (a.k.a. func_dict) which hold the function attributes. Methods get
71 and set attributes on their underlying im_func. It is a TypeError
72 to set an attribute on a bound method.
73
Guido van Rossum051e3352001-01-15 19:11:10 +000074- The xrange() object implementation has been improved so that
75 xrange(sys.maxint) can be used on 64-bit platforms. There's still a
76 limitation that in this case len(xrange(sys.maxint)) can't be
77 calculated, but the common idiom "for i in xrange(sys.maxint)" will
78 work fine as long as the index i doesn't actually reach 2**31.
79 (Python uses regular ints for sequence and string indices; fixing
80 that is much more work.)
81
Guido van Rossum1cc8f832001-01-12 16:25:08 +000082- Two changes to from...import:
83
84 1) "from M import X" now works even if M is not a real module; it's
85 basically a getattr() operation with AttributeError exceptions
86 changed into ImportError.
87
88 2) "from M import *" now looks for M.__all__ to decide which names to
89 import; if M.__all__ doesn't exist, it uses M.__dict__.keys() but
90 filters out names starting with '_' as before. Whether or not
91 __all__ exists, there's no restriction on the type of M.
92
Guido van Rossumf61f1662001-01-10 20:13:55 +000093- File objects have a new method, xreadlines(). This is the fastest
94 way to iterate over all lines in a file:
95
96 for line in file.xreadlines():
97 ...do something to line...
98
99 See the xreadlines module (mentioned below) for how to do this for
100 other file-like objects.
101
102- Even if you don't use file.xreadlines(), you may expect a speedup on
103 line-by-line input. The file.readline() method has been optimized
Tim Petersf29b64d2001-01-15 06:33:19 +0000104 quite a bit in platform-specific ways: on systems (like Linux) that
105 support flockfile(), getc_unlocked(), and funlockfile(), those are
106 used by default. On systems (like Windows) without getc_unlocked(),
107 a complicated (but still thread-safe) method using fgets() is used by
108 default.
109
110 You can force use of the fgets() method by #define'ing
111 USE_FGETS_IN_GETLINE at build time (it may be faster than
112 getc_unlocked()).
113
114 You can force fgets() not to be used by #define'ing
115 DONT_USE_FGETS_IN_GETLINE (this is the first thing to try if std test
116 test_bufio.py fails -- and let us know if it does!).
117
118- In addition, the fileinput module, while still slower than the other
119 methods on most platforms, has been sped up too, by using
120 file.readlines(sizehint).
Guido van Rossumf61f1662001-01-10 20:13:55 +0000121
122- Support for run-time warnings has been added, including a new
123 command line option (-W) to specify the disposition of warnings.
124 See the description of the warnings module below.
125
126- Extensive changes have been made to the coercion code. This mostly
127 affects extension modules (which can now implement mixed-type
128 numerical operators without having to use coercion), but
129 occasionally, in boundary cases the coercion semantics have changed
130 subtly. Since this was a terrible gray area of the language, this
Guido van Rossumae72d872001-01-11 15:00:14 +0000131 is considered an improvement. Also note that __rcmp__ is no longer
Guido van Rossumf61f1662001-01-10 20:13:55 +0000132 supported -- instead of calling __rcmp__, __cmp__ is called with
Guido van Rossuma88479f2001-01-18 14:28:08 +0000133 reflected arguments.
Guido van Rossumf61f1662001-01-10 20:13:55 +0000134
Guido van Rossumf98eda02001-01-17 15:54:45 +0000135- In connection with the coercion changes, a new built-in singleton
136 object, NotImplemented is defined. This can be returned for
137 operations that wish to indicate they are not implemented for a
138 particular combination of arguments. From C, this is
139 Py_NotImplemented.
140
Martin v. Löwisbe4c0f52001-01-04 20:30:56 +0000141- The interpreter accepts now bytecode files on the command line even
142 if they do not have a .pyc or .pyo extension. On Linux, after executing
143
144 echo ':pyc:M::\x87\xc6\x0d\x0a::/usr/local/bin/python:' > /proc/sys/fs/binfmt_misc/register
145
146 any byte code file can be used as an executable (i.e. as an argument
147 to execve(2)).
148
Tim Peters9940b802000-12-01 07:59:35 +0000149- %[xXo] formats of negative Python longs now produce a sign
Tim Petersa3a3a032000-11-30 05:22:44 +0000150 character. In 1.6 and earlier, they never produced a sign,
151 and raised an error if the value of the long was too large
152 to fit in a Python int. In 2.0, they produced a sign if and
153 only if too large to fit in an int. This was inconsistent
154 across platforms (because the size of an int varies across
155 platforms), and inconsistent with hex() and oct(). Example:
156
157 >>> "%x" % -0x42L
Tim Peters9940b802000-12-01 07:59:35 +0000158 '-42' # in 2.1
Tim Petersa3a3a032000-11-30 05:22:44 +0000159 'ffffffbe' # in 2.0 and before, on 32-bit machines
160 >>> hex(-0x42L)
161 '-0x42L' # in all versions of Python
162
Tim Peters9940b802000-12-01 07:59:35 +0000163 The behavior of %d formats for negative Python longs remains
164 the same as in 2.0 (although in 1.6 and before, they raised
165 an error if the long didn't fit in a Python int).
166
167 %u formats don't make sense for Python longs, but are allowed
168 and treated the same as %d in 2.1. In 2.0, a negative long
169 formatted via %u produced a sign if and only if too large to
170 fit in an int. In 1.6 and earlier, a negative long formatted
171 via %u raised an error if it was too big to fit in an int.
172
Guido van Rossum3661d392000-12-12 22:10:31 +0000173- Dictionary objects have an odd new method, popitem(). This removes
174 an arbitrary item from the dictionary and returns it (in the form of
175 a (key, value) pair). This can be useful for algorithms that use a
176 dictionary as a bag of "to do" items and repeatedly need to pick one
177 item. Such algorithms normally end up running in quadratic time;
178 using popitem() they can usually be made to run in linear time.
179
Tim Peters36cdad12000-12-29 02:06:45 +0000180Standard library
181
Thomas Woutersfe385252001-01-19 23:16:56 +0000182- In the time module, the time argument to the functions strftime,
183 localtime, gmtime, asctime and ctime is now optional, defaulting to
184 the current time (in the local timezone).
185
Guido van Rossumda91f222001-01-15 16:36:08 +0000186- The ftplib module now defaults to passive mode, which is deemed a
187 more useful default given that clients are often inside firewalls
188 these days. Note that this could break if ftplib is used to connect
189 to a *server* that is inside a firewall, from outside; this is
190 expected to be a very rare situation. To fix that, you can call
191 ftp.set_pasv(0).
192
Martin v. Löwis10a27872001-01-13 09:54:41 +0000193- The module site now treats .pth files not only for path configuration,
194 but also supports extensions to the initialization code: Lines starting
195 with import are executed.
196
Guido van Rossumf61f1662001-01-10 20:13:55 +0000197- There's a new module, warnings, which implements a mechanism for
198 issuing and filtering warnings. There are some new built-in
199 exceptions that serve as warning categories, and a new command line
200 option, -W, to control warnings (e.g. -Wi ignores all warnings, -We
201 turns warnings into errors). warnings.warn(message[, category])
202 issues a warning message; this can also be called from C as
203 PyErr_Warn(category, message).
204
205- A new module xreadlines was added. This exports a single factory
206 function, xreadlines(). The intention is that this code is the
207 absolutely fastest way to iterate over all lines in an open
208 file(-like) object:
209
210 import xreadlines
211 for line in xreadlines.xreadlines(file):
212 ...do something to line...
213
214 This is equivalent to the previous the speed record holder using
215 file.readlines(sizehint). Note that if file is a real file object
216 (as opposed to a file-like object), this is equivalent:
217
218 for line in file.xreadlines():
219 ...do something to line...
220
Tim Peters36cdad12000-12-29 02:06:45 +0000221- The bisect module has new functions bisect_left, insort_left,
222 bisect_right and insort_right. The old names bisect and insort
223 are now aliases for bisect_right and insort_right. XXX_right
224 and XXX_left methods differ in what happens when the new element
225 compares equal to one or more elements already in the list: the
226 XXX_left methods insert to the left, the XXX_right methods to the
Tim Peters742bb6f2001-01-05 08:05:32 +0000227 right. Code that doesn't care where equal elements end up should
228 continue to use the old, short names ("bisect" and "insort").
Tim Peters36cdad12000-12-29 02:06:45 +0000229
Andrew M. Kuchlingf6f3a892001-01-13 14:53:34 +0000230- The new curses.panel module wraps the panel library that forms part
231 of SYSV curses and ncurses. Contributed by Thomas Gellekum.
232
Guido van Rossumf61f1662001-01-10 20:13:55 +0000233- The SocketServer module now sets the allow_reuse_address flag by
234 default in the TCPServer class.
235
236- A new function, sys._getframe(), returns the stack frame pointer of
237 the caller. This is intended only as a building block for
238 higher-level mechanisms such as string interpolation.
239
240Build issues
241
Guido van Rossum1e33bdc2001-01-23 03:17:00 +0000242- For Unix (and Unix-compatible) builds, configuration and building of
243 extension modules is now greatly automated. Rather than having to
244 edit the Modules/Setup file to indicate which modules should be
245 built and where their include files and libraries are, a
246 distutils-based setup.py script now takes care of building most
247 extension modules. All extension modules built this way are built
248 as shared libraries. Only a few modules that must be linked
249 statically are still listed in the Setup file; you won't need to
250 edit their configuration.
251
252- Python should now build out of the box on Cygwin. If it doesn't,
253 mail to Jason Tishler (jlt63 at users.sourceforge.net).
Guido van Rossumf61f1662001-01-10 20:13:55 +0000254
255- Python now always uses its own (renamed) implementation of getopt()
256 -- there's too much variation among C library getopt()
257 implementations.
258
259- C++ compilers are better supported; the CXX macro is always set to a
260 C++ compiler if one is found.
Tim Peters36cdad12000-12-29 02:06:45 +0000261
Tim Petersd92dfe02000-12-12 01:18:41 +0000262Windows changes
263
264- select module: By default under Windows, a select() call
265 can specify no more than 64 sockets. Python now boosts
266 this Microsoft default to 512. If you need even more than
267 that, see the MS docs (you'll need to #define FD_SETSIZE
268 and recompile Python from source).
269
Guido van Rossumf61f1662001-01-10 20:13:55 +0000270- Support for Windows 3.1, DOS and OS/2 is gone. The Lib/dos-8x3
271 subdirectory is no more!
272
Tim Petersa3a3a032000-11-30 05:22:44 +0000273
Jeremy Hyltond6e20232000-10-16 20:08:38 +0000274What's New in Python 2.0?
Fred Drake1a640502000-10-16 20:27:25 +0000275=========================
Guido van Rossum61000331997-08-15 04:39:58 +0000276
Guido van Rossum8ed602b2000-09-01 22:34:33 +0000277Below is a list of all relevant changes since release 1.6. Older
Guido van Rossumf2ffce02000-09-05 04:38:34 +0000278changes are in the file HISTORY. If you are making the jump directly
279from Python 1.5.2 to 2.0, make sure to read the section for 1.6 in the
280HISTORY file! Many important changes listed there.
Guido van Rossum61000331997-08-15 04:39:58 +0000281
Guido van Rossumf2ffce02000-09-05 04:38:34 +0000282Alternatively, a good overview of the changes between 1.5.2 and 2.0 is
283the document "What's New in Python 2.0" by Kuchling and Moshe Zadka:
284http://starship.python.net/crew/amk/python/writing/new-python/.
Guido van Rossum1f83cce1997-10-06 21:04:35 +0000285
Guido van Rossumf2ffce02000-09-05 04:38:34 +0000286--Guido van Rossum (home page: http://www.pythonlabs.com/~guido/)
Guido van Rossum437cfe81999-04-08 20:17:57 +0000287
288======================================================================
289
Jeremy Hyltond6e20232000-10-16 20:08:38 +0000290What's new in 2.0 (since release candidate 1)?
291==============================================
292
293Standard library
294
295- The copy_reg module was modified to clarify its intended use: to
296 register pickle support for extension types, not for classes.
297 pickle() will raise a TypeError if it is passed a class.
298
299- Fixed a bug in gettext's "normalize and expand" code that prevented
300 it from finding an existing .mo file.
301
302- Restored support for HTTP/0.9 servers in httplib.
303
Tim Peters989b7b92000-10-16 20:24:53 +0000304- The math module was changed to stop raising OverflowError in case of
305 underflow, and return 0 instead in underflow cases. Whether Python
306 used to raise OverflowError in case of underflow was platform-
307 dependent (it did when the platform math library set errno to ERANGE
308 on underflow).
Jeremy Hyltond6e20232000-10-16 20:08:38 +0000309
310- Fixed a bug in StringIO that occurred when the file position was not
311 at the end of the file and write() was called with enough data to
312 extend past the end of the file.
313
314- Fixed a bug that caused Tkinter error messages to get lost on
315 Windows. The bug was fixed by replacing direct use of
316 interp->result with Tcl_GetStringResult(interp).
317
318- Fixed bug in urllib2 that caused it to fail when it received an HTTP
319 redirect response.
320
321- Several changes were made to distutils: Some debugging code was
322 removed from util. Fixed the installer used when an external zip
323 program (like WinZip) is not found; the source code for this
324 installer is in Misc/distutils. check_lib() was modified to behave
325 more like AC_CHECK_LIB by add other_libraries() as a parameter. The
326 test for whether installed modules are on sys.path was changed to
327 use both normcase() and normpath().
328
Jeremy Hyltond867a2c2000-10-16 20:41:38 +0000329- Several minor bugs were fixed in the xml package (the minidom,
330 pulldom, expatreader, and saxutils modules).
Jeremy Hyltond6e20232000-10-16 20:08:38 +0000331
332- The regression test driver (regrtest.py) behavior when invoked with
333 -l changed: It now reports a count of objects that are recognized as
334 garbage but not freed by the garbage collector.
335
Tim Peters989b7b92000-10-16 20:24:53 +0000336- The regression test for the math module was changed to test
337 exceptional behavior when the test is run in verbose mode. Python
338 cannot yet guarantee consistent exception behavior across platforms,
339 so the exception part of test_math is run only in verbose mode, and
340 may fail on your platform.
Jeremy Hyltond6e20232000-10-16 20:08:38 +0000341
342Internals
343
344- PyOS_CheckStack() has been disabled on Win64, where it caused
345 test_sre to fail.
346
347Build issues
348
349- Changed compiler flags, so that gcc is always invoked with -Wall and
350 -Wstrict-prototypes. Users compiling Python with GCC should see
351 exactly one warning, except if they have passed configure the
Tim Peters989b7b92000-10-16 20:24:53 +0000352 --with-pydebug flag. The expected warning is for getopt() in
Tim Petersadfb94f2000-10-16 20:51:33 +0000353 Modules/main.c. This warning will be fixed for Python 2.1.
Jeremy Hyltond6e20232000-10-16 20:08:38 +0000354
Tim Petersa3a3a032000-11-30 05:22:44 +0000355- Fixed configure to add -threads argument during linking on OSF1.
Jeremy Hyltond6e20232000-10-16 20:08:38 +0000356
357Tools and other miscellany
358
359- The compiler in Tools/compiler was updated to support the new
360 language features introduced in 2.0: extended print statement, list
361 comprehensions, and augmented assignments. The new compiler should
362 also be backwards compatible with Python 1.5.2; the compiler will
363 always generate code for the version of the interpreter it runs
Tim Petersa3a3a032000-11-30 05:22:44 +0000364 under.
Jeremy Hyltond6e20232000-10-16 20:08:38 +0000365
Jeremy Hyltoned9e6442000-10-09 18:26:42 +0000366What's new in 2.0 release candidate 1 (since beta 2)?
367=====================================================
368
Jeremy Hylton6040aaa2000-10-09 21:27:22 +0000369What is release candidate 1?
370
371We believe that release candidate 1 will fix all known bugs that we
372intend to fix for the 2.0 final release. This release should be a bit
373more stable than the previous betas. We would like to see even more
374widespread testing before the final release, so we are producing this
375release candidate. The final release will be exactly the same unless
376any show-stopping (or brown bag) bugs are found by testers of the
377release candidate.
378
Jeremy Hyltoned9e6442000-10-09 18:26:42 +0000379All the changes since the last beta release are bug fixes or changes
Jeremy Hyltond6e20232000-10-16 20:08:38 +0000380to support building Python for specific platforms.
Jeremy Hyltoned9e6442000-10-09 18:26:42 +0000381
382Core language, builtins, and interpreter
383
384- A bug that caused crashes when __coerce__ was used with augmented
385 assignment, e.g. +=, was fixed.
386
387- Raise ZeroDivisionError when raising zero to a negative number,
388 e.g. 0.0 ** -2.0. Note that math.pow is unrelated to the builtin
389 power operator and the result of math.pow(0.0, -2.0) will vary by
390 platform. On Linux, it raises a ValueError.
391
392- A bug in Unicode string interpolation was fixed that occasionally
393 caused errors with formats including "%%". For example, the
394 following expression "%% %s" % u"abc" no longer raises a TypeError.
395
396- Compilation of deeply nested expressions raises MemoryError instead
397 of SyntaxError, e.g. eval("[" * 50 + "]" * 50).
398
399- In 2.0b2 on Windows, the interpreter wrote .pyc files in text mode,
400 rendering them useless. They are now written in binary mode again.
401
402Standard library
403
404- Keyword arguments are now accepted for most pattern and match object
405 methods in SRE, the standard regular expression engine.
406
Jeremy Hyltond6e20232000-10-16 20:08:38 +0000407- In SRE, fixed error with negative lookahead and lookbehind that
Jeremy Hylton32e20ff2000-10-09 19:48:11 +0000408 manifested itself as a runtime error in patterns like "(?<!abc)(def)".
Jeremy Hyltoned9e6442000-10-09 18:26:42 +0000409
Jeremy Hyltond6e20232000-10-16 20:08:38 +0000410- Several bugs in the Unicode handling and error handling in _tkinter
411 were fixed.
Jeremy Hyltoned9e6442000-10-09 18:26:42 +0000412
413- Fix memory management errors in Merge() and Tkapp_Call() routines.
414
415- Several changes were made to cStringIO to make it compatible with
416 the file-like object interface and with StringIO. If operations are
417 performed on a closed object, an exception is raised. The truncate
418 method now accepts a position argument and readline accepts a size
Tim Petersa3a3a032000-11-30 05:22:44 +0000419 argument.
Jeremy Hyltoned9e6442000-10-09 18:26:42 +0000420
421- There were many changes made to the linuxaudiodev module and its
422 test suite; as a result, a short, unexpected audio sample should now
Tim Petersa3a3a032000-11-30 05:22:44 +0000423 play when the regression test is run.
Jeremy Hyltoned9e6442000-10-09 18:26:42 +0000424
425 Note that this module is named poorly, because it should work
426 correctly on any platform that supports the Open Sound System
Tim Petersa3a3a032000-11-30 05:22:44 +0000427 (OSS).
Jeremy Hyltoned9e6442000-10-09 18:26:42 +0000428
429 The module now raises exceptions when errors occur instead of
430 crashing. It also defines the AFMT_A_LAW format (logarithmic A-law
431 audio) and defines a getptr() method that calls the
432 SNDCTL_DSP_GETxPTR ioctl defined in the OSS Programmer's Guide.
433
434- The library_version attribute, introduced in an earlier beta, was
435 removed because it can not be supported with early versions of the C
436 readline library, which provides no way to determine the version at
437 compile-time.
438
439- The binascii module is now enabled on Win64.
440
Tim Peters46446d62000-10-09 21:19:31 +0000441- tokenize.py no longer suffers "recursion depth" errors when parsing
442 programs with very long string literals.
443
Jeremy Hyltoned9e6442000-10-09 18:26:42 +0000444Internals
445
Jeremy Hyltond6e20232000-10-16 20:08:38 +0000446- Fixed several buffer overflow vulnerabilities in calculate_path(),
Jeremy Hyltoned9e6442000-10-09 18:26:42 +0000447 which is called when the interpreter starts up to determine where
448 the standard library is installed. These vulnerabilities affect all
449 previous versions of Python and can be exploited by setting very
450 long values for PYTHONHOME or argv[0]. The risk is greatest for a
451 setuid Python script, although use of the wrapper in
452 Misc/setuid-prog.c will eliminate the vulnerability.
453
454- Fixed garbage collection bugs in instance creation that were
455 triggered when errors occurred during initialization. The solution,
456 applied in cPickle and in PyInstance_New(), is to call
457 PyObject_GC_Init() after the initialization of the object's
458 container attributes is complete.
459
460- pyexpat adds definitions of PyModule_AddStringConstant and
461 PyModule_AddObject if the Python version is less than 2.0, which
462 provides compatibility with PyXML on Python 1.5.2.
463
464- If the platform has a bogus definition for LONG_BIT (the number of
465 bits in a long), an error will be reported at compile time.
466
467- Fix bugs in _PyTuple_Resize() which caused hard-to-interpret garbage
468 collection crashes and possibly other, unreported crashes.
469
470- Fixed a memory leak in _PyUnicode_Fini().
471
472Build issues
473
474- configure now accepts a --with-suffix option that specifies the
Jeremy Hyltond6e20232000-10-16 20:08:38 +0000475 executable suffix. This is useful for builds on Cygwin and Mac OS
Tim Petersa3a3a032000-11-30 05:22:44 +0000476 X, for example.
Jeremy Hyltoned9e6442000-10-09 18:26:42 +0000477
478- The mmap.PAGESIZE constant is now initialized using sysconf when
479 possible, which eliminates a dependency on -lucb for Reliant UNIX.
480
481- The md5 file should now compile on all platforms.
482
483- The select module now compiles on platforms that do not define
484 POLLRDNORM and related constants.
485
486- Darwin (Mac OS X): Initial support for static builds on this
Tim Petersa3a3a032000-11-30 05:22:44 +0000487 platform.
Jeremy Hyltoned9e6442000-10-09 18:26:42 +0000488
Jeremy Hylton10921202000-10-09 18:34:12 +0000489- BeOS: A number of changes were made to the build and installation
490 process. ar-fake now operates on a directory of object files.
491 dl_export.h is gone, and its macros now appear on the mwcc command
492 line during build on PPC BeOS.
493
Jeremy Hyltond6e20232000-10-16 20:08:38 +0000494- Platform directory in lib/python2.0 is "plat-beos5" (or
Jeremy Hylton10921202000-10-09 18:34:12 +0000495 "plat-beos4", if building on BeOS 4.5), rather than "plat-beos".
Jeremy Hyltoned9e6442000-10-09 18:26:42 +0000496
497- Cygwin: Support for shared libraries, Tkinter, and sockets.
498
499- SunOS 4.1.4_JL: Fix test for directory existence in configure.
500
501Tools and other miscellany
502
503- Removed debugging prints from main used with freeze.
504
Tim Peters46446d62000-10-09 21:19:31 +0000505- IDLE auto-indent no longer crashes when it encounters Unicode
506 characters.
Jeremy Hylton1b618592000-09-26 05:32:36 +0000507
508What's new in 2.0 beta 2 (since beta 1)?
509========================================
510
511Core language, builtins, and interpreter
512
Tim Peters482c0212000-09-26 06:33:09 +0000513- Add support for unbounded ints in %d,i,u,x,X,o formats; for example
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000514 "%d" % 2L**64 == "18446744073709551616".
Jeremy Hylton1b618592000-09-26 05:32:36 +0000515
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000516- Add -h and -V command line options to print the usage message and
517 Python version number and exit immediately.
518
Jeremy Hyltonfa2e2c12000-09-26 16:31:30 +0000519- eval() and exec accept Unicode objects as code parameters.
520
521- getattr() and setattr() now also accept Unicode objects for the
522 attribute name, which are converted to strings using the default
523 encoding before lookup.
524
525- Multiplication on string and Unicode now does proper bounds
526 checking; e.g. 'a' * 65536 * 65536 will raise ValueError, "repeated
527 string is too long."
528
529- Better error message when continue is found in try statement in a
Tim Petersa3a3a032000-11-30 05:22:44 +0000530 loop.
Jeremy Hyltonfa2e2c12000-09-26 16:31:30 +0000531
Jeremy Hylton1b618592000-09-26 05:32:36 +0000532
533Standard library and extensions
534
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000535- array: reverse() method of array now works. buffer_info() now does
Jeremy Hylton1b618592000-09-26 05:32:36 +0000536 argument checking; it still takes no arguments.
537
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000538- asyncore/asynchat: Included most recent version from Sam Rushing.
Jeremy Hylton1b618592000-09-26 05:32:36 +0000539
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000540- cgi: Accept '&' or ';' as separator characters when parsing form data.
Jeremy Hylton1b618592000-09-26 05:32:36 +0000541
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000542- CGIHTTPServer: Now works on Windows (and perhaps even Mac).
Jeremy Hylton1b618592000-09-26 05:32:36 +0000543
544- ConfigParser: When reading the file, options spelled in upper case
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000545 letters are now correctly converted to lowercase.
Jeremy Hylton1b618592000-09-26 05:32:36 +0000546
547- copy: Copy Unicode objects atomically.
548
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000549- cPickle: Fail gracefully when copy_reg can't be imported.
Jeremy Hylton1b618592000-09-26 05:32:36 +0000550
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000551- cStringIO: Implemented readlines() method.
Jeremy Hylton1b618592000-09-26 05:32:36 +0000552
Fred Drake67233bc2000-09-26 16:40:27 +0000553- dbm: Add get() and setdefault() methods to dbm object. Add constant
554 `library' to module that names the library used. Added doc strings
555 and method names to error messages. Uses configure to determine
556 which ndbm.h file to include; Berkeley DB's nbdm and GDBM's ndbm is
557 now available options.
Jeremy Hylton1b618592000-09-26 05:32:36 +0000558
559- distutils: Update to version 0.9.3.
560
561- dl: Add several dl.RTLD_ constants.
562
563- fpectl: Now supported on FreeBSD.
564
565- gc: Add DEBUG_SAVEALL option. When enabled all garbage objects
566 found by the collector will be saved in gc.garbage. This is useful
567 for debugging a program that creates reference cycles.
568
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000569- httplib: Three changes: Restore support for set_debuglevel feature
Jeremy Hylton1b618592000-09-26 05:32:36 +0000570 of HTTP class. Do not close socket on zero-length response. Do not
571 crash when server sends invalid content-length header.
572
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000573- mailbox: Mailbox class conforms better to qmail specifications.
Jeremy Hylton1b618592000-09-26 05:32:36 +0000574
Jeremy Hyltonfa2e2c12000-09-26 16:31:30 +0000575- marshal: When reading a short, sign-extend on platforms where shorts
576 are bigger than 16 bits. When reading a long, repair the unportable
577 sign extension that was being done for 64-bit machines. (It assumed
578 that signed right shift sign-extends.)
579
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000580- operator: Add contains(), invert(), __invert__() as aliases for
581 __contains__(), inv(), and __inv__() respectively.
Jeremy Hylton1b618592000-09-26 05:32:36 +0000582
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000583- os: Add support for popen2() and popen3() on all platforms where
584 fork() exists. (popen4() is still in the works.)
Jeremy Hylton1b618592000-09-26 05:32:36 +0000585
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000586- os: (Windows only:) Add startfile() function that acts like double-
Tim Peters482c0212000-09-26 06:33:09 +0000587 clicking on a file in Explorer (or passing the file name to the
588 DOS "start" command).
Jeremy Hylton1b618592000-09-26 05:32:36 +0000589
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000590- os.path: (Windows, DOS:) Treat trailing colon correctly in
Tim Peters482c0212000-09-26 06:33:09 +0000591 os.path.join. os.path.join("a:", "b") yields "a:b".
Jeremy Hylton1b618592000-09-26 05:32:36 +0000592
593- pickle: Now raises ValueError when an invalid pickle that contains
594 a non-string repr where a string repr was expected. This behavior
595 matches cPickle.
596
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000597- posixfile: Remove broken __del__() method.
Jeremy Hylton1b618592000-09-26 05:32:36 +0000598
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000599- py_compile: support CR+LF line terminators in source file.
Jeremy Hylton1b618592000-09-26 05:32:36 +0000600
601- readline: Does not immediately exit when ^C is hit when readline and
Jeremy Hyltonfa2e2c12000-09-26 16:31:30 +0000602 threads are configured. Adds definition of rl_library_version. (The
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000603 latter addition requires GNU readline 2.2 or later.)
Jeremy Hylton1b618592000-09-26 05:32:36 +0000604
605- rfc822: Domain literals returned by AddrlistClass method
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000606 getdomainliteral() are now properly wrapped in brackets.
Jeremy Hylton1b618592000-09-26 05:32:36 +0000607
608- site: sys.setdefaultencoding() should only be called in case the
Tim Peters482c0212000-09-26 06:33:09 +0000609 standard default encoding ("ascii") is changed. This saves quite a
Jeremy Hylton1b618592000-09-26 05:32:36 +0000610 few cycles during startup since the first call to
611 setdefaultencoding() will initialize the codec registry and the
612 encodings package.
613
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000614- socket: Support for size hint in readlines() method of object returned
615 by makefile().
Jeremy Hylton1b618592000-09-26 05:32:36 +0000616
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000617- sre: Added experimental expand() method to match objects. Does not
Jeremy Hylton625915e2000-10-02 13:43:33 +0000618 use buffer interface on Unicode strings. Does not hang if group id
Jeremy Hylton1b618592000-09-26 05:32:36 +0000619 is followed by whitespace.
620
Tim Petersa3a3a032000-11-30 05:22:44 +0000621- StringIO: Size hint in readlines() is now supported as documented.
Jeremy Hylton1b618592000-09-26 05:32:36 +0000622
623- struct: Check ranges for bytes and shorts.
624
625- urllib: Improved handling of win32 proxy settings. Fixed quote and
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000626 quote_plus functions so that the always encode a comma.
Jeremy Hylton1b618592000-09-26 05:32:36 +0000627
628- Tkinter: Image objects are now guaranteed to have unique ids. Set
629 event.delta to zero if Tk version doesn't support mousewheel.
630 Removed some debugging prints.
631
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000632- UserList: now implements __contains__().
Jeremy Hylton1b618592000-09-26 05:32:36 +0000633
Fred Drake67233bc2000-09-26 16:40:27 +0000634- webbrowser: On Windows, use os.startfile() instead of os.popen(),
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000635 which works around a bug in Norton AntiVirus 2000 that leads directly
636 to a Blue Screen freeze.
Jeremy Hylton1b618592000-09-26 05:32:36 +0000637
638- xml: New version detection code allows PyXML to override standard
639 XML package if PyXML version is greater than 0.6.1.
640
Fred Drake64bb3802000-09-26 16:21:35 +0000641- xml.dom: DOM level 1 support for basic XML. Includes xml.dom.minidom
642 (conventional DOM), and xml.dom.pulldom, which allows building the DOM
643 tree only for nodes which are sufficiently interesting to a specific
644 application. Does not provide the HTML-specific extensions. Still
645 undocumented.
Jeremy Hylton1b618592000-09-26 05:32:36 +0000646
Fred Drake64bb3802000-09-26 16:21:35 +0000647- xml.sax: SAX 2 support for Python, including all the handler
648 interfaces needed to process XML 1.0 compliant XML. Some
649 documentation is already available.
Jeremy Hylton1b618592000-09-26 05:32:36 +0000650
Fred Drake64bb3802000-09-26 16:21:35 +0000651- pyexpat: Renamed to xml.parsers.expat since this is part of the new,
652 packagized XML support.
Jeremy Hylton1b618592000-09-26 05:32:36 +0000653
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000654
Jeremy Hylton1b618592000-09-26 05:32:36 +0000655C API
656
657- Add three new convenience functions for module initialization --
658 PyModule_AddObject(), PyModule_AddIntConstant(), and
659 PyModule_AddStringConstant().
660
Jeremy Hyltonfa2e2c12000-09-26 16:31:30 +0000661- Cleaned up definition of NULL in C source code; all definitions were
Jeremy Hylton1b618592000-09-26 05:32:36 +0000662 removed and add #error to Python.h if NULL isn't defined after
663 #include of stdio.h.
664
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000665- Py_PROTO() macros that were removed in 2.0b1 have been restored for
Jeremy Hylton1b618592000-09-26 05:32:36 +0000666 backwards compatibility (at the source level) with old extensions.
667
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000668- A wrapper API was added for signal() and sigaction(). Instead of
669 either function, always use PyOS_getsig() to get a signal handler
670 and PyOS_setsig() to set one. A new convenience typedef
671 PyOS_sighandler_t is defined for the type of signal handlers.
Jeremy Hylton1b618592000-09-26 05:32:36 +0000672
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000673- Add PyString_AsStringAndSize() function that provides access to the
Jeremy Hylton1b618592000-09-26 05:32:36 +0000674 internal data buffer and size of a string object -- or the default
675 encoded version of a Unicode object.
676
Jeremy Hyltonfa2e2c12000-09-26 16:31:30 +0000677- PyString_Size() and PyString_AsString() accept Unicode objects.
678
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000679- The standard header <limits.h> is now included by Python.h (if it
Fred Drake64bb3802000-09-26 16:21:35 +0000680 exists). INT_MAX and LONG_MAX will always be defined, even if
681 <limits.h> is not available.
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000682
Jeremy Hyltonfa2e2c12000-09-26 16:31:30 +0000683- PyFloat_FromString takes a second argument, pend, that was
684 effectively useless. It is now officially useless but preserved for
685 backwards compatibility. If the pend argument is not NULL, *pend is
686 set to NULL.
687
688- PyObject_GetAttr() and PyObject_SetAttr() now accept Unicode objects
689 for the attribute name. See note on getattr() above.
690
691- A few bug fixes to argument processing for Unicode.
692 PyArg_ParseTupleAndKeywords() now accepts "es#" and "es".
693 PyArg_Parse() special cases "s#" for Unicode objects; it returns a
694 pointer to the default encoded string data instead of to the raw
Tim Petersa3a3a032000-11-30 05:22:44 +0000695 UTF-16.
Jeremy Hyltonfa2e2c12000-09-26 16:31:30 +0000696
697- Py_BuildValue accepts B format (for bgen-generated code).
698
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000699
Jeremy Hylton1b618592000-09-26 05:32:36 +0000700Internals
701
702- On Unix, fix code for finding Python installation directory so that
703 it works when argv[0] is a relative path.
704
Andrew M. Kuchlinga1099be2000-12-15 01:16:43 +0000705- Added a true unicode_internal_encode() function and fixed the
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000706 unicode_internal_decode function() to support Unicode objects directly
Jeremy Hylton1b618592000-09-26 05:32:36 +0000707 rather than by generating a copy of the object.
708
Tim Peters482c0212000-09-26 06:33:09 +0000709- Several of the internal Unicode tables are much smaller now, and
710 the source code should be much friendlier to weaker compilers.
Jeremy Hylton1b618592000-09-26 05:32:36 +0000711
Jeremy Hylton97693b02000-09-26 17:42:51 +0000712- In the garbage collector: Fixed bug in collection of tuples. Fixed
713 bug that caused some instances to be removed from the container set
714 while they were still live. Fixed parsing in gc.set_debug() for
715 platforms where sizeof(long) > sizeof(int).
Jeremy Hyltonfa2e2c12000-09-26 16:31:30 +0000716
717- Fixed refcount problem in instance deallocation that only occurred
718 when Py_REF_DEBUG was defined and Py_TRACE_REFS was not.
719
Jeremy Hyltonfa2e2c12000-09-26 16:31:30 +0000720- On Windows, getpythonregpath is now protected against null data in
721 registry key.
722
723- On Unix, create .pyc/.pyo files with O_EXCL flag to avoid a race
Tim Petersa3a3a032000-11-30 05:22:44 +0000724 condition.
Jeremy Hyltonfa2e2c12000-09-26 16:31:30 +0000725
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000726
Jeremy Hylton1b618592000-09-26 05:32:36 +0000727Build and platform-specific issues
728
729- Better support of GNU Pth via --with-pth configure option.
730
Jeremy Hyltonfa2e2c12000-09-26 16:31:30 +0000731- Python/C API now properly exposed to dynamically-loaded extension
732 modules on Reliant UNIX.
Jeremy Hylton1b618592000-09-26 05:32:36 +0000733
734- Changes for the benefit of SunOS 4.1.4 (really!). mmapmodule.c:
735 Don't define MS_SYNC to be zero when it is undefined. Added missing
736 prototypes in posixmodule.c.
737
Jeremy Hyltonfa2e2c12000-09-26 16:31:30 +0000738- Improved support for HP-UX build. Threads should now be correctly
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000739 configured (on HP-UX 10.20 and 11.00).
Jeremy Hylton1b618592000-09-26 05:32:36 +0000740
Jeremy Hyltonfa2e2c12000-09-26 16:31:30 +0000741- Fix largefile support on older NetBSD systems and OpenBSD by adding
742 define for TELL64.
743
744
745Tools and other miscellany
746
747- ftpmirror: Call to main() is wrapped in if __name__ == "__main__".
748
749- freeze: The modulefinder now works with 2.0 opcodes.
750
Tim Petersa3a3a032000-11-30 05:22:44 +0000751- IDLE:
Jeremy Hyltonfa2e2c12000-09-26 16:31:30 +0000752 Move hackery of sys.argv until after the Tk instance has been
753 created, which allows the application-specific Tkinter
754 initialization to be executed if present; also pass an explicit
755 className parameter to the Tk() constructor.
Fred Drake64bb3802000-09-26 16:21:35 +0000756
Jeremy Hylton1b618592000-09-26 05:32:36 +0000757
758What's new in 2.0 beta 1?
759=========================
760
Guido van Rossumf2ffce02000-09-05 04:38:34 +0000761Source Incompatibilities
762------------------------
763
764None. Note that 1.6 introduced several incompatibilities with 1.5.2,
765such as single-argument append(), connect() and bind(), and changes to
766str(long) and repr(float).
767
768
769Binary Incompatibilities
770------------------------
771
772- Third party extensions built for Python 1.5.x or 1.6 cannot be used
773with Python 2.0; these extensions will have to be rebuilt for Python
7742.0.
775
776- On Windows, attempting to import a third party extension built for
777Python 1.5.x or 1.6 results in an immediate crash; there's not much we
778can do about this. Check your PYTHONPATH environment variable!
779
780- Python bytecode files (*.pyc and *.pyo) are not compatible between
781releases.
782
783
784Overview of Changes Since 1.6
785-----------------------------
786
787There are many new modules (including brand new XML support through
788the xml package, and i18n support through the gettext module); a list
789of all new modules is included below. Lots of bugs have been fixed.
790
Jeremy Hylton24c3d602000-09-05 19:36:26 +0000791The process for making major new changes to the language has changed
792since Python 1.6. Enhancements must now be documented by a Python
793Enhancement Proposal (PEP) before they can be accepted.
794
Guido van Rossumf2ffce02000-09-05 04:38:34 +0000795There are several important syntax enhancements, described in more
796detail below:
797
798 - Augmented assignment, e.g. x += 1
799
800 - List comprehensions, e.g. [x**2 for x in range(10)]
801
802 - Extended import statement, e.g. import Module as Name
803
804 - Extended print statement, e.g. print >> file, "Hello"
805
806Other important changes:
807
808 - Optional collection of cyclical garbage
809
Jeremy Hylton24c3d602000-09-05 19:36:26 +0000810Python Enhancement Proposal (PEP)
811---------------------------------
812
813PEP stands for Python Enhancement Proposal. A PEP is a design
814document providing information to the Python community, or describing
815a new feature for Python. The PEP should provide a concise technical
816specification of the feature and a rationale for the feature.
817
818We intend PEPs to be the primary mechanisms for proposing new
819features, for collecting community input on an issue, and for
820documenting the design decisions that have gone into Python. The PEP
821author is responsible for building consensus within the community and
822documenting dissenting opinions.
823
824The PEPs are available at http://python.sourceforge.net/peps/.
Guido van Rossumf2ffce02000-09-05 04:38:34 +0000825
826Augmented Assignment
827--------------------
828
829This must have been the most-requested feature of the past years!
830Eleven new assignment operators were added:
831
Guido van Rossume905e952000-09-05 12:42:46 +0000832 += -= *= /= %= **= <<= >>= &= ^= |=
Guido van Rossumf2ffce02000-09-05 04:38:34 +0000833
834For example,
835
836 A += B
837
838is similar to
839
840 A = A + B
841
842except that A is evaluated only once (relevant when A is something
843like dict[index].attr).
844
845However, if A is a mutable object, A may be modified in place. Thus,
846if A is a number or a string, A += B has the same effect as A = A+B
847(except A is only evaluated once); but if a is a list, A += B has the
848same effect as A.extend(B)!
849
850Classes and built-in object types can override the new operators in
851order to implement the in-place behavior; the not-in-place behavior is
852used automatically as a fallback when an object doesn't implement the
853in-place behavior. For classes, the method name is derived from the
854method name for the corresponding not-in-place operator by inserting
855an 'i' in front of the name, e.g. __iadd__ implements in-place
856__add__.
857
858Augmented assignment was implemented by Thomas Wouters.
859
860
861List Comprehensions
862-------------------
863
864This is a flexible new notation for lists whose elements are computed
865from another list (or lists). The simplest form is:
866
867 [<expression> for <variable> in <sequence>]
868
Guido van Rossum56db0952000-09-06 23:34:25 +0000869For example, [i**2 for i in range(4)] yields the list [0, 1, 4, 9].
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000870This is more efficient than a for loop with a list.append() call.
Guido van Rossumf2ffce02000-09-05 04:38:34 +0000871
872You can also add a condition:
873
874 [<expression> for <variable> in <sequence> if <condition>]
875
876For example, [w for w in words if w == w.lower()] would yield the list
877of words that contain no uppercase characters. This is more efficient
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000878than a for loop with an if statement and a list.append() call.
Guido van Rossumf2ffce02000-09-05 04:38:34 +0000879
880You can also have nested for loops and more than one 'if' clause. For
881example, here's a function that flattens a sequence of sequences::
882
883 def flatten(seq):
884 return [x for subseq in seq for x in subseq]
885
886 flatten([[0], [1,2,3], [4,5], [6,7,8,9], []])
887
888This prints
889
890 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
891
892List comprehensions originated as a patch set from Greg Ewing; Skip
Jeremy Hylton24c3d602000-09-05 19:36:26 +0000893Montanaro and Thomas Wouters also contributed. Described by PEP 202.
Guido van Rossumf2ffce02000-09-05 04:38:34 +0000894
895
896Extended Import Statement
897-------------------------
898
899Many people have asked for a way to import a module under a different
900name. This can be accomplished like this:
901
902 import foo
903 bar = foo
904 del foo
905
906but this common idiom gets old quickly. A simple extension of the
907import statement now allows this to be written as follows:
908
909 import foo as bar
910
911There's also a variant for 'from ... import':
912
913 from foo import bar as spam
914
915This also works with packages; e.g. you can write this:
916
917 import test.regrtest as regrtest
918
919Note that 'as' is not a new keyword -- it is recognized only in this
920context (this is only possible because the syntax for the import
921statement doesn't involve expressions).
922
Jeremy Hylton24c3d602000-09-05 19:36:26 +0000923Implemented by Thomas Wouters. Described by PEP 221.
Guido van Rossumf2ffce02000-09-05 04:38:34 +0000924
925
926Extended Print Statement
927------------------------
928
929Easily the most controversial new feature, this extension to the print
930statement adds an option to make the output go to a different file
931than the default sys.stdout.
932
933For example, to write an error message to sys.stderr, you can now
934write:
935
936 print >> sys.stderr, "Error: bad dog!"
937
938As a special feature, if the expression used to indicate the file
Fred Drake45888ff2000-09-29 17:09:11 +0000939evaluates to None, the current value of sys.stdout is used. Thus:
Guido van Rossumf2ffce02000-09-05 04:38:34 +0000940
941 print >> None, "Hello world"
942
943is equivalent to
944
945 print "Hello world"
946
Jeremy Hylton24c3d602000-09-05 19:36:26 +0000947Design and implementation by Barry Warsaw. Described by PEP 214.
Guido van Rossumf2ffce02000-09-05 04:38:34 +0000948
949
950Optional Collection of Cyclical Garbage
951---------------------------------------
952
953Python is now equipped with a garbage collector that can hunt down
954cyclical references between Python objects. It's no replacement for
955reference counting; in fact, it depends on the reference counts being
956correct, and decides that a set of objects belong to a cycle if all
957their reference counts can be accounted for from their references to
958each other. This devious scheme was first proposed by Eric Tiedemann,
959and brought to implementation by Neil Schemenauer.
960
961There's a module "gc" that lets you control some parameters of the
962garbage collection. There's also an option to the configure script
963that lets you enable or disable the garbage collection. In 2.0b1,
964it's on by default, so that we (hopefully) can collect decent user
965experience with this new feature. There are some questions about its
Fred Drake9f11cf82000-09-29 17:54:40 +0000966performance. If it proves to be too much of a problem, we'll turn it
Guido van Rossumf2ffce02000-09-05 04:38:34 +0000967off by default in the final 2.0 release.
968
969
970Smaller Changes
971---------------
972
973A new function zip() was added. zip(seq1, seq2, ...) is equivalent to
974map(None, seq1, seq2, ...) when the sequences have the same length;
975i.e. zip([1,2,3], [10,20,30]) returns [(1,10), (2,20), (3,30)]. When
976the lists are not all the same length, the shortest list wins:
Jeremy Hylton24c3d602000-09-05 19:36:26 +0000977zip([1,2,3], [10,20]) returns [(1,10), (2,20)]. See PEP 201.
Guido van Rossumf2ffce02000-09-05 04:38:34 +0000978
979sys.version_info is a tuple (major, minor, micro, level, serial).
980
981Dictionaries have an odd new method, setdefault(key, default).
982dict.setdefault(key, default) returns dict[key] if it exists; if not,
983it sets dict[key] to default and returns that value. Thus:
984
985 dict.setdefault(key, []).append(item)
986
987does the same work as this common idiom:
988
989 if not dict.has_key(key):
990 dict[key] = []
991 dict[key].append(item)
992
Jeremy Hylton24c3d602000-09-05 19:36:26 +0000993There are two new variants of SyntaxError that are raised for
994indentation-related errors: IndentationError and TabError.
995
996Changed \x to consume exactly two hex digits; see PEP 223. Added \U
997escape that consumes exactly eight hex digits.
Jeremy Hyltonbdebd542000-09-05 18:28:54 +0000998
999The limits on the size of expressions and file in Python source code
1000have been raised from 2**16 to 2**32. Previous versions of Python
1001were limited because the maximum argument size the Python VM accepted
1002was 2**16. This limited the size of object constructor expressions,
1003e.g. [1,2,3] or {'a':1, 'b':2}, and the size of source files. This
1004limit was raised thanks to a patch by Charles Waldman that effectively
1005fixes the problem. It is now much more likely that you will be
1006limited by available memory than by an arbitrary limit in Python.
1007
1008The interpreter's maximum recursion depth can be modified by Python
1009programs using sys.getrecursionlimit and sys.setrecursionlimit. This
1010limit is the maximum number of recursive calls that can be made by
1011Python code. The limit exists to prevent infinite recursion from
1012overflowing the C stack and causing a core dump. The default value is
10131000. The maximum safe value for a particular platform can be found
1014by running Misc/find_recursionlimit.py.
Guido van Rossumf2ffce02000-09-05 04:38:34 +00001015
1016New Modules and Packages
1017------------------------
1018
1019atexit - for registering functions to be called when Python exits.
1020
1021imputil - Greg Stein's alternative API for writing custom import
1022hooks.
1023
1024pyexpat - an interface to the Expat XML parser, contributed by Paul
1025Prescod.
1026
1027xml - a new package with XML support code organized (so far) in three
1028subpackages: xml.dom, xml.sax, and xml.parsers. Describing these
1029would fill a volume. There's a special feature whereby a
1030user-installed package named _xmlplus overrides the standard
1031xmlpackage; this is intended to give the XML SIG a hook to distribute
1032backwards-compatible updates to the standard xml package.
1033
1034webbrowser - a platform-independent API to launch a web browser.
1035
1036
Guido van Rossume905e952000-09-05 12:42:46 +00001037Changed Modules
1038---------------
1039
Jeremy Hylton24c3d602000-09-05 19:36:26 +00001040array -- new methods for array objects: count, extend, index, pop, and
1041remove
1042
1043binascii -- new functions b2a_hex and a2b_hex that convert between
1044binary data and its hex representation
1045
Jeremy Hyltonbdebd542000-09-05 18:28:54 +00001046calendar -- Many new functions that support features including control
1047over which day of the week is the first day, returning strings instead
1048of printing them. Also new symbolic constants for days of week,
1049e.g. MONDAY, ..., SUNDAY.
1050
1051cgi -- FieldStorage objects have a getvalue method that works like a
1052dictionary's get method and returns the value attribute of the object.
1053
1054ConfigParser -- The parser object has new methods has_option,
1055remove_section, remove_option, set, and write. They allow the module
1056to be used for writing config files as well as reading them.
1057
1058ftplib -- ntransfercmd(), transfercmd(), and retrbinary() all now
Guido van Rossume905e952000-09-05 12:42:46 +00001059optionally support the RFC 959 REST command.
1060
Jeremy Hyltonbdebd542000-09-05 18:28:54 +00001061gzip -- readline and readlines now accept optional size arguments
Guido van Rossume905e952000-09-05 12:42:46 +00001062
Jeremy Hyltonbdebd542000-09-05 18:28:54 +00001063httplib -- New interfaces and support for HTTP/1.1 by Greg Stein. See
1064the module doc strings for details.
Guido van Rossum830ca2a2000-09-05 15:34:16 +00001065
Jeremy Hylton24c3d602000-09-05 19:36:26 +00001066locale -- implement getdefaultlocale for Win32 and Macintosh
1067
1068marshal -- no longer dumps core when marshaling deeply nested or
1069recursive data structures
1070
1071os -- new functions isatty, seteuid, setegid, setreuid, setregid
1072
Jeremy Hyltonbdebd542000-09-05 18:28:54 +00001073os/popen2 -- popen2/popen3/popen4 support under Windows. popen2/popen3
1074support under Unix.
1075
Jeremy Hylton24c3d602000-09-05 19:36:26 +00001076os/pty -- support for openpty and forkpty
Jeremy Hyltonbdebd542000-09-05 18:28:54 +00001077
1078os.path -- fix semantics of os.path.commonprefix
1079
1080smtplib -- support for sending very long messages
1081
1082socket -- new function getfqdn()
1083
1084readline -- new functions to read, write and truncate history files.
1085The readline section of the library reference manual contains an
1086example.
1087
Jeremy Hylton24c3d602000-09-05 19:36:26 +00001088select -- add interface to poll system call
1089
Jeremy Hyltonbdebd542000-09-05 18:28:54 +00001090shutil -- new copyfileobj function
1091
1092SimpleHTTPServer, CGIHTTPServer -- Fix problems with buffering in the
1093HTTP server.
1094
Jeremy Hylton24c3d602000-09-05 19:36:26 +00001095Tkinter -- optimization of function flatten
Jeremy Hyltonbdebd542000-09-05 18:28:54 +00001096
1097urllib -- scans environment variables for proxy configuration,
Tim Peters8b092332000-09-05 20:15:25 +00001098e.g. http_proxy.
Jeremy Hyltonbdebd542000-09-05 18:28:54 +00001099
1100whichdb -- recognizes dumbdbm format
Guido van Rossume905e952000-09-05 12:42:46 +00001101
1102
1103Obsolete Modules
1104----------------
1105
1106None. However note that 1.6 made a whole slew of modules obsolete:
1107stdwin, soundex, cml, cmpcache, dircache, dump, find, grep, packmail,
1108poly, zmod, strop, util, whatsound.
1109
1110
1111Changed, New, Obsolete Tools
1112----------------------------
1113
Tim Peters8b092332000-09-05 20:15:25 +00001114None.
Guido van Rossume905e952000-09-05 12:42:46 +00001115
1116
Guido van Rossumf2ffce02000-09-05 04:38:34 +00001117C-level Changes
1118---------------
1119
1120Several cleanup jobs were carried out throughout the source code.
1121
1122All C code was converted to ANSI C; we got rid of all uses of the
1123Py_PROTO() macro, which makes the header files a lot more readable.
1124
1125Most of the portability hacks were moved to a new header file,
1126pyport.h; several other new header files were added and some old
1127header files were removed, in an attempt to create a more rational set
1128of header files. (Few of these ever need to be included explicitly;
1129they are all included by Python.h.)
1130
Guido van Rossumf2ffce02000-09-05 04:38:34 +00001131Trent Mick ensured portability to 64-bit platforms, under both Linux
Jeremy Hylton24c3d602000-09-05 19:36:26 +00001132and Win64, especially for the new Intel Itanium processor. Mick also
1133added large file support for Linux64 and Win64.
Guido van Rossumf2ffce02000-09-05 04:38:34 +00001134
Jeremy Hyltonbdebd542000-09-05 18:28:54 +00001135The C APIs to return an object's size have been update to consistently
1136use the form PyXXX_Size, e.g. PySequence_Size and PyDict_Size. In
1137previous versions, the abstract interfaces used PyXXX_Length and the
1138concrete interfaces used PyXXX_Size. The old names,
1139e.g. PyObject_Length, are still available for backwards compatibility
1140at the API level, but are deprecated.
1141
Jeremy Hylton24c3d602000-09-05 19:36:26 +00001142The PyOS_CheckStack function has been implemented on Windows by
1143Fredrik Lundh. It prevents Python from failing with a stack overflow
1144on Windows.
Jeremy Hyltonbdebd542000-09-05 18:28:54 +00001145
1146The GC changes resulted in creation of two new slots on object,
1147tp_traverse and tp_clear. The augmented assignment changes result in
Guido van Rossum4338a282000-09-06 13:02:08 +00001148the creation of a new slot for each in-place operator.
Jeremy Hyltonbdebd542000-09-05 18:28:54 +00001149
1150The GC API creates new requirements for container types implemented in
Guido van Rossum4338a282000-09-06 13:02:08 +00001151C extension modules. See Include/objimpl.h for details.
Jeremy Hyltonbdebd542000-09-05 18:28:54 +00001152
Jeremy Hylton24c3d602000-09-05 19:36:26 +00001153PyErr_Format has been updated to automatically calculate the size of
1154the buffer needed to hold the formatted result string. This change
1155prevents crashes caused by programmer error.
Jeremy Hyltonbdebd542000-09-05 18:28:54 +00001156
Jeremy Hylton24c3d602000-09-05 19:36:26 +00001157New C API calls: PyObject_AsFileDescriptor, PyErr_WriteUnraisable.
Guido van Rossume905e952000-09-05 12:42:46 +00001158
Jeremy Hylton24c3d602000-09-05 19:36:26 +00001159PyRun_AnyFileEx, PyRun_SimpleFileEx, PyRun_FileEx -- New functions
1160that are the same as their non-Ex counterparts except they take an
1161extra flag argument that tells them to close the file when done.
1162
1163XXX There were other API changes that should be fleshed out here.
Guido van Rossumab9d6f01998-08-10 22:01:13 +00001164
Tim Peters8b092332000-09-05 20:15:25 +00001165
1166Windows Changes
1167---------------
1168
1169New popen2/popen3/peopen4 in os module (see Changed Modules above).
1170
1171os.popen is much more usable on Windows 95 and 98. See Microsoft
1172Knowledge Base article Q150956. The Win9x workaround described there
1173is implemented by the new w9xpopen.exe helper in the root of your
1174Python installation. Note that Python uses this internally; it is not
1175a standalone program.
1176
1177Administrator privileges are no longer required to install Python
1178on Windows NT or Windows 2000. If you have administrator privileges,
1179Python's registry info will be written under HKEY_LOCAL_MACHINE.
1180Otherwise the installer backs off to writing Python's registry info
Guido van Rossum4338a282000-09-06 13:02:08 +00001181under HKEY_CURRENT_USER. The latter is sufficient for all "normal"
Tim Peters8b092332000-09-05 20:15:25 +00001182uses of Python, but will prevent some advanced uses from working
1183(for example, running a Python script as an NT service, or possibly
1184from CGI).
1185
1186[This was new in 1.6] The installer no longer runs a separate Tcl/Tk
1187installer; instead, it installs the needed Tcl/Tk files directly in the
1188Python directory. If you already have a Tcl/Tk installation, this
1189wastes some disk space (about 4 Megs) but avoids problems with
1190conflicting Tcl/Tk installations, and makes it much easier for Python
1191to ensure that Tcl/Tk can find all its files.
1192
1193[This was new in 1.6] The Windows installer now installs by default in
1194\Python20\ on the default volume, instead of \Program Files\Python-2.0\.
1195
Guido van Rossumf62ed9c2000-09-26 11:16:10 +00001196
1197Updates to the changes between 1.5.2 and 1.6
1198--------------------------------------------
1199
1200The 1.6 NEWS file can't be changed after the release is done, so here
1201is some late-breaking news:
1202
1203New APIs in locale.py: normalize(), getdefaultlocale(), resetlocale(),
1204and changes to getlocale() and setlocale().
1205
1206The new module is now enabled per default.
1207
1208It is not true that the encodings codecs cannot be used for normal
1209strings: the string.encode() (which is also present on 8-bit strings
1210!) allows using them for 8-bit strings too, e.g. to convert files from
1211cp1252 (Windows) to latin-1 or vice-versa.
1212
1213Japanese codecs are available from Tamito KAJIYAMA:
1214http://pseudo.grad.sccs.chukyo-u.ac.jp/~kajiyama/python/
1215
1216
Guido van Rossumab9d6f01998-08-10 22:01:13 +00001217======================================================================