blob: 94caddb5f5b940a0a09ddb4b4b6b1b46c37d063b [file] [log] [blame]
Skip Montanaroe5d7f7f2002-09-20 14:16:59 +00001+++++++++++
2Python News
3+++++++++++
4
Skip Montanaro4a385832002-09-20 17:08:52 +00005(editors: check NEWS.help for information about editing NEWS using ReST.)
6
Tim Petersaf8446f2001-12-21 21:36:50 +00007What's New in Python 2.3 alpha 1?
Tim Petersaf8446f2001-12-21 21:36:50 +00008=================================
9
Skip Montanaroe5d7f7f2002-09-20 14:16:59 +000010*XXX Release date: DD-MMM-2002 XXX*
11
Tim Petersaf8446f2001-12-21 21:36:50 +000012Type/class unification and new-style classes
Skip Montanaroe5d7f7f2002-09-20 14:16:59 +000013--------------------------------------------
Just van Rossuma797d812002-11-23 09:45:04 +000014- dict() now accepts keyword arguments so that dict(one=1,two=2)
15 is the equivalent of dict([('one',1),('two',2)]). Accordingly,
16 the existing (but undocumented) 'items' keyword argument has
17 been eliminated. This means that dict(items=someMapping) now has
18 a different meaning than before.
19
Walter Dörwaldf1715402002-11-19 20:49:15 +000020- int() now returns a long object if the argument is outside the
21 integer range, so int("4"*1000), int(1e200) and int(1L<<1000) will
22 all return long objects instead of raising an OverflowError.
Tim Petersaf8446f2001-12-21 21:36:50 +000023
Andrew M. Kuchlinge0373f82002-11-15 14:42:34 +000024- Assignment to __class__ is disallowed if either the old or the new
Guido van Rossume3438782002-08-12 03:42:03 +000025 class is a statically allocated type object (such as defined by an
Raymond Hettingerf2f2a2c2002-08-19 14:25:03 +000026 extension module). This prevents anomalies like 2.__class__ = bool.
Guido van Rossume3438782002-08-12 03:42:03 +000027
28- New-style object creation and deallocation have been sped up
29 significantly; they are now faster than classic instance creation
30 and deallocation.
31
32- The __slots__ variable can now mention "private" names, and the
33 right thing will happen (e.g. __slots__ = ["__foo"]).
34
35- The built-ins slice() and buffer() are now callable types. The
36 types classobj (formerly class), code, function, instance, and
37 instancemethod (formerly instance-method), which have no built-in
38 names but are accessible through the types module, are now also
39 callable. The type dict-proxy is renamed to dictproxy.
40
41- Cycles going through the __class__ link of a new-style instance are
42 now detected by the garbage collector.
43
44- Classes using __slots__ are now properly garbage collected.
45 [SF bug 519621]
46
47- Tightened the __slots__ rules: a slot name must be a valid Python
48 identifier.
49
50- The constructor for the module type now requires a name argument and
51 takes an optional docstring argument. Previously, this constructor
52 ignored its arguments. As a consequence, deriving a class from a
53 module (not from the module type) is now illegal; previously this
54 created an unnamed module, just like invoking the module type did.
55 [SF bug 563060]
56
57- A new type object, 'basestring', is added. This is a common base type
58 for 'str' and 'unicode', and can be used instead of
59 types.StringTypes, e.g. to test whether something is "a string":
60 isinstance(x, basestring) is True for Unicode and 8-bit strings. This
61 is an abstract base class and cannot be instantiated directly.
62
63- Changed new-style class instantiation so that when C's __new__
64 method returns something that's not a C instance, its __init__ is
65 not called. [SF bug #537450]
66
67- Fixed super() to work correctly with class methods. [SF bug #535444]
68
69- If you try to pickle an instance of a class that has __slots__ but
70 doesn't define or override __getstate__, a TypeError is now raised.
71 This is done by adding a bozo __getstate__ to the class that always
72 raises TypeError. (Before, this would appear to be pickled, but the
73 state of the slots would be lost.)
74
Tim Petersaf8446f2001-12-21 21:36:50 +000075Core and builtins
Skip Montanaroe5d7f7f2002-09-20 14:16:59 +000076-----------------
Tim Petersaf8446f2001-12-21 21:36:50 +000077
Tim Petersb9099c32002-11-12 22:08:10 +000078- Thanks to Armin Rigo, the last known way to provoke a system crash
79 by cleverly arranging for a comparison function to mutate a list
80 during a list.sort() operation has been fixed. The effect of
81 attempting to mutate a list, or even to inspect its contents or
82 length, while a sort is in progress, is not defined by the language.
83 The C implementation of Python 2.3 attempts to detect mutations,
84 and raise ValueError if one occurs, but there's no guarantee that
85 all mutations will be caught, or that any will be caught across
86 releases or implementations.
87
Martin v. Löwisa844f2d2002-10-05 09:46:48 +000088- Unicode file name processing for Windows (PEP 277) is implemented.
Mark Hammond8696ebc2002-10-08 02:44:31 +000089 All platforms now have an os.path.supports_unicode_filenames attribute,
90 which is set to True on Windows NT/2000/XP, and False elsewhere.
Martin v. Löwisa844f2d2002-10-05 09:46:48 +000091
Walter Dörwald3aeb6322002-09-02 13:14:32 +000092- Codec error handling callbacks (PEP 293) are implemented.
93 Error handling in unicode.encode or str.decode can now be customized.
94
Guido van Rossum45ec02a2002-08-19 21:43:18 +000095- A subtle change to the semantics of the built-in function intern():
96 interned strings are no longer immortal. You must keep a reference
97 to the return value intern() around to get the benefit.
98
Guido van Rossumf808b892002-08-16 03:38:10 +000099- Use of 'None' as a variable, argument or attribute name now
100 issues a SyntaxWarning. In the future, None may become a keyword.
101
Michael W. Hudsondd32a912002-08-15 14:59:02 +0000102- SET_LINENO is gone. co_lnotab is now consulted to determine when to
103 call the trace function. C code that accessed f_lineno should call
104 PyCode_Addr2Line instead (f_lineno is still there, but not kept up
105 to date).
106
Guido van Rossum9be89462002-08-14 16:11:30 +0000107- There's a new warning category, FutureWarning. This is used to warn
108 about a number of situations where the value or sign of an integer
109 result will change in Python 2.4 as a result of PEP 237 (integer
110 unification). The warnings implement stage B0 mentioned in that
111 PEP. The warnings are about the following situations:
112
113 - Octal and hex literals without 'L' prefix in the inclusive range
114 [0x80000000..0xffffffff]; these are currently negative ints, but
115 in Python 2.4 they will be positive longs with the same bit
116 pattern.
117
118 - Left shifts on integer values that cause the outcome to lose
119 bits or have a different sign than the left operand. To be
120 precise: x<<n where this currently doesn't yield the same value
121 as long(x)<<n; in Python 2.4, the outcome will be long(x)<<n.
122
123 - Conversions from ints to string that show negative values as
124 unsigned ints in the inclusive range [0x80000000..0xffffffff];
125 this affects the functions hex() and oct(), and the string
126 formatting codes %u, %o, %x, and %X. In Python 2.4, these will
127 show signed values (e.g. hex(-1) currently returns "0xffffffff";
128 in Python 2.4 it will return "-0x1").
129
Skip Montanaro979c74b2002-09-03 21:25:14 +0000130 - The bits manipulated under the cover by sys.setcheckinterval() have
131 been changed. Both the check interval and the ticker used to be
132 per-thread values. They are now just a pair of global variables. In
133 addition, the default check interval was boosted from 10 to 100
Neal Norwitz7165af22002-09-05 21:42:24 +0000134 bytecode instructions. This may have some effect on systems that
135 relied on the old default value. In particular, in multi-threaded
136 applications which try to be highly responsive, response time will
137 increase by some (perhaps imperceptible) amount.
Skip Montanaro979c74b2002-09-03 21:25:14 +0000138
Tim Petersd64c1de2002-08-12 17:36:03 +0000139- When multiplying very large integers, a version of the so-called
140 Karatsuba algorithm is now used. This is most effective if the
141 inputs have roughly the same size. If they both have about N digits,
142 Karatsuba multiplication has O(N**1.58) runtime (the exponent is
143 log_base_2(3)) instead of the previous O(N**2). Measured results may
Tim Peters012c0a32002-08-16 03:40:07 +0000144 be better or worse than that, depending on platform quirks. Besides
145 the O() improvement in raw instruction count, the Karatsuba algorithm
146 appears to have much better cache behavior on extremely large integers
147 (starting in the ballpark of a million bits). Note that this is a
148 simple implementation, and there's no intent here to compete with,
149 e.g., GMP. It gives a very nice speedup when it applies, but a package
150 devoted to fast large-integer arithmetic should run circles around it.
Tim Peters5af4e6c2002-08-12 02:31:19 +0000151
Marc-André Lemburgcc8764c2002-08-11 12:23:04 +0000152- u'%c' will now raise a ValueError in case the argument is an
153 integer outside the valid range of Unicode code point ordinals.
154
Guido van Rossumdeb09362002-08-09 17:16:30 +0000155- The tempfile module has been overhauled for enhanced security. The
156 mktemp() function is now deprecated; new, safe replacements are
157 mkstemp() (for files) and mkdtemp() (for directories), and the
158 higher-level functions NamedTemporaryFile() and TemporaryFile().
159 Use of some global variables in this module is also deprecated; the
160 new functions have keyword arguments to provide the same
161 functionality. All Lib, Tools and Demo modules that used the unsafe
162 interfaces have been updated to use the safe replacements. Thanks
163 to Zack Weinberg!
164
Guido van Rossumd81a9832002-08-09 15:57:34 +0000165- When x is an object whose class implements __mul__ and __rmul__,
166 1.0*x would correctly invoke __rmul__, but 1*x would erroneously
167 invoke __mul__. This was due to the sequence-repeat code in the int
168 type. This has been fixed now.
169
Barry Warsawd79f6832002-08-06 17:01:51 +0000170- Previously, "str1 in str2" required str1 to be a string of length 1.
171 This restriction has been relaxed to allow str1 to be a string of
172 any length. Thus "'el' in 'hello world'" returns True now.
173
Guido van Rossumb57089c2002-08-06 16:20:26 +0000174- File objects are now their own iterators. For a file f, iter(f) now
175 returns f (unless f is closed), and f.next() is similar to
176 f.readline() when EOF is not reached; however, f.next() uses a
177 readahead buffer that messes up the file position, so mixing
178 f.next() and f.readline() (or other methods) doesn't work right.
179 Calling f.seek() drops the readahead buffer, but other operations
180 don't. It so happens that this gives a nice additional speed boost
181 to "for line in file:"; the xreadlines method and corresponding
Guido van Rossumbffb2ef2002-08-09 17:17:07 +0000182 module are now obsolete. Thanks to Oren Tirosh!
Guido van Rossumb57089c2002-08-06 16:20:26 +0000183
Guido van Rossumde392d32002-08-05 14:17:20 +0000184- Encoding declarations (PEP 263, phase 1) have been implemented. A
185 comment of the form "# -*- coding: <encodingname> -*-" in the first
186 or second line of a Python source file indicates the encoding.
Martin v. Löwis00f1e3f2002-08-04 17:29:52 +0000187
Tim Petersf47630f2002-08-01 02:34:51 +0000188- list.sort() has a new implementation. While cross-platform results
189 may vary, and in data-dependent ways, this is much faster on many
190 kinds of partially ordered lists than the previous implementation,
191 and reported to be just as fast on randomly ordered lists on
192 several major platforms. This sort is also stable (if A==B and A
193 precedes B in the list at the start, A precedes B after the sort too),
194 although the language definition does not guarantee stability. A
195 potential drawback is that list.sort() may require temp space of
Skip Montanaroa2a07bc2002-09-30 15:23:01 +0000196 len(list)*2 bytes (``*4`` on a 64-bit machine). It's therefore possible
Tim Petersf47630f2002-08-01 02:34:51 +0000197 for list.sort() to raise MemoryError now, even if a comparison function
198 does not. See <http://www.python.org/sf/587076> for full details.
199
Guido van Rossum2d5389c2002-07-23 03:44:35 +0000200- All standard iterators now ensure that, once StopIteration has been
201 raised, all future calls to next() on the same iterator will also
202 raise StopIteration. There used to be various counterexamples to
203 this behavior, which could caused confusion or subtle program
204 breakage, without any benefits. (Note that this is still an
205 iterator's responsibility; the iterator framework does not enforce
206 this.)
207
Mark Hammondc0e35152002-07-16 01:32:30 +0000208- Ctrl+C handling on Windows has been made more consistent with
209 other platforms. KeyboardInterrupt can now reliably be caught,
Raymond Hettingerf2f2a2c2002-08-19 14:25:03 +0000210 and Ctrl+C at an interactive prompt no longer terminates the
Mark Hammondc0e35152002-07-16 01:32:30 +0000211 process under NT/2k/XP (it never did under Win9x). Ctrl+C will
Tim Peters5af4e6c2002-08-12 02:31:19 +0000212 interrupt time.sleep() in the main thread, and any child processes
213 created via the popen family (on win2k; we can't make win9x work
Mark Hammond8f3afc72002-08-10 06:26:31 +0000214 reliably) are also interrupted (as generally happens on for Linux/Unix.)
215 [SF bugs 231273, 439992 and 581232]
Mark Hammondc0e35152002-07-16 01:32:30 +0000216
Mark Hammond8696ebc2002-10-08 02:44:31 +0000217- sys.getwindowsversion() has been added on Windows. This
218 returns a tuple with information about the version of Windows
219 currently running.
220
Raymond Hettinger5a04aec2002-06-25 00:25:30 +0000221- Slices and repetitions of buffer objects now consistently return
222 a string. Formerly, strings would be returned most of the time,
223 but a buffer object would be returned when the repetition count
224 was one or when the slice range was all inclusive.
225
Walter Dörwald3430d702002-06-17 10:43:59 +0000226- Unicode objects in sys.path are no longer ignored but treated
227 as directory names.
228
Neal Norwitz1f68fc72002-06-14 00:50:42 +0000229- Fixed string.startswith and string.endswith builtin methods
230 so they accept negative indices. [SF bug 493951]
231
Guido van Rossumc5fe5eb2002-06-12 03:45:21 +0000232- Fixed a bug with a continue inside a try block and a yield in the
233 finally clause. [SF bug 567538]
234
Michael W. Hudson5efaf7e2002-06-11 10:55:12 +0000235- Most builtin sequences now support "extended slices", i.e. slices
Guido van Rossum2e82e712002-06-13 11:41:07 +0000236 with a third "stride" parameter. For example, "hello world"[::-1]
237 gives "dlrow olleh".
Michael W. Hudson5efaf7e2002-06-11 10:55:12 +0000238
Neal Norwitzd68f5172002-05-29 15:54:55 +0000239- A new warning PendingDeprecationWarning was added to provide
240 direction on features which are in the process of being deprecated.
241 The warning will not be printed by default. To see the pending
242 deprecations, use -Walways::PendingDeprecationWarning::
243 as a command line option or warnings.filterwarnings() in code.
244
Fred Draked0ba6362002-05-02 21:28:26 +0000245- Deprecated features of xrange objects have been removed as
246 promised. The start, stop, and step attributes and the tolist()
247 method no longer exist. xrange repetition and slicing have been
248 removed.
249
Guido van Rossum7dab2422002-04-26 19:40:56 +0000250- New builtin function enumerate(x), from PEP 279. Example:
251 enumerate("abc") is an iterator returning (0,"a"), (1,"b"), (2,"c").
252 The argument can be an arbitrary iterable object.
253
Neil Schemenauer89e3ee02002-04-26 01:58:53 +0000254- The assert statement no longer tests __debug__ at runtime. This means
255 that assert statements cannot be disabled by assigning a false value
256 to __debug__.
257
Walter Dörwald068325e2002-04-15 13:36:47 +0000258- A method zfill() was added to str and unicode, that fills a numeric
259 string to the left with zeros. For example,
260 "+123".zfill(6) -> "+00123".
261
Guido van Rossum862fe3c2002-04-15 12:36:47 +0000262- Complex numbers supported divmod() and the // and % operators, but
263 these make no sense. Since this was documented, they're being
264 deprecated now.
265
Guido van Rossum26dd8302002-04-26 20:11:29 +0000266- String and unicode methods lstrip(), rstrip() and strip() now take
267 an optional argument that specifies the characters to strip. For
268 example, "Foo!!!?!?!?".rstrip("?!") -> "Foo".
Guido van Rossum49042042002-04-13 00:59:05 +0000269
Guido van Rossumc69343b2002-04-12 19:22:48 +0000270- Added a new dict method pop(key). This removes and returns the
271 value corresponding to key. [SF patch #539949]
272
Guido van Rossum47834462002-04-04 15:21:33 +0000273- A new built-in type, bool, has been added, as well as built-in
274 names for its two values, True and False. Comparisons and sundry
275 other operations that return a truth value have been changed to
Andrew M. Kuchling21b23b02002-05-07 20:58:03 +0000276 return a bool instead. Read PEP 285 for an explanation of why this
Guido van Rossum47834462002-04-04 15:21:33 +0000277 is backward compatible.
278
Guido van Rossum95b62a62002-03-29 01:07:24 +0000279- Fixed two bugs reported as SF #535905: under certain conditions,
280 deallocating a deeply nested structure could cause a segfault in the
281 garbage collector, due to interaction with the "trashcan" code;
282 access to the current frame during destruction of a local variable
283 could access a pointer to freed memory.
284
Guido van Rossumfe0ca4a2002-06-18 21:20:13 +0000285- The optional object allocator ("pymalloc") has been enabled by
286 default. The recommended practice for memory allocation and
287 deallocation has been streamlined. A header file is included,
288 Misc/pymemcompat.h, which can be bundled with 3rd party extensions
289 and lets them use the same API with Python versions from 1.5.2
290 onwards.
Neil Schemenauer9d50d132002-03-22 17:06:59 +0000291
Martin v. Löwiscfeb3b62002-03-03 21:30:27 +0000292- PyErr_Display will provide file and line information for all exceptions
293 that have an attribute print_file_and_line, not just SyntaxErrors.
294
Marc-André Lemburge92e0a92002-02-09 11:28:43 +0000295- The UTF-8 codec will now encode and decode Unicode surrogates
296 correctly and without raising exceptions for unpaired ones.
297
Guido van Rossumadd88062002-08-15 14:01:14 +0000298- Universal newlines (PEP 278) is implemented. Briefly, using 'U'
299 instead of 'r' when opening a text file for reading changes the line
300 ending convention so that any of '\r', '\r\n', and '\n' is
301 recognized (even mixed in one file); all three are converted to
302 '\n', the standard Python line end character.
303
Neal Norwitz649b7592002-01-01 19:07:13 +0000304- file.xreadlines() now raises a ValueError if the file is closed:
305 Previously, an xreadlines object was returned which would raise
306 a ValueError when the xreadlines.next() method was called.
307
Andrew M. Kuchling21b23b02002-05-07 20:58:03 +0000308- sys.exit() inadvertently allowed more than one argument.
Neal Norwitz0c766a02002-03-27 13:03:09 +0000309 An exception will now be raised if more than one argument is used.
310
Tim Petersaf8446f2001-12-21 21:36:50 +0000311Extension modules
Skip Montanaroe5d7f7f2002-09-20 14:16:59 +0000312-----------------
Tim Petersaf8446f2001-12-21 21:36:50 +0000313
Martin v. Löwisef546b32002-11-19 08:12:57 +0000314- The PyBSDDB wrapper around the Sleepycat Berkely DB library has been
315 added as the package bsddb. The traditional bsddb module is still
316 available in source code, but not built automatically anymore, and
317 is now named bsddb185.
318
Martin v. Löwis7d41e292002-11-23 12:22:32 +0000319- unicodedata was updated to Unicode 3.2. In now also supports names
320 for Hangul syllables.
321
Neal Norwitz94a83fd2002-11-02 17:46:24 +0000322- resource.getrlimit() now returns longs instead of ints.
323
Martin v. Löwis080689c2002-10-26 14:42:02 +0000324- readline now dynamically adjusts its input/output stream if
325 sys.stdin/stdout changes.
326
Guido van Rossumba602972002-10-01 18:18:58 +0000327- The _tkinter module (and hence Tkinter) has dropped support for
328 Tcl/Tk 8.0 and 8.1. Only Tcl/Tk versions 8.2, 8.3 and 8.4 are
329 supported.
330
Martin v. Löwis658009a2002-09-16 17:26:24 +0000331- cPickle.BadPickleGet is now a class.
332
Martin v. Löwisa19bfe02002-10-16 18:28:36 +0000333- The time stamps in os.stat_result are floating point numbers
334 after stat_float_times has been called.
Martin v. Löwis94717ed2002-09-09 14:24:16 +0000335
Neal Norwitzb5673922002-09-05 21:48:07 +0000336- If the size passed to mmap.mmap() is larger than the length of the
337 file on non-Windows platforms, a ValueError is raised. [SF bug 585792]
338
Guido van Rossumb57089c2002-08-06 16:20:26 +0000339- The xreadlines module is slated for obsolescence.
340
Guido van Rossum79f0a102002-07-23 03:32:08 +0000341- The strptime function in the time module is now always available (a
342 Python implementation is used when the C library doesn't define it).
343
Guido van Rossum9562bcf2002-06-14 21:31:18 +0000344- The 'new' module is no longer an extension, but a Python module that
345 only exists for backwards compatibility. Its contents are no longer
346 functions but callable type objects.
347
Tim Peters81b92512002-04-29 01:37:32 +0000348- The bsddb.*open functions can now take 'None' as a filename.
Anthony Baxter83888952002-04-23 02:11:05 +0000349 This will create a temporary in-memory bsddb that won't be
Tim Peters81b92512002-04-29 01:37:32 +0000350 written to disk.
Anthony Baxter83888952002-04-23 02:11:05 +0000351
Martin v. Löwis0cec0ff2002-07-28 16:33:45 +0000352- posix.lchown, posix.killpg, posix.mknod, and posix.getpgid have been
353 added where available.
Martin v. Löwis06a83e92002-04-14 10:19:44 +0000354
Martin v. Löwisf0a46682002-11-03 17:20:12 +0000355- The locale module now exposes the C library's gettext interface. It
356 also has a new function getpreferredencoding.
Martin v. Löwis2e64c342002-03-27 18:49:02 +0000357
Tim Petersfbf74f22002-03-14 19:06:01 +0000358- A security hole ("double free") was found in zlib-1.1.3, a popular
359 third party compression library used by some Python modules. The
360 hole was quickly plugged in zlib-1.1.4, and the Windows build of
361 Python now ships with zlib-1.1.4.
362
Martin v. Löwis688357e2002-04-08 21:28:20 +0000363- pwd, grp, and resource return enhanced tuples now, with symbolic
364 field names.
Martin v. Löwis29001ff2002-03-01 10:47:37 +0000365
Martin v. Löwis99866332002-03-01 10:27:01 +0000366- array.array is now a type object. A new format character
367 'u' indicates Py_UNICODE arrays. For those, .tounicode and
368 .fromunicode methods are available. Arrays now support __iadd__
369 and __imul__.
370
Neal Norwitze790eae2002-01-01 21:14:12 +0000371- dl now builds on every system that has dlfcn.h. Failure in case
Martin v. Löwis93227272002-01-01 20:18:30 +0000372 of sizeof(int)!=sizeof(long)!=sizeof(void*) is delayed until dl.open
373 is called.
374
Michael W. Hudson34f20ea2002-05-27 15:08:24 +0000375- signal.sigpending, signal.sigprocmask and signal.sigsuspend have
376 been added where available.
377
Skip Montanaro8e790e72002-09-03 13:25:17 +0000378- The sys module acquired a new attribute, api_version, which evaluates
379 to the value of the PYTHON_API_VERSION macro with which the
380 interpreter was compiled.
381
Gustavo Niemeyer4e7be062002-11-06 14:06:53 +0000382- Fixed bug #470582: sre module would return a tuple (None, 'a', 'ab')
383 when applying the regular expression '^((a)c)?(ab)$' on 'ab'. It now
384 returns (None, None, 'ab'), as expected. Also fixed handling of
Gustavo Niemeyerfbceb012002-11-06 18:44:26 +0000385 lastindex/lastgroup match attributes in similar cases. For example,
Gustavo Niemeyer4e7be062002-11-06 14:06:53 +0000386 when running the expression r'(a)(b)?b' over 'ab', lastindex must be
387 1, not 2.
388
Gustavo Niemeyerc523b042002-11-07 03:28:56 +0000389- Fixed bug #581080: sre scanner was not checking the buffer limit
390 before increasing the current pointer. This was creating an infinite
391 loop in the search function, once the pointer exceeded the buffer
392 limit.
393
Thomas Heller95cb7e42002-11-07 16:23:55 +0000394- The os.fdopen function now enforces a file mode starting with the
395 letter 'r', 'w' or 'a', otherwise a ValueError is raised. This fixes
396 bug #623464.
397
Tim Petersaf8446f2001-12-21 21:36:50 +0000398Library
Skip Montanaroe5d7f7f2002-09-20 14:16:59 +0000399-------
Tim Petersaf8446f2001-12-21 21:36:50 +0000400
Martin v. Löwis4581cfa2002-11-22 08:23:09 +0000401- doctest.testmod can now be called without argument, which means to
402 test the current module.
403
Martin v. Löwisf86e8ef2002-11-22 08:08:44 +0000404- When cancelling a server that implemented threading with a keyboard
405 interrupt, the server would shut down but not terminate (waiting on
406 client threads). A new member variable, daemon_threads, was added to
407 the ThreadingMixIn class in SocketServer.py to make it explicit that
408 this behavior needs to be controlled.
409
Guido van Rossum545c2502002-11-15 13:19:58 +0000410- A new module, optparse, provides a fancy alternative to getopt for
Andrew M. Kuchlinge0373f82002-11-15 14:42:34 +0000411 command line parsing. It is a slightly modified version of Greg
Guido van Rossum545c2502002-11-15 13:19:58 +0000412 Ward's Optik package.
413
Raymond Hettinger79947162002-11-15 06:46:14 +0000414- UserDict.py now defines a DictMixin class which defines all dictionary
415 methods for classes that already have a minimum mapping interface.
416 This greatly simplifies writing classes that need to be substitutable
417 for dictionaries (such as the shelve module).
418
419- shelve.py now subclasses from UserDict.DictMixin. Now shelve supports
420 all dictionary methods. This eases the transition to persistent
Andrew M. Kuchlinge0373f82002-11-15 14:42:34 +0000421 storage for scripts originally written with dictionaries in mind.
Raymond Hettinger79947162002-11-15 06:46:14 +0000422
Guido van Rossumfda06742002-11-13 16:29:18 +0000423- A new package, logging, implements the logging API defined by PEP
424 282. The code is written by Vinay Sajip.
425
Walter Dörwald4dbf1922002-11-06 16:53:44 +0000426- StreamReader, StreamReaderWriter and StreamRecoder in the codecs
427 modules are iterators now.
428
Tim Peters9288f952002-11-05 20:38:55 +0000429- gzip.py now handles files exceeding 2GB. Files over 4GB also work
430 now (provided the OS supports it, and Python is configured with large
431 file support), but in that case the underlying gzip file format can
432 record only the least-significant 32 bits of the file size, so that
433 some tools working with gzipped files may report an incorrect file
434 size.
Tim Petersfb0ea522002-11-04 19:50:11 +0000435
Martin v. Löwis74b51ac2002-10-26 14:50:45 +0000436- xml.sax.saxutils.unescape has been added, to replace entity references
437 with their entity value.
438
Martin v. Löwis77ac4292002-10-15 15:11:13 +0000439- Queue.Queue.{put,get} now support an optional timeout argument.
440
Martin v. Löwisb24e3472002-10-13 10:28:04 +0000441- Various features of Tk 8.4 are exposed in Tkinter.py. The multiple
442 option of tkFileDialog is exposed as function askopenfile{,name}s.
Martin v. Löwis2ec36272002-10-13 10:22:08 +0000443
Martin v. Löwisb24e3472002-10-13 10:28:04 +0000444- Various configure methods of Tkinter have been stream-lined, so that
445 tag_configure, image_configure, window_configure now return a
Tim Petersfb0ea522002-11-04 19:50:11 +0000446 dictionary when invoked with no argument.
Martin v. Löwis6ce13152002-10-10 14:36:13 +0000447
Guido van Rossum2b492b62002-10-09 21:40:48 +0000448- Importing the readline module now no longer has the side effect of
449 calling setlocale(LC_CTYPE, ""). The initial "C" locale, or
450 whatever locale is explicitly set by the user, is preserved. If you
451 want repr() of 8-bit strings in your preferred encoding to preserve
452 all printable characters of that encoding, you have to add the
453 following code to your $PYTHONSTARTUP file or to your application's
454 main():
455
456 import locale
457 locale.setlocale(locale.LC_CTYPE, "")
458
Martin v. Löwise9ce0b02002-10-07 13:23:24 +0000459- shutil.move was added. shutil.copytree now reports errors as an
460 exception at the end, instead of printing error messages.
461
Marc-André Lemburg97047e22002-10-04 11:55:21 +0000462- Encoding name normalization was generalized to not only
463 replace hyphens with underscores, but also all other non-alphanumeric
464 characters (with the exception of the dot which is used for Python
465 package names during lookup). The aliases.py mapping was updated
466 to the new standard.
467
Walter Dörwald5ccaf8f2002-09-06 16:15:58 +0000468- mimetypes has two new functions: guess_all_extensions() which
469 returns a list of all known extensions for a mime type, and
470 add_type() which adds one mapping between a mime type and
471 an extension to the database.
472
Guido van Rossumd8ab35c2002-08-19 16:25:46 +0000473- New module: sets, defines the class Set that implements a mutable
474 set type using the keys of a dict to represent the set. There's
475 also a class ImmutableSet which is useful when you need sets of sets
476 or when you need to use sets as dict keys, and a class BaseSet which
477 is the base class of the two. (This is not documented yet, but
478 help(sets) gives a wealth of information.)
479
Raymond Hettingerf2f2a2c2002-08-19 14:25:03 +0000480- Added operator.pow(a,b) which is equivalent to a**b.
481
Raymond Hettingerf24eb352002-11-12 17:41:57 +0000482- Added random.sample(population,k) for random sampling without replacement.
Tim Petersb9099c32002-11-12 22:08:10 +0000483 Returns a k length list of unique elements chosen from the population.
Raymond Hettingerf24eb352002-11-12 17:41:57 +0000484
Tim Peters012c0a32002-08-16 03:40:07 +0000485- random.randrange(-sys.maxint-1, sys.maxint) no longer raises
486 OverflowError. That is, it now accepts any combination of 'start'
487 and 'stop' arguments so long as each is in the range of Python's
488 bounded integers.
489
Guido van Rossum4a57c332002-08-02 18:05:20 +0000490- New "algorithms" module: heapq, implements a heap queue. Thanks to
491 Kevin O'Connor for the code and François Pinard for an entertaining
492 write-up explaining the theory and practical uses of heaps.
493
Marc-André Lemburg58e2ff22002-07-12 14:40:04 +0000494- New encoding for the Palm OS character set: palmos.
495
Tim Peters943382c2002-07-07 03:59:34 +0000496- binascii.crc32() and the zipfile module had problems on some 64-bit
497 platforms. These have been fixed. On a platform with 8-byte C longs,
498 crc32() now returns a signed-extended 4-byte result, so that its value
499 as a Python int is equal to the value computed a 32-bit platform.
500
Martin v. Löwis7d650ca2002-06-30 15:05:00 +0000501- xml.dom.minidom.toxml and toprettyxml now take an optional encoding
502 argument.
503
Guido van Rossum9f7549b2002-06-10 21:39:42 +0000504- Some fixes in the copy module: when an object is copied through its
505 __reduce__ method, there was no check for a __setstate__ method on
506 the result [SF patch 565085]; deepcopy should treat instances of
507 custom metaclasses the same way it treats instances of type 'type'
508 [SF patch 560794].
509
Guido van Rossum5033c8e2002-06-07 12:40:52 +0000510- Sockets now support timeout mode. After s.settimeout(T), where T is
511 a float expressing seconds, subsequent operations raise an exception
512 if they cannot be completed within T seconds. To disable timeout
Guido van Rossum79f0a102002-07-23 03:32:08 +0000513 mode, use s.settimeout(None). There's also a module function,
514 socket.setdefaulttimeout(T), which sets the default for all sockets
515 created henceforth.
Guido van Rossum5033c8e2002-06-07 12:40:52 +0000516
517- getopt.gnu_getopt was added. This supports GNU-style option
518 processing, where options can be mixed with non-option arguments.
Martin v. Löwis446a25f2002-06-06 10:58:36 +0000519
Michael W. Hudsonb0dc1a32002-06-04 18:27:35 +0000520- Stop using strings for exceptions. String objects used for
521 exceptions are now classes deriving from Exception. The objects
522 changed were: Tkinter.TclError, bdb.BdbQuit, macpath.norm_error,
523 tabnanny.NannyNag, and xdrlib.Error.
Neal Norwitzb5b5a262002-06-04 17:14:07 +0000524
Walter Dörwald474458d2002-06-04 15:16:29 +0000525- Constants BOM_UTF8, BOM_UTF16, BOM_UTF16_LE, BOM_UTF16_BE,
526 BOM_UTF32, BOM_UTF32_LE and BOM_UTF32_BE that represent the Byte
527 Order Mark in UTF-8, UTF-16 and UTF-32 encodings for little and
528 big endian systems were added to the codecs module. The old names
529 BOM32_* and BOM64_* were off by a factor of 2.
530
Guido van Rossumf9257822002-06-18 20:43:18 +0000531- Added conversion functions math.degrees() and math.radians().
Raymond Hettinger87f59ee2002-05-13 04:17:32 +0000532
Raymond Hettinger9b1df1d2002-05-12 06:07:21 +0000533- ftplib.retrlines() now tests for callback is None rather than testing
534 for False. Was causing an error when given a callback object which
535 was callable but also returned len() as zero. The change may
536 create new breakage if the caller relied on the undocumented behavior
537 and called with callback set to [] or some other False value not
538 identical to None.
539
Tim Peters46c04e12002-05-05 20:40:00 +0000540- random.gauss() uses a piece of hidden state used by nothing else,
541 and the .seed() and .whseed() methods failed to reset it. In other
542 words, setting the seed didn't completely determine the sequence of
543 results produced by random.gauss(). It does now. Programs repeatedly
544 mixing calls to a seed method with calls to gauss() may see different
545 results now.
546
Fred Drake7f781c92002-05-01 20:33:53 +0000547- The pickle.Pickler class grew a clear_memo() method to mimic that
548 provided by cPickle.Pickler.
549
Tim Peters81b92512002-04-29 01:37:32 +0000550- difflib's SequenceMatcher class now does a dynamic analysis of
551 which elements are so frequent as to constitute noise. For
552 comparing files as sequences of lines, this generally works better
553 than the IS_LINE_JUNK function, and function ndiff's linejunk
554 argument defaults to None now as a result. A happy benefit is
555 that SequenceMatcher may run much faster now when applied
556 to large files with many duplicate lines (for example, C program
557 text with lots of repeated "}" and "return NULL;" lines).
558
Guido van Rossum256705b2002-04-23 13:29:43 +0000559- New Text.dump() method in Tkinter module.
560
Marc-André Lemburg1ec71ea2002-04-17 20:33:40 +0000561- New distutils commands for building packagers were added to
562 support pkgtool on Solaris and swinstall on HP-UX.
563
564- distutils now has a new abstract binary packager base class
565 command/bdist_packager, which simplifies writing packagers.
566 This will hopefully provide the missing bits to encourage
567 people to submit more packagers, e.g. for Debian, FreeBSD
568 and other systems.
569
Guido van Rossumf9257822002-06-18 20:43:18 +0000570- The UTF-16, -LE and -BE stream readers now raise a
571 NotImplementedError for all calls to .readline(). Previously, they
572 used to just produce garbage or fail with an encoding error --
573 UTF-16 is a 2-byte encoding and the C lib's line reading APIs don't
Marc-André Lemburg4179a012002-04-05 12:15:05 +0000574 work well with these.
575
Martin v. Löwis5c137c22002-03-18 12:44:08 +0000576- compileall now supports quiet operation.
577
Andrew M. Kuchling21b23b02002-05-07 20:58:03 +0000578- The BaseHTTPServer now implements optional HTTP/1.1 persistent
Martin v. Löwis587c98c2002-03-17 18:37:22 +0000579 connections.
580
Marc-André Lemburga5d2b4c2002-02-16 18:23:30 +0000581- socket module: the SSL support was broken out of the main
582 _socket module C helper and placed into a new _ssl helper
583 which now gets imported by socket.py if available and working.
584
Marc-André Lemburg37aa5802002-02-10 21:42:47 +0000585- encodings package: added aliases for all supported IANA character
586 sets
587
Guido van Rossum606fe4e2001-12-28 20:57:14 +0000588- ftplib: to safeguard the user's privacy, anonymous login will use
589 "anonymous@" as default password, rather than the real user and host
590 name.
591
Fred Drake36736122002-01-10 13:50:31 +0000592- webbrowser: tightened up the command passed to os.system() so that
593 arbitrary shell code can't be executed because a bogus URL was
594 passed in.
595
Tim Peters11bd9942002-02-01 00:52:29 +0000596- gettext.translation has an optional fallback argument, and
Martin v. Löwisa55ffae2002-01-11 06:58:49 +0000597 gettext.find an optional all argument. Translations will now fallback
Martin v. Löwisd8996052002-11-21 21:45:32 +0000598 on a per-message basis. The module supports plural forms, by means
599 of gettext.[d]ngettext and Translation.[u]ngettext.
Martin v. Löwis1be64192002-01-11 06:33:28 +0000600
Martin v. Löwis9668b932002-01-12 11:27:42 +0000601- distutils bdist commands now offer a --skip-build option.
602
Walter Dörwaldb25c2b02002-03-21 10:38:40 +0000603- warnings.warn now accepts a Warning instance as first argument.
604
Fred Drakefed7e852002-04-04 19:36:15 +0000605- The xml.sax.expatreader.ExpatParser class will no longer create
606 circular references by using itself as the locator that gets passed
607 to the content handler implementation. [SF bug #535474]
608
Barry Warsaw47f3e2c2002-05-20 00:14:24 +0000609- The email.Parser.Parser class now properly parses strings regardless
610 of their line endings, which can be any of \r, \n, or \r\n (CR, LF,
611 or CRLF). Also, the Header class's constructor default arguments
612 has changed slightly so that an explicit maxlinelen value is always
613 honored.
614
Gustavo Niemeyerf8ca8362002-11-05 16:50:05 +0000615- distutils' build_ext command now links c++ extensions with the c++
616 compiler available in the Makefile or CXX environment variable, if
617 running under *nix.
618
619- New module bz2: provides a comprehensive interface for the bz2 compression
620 library. It implements a complete file interface, one-shot (de)compression
621 functions, and types for sequential (de)compression.
622
Barry Warsaw5d8d6182002-11-05 22:41:33 +0000623- New pdb command `pp' which is like `p' except that it pretty-prints
624 the value of its expression argument.
625
Gustavo Niemeyerfbceb012002-11-06 18:44:26 +0000626- Now bdist_rpm distutils command understands a verify_script option in
627 the config file, including the contents of the referred filename in
628 the "%verifyscript" section of the rpm spec file.
629
Tim Petersaf8446f2001-12-21 21:36:50 +0000630Tools/Demos
Skip Montanaroe5d7f7f2002-09-20 14:16:59 +0000631-----------
Tim Petersaf8446f2001-12-21 21:36:50 +0000632
Martin v. Löwis0d1fdea2002-11-22 08:36:54 +0000633- pygettext.py now supports globbing on Windows, and accepts module
634 names in addition to accepting file names.
635
Guido van Rossum923e4ef2002-09-17 20:58:59 +0000636- The SGI demos (Demo/sgi) have been removed. Nobody thought they
637 were interesting any more. (The SGI library modules and extensions
638 are still there; it is believed that at least some of these are
639 still used and useful.)
640
Fred Drake40813b12002-08-05 15:24:19 +0000641- IDLE supports the new encoding declarations (PEP 263); it can also
642 deal with legacy 8-bit files if they use the locale's encoding. It
643 allows non-ASCII strings in the interactive shell and executes them
644 in the locale's encoding.
Martin v. Löwis98ce7b72002-08-05 15:11:26 +0000645
Marc-André Lemburg46260092002-04-04 16:17:11 +0000646- freeze.py now produces binaries which can import shared modules,
647 unlike before when this failed due to missing symbol exports in
648 the generated binary.
649
Tim Petersaf8446f2001-12-21 21:36:50 +0000650Build
Skip Montanaroe5d7f7f2002-09-20 14:16:59 +0000651-----
Tim Petersaf8446f2001-12-21 21:36:50 +0000652
Martin v. Löwisdc461752002-11-06 21:59:33 +0000653- On Unix, IDLE is now installed automatically.
654
Guido van Rossum6b3db552002-09-25 15:02:44 +0000655- The fpectl module is not built by default; it's dangerous or useless
656 except in the hands of experts.
657
Tim Petersf47630f2002-08-01 02:34:51 +0000658- The public Python C API will generally be declared using PyAPI_FUNC
Guido van Rossum6b3db552002-09-25 15:02:44 +0000659 and PyAPI_DATA macros, while Python extension module init functions
660 will be declared with PyMODINIT_FUNC. DL_EXPORT/DL_IMPORT macros
661 are deprecated.
Neal Norwitz1389f3e2002-07-22 13:21:10 +0000662
Tim Petersc6a3ff62002-07-08 22:11:52 +0000663- A bug was fixed that could cause COUNT_ALLOCS builds to segfault, or
664 get into infinite loops, when a new-style class got garbage-collected.
665 Unfortunately, to avoid this, the way COUNT_ALLOCS works requires
666 that new-style classes be immortal in COUNT_ALLOCS builds. Note that
667 COUNT_ALLOCS is not enabled by default, in either release or debug
668 builds, and that new-style classes are immortal only in COUNT_ALLOCS
669 builds.
670
Tim Peters943382c2002-07-07 03:59:34 +0000671- Compiling out the cyclic garbage collector is no longer an option.
672 The old symbol WITH_CYCLE_GC is now ignored, and Python.h arranges
673 that it's always defined (for the benefit of any extension modules
674 that may be conditionalizing on it). A bonus is that any extension
675 type participating in cyclic gc can choose to participate in the
676 Py_TRASHCAN mechanism now too; in the absence of cyclic gc, this used
677 to require editing the core to teach the trashcan mechanism about the
678 new type.
679
Martin v. Löwis0cec0ff2002-07-28 16:33:45 +0000680- According to Annex F of the current C standard,
Tim Peters1de41bf2002-07-03 03:31:20 +0000681
682 The Standard C macro HUGE_VAL and its float and long double analogs,
683 HUGE_VALF and HUGE_VALL, expand to expressions whose values are
684 positive infinities.
685
686 Python only uses the double HUGE_VAL, and only to #define its own symbol
687 Py_HUGE_VAL. Some platforms have incorrect definitions for HUGE_VAL.
688 pyport.h used to try to worm around that, but the workarounds triggered
689 other bugs on other platforms, so we gave up. If your platform defines
690 HUGE_VAL incorrectly, you'll need to #define Py_HUGE_VAL to something
691 that works on your platform. The only instance of this I'm sure about
692 is on an unknown subset of Cray systems, described here:
693
694 http://www.cray.com/swpubs/manuals/SN-2194_2.0/html-SN-2194_2.0/x3138.htm
695
696 Presumably 2.3a1 breaks such systems. If anyone uses such a system, help!
697
Martin v. Löwisa3fb4f72002-06-09 13:33:54 +0000698- The configure option --without-doc-strings can be used to remove the
699 doc strings from the builtin functions and modules; this reduces the
700 size of the executable.
701
Guido van Rossumadd88062002-08-15 14:01:14 +0000702- The universal newlines option (PEP 278) is on by default. On Unix
703 it can be disabled by passing --without-universal-newlines to the
704 configure script. On other platforms, remove
705 WITH_UNIVERSAL_NEWLINES from pyconfig.h.
Tim Peters639295f2002-04-21 07:30:30 +0000706
Martin v. Löwis1142de32002-03-29 16:28:31 +0000707- On Unix, a shared libpython2.3.so can be created with --enable-shared.
708
Tim Peters8deda702002-03-30 10:06:07 +0000709- All uses of the CACHE_HASH, INTERN_STRINGS, and DONT_SHARE_SHORT_STRINGS
710 preprocessor symbols were eliminated. The internal decisions they
711 controlled stopped being experimental long ago.
Tim Peters1f7df352002-03-29 03:29:08 +0000712
Fred Drake7d28b732002-05-02 21:17:00 +0000713- The tools used to build the documentation now work under Cygwin as
714 well as Unix.
715
Skip Montanaro57454e52002-06-14 20:30:31 +0000716- The bsddb and dbm module builds have been changed to try and avoid version
717 skew problems and disable linkage with Berkeley DB 1.85 unless the
718 installer knows what s/he's doing. See the section on building these
719 modules in the README file for details.
720
Tim Petersaf8446f2001-12-21 21:36:50 +0000721C API
Skip Montanaroe5d7f7f2002-09-20 14:16:59 +0000722-----
Tim Petersaf8446f2001-12-21 21:36:50 +0000723
Neil Schemenauer6c194762002-11-18 16:19:39 +0000724- PyNumber_Check() now returns true for string and unicode objects.
725 This is a result of these types having a partially defined
Guido van Rossum1d267402002-11-18 16:27:16 +0000726 tp_as_number slot. (This is not a feature, but an indication that
Walter Dörwalda1a61f92002-11-19 21:20:25 +0000727 PyNumber_Check() is not very useful to determine numeric behavior.
Guido van Rossum1d267402002-11-18 16:27:16 +0000728 It may be deprecated.)
Neil Schemenauer6c194762002-11-18 16:19:39 +0000729
Guido van Rossum45ec02a2002-08-19 21:43:18 +0000730- The string object's layout has changed: the pointer member
731 ob_sinterned has been replaced by an int member ob_sstate. On some
732 platforms (e.g. most 64-bit systems) this may change the offset of
733 the ob_sval member, so as a precaution the API_VERSION has been
734 incremented. The apparently unused feature of "indirect interned
735 strings", supported by the ob_sinterned member, is gone. Interned
736 strings are now usually mortal; theres a new API,
737 PyString_InternImmortal() that creates immortal interned strings.
738 (The ob_sstate member can only take three values; however, while
739 making it a char saves a few bytes per string object on average, in
740 it also slowed things down a bit because ob_sval was no longer
741 aligned.)
742
Guido van Rossumfdb86482002-08-14 21:20:32 +0000743- The Py_InitModule*() functions now accept NULL for the 'methods'
744 argument. Modules without global functions are becoming more common
745 now that factories can be types rather than functions.
746
Marc-André Lemburgcc8764c2002-08-11 12:23:04 +0000747- New C API PyUnicode_FromOrdinal() which exposes unichr() at C
748 level.
749
Thomas Heller085358a2002-07-29 14:27:41 +0000750- New functions PyErr_SetExcFromWindowsErr() and
751 PyErr_SetExcFromWindowsErrWithFilename(). Similar to
752 PyErr_SetFromWindowsErrWithFilename() and
753 PyErr_SetFromWindowsErr(), but they allow to specify
754 the exception type to raise. Available on Windows.
755
Tim Peters7c321a82002-07-09 02:57:01 +0000756- Py_FatalError() is now declared as taking a const char* argument. It
757 was previously declared without const. This should not affect working
758 code.
759
Martin v. Löwis01f94bd2002-05-08 08:44:21 +0000760- Added new macro PySequence_ITEM(o, i) that directly calls
761 sq_item without rechecking that o is a sequence and without
762 adjusting for negative indices.
763
Fred Draked0ba6362002-05-02 21:28:26 +0000764- PyRange_New() now raises ValueError if the fourth argument is not 1.
765 This is part of the removal of deprecated features of the xrange
766 object.
767
Guido van Rossum517c7d42002-04-26 02:49:14 +0000768- PyNumber_Coerce() and PyNumber_CoerceEx() now also invoke the type's
769 coercion if both arguments have the same type but this type has the
770 CHECKTYPES flag set. This is to better support proxies.
771
Skip Montanaroa2a07bc2002-09-30 15:23:01 +0000772- The type of tp_free has been changed from "``void (*)(PyObject *)``" to
773 "``void (*)(void *)``".
Neil Schemenauer9344b142002-04-12 23:00:08 +0000774
775- PyObject_Del, PyObject_GC_Del are now functions instead of macros.
776
Guido van Rossum0986d822002-04-08 01:38:42 +0000777- A type can now inherit its metatype from its base type. Previously,
778 when PyType_Ready() was called, if ob_type was found to be NULL, it
779 was always set to &PyType_Type; now it is set to base->ob_type,
780 where base is tp_base, defaulting to &PyObject_Type.
781
782- PyType_Ready() accidentally did not inherit tp_is_gc; now it does.
783
Neil Schemenauerc9abc1d2002-05-08 14:14:41 +0000784- The PyCore_* family of APIs have been removed.
Neil Schemenauer9d50d132002-03-22 17:06:59 +0000785
Andrew M. Kuchling21b23b02002-05-07 20:58:03 +0000786- The "u#" parser marker will now pass through Unicode objects as-is
Marc-André Lemburg3e3eacb2002-01-09 16:21:27 +0000787 without going through the buffer API.
788
Skip Montanaroe5d7f7f2002-09-20 14:16:59 +0000789- The enumerators of cmp_op have been renamed to use the prefix ``PyCmp_``.
Martin v. Löwis7198a522002-01-01 19:59:11 +0000790
Tim Peters10a3bb52001-12-25 19:07:38 +0000791- An old #define of ANY as void has been removed from pyport.h. This
792 hasn't been used since Python's pre-ANSI days, and the #define has
793 been marked as obsolete since then. SF bug 495548 says it created
794 conflicts with other packages, so keeping it around wasn't harmless.
795
Tim Petersaf8446f2001-12-21 21:36:50 +0000796- Because Python's magic number scheme broke on January 1st, we decided
797 to stop Python development. Thanks for all the fish!
798
Tim Petersfb05db22002-03-11 00:24:00 +0000799- Some of us don't like fish, so we changed Python's magic number
Marc-André Lemburge92e0a92002-02-09 11:28:43 +0000800 scheme to a new one. See Python/import.c for details.
801
Tim Petersaf8446f2001-12-21 21:36:50 +0000802New platforms
Skip Montanaroe5d7f7f2002-09-20 14:16:59 +0000803-------------
Tim Petersaf8446f2001-12-21 21:36:50 +0000804
Martin v. Löwisf90ae202002-06-11 06:22:31 +0000805- AtheOS is now supported.
806
Andrew MacIntyre161ad0e2002-08-04 07:25:58 +0000807- the EMX runtime environment on OS/2 is now supported.
808
Martin v. Löwisa6e97582002-01-01 18:41:33 +0000809- GNU/Hurd is now supported.
810
Tim Petersaf8446f2001-12-21 21:36:50 +0000811Tests
Skip Montanaroe5d7f7f2002-09-20 14:16:59 +0000812-----
813
814Yet to be written.
Tim Petersaf8446f2001-12-21 21:36:50 +0000815
816Windows
Skip Montanaroe5d7f7f2002-09-20 14:16:59 +0000817-------
Tim Petersaf8446f2001-12-21 21:36:50 +0000818
Tim Peters19cf4ee2002-11-23 03:49:08 +0000819- The Windows distribution now ships with version 4.0.14 of the
820 Sleepycat Berkeley database library. This should be a huge
821 improvement over the previous Berkeley DB 1.85, which had many
822 bugs.
823 XXX What are the licensing issues here?
824 XXX The debug Python still blows up (see PCbuild/readme.txt).
825 XXX The version # is likely to change before 2.3a1.
826
Tim Peters857fb4c2002-11-14 23:31:58 +0000827- The Windows distribution now ships with Tcl/Tk version 8.4.1 (it
828 previously shipped with Tcl/Tk 8.3.2).
829
Tim Peters37dfb012002-11-11 19:51:33 +0000830- When Python is built under a Microsoft compiler, sys.version now
831 includes the compiler version number (_MSC_VER). For example, under
832 MSVC 6, sys.version constains the substring "MSC v.1200 ". 1200 is
833 the value of _MSC_VER under MSVC 6.
834
Tim Peters08e72952002-04-16 20:48:01 +0000835- Sometimes the uninstall executable (UNWISE.EXE) vanishes. One cause
836 of that has been fixed in the installer (disabled Wise's "delete in-
837 use files" uninstall option).
838
Guido van Rossum181e41a2002-04-06 00:23:25 +0000839- Fixed a bug in urllib's proxy handling in Windows. [SF bug #503031]
840
Tim Peters33187922002-04-04 20:02:04 +0000841- The installer now installs Start menu shortcuts under (the local
842 equivalent of) "All Users" when doing an Admin install.
843
Tim Petersfb05db22002-03-11 00:24:00 +0000844- file.truncate([newsize]) now works on Windows for all newsize values.
845 It used to fail if newsize didn't fit in 32 bits, reflecting a
846 limitation of MS _chsize (which is no longer used).
847
Tim Petersab034fa2002-02-01 11:27:43 +0000848- os.waitpid() is now implemented for Windows, and can be used to block
849 until a specified process exits. This is similar to, but not exactly
850 the same as, os.waitpid() on POSIX systems. If you're waiting for
851 a specific process whose pid was obtained from one of the spawn()
852 functions, the same Python os.waitpid() code works across platforms.
Tim Peters33187922002-04-04 20:02:04 +0000853 See the docs for details. The docs were changed to clarify that
854 spawn functions return, and waitpid requires, a process handle on
855 Windows (not the same thing as a Windows process id).
Tim Petersab034fa2002-02-01 11:27:43 +0000856
Tim Peters11bd9942002-02-01 00:52:29 +0000857- New tempfile.TemporaryFile implementation for Windows: this doesn't
Andrew M. Kuchling21b23b02002-05-07 20:58:03 +0000858 need a TemporaryFileWrapper wrapper anymore, and should be immune
Tim Peters11bd9942002-02-01 00:52:29 +0000859 to a nasty problem: before 2.3, if you got a temp file on Windows, it
860 got wrapped in an object whose close() method first closed the
861 underlying file, then deleted the file. This usually worked fine.
862 However, the spawn family of functions on Windows create (at a low C
863 level) the same set of open files in the spawned process Q as were
864 open in the spawning process P. If a temp file f was among them, then
865 doing f.close() in P first closed P's C-level file handle on f, but Q's
866 C-level file handle on f remained open, so the attempt in P to delete f
867 blew up with a "Permission denied" error (Windows doesn't allow
868 deleting open files). This was surprising, subtle, and difficult to
869 work around.
870
871- The os module now exports all the symbolic constants usable with the
872 low-level os.open() on Windows: the new constants in 2.3 are
873 O_NOINHERIT, O_SHORT_LIVED, O_TEMPORARY, O_RANDOM and O_SEQUENTIAL.
874 The others were also available in 2.2: O_APPEND, O_BINARY, O_CREAT,
875 O_EXCL, O_RDONLY, O_RDWR, O_TEXT, O_TRUNC and O_WRONLY. Contrary
876 to Microsoft docs, O_SHORT_LIVED does not seem to imply O_TEMPORARY
877 (so specify both if you want both; note that neither is useful unless
878 specified with O_CREAT too).
879
Tim Petersaf8446f2001-12-21 21:36:50 +0000880Mac
Skip Montanaroe5d7f7f2002-09-20 14:16:59 +0000881----
882
883Yet to be written.
Tim Petersaf8446f2001-12-21 21:36:50 +0000884
885
Tim Peters909c0912001-12-14 23:16:18 +0000886What's New in Python 2.2 final?
Tim Peters909c0912001-12-14 23:16:18 +0000887===============================
888
Skip Montanaroe5d7f7f2002-09-20 14:16:59 +0000889*Release date: 21-Dec-2001*
890
Tim Peters909c0912001-12-14 23:16:18 +0000891Type/class unification and new-style classes
Skip Montanaroe5d7f7f2002-09-20 14:16:59 +0000892--------------------------------------------
Tim Peters909c0912001-12-14 23:16:18 +0000893
Barry Warsaw52acb492001-12-21 20:04:22 +0000894- pickle.py, cPickle: allow pickling instances of new-style classes
895 with a custom metaclass.
896
Tim Peters909c0912001-12-14 23:16:18 +0000897Core and builtins
Skip Montanaroe5d7f7f2002-09-20 14:16:59 +0000898-----------------
Tim Peters909c0912001-12-14 23:16:18 +0000899
Barry Warsaw52acb492001-12-21 20:04:22 +0000900- weakref proxy object: when comparing, unwrap both arguments if both
901 are proxies.
902
Tim Peters909c0912001-12-14 23:16:18 +0000903Extension modules
Skip Montanaroe5d7f7f2002-09-20 14:16:59 +0000904-----------------
Tim Peters909c0912001-12-14 23:16:18 +0000905
Barry Warsaw52acb492001-12-21 20:04:22 +0000906- binascii.b2a_base64(): fix a potential buffer overrun when encoding
907 very short strings.
908
909- cPickle: the obscure "fast" mode was suspected of causing stack
910 overflows on the Mac. Hopefully fixed this by setting the recursion
911 limit much smaller. If the limit is too low (it only affects
912 performance), you can change it by defining PY_CPICKLE_FAST_LIMIT
913 when compiling cPickle.c (or in pyconfig.h).
914
Tim Peters909c0912001-12-14 23:16:18 +0000915Library
Skip Montanaroe5d7f7f2002-09-20 14:16:59 +0000916-------
Tim Peters909c0912001-12-14 23:16:18 +0000917
Barry Warsaw52acb492001-12-21 20:04:22 +0000918- dumbdbm.py: fixed a dumb old bug (the file didn't get synched at
919 close or delete time).
920
921- rfc822.py: fixed a bug where the address '<>' was converted to None
922 instead of an empty string (also fixes the email.Utils module).
923
924- xmlrpclib.py: version 1.0.0; uses precision for doubles.
925
926- test suite: the pickle and cPickle tests were not executing any code
Andrew M. Kuchling21b23b02002-05-07 20:58:03 +0000927 when run from the standard regression test.
Barry Warsaw52acb492001-12-21 20:04:22 +0000928
Tim Peters909c0912001-12-14 23:16:18 +0000929Tools/Demos
Skip Montanaroe5d7f7f2002-09-20 14:16:59 +0000930-----------
Tim Peters909c0912001-12-14 23:16:18 +0000931
932Build
Skip Montanaroe5d7f7f2002-09-20 14:16:59 +0000933-----
Tim Peters909c0912001-12-14 23:16:18 +0000934
935C API
Skip Montanaroe5d7f7f2002-09-20 14:16:59 +0000936-----
Tim Peters909c0912001-12-14 23:16:18 +0000937
938New platforms
Skip Montanaroe5d7f7f2002-09-20 14:16:59 +0000939-------------
Tim Peters909c0912001-12-14 23:16:18 +0000940
941Tests
Skip Montanaroe5d7f7f2002-09-20 14:16:59 +0000942-----
Tim Peters909c0912001-12-14 23:16:18 +0000943
944Windows
Skip Montanaroe5d7f7f2002-09-20 14:16:59 +0000945-------
Tim Peters909c0912001-12-14 23:16:18 +0000946
Barry Warsaw52acb492001-12-21 20:04:22 +0000947- distutils package: fixed broken Windows installers (bdist_wininst).
948
949- tempfile.py: prevent mysterious warnings when TemporaryFileWrapper
950 instances are deleted at process exit time.
951
952- socket.py: prevent mysterious warnings when socket instances are
953 deleted at process exit time.
954
955- posixmodule.c: fix a Windows crash with stat() of a filename ending
956 in backslash.
957
Tim Peters909c0912001-12-14 23:16:18 +0000958Mac
Skip Montanaroe5d7f7f2002-09-20 14:16:59 +0000959----
Tim Peters909c0912001-12-14 23:16:18 +0000960
Barry Warsaw52acb492001-12-21 20:04:22 +0000961- The Carbon toolbox modules have been upgraded to Universal Headers
962 3.4, and experimental CoreGraphics and CarbonEvents modules have
963 been added. All only for framework-enabled MacOSX.
964
Tim Peters909c0912001-12-14 23:16:18 +0000965
Tim Peters6272dfd2001-12-13 19:34:00 +0000966What's New in Python 2.2c1?
Tim Petersb3c9af12001-11-17 00:21:57 +0000967===========================
968
Skip Montanaroe5d7f7f2002-09-20 14:16:59 +0000969*Release date: 14-Dec-2001*
970
Tim Petersb3c9af12001-11-17 00:21:57 +0000971Type/class unification and new-style classes
Skip Montanaroe5d7f7f2002-09-20 14:16:59 +0000972--------------------------------------------
Tim Petersb3c9af12001-11-17 00:21:57 +0000973
Barry Warsaw06557452001-12-14 20:47:12 +0000974- Guido's tutorial introduction to the new type/class features has
975 been extensively updated. See
976
977 http://www.python.org/2.2/descrintro.html
978
979 That remains the primary documentation in this area.
980
Guido van Rossum33bab012001-12-05 22:45:48 +0000981- Fixed a leak: instance variables declared with __slots__ were never
982 deleted!
983
Guido van Rossum4b800852001-12-03 00:54:52 +0000984- The "delete attribute" method of descriptor objects is called
985 __delete__, not __del__. In previous releases, it was mistakenly
986 called __del__, which created an unfortunate overloading condition
987 with finalizers. (The "get attribute" and "set attribute" methods
988 are still called __get__ and __set__, respectively.)
989
Guido van Rossumcdbbd0a2001-12-03 15:46:59 +0000990- Some subtle issues with the super built-in were fixed:
991
992 (a) When super itself is subclassed, its __get__ method would still
993 return an instance of the base class (i.e., of super).
994
995 (b) super(C, C()).__class__ would return C rather than super. This
996 is confusing. To fix this, I decided to change the semantics of
997 super so that it only applies to code attributes, not to data
998 attributes. After all, overriding data attributes is not
999 supported anyway.
1000
1001 (c) The __get__ method didn't check whether the argument was an
1002 instance of the type used in creation of the super instance.
1003
Guido van Rossumcd7b7d62001-12-04 21:02:07 +00001004- Previously, hash() of an instance of a subclass of a mutable type
1005 (list or dictionary) would return some value, rather than raising
1006 TypeError. This has been fixed. Also, directly calling
1007 dict.__hash__ and list.__hash__ now raises the same TypeError
1008 (previously, these were the same as object.__hash__).
Guido van Rossumcdbbd0a2001-12-03 15:46:59 +00001009
Guido van Rossumd331cb52001-12-05 19:46:42 +00001010- New-style objects now support deleting their __dict__. This is for
1011 all intents and purposes equivalent to assigning a brand new empty
1012 dictionary, but saves space if the object is not used further.
1013
Tim Petersb3c9af12001-11-17 00:21:57 +00001014Core and builtins
Skip Montanaroe5d7f7f2002-09-20 14:16:59 +00001015-----------------
Tim Petersb3c9af12001-11-17 00:21:57 +00001016
Tim Peters3caca232001-12-06 06:23:26 +00001017- -Qnew now works as documented in PEP 238: when -Qnew is passed on
1018 the command line, all occurrences of "/" use true division instead
1019 of classic division. See the PEP for details. Note that "all"
1020 means all instances in library and 3rd-party modules, as well as in
1021 your own code. As the PEP says, -Qnew is intended for use only in
1022 educational environments with control over the libraries in use.
Tim Petersbf72fe22001-12-11 21:43:14 +00001023 Note that test_coercion.py in the standard Python test suite fails
1024 under -Qnew; this is expected, and won't be repaired until true
1025 division becomes the default (in the meantime, test_coercion is
1026 testing the current rules).
Tim Peters3caca232001-12-06 06:23:26 +00001027
Fred Drake6c01e252001-12-14 17:08:12 +00001028- complex() now only allows the first argument to be a string
1029 argument, and raises TypeError if either the second arg is a string
1030 or if the second arg is specified when the first is a string.
1031
Tim Petersb3c9af12001-11-17 00:21:57 +00001032Extension modules
Skip Montanaroe5d7f7f2002-09-20 14:16:59 +00001033-----------------
Tim Petersb3c9af12001-11-17 00:21:57 +00001034
Martin v. Löwis560da622001-11-24 09:24:51 +00001035- gc.get_referents was renamed to gc.get_referrers.
1036
Tim Petersb3c9af12001-11-17 00:21:57 +00001037Library
Skip Montanaroe5d7f7f2002-09-20 14:16:59 +00001038-------
Tim Petersb3c9af12001-11-17 00:21:57 +00001039
Tim Peters25059d32001-12-07 20:35:43 +00001040- Functions in the os.spawn() family now release the global interpreter
1041 lock around calling the platform spawn. They should always have done
1042 this, but did not before 2.2c1. Multithreaded programs calling
1043 an os.spawn function with P_WAIT will no longer block all Python threads
1044 until the spawned program completes. It's possible that some programs
1045 relies on blocking, although more likely by accident than by design.
1046
Martin v. Löwis3a89b2b2001-11-25 14:35:58 +00001047- webbrowser defaults to netscape.exe on OS/2 now.
1048
Martin v. Löwis652e1912001-11-25 14:50:56 +00001049- Tix.ResizeHandle exposes detach_widget, hide, and show.
1050
Martin v. Löwis714d2e22001-12-02 12:26:03 +00001051- The charset alias windows_1252 has been added.
1052
Barry Warsaw06557452001-12-14 20:47:12 +00001053- types.StringTypes is a tuple containing the defined string types;
1054 usually this will be (str, unicode), but if Python was compiled
1055 without Unicode support it will be just (str,).
1056
1057- The pulldom and minidom modules were synchronized to PyXML.
1058
Tim Petersb3c9af12001-11-17 00:21:57 +00001059Tools/Demos
Skip Montanaroe5d7f7f2002-09-20 14:16:59 +00001060-----------
Tim Petersb3c9af12001-11-17 00:21:57 +00001061
Barry Warsaw06557452001-12-14 20:47:12 +00001062- A new script called Tools/scripts/google.py was added, which fires
1063 off a search on Google.
1064
Tim Petersb3c9af12001-11-17 00:21:57 +00001065Build
Skip Montanaroe5d7f7f2002-09-20 14:16:59 +00001066-----
Tim Petersb3c9af12001-11-17 00:21:57 +00001067
Barry Warsaw06557452001-12-14 20:47:12 +00001068- Note that release builds of Python should arrange to define the
1069 preprocessor symbol NDEBUG on the command line (or equivalent).
1070 In the 2.2 pre-release series we tried to define this by magic in
1071 Python.h instead, but it proved to cause problems for extension
1072 authors. The Unix, Windows and Mac builds now all define NDEBUG in
1073 release builds via cmdline (or equivalent) instead. Ports to
1074 other platforms should do likewise.
1075
Jack Jansen1999ef42001-12-06 21:47:20 +00001076- It is no longer necessary to use --with-suffix when building on a
1077 case-insensitive file system (such as Mac OS X HFS+). In the build
1078 directory an extension is used, but not in the installed python.
1079
Tim Petersb3c9af12001-11-17 00:21:57 +00001080C API
Skip Montanaroe5d7f7f2002-09-20 14:16:59 +00001081-----
Tim Petersb3c9af12001-11-17 00:21:57 +00001082
Tim Petersf582b822001-12-11 18:51:08 +00001083- New function PyDict_MergeFromSeq2() exposes the builtin dict
1084 constructor's logic for updating a dictionary from an iterable object
1085 producing key-value pairs.
1086
Tim Peterscffed4b2001-11-29 03:26:37 +00001087- PyArg_ParseTupleAndKeywords() requires that the number of entries in
Tim Petersf582b822001-12-11 18:51:08 +00001088 the keyword list equal the number of argument specifiers. This
Tim Peterscffed4b2001-11-29 03:26:37 +00001089 wasn't checked correctly, and PyArg_ParseTupleAndKeywords could even
1090 dump core in some bad cases. This has been repaired. As a result,
1091 PyArg_ParseTupleAndKeywords may raise RuntimeError in bad cases that
1092 previously went unchallenged.
1093
Tim Petersb3c9af12001-11-17 00:21:57 +00001094New platforms
Skip Montanaroe5d7f7f2002-09-20 14:16:59 +00001095-------------
Tim Petersb3c9af12001-11-17 00:21:57 +00001096
1097Tests
Skip Montanaroe5d7f7f2002-09-20 14:16:59 +00001098-----
Tim Petersb3c9af12001-11-17 00:21:57 +00001099
1100Windows
Skip Montanaroe5d7f7f2002-09-20 14:16:59 +00001101-------
Tim Petersb3c9af12001-11-17 00:21:57 +00001102
1103Mac
Skip Montanaroe5d7f7f2002-09-20 14:16:59 +00001104----
Tim Petersb3c9af12001-11-17 00:21:57 +00001105
Jack Jansenffa260f2001-12-06 21:14:00 +00001106- In unix-Python on Mac OS X (and darwin) sys.platform is now "darwin",
1107 without any trailing digits.
Tim Petersb3c9af12001-11-17 00:21:57 +00001108
Barry Warsaw06557452001-12-14 20:47:12 +00001109- Changed logic for finding python home in Mac OS X framework Pythons.
1110 Now sys.executable points to the executable again, in stead of to
1111 the shared library. The latter is used only for locating the python
1112 home.
1113
1114
Tim Peters84362bc2001-10-19 17:55:30 +00001115What's New in Python 2.2b2?
Tim Peters84362bc2001-10-19 17:55:30 +00001116===========================
1117
Skip Montanaroe5d7f7f2002-09-20 14:16:59 +00001118*Release date: 16-Nov-2001*
1119
Tim Peters84362bc2001-10-19 17:55:30 +00001120Type/class unification and new-style classes
Skip Montanaroe5d7f7f2002-09-20 14:16:59 +00001121--------------------------------------------
Tim Peters84362bc2001-10-19 17:55:30 +00001122
Guido van Rossum3d27df02001-11-15 20:27:54 +00001123- Multiple inheritance mixing new-style and classic classes in the
1124 list of base classes is now allowed, so this works now:
Tim Peters76f7fe32001-11-15 20:02:21 +00001125
1126 class Classic: pass
Guido van Rossum3d27df02001-11-15 20:27:54 +00001127 class Mixed(Classic, object): pass
Tim Peters76f7fe32001-11-15 20:02:21 +00001128
1129 The MRO (method resolution order) for each base class is respected
1130 according to its kind, but the MRO for the derived class is computed
Andrew M. Kuchling21b23b02002-05-07 20:58:03 +00001131 using new-style MRO rules if any base class is a new-style class.
Tim Peters76f7fe32001-11-15 20:02:21 +00001132 This needs to be documented.
1133
Tim Petersa427a2b2001-10-29 22:25:45 +00001134- The new builtin dictionary() constructor, and dictionary type, have
1135 been renamed to dict. This reflects a decade of common usage.
1136
Guido van Rossum3fc08d22001-11-15 20:33:10 +00001137- dict() now accepts an iterable object producing 2-sequences. For
1138 example, dict(d.items()) == d for any dictionary d. The argument,
1139 and the elements of the argument, can be any iterable objects.
1140
Guido van Rossum7ad2d1e2001-10-29 22:11:00 +00001141- New-style classes can now have a __del__ method, which is called
1142 when the instance is deleted (just like for classic classes).
1143
Guido van Rossum12d955c2001-10-26 14:56:06 +00001144- Assignment to object.__dict__ is now possible, for objects that are
1145 instances of new-style classes that have a __dict__ (unless the base
1146 class forbids it).
1147
Guido van Rossumc8e56452001-10-22 00:43:43 +00001148- Methods of built-in types now properly check for keyword arguments
1149 (formerly these were silently ignored). The only built-in methods
1150 that take keyword arguments are __call__, __init__ and __new__.
1151
Guido van Rossum86443212001-10-27 22:28:54 +00001152- The socket function has been converted to a type; see below.
1153
Tim Peters84362bc2001-10-19 17:55:30 +00001154Core and builtins
Skip Montanaroe5d7f7f2002-09-20 14:16:59 +00001155-----------------
Tim Peters84362bc2001-10-19 17:55:30 +00001156
Jeremy Hylton249aaed2001-11-09 21:06:24 +00001157- Assignment to __debug__ raises SyntaxError at compile-time. This
1158 was promised when 2.1c1 was released as "What's New in Python 2.1c1"
Barry Warsaw012852b2001-11-16 16:17:27 +00001159 (see below) says.
Jeremy Hylton249aaed2001-11-09 21:06:24 +00001160
Guido van Rossum12d955c2001-10-26 14:56:06 +00001161- Clarified the error messages for unsupported operands to an operator
1162 (like 1 + '').
1163
Tim Peters84362bc2001-10-19 17:55:30 +00001164Extension modules
Skip Montanaroe5d7f7f2002-09-20 14:16:59 +00001165-----------------
Tim Peters84362bc2001-10-19 17:55:30 +00001166
Tim Peters5ebfd362001-11-13 23:11:19 +00001167- mmap has a new keyword argument, "access", allowing a uniform way for
1168 both Windows and Unix users to create read-only, write-through and
1169 copy-on-write memory mappings. This was previously possible only on
1170 Unix. A new keyword argument was required to support this in a
Andrew M. Kuchling21b23b02002-05-07 20:58:03 +00001171 uniform way because the mmap() signatures had diverged across
Tim Peters5ebfd362001-11-13 23:11:19 +00001172 platforms. Thanks to Jay T Miller for repairing this!
1173
Tim Peters169ded02001-11-03 19:57:21 +00001174- By default, the gc.garbage list now contains only those instances in
1175 unreachable cycles that have __del__ methods; in 2.1 it contained all
1176 instances in unreachable cycles. "Instances" here has been generalized
1177 to include instances of both new-style and old-style classes.
1178
Guido van Rossum12d955c2001-10-26 14:56:06 +00001179- The socket module defines a new method for socket objects,
1180 sendall(). This is like send() but may make multiple calls to
Guido van Rossum86443212001-10-27 22:28:54 +00001181 send() until all data has been sent. Also, the socket function has
1182 been converted to a subclassable type, like list and tuple (etc.)
1183 before it; socket and SocketType are now the same thing.
Guido van Rossum12d955c2001-10-26 14:56:06 +00001184
1185- Various bugfixes to the curses module. There is now a test suite
1186 for the curses module (you have to run it manually).
Andrew M. Kuchling15e03532001-10-22 16:37:10 +00001187
Guido van Rossum692adf12001-10-30 03:03:03 +00001188- binascii.b2a_base64 no longer places an arbitrary restriction of 57
1189 bytes on its input.
1190
Tim Peters84362bc2001-10-19 17:55:30 +00001191Library
Skip Montanaroe5d7f7f2002-09-20 14:16:59 +00001192-------
Tim Peters84362bc2001-10-19 17:55:30 +00001193
Tim Peters5ebfd362001-11-13 23:11:19 +00001194- tkFileDialog exposes a Directory class and askdirectory
Martin v. Löwis25ee87c2001-11-07 22:38:08 +00001195 convenience function.
1196
Tim Peters75335872001-11-03 19:35:43 +00001197- Symbolic group names in regular expressions must be unique. For
1198 example, the regexp r'(?P<abc>)(?P<abc>)' is not allowed, because a
1199 single name can't mean both "group 1" and "group 2" simultaneously.
Barry Warsaw012852b2001-11-16 16:17:27 +00001200 Python 2.2 detects this error at regexp compilation time;
1201 previously, the error went undetected, and results were
1202 unpredictable. Also in sre, the pattern.split(), pattern.sub(), and
1203 pattern.subn() methods have been rewritten in C. Also, an
1204 experimental function/method finditer() has been added, which works
1205 like findall() but returns an iterator.
Tim Peters75335872001-11-03 19:35:43 +00001206
Martin v. Löwisb7b32602001-11-02 23:48:20 +00001207- Tix exposes more commands through the classes DirSelectBox,
1208 DirSelectDialog, ListNoteBook, Meter, CheckList, and the
1209 methods tix_addbitmapdir, tix_cget, tix_configure, tix_filedialog,
1210 tix_getbitmap, tix_getimage, tix_option_get, and tix_resetoptions.
1211
Tim Peters98791af2001-10-23 01:59:54 +00001212- Traceback objects are now scanned by cyclic garbage collection, so
1213 cycles created by casual use of sys.exc_info() no longer cause
1214 permanent memory leaks (provided garbage collection is enabled).
1215
Guido van Rossum49192142001-10-24 20:51:44 +00001216- os.extsep -- a new variable needed by the RISCOS support. It is the
1217 separator used by extensions, and is '.' on all platforms except
1218 RISCOS, where it is '/'. There is no need to use this variable
1219 unless you have a masochistic desire to port your code to RISCOS.
1220
Barry Warsaw012852b2001-11-16 16:17:27 +00001221- mimetypes.py has optional support for non-standard, but commonly
1222 found types. guess_type() and guess_extension() now accept an
Skip Montanaroe5d7f7f2002-09-20 14:16:59 +00001223 optional 'strict' flag, defaulting to true, which controls whether
Barry Warsaw012852b2001-11-16 16:17:27 +00001224 recognize non-standard types or not. A few non-standard types we
1225 know about have been added. Also, when run as a script, there are
1226 new -l and -e options.
1227
1228- statcache is now deprecated.
1229
1230- email.Utils.formatdate() now produces the preferred RFC 2822 style
1231 dates with numeric timezones (it used to produce obsolete dates
Skip Montanaroe5d7f7f2002-09-20 14:16:59 +00001232 hard coded to "GMT" timezone). An optional 'localtime' flag is
Barry Warsaw012852b2001-11-16 16:17:27 +00001233 added to produce dates in the local timezone, with daylight savings
1234 time properly taken into account.
1235
1236- In pickle and cPickle, instead of masking errors in load() by
1237 transforming them into SystemError, we let the original exception
1238 propagate out. Also, implement support for __safe_for_unpickling__
1239 in pickle, as it already was supported in cPickle.
1240
Tim Peters84362bc2001-10-19 17:55:30 +00001241Tools/Demos
Skip Montanaroe5d7f7f2002-09-20 14:16:59 +00001242-----------
Tim Peters84362bc2001-10-19 17:55:30 +00001243
1244Build
Skip Montanaroe5d7f7f2002-09-20 14:16:59 +00001245-----
Tim Peters84362bc2001-10-19 17:55:30 +00001246
Barry Warsaw012852b2001-11-16 16:17:27 +00001247- The dbm module is built using libdb1 if available. The bsddb module
1248 is built with libdb3 if available.
1249
1250- Misc/Makefile.pre.in has been removed by BDFL pronouncement.
1251
Tim Peters84362bc2001-10-19 17:55:30 +00001252C API
Skip Montanaroe5d7f7f2002-09-20 14:16:59 +00001253-----
Tim Peters84362bc2001-10-19 17:55:30 +00001254
Tim Peters1fc240e2001-10-26 05:06:50 +00001255- New function PySequence_Fast_GET_SIZE() returns the size of a non-
1256 NULL result from PySequence_Fast(), more quickly than calling
1257 PySequence_Size().
1258
Barry Warsaw012852b2001-11-16 16:17:27 +00001259- New argument unpacking function PyArg_UnpackTuple() added.
1260
1261- New functions PyObject_CallFunctionObjArgs() and
1262 PyObject_CallMethodObjArgs() have been added to make it more
1263 convenient and efficient to call functions and methods from C.
1264
1265- PyArg_ParseTupleAndKeywords() no longer masks errors, so it's
1266 possible that this will propagate errors it didn't before.
1267
1268- New function PyObject_CheckReadBuffer(), which returns true if its
1269 argument supports the single-segment readable buffer interface.
1270
Tim Peters84362bc2001-10-19 17:55:30 +00001271New platforms
Skip Montanaroe5d7f7f2002-09-20 14:16:59 +00001272-------------
Tim Peters84362bc2001-10-19 17:55:30 +00001273
Guido van Rossum86443212001-10-27 22:28:54 +00001274- We've finally confirmed that this release builds on HP-UX 11.00,
1275 *with* threads, and passes the test suite.
1276
Tim Peters7a33d8b2001-11-05 02:51:07 +00001277- Thanks to a series of patches from Michael Muller, Python may build
1278 again under OS/2 Visual Age C++.
1279
Guido van Rossum49192142001-10-24 20:51:44 +00001280- Updated RISCOS port by Dietmar Schwertberger.
1281
Tim Peters84362bc2001-10-19 17:55:30 +00001282Tests
Skip Montanaroe5d7f7f2002-09-20 14:16:59 +00001283-----
Tim Peters84362bc2001-10-19 17:55:30 +00001284
Andrew M. Kuchling15e03532001-10-22 16:37:10 +00001285- Added a test script for the curses module. It isn't run automatically;
1286 regrtest.py must be run with '-u curses' to enable it.
1287
Tim Peters84362bc2001-10-19 17:55:30 +00001288Windows
Skip Montanaroe5d7f7f2002-09-20 14:16:59 +00001289-------
Tim Peters84362bc2001-10-19 17:55:30 +00001290
Barry Warsaw012852b2001-11-16 16:17:27 +00001291Mac
Skip Montanaroe5d7f7f2002-09-20 14:16:59 +00001292----
Barry Warsaw012852b2001-11-16 16:17:27 +00001293
1294- PythonScript has been moved to unsupported and is slated to be
1295 removed completely in the next release.
1296
1297- It should now be possible to build applets that work on both OS9 and
1298 OSX.
1299
1300- The core is now linked with CoreServices not Carbon; as a side
1301 result, default 8bit encoding on OSX is now ASCII.
1302
1303- Python should now build on OSX 10.1.1
1304
Tim Peters84362bc2001-10-19 17:55:30 +00001305
Tim Petersabf925f2001-09-28 21:53:42 +00001306What's New in Python 2.2b1?
Tim Petersabf925f2001-09-28 21:53:42 +00001307===========================
1308
Skip Montanaroe5d7f7f2002-09-20 14:16:59 +00001309*Release date: 19-Oct-2001*
1310
Tim Petersabf925f2001-09-28 21:53:42 +00001311Type/class unification and new-style classes
Skip Montanaroe5d7f7f2002-09-20 14:16:59 +00001312--------------------------------------------
Tim Petersabf925f2001-09-28 21:53:42 +00001313
Guido van Rossum687ae002001-10-15 22:03:32 +00001314- New-style classes are now always dynamic (except for built-in and
Guido van Rossum3eea25c2001-10-16 00:46:57 +00001315 extension types). There is no longer a performance penalty, and I
Guido van Rossum687ae002001-10-15 22:03:32 +00001316 no longer see another reason to keep this baggage around. One relic
Guido van Rossum3eea25c2001-10-16 00:46:57 +00001317 remains: the __dict__ of a new-style class is a read-only proxy; you
1318 must set the class's attribute to modify it. As a consequence, the
Guido van Rossum687ae002001-10-15 22:03:32 +00001319 __defined__ attribute of new-style types no longer exists, for lack
1320 of need: there is once again only one __dict__ (although in the
Guido van Rossum3eea25c2001-10-16 00:46:57 +00001321 future a __cache__ may be resurrected with a similar function, if I
1322 can prove that it actually speeds things up).
Guido van Rossum50fda3b2001-10-04 19:46:06 +00001323
Tim Peters1c9ca872001-10-04 06:43:12 +00001324- C.__doc__ now works as expected for new-style classes (in 2.2a4 it
1325 always returned None, even when there was a class docstring).
1326
1327- doctest now finds and runs docstrings attached to new-style classes,
1328 class methods, static methods, and properties.
1329
Guido van Rossum9074ef62001-10-16 21:34:49 +00001330Core and builtins
Skip Montanaroe5d7f7f2002-09-20 14:16:59 +00001331-----------------
Tim Petersabf925f2001-09-28 21:53:42 +00001332
Guido van Rossuma8bcf802001-10-15 15:53:58 +00001333- A very subtle syntactical pitfall in list comprehensions was fixed.
1334 For example: [a+b for a in 'abc', for b in 'def']. The comma in
1335 this example is a mistake. Previously, this would silently let 'a'
1336 iterate over the singleton tuple ('abc',), yielding ['abcd', 'abce',
1337 'abcf'] rather than the intended ['ad', 'ae', 'af', 'bd', 'be',
1338 'bf', 'cd', 'ce', 'cf']. Now, this is flagged as a syntax error.
1339 Note that [a for a in <singleton>] is a convoluted way to say
1340 [<singleton>] anyway, so it's not like any expressiveness is lost.
1341
Guido van Rossum9074ef62001-10-16 21:34:49 +00001342- getattr(obj, name, default) now only catches AttributeError, as
1343 documented, rather than returning the default value for all
1344 exceptions (which could mask bugs in a __getattr__ hook, for
1345 example).
1346
Fred Drakecb7a6b52001-10-22 18:41:51 +00001347- Weak reference objects are now part of the core and offer a C API.
Fred Drake934d2a42001-10-18 18:18:06 +00001348 A bug which could allow a core dump when binary operations involved
Andrew M. Kuchling51c18162001-10-22 01:47:26 +00001349 proxy reference has been fixed. weakref.ReferenceError is now a
Barry Warsawf6fb1712001-10-19 05:35:40 +00001350 built-in exception.
Fred Drake934d2a42001-10-18 18:18:06 +00001351
Guido van Rossum1c486092001-10-19 02:05:35 +00001352- unicode(obj) now behaves more like str(obj), accepting arbitrary
1353 objects, and calling a __unicode__ method if it exists.
1354 unicode(obj, encoding) and unicode(obj, encoding, errors) still
Marc-André Lemburgb5507ec2001-10-19 12:02:29 +00001355 require an 8-bit string or character buffer argument.
Guido van Rossum1c486092001-10-19 02:05:35 +00001356
Barry Warsawf6fb1712001-10-19 05:35:40 +00001357- isinstance() now allows any object as the first argument and a
1358 class, a type or something with a __bases__ tuple attribute for the
1359 second argument. The second argument may also be a tuple of a
1360 class, type, or something with __bases__, in which case isinstance()
1361 will return true if the first argument is an instance of any of the
1362 things contained in the second argument tuple. E.g.
1363
1364 isinstance(x, (A, B))
1365
1366 returns true if x is an instance of A or B.
1367
Guido van Rossum9074ef62001-10-16 21:34:49 +00001368Extension modules
Skip Montanaroe5d7f7f2002-09-20 14:16:59 +00001369-----------------
Guido van Rossum9074ef62001-10-16 21:34:49 +00001370
1371- thread.start_new_thread() now returns the thread ID (previously None).
1372
Martin v. Löwis16dc7f42001-09-30 20:32:11 +00001373- binascii has now two quopri support functions, a2b_qp and b2a_qp.
1374
Guido van Rossumc524d952001-10-19 01:31:59 +00001375- readline now supports setting the startup_hook and the
1376 pre_event_hook, and adds the add_history() function.
Martin v. Löwis0daad592001-09-30 21:09:59 +00001377
Guido van Rossumc524d952001-10-19 01:31:59 +00001378- os and posix supports chroot(), setgroups() and unsetenv() where
1379 available. The stat(), fstat(), statvfs() and fstatvfs() functions
1380 now return "pseudo-sequences" -- the various fields can now be
1381 accessed as attributes (e.g. os.stat("/").st_mtime) but for
1382 backwards compatibility they also behave as a fixed-length sequence.
1383 Some platform-specific fields (e.g. st_rdev) are only accessible as
Guido van Rossum98bf58f2001-10-18 20:34:25 +00001384 attributes.
1385
1386- time: localtime(), gmtime() and strptime() now return a
1387 pseudo-sequence similar to the os.stat() return value, with
1388 attributes like tm_year etc.
Martin v. Löwis16628c92001-10-04 22:46:41 +00001389
Guido van Rossum9074ef62001-10-16 21:34:49 +00001390- Decompression objects in the zlib module now accept an optional
1391 second parameter to decompress() that specifies the maximum amount
1392 of memory to use for the uncompressed data.
Tim Petersabf925f2001-09-28 21:53:42 +00001393
Jeremy Hyltoncb441432001-10-19 03:40:19 +00001394- optional SSL support in the socket module now exports OpenSSL
1395 functions RAND_add(), RAND_egd(), and RAND_status(). These calls
1396 are useful on platforms like Solaris where OpenSSL does not
Barry Warsawf6fb1712001-10-19 05:35:40 +00001397 automatically seed its PRNG. Also, the keyfile and certfile
1398 arguments to socket.ssl() are now optional.
1399
1400- posixmodule (and by extension, the os module on POSIX platforms) now
1401 exports O_LARGEFILE, O_DIRECT, O_DIRECTORY, and O_NOFOLLOW.
Jeremy Hyltoncb441432001-10-19 03:40:19 +00001402
Guido van Rossum9074ef62001-10-16 21:34:49 +00001403Library
Skip Montanaroe5d7f7f2002-09-20 14:16:59 +00001404-------
Guido van Rossum3c288632001-10-16 21:13:49 +00001405
Tim Peters7402f792001-10-02 03:53:41 +00001406- doctest now excludes functions and classes not defined by the module
1407 being tested, thanks to Tim Hochberg.
1408
Fred Drakecb7a6b52001-10-22 18:41:51 +00001409- HotShot, a new profiler implemented using a C-based callback, has
1410 been added. This substantially reduces the overhead of profiling,
1411 but it is still quite preliminary. Support modules and
1412 documentation will be added in upcoming releases (before 2.2 final).
1413
Guido van Rossumc4b09b42001-10-04 10:19:00 +00001414- profile now produces correct output in situations where an exception
1415 raised in Python is cleared by C code (e.g. hasattr()). This used
1416 to cause wrong output, including spurious claims of recursive
1417 functions and attribution of time spent to the wrong function.
1418
Tim Peters0a1fc4e2001-10-07 03:12:08 +00001419 The code and documentation for the derived OldProfile and HotProfile
1420 profiling classes was removed. The code hasn't worked for years (if
1421 you tried to use them, they raised exceptions). OldProfile
1422 intended to reproduce the behavior of the profiler Python used more
1423 than 7 years ago, and isn't interesting anymore. HotProfile intended
1424 to provide a faster profiler (but producing less information), and
1425 that's a worthy goal we intend to meet via a different approach (but
1426 without losing information).
1427
Tim Peterscce092d2001-10-09 05:31:56 +00001428- Profile.calibrate() has a new implementation that should deliver
Tim Peters659a6032001-10-09 20:51:19 +00001429 a much better system-specific calibration constant. The constant can
1430 now be specified in an instance constructor, or as a Profile class or
1431 instance variable, instead of by editing profile.py's source code.
1432 Calibration must still be done manually (see the docs for the profile
1433 module).
1434
1435 Note that Profile.calibrate() must be overriden by subclasses.
1436 Improving the accuracy required exploiting detailed knowledge of
1437 profiler internals; the earlier method abstracted away the details
1438 and measured a simplified model instead, but consequently computed
1439 a constant too small by a factor of 2 on some modern machines.
Tim Peterscce092d2001-10-09 05:31:56 +00001440
Martin v. Löwis16dc7f42001-09-30 20:32:11 +00001441- quopri's encode and decode methods take an optional header parameter,
Jeremy Hylton6f543b62001-10-16 20:42:52 +00001442 which indicates whether output is intended for the header 'Q'
1443 encoding.
1444
Guido van Rossuma5343cc2001-10-18 18:02:07 +00001445- The SocketServer.ThreadingMixIn class now closes the request after
1446 finish_request() returns. (Not when it errors out though.)
1447
Skip Montanaroe5d7f7f2002-09-20 14:16:59 +00001448- The nntplib module's NNTP.body() method has grown a 'file' argument
Barry Warsawf6fb1712001-10-19 05:35:40 +00001449 to allow saving the message body to a file.
1450
1451- The email package has added a class email.Parser.HeaderParser which
1452 only parses headers and does not recurse into the message's body.
1453 Also, the module/class MIMEAudio has been added for representing
1454 audio data (contributed by Anthony Baxter).
1455
1456- ftplib should be able to handle files > 2GB.
1457
1458- ConfigParser.getboolean() now also interprets TRUE, FALSE, YES, NO,
1459 ON, and OFF.
1460
Fred Drakecb7a6b52001-10-22 18:41:51 +00001461- xml.dom.minidom NodeList objects now support the length attribute
1462 and item() method as required by the DOM specifications.
1463
Guido van Rossumed554f62001-10-02 23:15:37 +00001464Tools/Demos
Skip Montanaroe5d7f7f2002-09-20 14:16:59 +00001465-----------
Guido van Rossumed554f62001-10-02 23:15:37 +00001466
1467- Demo/dns was removed. It no longer serves any purpose; a package
1468 derived from it is now maintained by Anthony Baxter, see
1469 http://PyDNS.SourceForge.net.
Tim Petersabf925f2001-09-28 21:53:42 +00001470
Barry Warsawf6fb1712001-10-19 05:35:40 +00001471- The freeze tool has been made more robust, and two new options have
1472 been added: -X and -E.
1473
Tim Petersabf925f2001-09-28 21:53:42 +00001474Build
Skip Montanaroe5d7f7f2002-09-20 14:16:59 +00001475-----
Tim Petersabf925f2001-09-28 21:53:42 +00001476
Barry Warsawf6fb1712001-10-19 05:35:40 +00001477- configure will use CXX in LINKCC if CXX is used to build main() and
1478 the system requires to link a C++ main using the C++ compiler.
1479
Tim Petersabf925f2001-09-28 21:53:42 +00001480C API
Skip Montanaroe5d7f7f2002-09-20 14:16:59 +00001481-----
Tim Petersabf925f2001-09-28 21:53:42 +00001482
Guido van Rossum6c4bce32001-10-18 19:20:25 +00001483- The documentation for the tp_compare slot is updated to require that
1484 the return value must be -1, 0, 1; an arbitrary number <0 or >0 is
1485 not correct. This is not yet enforced but will be enforced in
1486 Python 2.3; even later, we may use -2 to indicate errors and +2 for
1487 "NotImplemented". Right now, -1 should be used for an error return.
1488
Tim Petersd38b1c72001-09-30 05:09:37 +00001489- PyLong_AsLongLong() now accepts int (as well as long) arguments.
1490 Consequently, PyArg_ParseTuple's 'L' code also accepts int (as well
1491 as long) arguments.
1492
Guido van Rossum3c288632001-10-16 21:13:49 +00001493- PyThread_start_new_thread() now returns a long int giving the thread
1494 ID, if one can be calculated; it returns -1 for error, 0 if no
1495 thread ID is calculated (this is an incompatible change, but only
1496 the thread module used this API). This code has only really been
1497 tested on Linux and Windows; other platforms please beware (and
1498 report any bugs or strange behavior).
1499
Guido van Rossum1c486092001-10-19 02:05:35 +00001500- PyUnicode_FromEncodedObject() no longer accepts Unicode objects as
1501 input.
1502
Tim Petersabf925f2001-09-28 21:53:42 +00001503New platforms
Skip Montanaroe5d7f7f2002-09-20 14:16:59 +00001504-------------
Tim Petersabf925f2001-09-28 21:53:42 +00001505
1506Tests
Skip Montanaroe5d7f7f2002-09-20 14:16:59 +00001507-----
Tim Petersabf925f2001-09-28 21:53:42 +00001508
1509Windows
Skip Montanaroe5d7f7f2002-09-20 14:16:59 +00001510-------
Tim Petersabf925f2001-09-28 21:53:42 +00001511
Tim Peters04cf1d32001-10-09 22:39:40 +00001512- Installer: If you install IDLE, and don't disable file-extension
1513 registration, a new "Edit with IDLE" context (right-click) menu entry
1514 is created for .py and .pyw files.
1515
Tim Peters1ce3cf72001-10-01 17:58:40 +00001516- The signal module now supports SIGBREAK on Windows, thanks to Steven
1517 Scott. Note that SIGBREAK is unique to Windows. The default SIGBREAK
1518 action remains to call Win32 ExitProcess(). This can be changed via
Skip Montanaroa2a07bc2002-09-30 15:23:01 +00001519 signal.signal(). For example::
Tim Peters1ce3cf72001-10-01 17:58:40 +00001520
Skip Montanaroe5d7f7f2002-09-20 14:16:59 +00001521 # Make Ctrl+Break raise KeyboardInterrupt, like Python's default Ctrl+C
1522 # (SIGINT) behavior.
1523 import signal
1524 signal.signal(signal.SIGBREAK, signal.default_int_handler)
Tim Peters1ce3cf72001-10-01 17:58:40 +00001525
Skip Montanaroe5d7f7f2002-09-20 14:16:59 +00001526 try:
1527 while 1:
1528 pass
1529 except KeyboardInterrupt:
1530 # We get here on Ctrl+C or Ctrl+Break now; if we had not changed
1531 # SIGBREAK, only on Ctrl+C (and Ctrl+Break would terminate the
1532 # program without the possibility for any Python-level cleanup).
1533 print "Clean exit"
Tim Peters1ce3cf72001-10-01 17:58:40 +00001534
Tim Petersabf925f2001-09-28 21:53:42 +00001535
Tim Petersb07352e2001-09-08 01:25:47 +00001536What's New in Python 2.2a4?
1537===========================
1538
Skip Montanaroe5d7f7f2002-09-20 14:16:59 +00001539*Release date: 28-Sep-2001*
1540
Guido van Rossum808eea72001-09-25 04:15:41 +00001541Type/class unification and new-style classes
Skip Montanaroe5d7f7f2002-09-20 14:16:59 +00001542--------------------------------------------
Guido van Rossum808eea72001-09-25 04:15:41 +00001543
1544- pydoc and inspect are now aware of new-style classes;
1545 e.g. help(list) at the interactive prompt now shows proper
1546 documentation for all operations on list objects.
1547
1548- Applications using Jim Fulton's ExtensionClass module can now safely
1549 be used with Python 2.2. In particular, Zope 2.4.1 now works with
1550 Python 2.2 (as well as with Python 2.1.1). The Demo/metaclass
1551 examples also work again. It is hoped that Gtk and Boost also work
1552 with 2.2a4 and beyond. (If you can confirm this, please write
1553 webmaster@python.org; if there are still problems, please open a bug
1554 report on SourceForge.)
Tim Petersb07352e2001-09-08 01:25:47 +00001555
Tim Peters66c1a522001-09-24 21:17:50 +00001556- property() now takes 4 keyword arguments: fget, fset, fdel and doc.
Andrew M. Kuchling21b23b02002-05-07 20:58:03 +00001557 These map to read-only attributes 'fget', 'fset', 'fdel', and '__doc__'
Tim Peters66c1a522001-09-24 21:17:50 +00001558 in the constructed property object. fget, fset and fdel weren't
1559 discoverable from Python in 2.2a3. __doc__ is new, and allows to
1560 associate a docstring with a property.
1561
Guido van Rossum808eea72001-09-25 04:15:41 +00001562- Comparison overloading is now more completely implemented. For
1563 example, a str subclass instance can properly be compared to a str
1564 instance, and it can properly overload comparison. Ditto for most
1565 other built-in object types.
1566
1567- The repr() of new-style classes has changed; instead of <type
1568 'M.Foo'> a new-style class is now rendered as <class 'M.Foo'>,
1569 *except* for built-in types, which are still rendered as <type
1570 'Foo'> (to avoid upsetting existing code that might parse or
1571 otherwise rely on repr() of certain type objects).
1572
1573- The repr() of new-style objects is now always <Foo object at XXX>;
1574 previously, it was sometimes <Foo instance at XXX>.
1575
1576- For new-style classes, what was previously called __getattr__ is now
1577 called __getattribute__. This method, if defined, is called for
Andrew M. Kuchling51c18162001-10-22 01:47:26 +00001578 *every* attribute access. A new __getattr__ hook more similar to the
Guido van Rossum808eea72001-09-25 04:15:41 +00001579 one in classic classes is defined which is called only if regular
1580 attribute access raises AttributeError; to catch *all* attribute
1581 access, you can use __getattribute__ (for new-style classes). If
1582 both are defined, __getattribute__ is called first, and if it raises
1583 AttributeError, __getattr__ is called.
1584
1585- The __class__ attribute of new-style objects can be assigned to.
1586 The new class must have the same C-level object layout as the old
1587 class.
1588
1589- The builtin file type can be subclassed now. In the usual pattern,
1590 "file" is the name of the builtin type, and file() is a new builtin
1591 constructor, with the same signature as the builtin open() function.
1592 file() is now the preferred way to open a file.
1593
1594- Previously, __new__ would only see sequential arguments passed to
1595 the type in a constructor call; __init__ would see both sequential
1596 and keyword arguments. This made no sense whatsoever any more, so
1597 now both __new__ and __init__ see all arguments.
1598
1599- Previously, hash() applied to an instance of a subclass of str or
1600 unicode always returned 0. This has been repaired.
1601
1602- Previously, an operation on an instance of a subclass of an
1603 immutable type (int, long, float, complex, tuple, str, unicode),
1604 where the subtype didn't override the operation (and so the
1605 operation was handled by the builtin type), could return that
1606 instance instead a value of the base type. For example, if s was of
Andrew M. Kuchling21b23b02002-05-07 20:58:03 +00001607 a str subclass type, s[:] returned s as-is. Now it returns a str
Guido van Rossum808eea72001-09-25 04:15:41 +00001608 with the same value as s.
1609
Barry Warsaw86fbaf82001-09-28 15:26:12 +00001610- Provisional support for pickling new-style objects has been added.
1611
Guido van Rossum808eea72001-09-25 04:15:41 +00001612Core
Skip Montanaroe5d7f7f2002-09-20 14:16:59 +00001613----
Guido van Rossum808eea72001-09-25 04:15:41 +00001614
Tim Peters2c9aa5e2001-09-23 04:06:05 +00001615- file.writelines() now accepts any iterable object producing strings.
1616
Marc-André Lemburgaefd7662001-09-20 12:59:37 +00001617- PyUnicode_FromEncodedObject() now works very much like
1618 PyObject_Str(obj) in that it tries to use __str__/tp_str
1619 on the object if the object is not a string or buffer. This
1620 makes unicode() behave like str() when applied to non-string/buffer
1621 objects.
1622
Andrew M. Kuchling51c18162001-10-22 01:47:26 +00001623- PyFile_WriteObject now passes Unicode objects to the file's write
1624 method. As a result, all file-like objects which may be the target
Martin v. Löwis2777c022001-09-19 13:47:32 +00001625 of a print statement must support Unicode objects, i.e. they must
1626 at least convert them into ASCII strings.
1627
Guido van Rossum624c8af2001-09-18 15:21:04 +00001628- Thread scheduling on Solaris should be improved; it is no longer
1629 necessary to insert a small sleep at the start of a thread in order
1630 to let other runnable threads be scheduled.
1631
Tim Petersb07352e2001-09-08 01:25:47 +00001632Library
Skip Montanaroe5d7f7f2002-09-20 14:16:59 +00001633-------
Tim Petersb07352e2001-09-08 01:25:47 +00001634
Marc-André Lemburgbf990172001-09-27 14:17:33 +00001635- StringIO.StringIO instances and cStringIO.StringIO instances support
1636 read character buffer compatible objects for their .write() methods.
1637 These objects are converted to strings and then handled as such
1638 by the instances.
1639
Barry Warsaw2f600732001-09-24 04:28:10 +00001640- The "email" package has been added. This is basically a port of the
1641 mimelib package <http://sf.net/projects/mimelib> with API changes
1642 and some implementations updated to use iterators and generators.
1643
Tim Peters8a9c2842001-09-22 21:30:22 +00001644- difflib.ndiff() and difflib.Differ.compare() are generators now. This
1645 restores the ability of Tools/scripts/ndiff.py to start producing output
1646 before the entire comparison is complete.
1647
Barry Warsaw58b072d2001-09-22 04:44:21 +00001648- StringIO.StringIO instances and cStringIO.StringIO instances support
1649 iteration just like file objects (i.e. their .readline() method is
1650 called for each iteration until it returns an empty string).
1651
Marc-André Lemburg494f2ae2001-09-19 11:33:31 +00001652- The codecs module has grown four new helper APIs to access
1653 builtin codecs: getencoder(), getdecoder(), getreader(),
1654 getwriter().
1655
Guido van Rossum624c8af2001-09-18 15:21:04 +00001656- SimpleXMLRPCServer: a new module (based upon SimpleHTMLServer)
1657 simplifies writing XML RPC servers.
1658
Barry Warsaw647d5e82001-09-28 17:01:02 +00001659- os.path.realpath(): a new function that returns the absolute pathname
Guido van Rossum624c8af2001-09-18 15:21:04 +00001660 after interpretation of symbolic links. On non-Unix systems, this
1661 is an alias for os.path.abspath().
1662
Tim Peters16a77ad2001-09-08 04:00:12 +00001663- operator.indexOf() (PySequence_Index() in the C API) now works with any
1664 iterable object.
1665
Guido van Rossum624c8af2001-09-18 15:21:04 +00001666- smtplib now supports various authentication and security features of
1667 the SMTP protocol through the new login() and starttls() methods.
Guido van Rossumd8185ca2001-09-14 16:35:16 +00001668
Guido van Rossum624c8af2001-09-18 15:21:04 +00001669- hmac: a new module implementing keyed hashing for message
1670 authentication.
1671
1672- mimetypes now recognizes more extensions and file types. At the
1673 same time, some mappings not sanctioned by IANA were removed.
Guido van Rossumd8185ca2001-09-14 16:35:16 +00001674
Guido van Rossum624c8af2001-09-18 15:21:04 +00001675- The "compiler" package has been brought up to date to the state of
Guido van Rossumc9ed5dc2001-09-20 05:30:24 +00001676 Python 2.2 bytecode generation. It has also been promoted from a
1677 Tool to a standard library package. (Tools/compiler still exists as
1678 a sample driver.)
1679
Guido van Rossumc9ed5dc2001-09-20 05:30:24 +00001680Tools
Skip Montanaroe5d7f7f2002-09-20 14:16:59 +00001681-----
Guido van Rossum624c8af2001-09-18 15:21:04 +00001682
Tim Petersb07352e2001-09-08 01:25:47 +00001683Build
Skip Montanaroe5d7f7f2002-09-20 14:16:59 +00001684-----
Tim Petersb07352e2001-09-08 01:25:47 +00001685
Guido van Rossum624c8af2001-09-18 15:21:04 +00001686- Large file support (LFS) is now automatic when the platform supports
1687 it; no more manual configuration tweaks are needed. On Linux, at
1688 least, it's possible to have a system whose C library supports large
1689 files but whose kernel doesn't; in this case, large file support is
1690 still enabled but doesn't do you any good unless you upgrade your
1691 kernel or share your Python executable with another system whose
1692 kernel has large file support.
1693
1694- The configure script now supplies plausible defaults in a
1695 cross-compilation environment. This doesn't mean that the supplied
1696 values are always correct, or that cross-compilation now works
1697 flawlessly -- but it's a first step (and it shuts up most of
1698 autoconf's warnings about AC_TRY_RUN).
1699
1700- The Unix build is now a bit less chatty, courtesy of the parser
1701 generator. The build is completely silent (except for errors) when
1702 using "make -s", thanks to a -q option to setup.py.
1703
Tim Petersb07352e2001-09-08 01:25:47 +00001704C API
Skip Montanaroe5d7f7f2002-09-20 14:16:59 +00001705-----
Tim Petersb07352e2001-09-08 01:25:47 +00001706
Guido van Rossum624c8af2001-09-18 15:21:04 +00001707- The "structmember" API now supports some new flag bits to deny read
1708 and/or write access to attributes in restricted execution mode.
1709
Tim Petersb07352e2001-09-08 01:25:47 +00001710New platforms
Skip Montanaroe5d7f7f2002-09-20 14:16:59 +00001711-------------
Tim Petersb07352e2001-09-08 01:25:47 +00001712
Guido van Rossum624c8af2001-09-18 15:21:04 +00001713- Compaq's iPAQ handheld, running the "familiar" Linux distribution
1714 (http://familiar.handhelds.org).
1715
Tim Petersb07352e2001-09-08 01:25:47 +00001716Tests
Skip Montanaroe5d7f7f2002-09-20 14:16:59 +00001717-----
Tim Petersb07352e2001-09-08 01:25:47 +00001718
Tim Peters8a9c2842001-09-22 21:30:22 +00001719- The "classic" standard tests, which work by comparing stdout to
1720 an expected-output file under Lib/test/output/, no longer stop at
1721 the first mismatch. Instead the test is run to completion, and a
1722 variant of ndiff-style comparison is used to report all differences.
1723 This is much easier to understand than the previous style of reporting.
1724
1725- The unittest-based standard tests now use regrtest's test_main()
1726 convention, instead of running as a side-effect of merely being
1727 imported. This allows these tests to be run in more natural and
1728 flexible ways as unittests, outside the regrtest framework.
1729
1730- regrtest.py is much better integrated with unittest and doctest now,
1731 especially in regard to reporting errors.
1732
Tim Petersb07352e2001-09-08 01:25:47 +00001733Windows
Skip Montanaroe5d7f7f2002-09-20 14:16:59 +00001734-------
Tim Petersb07352e2001-09-08 01:25:47 +00001735
Guido van Rossum624c8af2001-09-18 15:21:04 +00001736- Large file support now also works for files > 4GB, on filesystems
Tim Peters8a9c2842001-09-22 21:30:22 +00001737 that support it (NTFS under Windows 2000). See "What's New in
1738 Python 2.2a3" for more detail.
Guido van Rossum624c8af2001-09-18 15:21:04 +00001739
Tim Petersb07352e2001-09-08 01:25:47 +00001740
Tim Petersedc99312001-08-22 21:36:50 +00001741What's New in Python 2.2a3?
1742===========================
1743
Skip Montanaroe5d7f7f2002-09-20 14:16:59 +00001744*Release Date: 07-Sep-2001*
1745
Tim Petersedc99312001-08-22 21:36:50 +00001746Core
Skip Montanaroe5d7f7f2002-09-20 14:16:59 +00001747----
Tim Petersedc99312001-08-22 21:36:50 +00001748
Tim Peters9fffa3e2001-09-04 05:14:19 +00001749- Conversion of long to float now raises OverflowError if the long is too
1750 big to represent as a C double.
1751
Tim Peters32f453e2001-09-03 08:35:41 +00001752- The 3-argument builtin pow() no longer allows a third non-None argument
1753 if either of the first two arguments is a float, or if both are of
1754 integer types and the second argument is negative (in which latter case
1755 the arguments are converted to float, so this is really the same
1756 restriction).
1757
Tim Peters5d2b77c2001-09-03 05:47:38 +00001758- The builtin dir() now returns more information, and sometimes much
1759 more, generally naming all attributes of an object, and all attributes
1760 reachable from the object via its class, and from its class's base
1761 classes, and so on from them too. Example: in 2.2a2, dir([]) returned
1762 an empty list. In 2.2a3,
1763
1764 >>> dir([])
1765 ['__add__', '__class__', '__contains__', '__delattr__', '__delitem__',
1766 '__eq__', '__ge__', '__getattr__', '__getitem__', '__getslice__',
1767 '__gt__', '__hash__', '__iadd__', '__imul__', '__init__', '__le__',
1768 '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__repr__',
1769 '__rmul__', '__setattr__', '__setitem__', '__setslice__', '__str__',
1770 'append', 'count', 'extend', 'index', 'insert', 'pop', 'remove',
1771 'reverse', 'sort']
1772
1773 dir(module) continues to return only the module's attributes, though.
1774
Tim Petersbdee63f2001-09-02 03:40:59 +00001775- Overflowing operations on plain ints now return a long int rather
Guido van Rossumae457142001-08-31 18:31:35 +00001776 than raising OverflowError. This is a partial implementation of PEP
1777 237. You can use -Wdefault::OverflowWarning to enable a warning for
1778 this situation, and -Werror::OverflowWarning to revert to the old
1779 OverflowError exception.
1780
Guido van Rossum61c345f2001-09-04 03:26:15 +00001781- A new command line option, -Q<arg>, is added to control run-time
Guido van Rossumae457142001-08-31 18:31:35 +00001782 warnings for the use of classic division. (See PEP 238.) Possible
Barry Warsawd6c8ca62001-09-07 18:13:44 +00001783 values are -Qold, -Qwarn, -Qwarnall, and -Qnew. The default is
1784 -Qold, meaning the / operator has its classic meaning and no
1785 warnings are issued. Using -Qwarn issues a run-time warning about
1786 all uses of classic division for int and long arguments; -Qwarnall
1787 also warns about classic division for float and complex arguments
Tim Peters3caca232001-12-06 06:23:26 +00001788 (for use with fixdiv.py).
Skip Montanaroe5d7f7f2002-09-20 14:16:59 +00001789 [Note: the remainder of this item (preserved below) became
1790 obsolete in 2.2c1 -- -Qnew has global effect in 2.2] ::
1791
1792 Using -Qnew is questionable; it turns on new division by default, but
1793 only in the __main__ module. You can usefully combine -Qwarn or
1794 -Qwarnall and -Qnew: this gives the __main__ module new division, and
1795 warns about classic division everywhere else.
Guido van Rossumae457142001-08-31 18:31:35 +00001796
Tim Petersbdee63f2001-09-02 03:40:59 +00001797- Many built-in types can now be subclassed. This applies to int,
Guido van Rossumae457142001-08-31 18:31:35 +00001798 long, float, str, unicode, and tuple. (The types complex, list and
1799 dictionary can also be subclassed; this was introduced earlier.)
1800 Note that restrictions apply when subclassing immutable built-in
1801 types: you can only affect the value of the instance by overloading
1802 __new__. You can add mutable attributes, and the subclass instances
1803 will have a __dict__ attribute, but you cannot change the "value"
1804 (as implemented by the base class) of an immutable subclass instance
1805 once it is created.
1806
Guido van Rossumaaf80c82001-09-02 13:44:35 +00001807- The dictionary constructor now takes an optional argument, a
1808 mapping-like object, and initializes the dictionary from its
1809 (key, value) pairs.
1810
Tim Petersbdee63f2001-09-02 03:40:59 +00001811- A new built-in type, super, has been added. This facilitates making
Guido van Rossumae457142001-08-31 18:31:35 +00001812 "cooperative super calls" in a multiple inheritance setting. For an
1813 explanation, see http://www.python.org/2.2/descrintro.html#cooperation
1814
Guido van Rossum8d7234d2001-09-06 22:02:58 +00001815- A new built-in type, property, has been added. This enables the
1816 creation of "properties". These are attributes implemented by
1817 getter and setter functions (or only one of these for read-only or
1818 write-only attributes), without the need to override __getattr__.
1819 See http://www.python.org/2.2/descrintro.html#property
Guido van Rossumae457142001-08-31 18:31:35 +00001820
Tim Petersbdee63f2001-09-02 03:40:59 +00001821- The syntax of floating-point and imaginary literals has been
Tim Petersd507dab2001-08-30 20:51:59 +00001822 liberalized, to allow leading zeroes. Examples of literals now
1823 legal that were SyntaxErrors before:
1824
1825 00.0 0e3 0100j 07.5 00000000000000000008.
1826
Tim Petersbdee63f2001-09-02 03:40:59 +00001827- An old tokenizer bug allowed floating point literals with an incomplete
Tim Petersc6d95812001-08-28 20:56:27 +00001828 exponent, such as 1e and 3.1e-. Such literals now raise SyntaxError.
1829
Tim Petersedc99312001-08-22 21:36:50 +00001830Library
Skip Montanaroe5d7f7f2002-09-20 14:16:59 +00001831-------
Tim Petersedc99312001-08-22 21:36:50 +00001832
Martin v. Löwiscb227c92001-09-06 08:54:16 +00001833- telnetlib includes symbolic names for the options, and support for
Martin v. Löwis1da9c572002-11-04 09:56:00 +00001834 setting an option negotiation callback. It also supports processing
1835 of suboptions.
Martin v. Löwiscb227c92001-09-06 08:54:16 +00001836
Tim Petersa40c7932001-09-05 22:36:56 +00001837- The new C standard no longer requires that math libraries set errno to
1838 ERANGE on overflow. For platform libraries that exploit this new
1839 freedom, Python's overflow-checking was wholly broken. A new overflow-
1840 checking scheme attempts to repair that, but may not be reliable on all
1841 platforms (C doesn't seem to provide anything both useful and portable
1842 in this area anymore).
1843
Martin v. Löwis44f86962001-09-05 13:44:54 +00001844- Asynchronous timeout actions are available through the new class
1845 threading.Timer.
1846
Tim Peters78526162001-09-05 00:53:45 +00001847- math.log and math.log10 now return sensible results for even huge
1848 long arguments. For example, math.log10(10 ** 10000) ~= 10000.0.
1849
Tim Petersbdee63f2001-09-02 03:40:59 +00001850- A new function, imp.lock_held(), returns 1 when the import lock is
Tim Peters69232342001-08-30 05:16:13 +00001851 currently held. See the docs for the imp module.
1852
Tim Petersbdee63f2001-09-02 03:40:59 +00001853- pickle, cPickle and marshal on 32-bit platforms can now correctly read
Tim Peters82112372001-08-29 02:28:42 +00001854 dumps containing ints written on platforms where Python ints are 8 bytes.
1855 When read on a box where Python ints are 4 bytes, such values are
1856 converted to Python longs.
1857
Tim Petersbdee63f2001-09-02 03:40:59 +00001858- In restricted execution mode (using the rexec module), unmarshalling
Guido van Rossumae457142001-08-31 18:31:35 +00001859 code objects is no longer allowed. This plugs a security hole.
1860
Steve Purcell6091cd62001-09-06 16:05:17 +00001861- unittest.TestResult instances no longer store references to tracebacks
1862 generated by test failures. This prevents unexpected dangling references
1863 to objects that should be garbage collected between tests.
1864
Tim Petersedc99312001-08-22 21:36:50 +00001865Tools
Skip Montanaroe5d7f7f2002-09-20 14:16:59 +00001866-----
Tim Petersedc99312001-08-22 21:36:50 +00001867
Barry Warsawd6c8ca62001-09-07 18:13:44 +00001868- Tools/scripts/fixdiv.py has been added which can be used to fix
1869 division operators as per PEP 238.
1870
Tim Petersedc99312001-08-22 21:36:50 +00001871Build
Skip Montanaroe5d7f7f2002-09-20 14:16:59 +00001872-----
Tim Petersedc99312001-08-22 21:36:50 +00001873
Barry Warsawd6c8ca62001-09-07 18:13:44 +00001874- If you are an adventurous person using Mac OS X you may want to look at
1875 Mac/OSX. There is a Makefile there that will build Python as a real Mac
1876 application, which can be used for experimenting with Carbon or Cocoa.
1877 Discussion of this on pythonmac-sig, please.
1878
Tim Peters7eea37e2001-09-04 22:08:56 +00001879C API
Skip Montanaroe5d7f7f2002-09-20 14:16:59 +00001880-----
Tim Peters7eea37e2001-09-04 22:08:56 +00001881
1882- New function PyObject_Dir(obj), like Python __builtin__.dir(obj).
Tim Peters69232342001-08-30 05:16:13 +00001883
Tim Peters9fffa3e2001-09-04 05:14:19 +00001884- Note that PyLong_AsDouble can fail! This has always been true, but no
1885 callers checked for it. It's more likely to fail now, because overflow
Skip Montanaroa2a07bc2002-09-30 15:23:01 +00001886 errors are properly detected now. The proper way to check::
Tim Peters9fffa3e2001-09-04 05:14:19 +00001887
Skip Montanaroe5d7f7f2002-09-20 14:16:59 +00001888 double x = PyLong_AsDouble(some_long_object);
1889 if (x == -1.0 && PyErr_Occurred()) {
1890 /* The conversion failed. */
1891 }
Tim Peters9fffa3e2001-09-04 05:14:19 +00001892
Tim Petersbdee63f2001-09-02 03:40:59 +00001893- The GC API has been changed. Extensions that use the old API will still
Neil Schemenauer4042c692001-08-30 15:38:01 +00001894 compile but will not participate in GC. To upgrade an extension
1895 module:
1896
1897 - rename Py_TPFLAGS_GC to PyTPFLAGS_HAVE_GC
Tim Petersd507dab2001-08-30 20:51:59 +00001898
Neil Schemenauer4042c692001-08-30 15:38:01 +00001899 - use PyObject_GC_New or PyObject_GC_NewVar to allocate objects and
1900 PyObject_GC_Del to deallocate them
Tim Petersd507dab2001-08-30 20:51:59 +00001901
Neil Schemenauer4042c692001-08-30 15:38:01 +00001902 - rename PyObject_GC_Init to PyObject_GC_Track and PyObject_GC_Fini
1903 to PyObject_GC_UnTrack
Tim Petersd507dab2001-08-30 20:51:59 +00001904
Neil Schemenauer4042c692001-08-30 15:38:01 +00001905 - remove PyGC_HEAD_SIZE from object size calculations
1906
1907 - remove calls to PyObject_AS_GC and PyObject_FROM_GC
1908
Tim Petersbdee63f2001-09-02 03:40:59 +00001909- Two new functions: PyString_FromFormat() and PyString_FromFormatV().
Guido van Rossumae457142001-08-31 18:31:35 +00001910 These can be used safely to construct string objects from a
1911 sprintf-style format string (similar to the format string supported
1912 by PyErr_Format()).
Tim Peters69232342001-08-30 05:16:13 +00001913
Tim Petersedc99312001-08-22 21:36:50 +00001914New platforms
Skip Montanaroe5d7f7f2002-09-20 14:16:59 +00001915-------------
Tim Petersedc99312001-08-22 21:36:50 +00001916
Tim Petersb7da0902001-09-02 23:01:43 +00001917- Stephen Hansen contributed patches sufficient to get a clean compile
1918 under Borland C (Windows), but he reports problems running it and ran
1919 out of time to complete the port. Volunteers? Expect a MemoryError
1920 when importing the types module; this is probably shallow, and
1921 causing later failures too.
Tim Petersbdee63f2001-09-02 03:40:59 +00001922
Tim Petersedc99312001-08-22 21:36:50 +00001923Tests
Skip Montanaroe5d7f7f2002-09-20 14:16:59 +00001924-----
Tim Petersedc99312001-08-22 21:36:50 +00001925
1926Windows
Skip Montanaroe5d7f7f2002-09-20 14:16:59 +00001927-------
Tim Petersedc99312001-08-22 21:36:50 +00001928
Tim Peters6e13a562001-09-06 00:32:15 +00001929- Large file support is now enabled on Win32 platforms as well as on
1930 Win64. This means that, for example, you can use f.tell() and f.seek()
1931 to manipulate files larger than 2 gigabytes (provided you have enough
1932 disk space, and are using a Windows filesystem that supports large
Tim Peters9a9471c2001-09-11 23:18:51 +00001933 partitions). Windows filesystem limits: FAT has a 2GB (gigabyte)
1934 filesize limit, and large file support makes no difference there.
1935 FAT32's limit is 4GB, and files >= 2GB are easier to use from Python now.
1936 NTFS has no practical limit on file size, and files of any size can be
1937 used from Python now.
Tim Peters6e13a562001-09-06 00:32:15 +00001938
Tim Petersbdee63f2001-09-02 03:40:59 +00001939- The w9xpopen hack is now used on Windows NT and 2000 too when COMPSPEC
Tim Peters402d5982001-08-27 06:37:48 +00001940 points to command.com (patch from Brian Quinlan).
1941
Tim Petersedc99312001-08-22 21:36:50 +00001942
Tim Peters20f51a72001-07-21 02:31:40 +00001943What's New in Python 2.2a2?
1944===========================
1945
Skip Montanaroe5d7f7f2002-09-20 14:16:59 +00001946*Release Date: 22-Aug-2001*
1947
Martin v. Löwis339d0f72001-08-17 18:39:25 +00001948Build
Skip Montanaroe5d7f7f2002-09-20 14:16:59 +00001949-----
Martin v. Löwis339d0f72001-08-17 18:39:25 +00001950
Barry Warsaw18b2ecf2001-08-22 20:26:56 +00001951- Tim Peters developed a brand new Windows installer using Wise 8.1,
1952 generously donated to us by Wise Solutions.
1953
Martin v. Löwis339d0f72001-08-17 18:39:25 +00001954- configure supports a new option --enable-unicode, with the values
1955 ucs2 and ucs4 (new in 2.2a1). With --disable-unicode, the Unicode
1956 type and supporting code is completely removed from the interpreter.
Barry Warsaw6f3410d2001-08-22 04:08:41 +00001957
Jack Jansen32ce0cd2001-08-21 19:28:20 +00001958- A new configure option --enable-framework builds a Mac OS X framework,
1959 which "make frameworkinstall" will install. This provides a starting
1960 point for more mac-like functionality, join pythonmac-sig@python.org
1961 if you are interested in helping.
Martin v. Löwis339d0f72001-08-17 18:39:25 +00001962
Barry Warsaw6f3410d2001-08-22 04:08:41 +00001963- The NeXT platform is no longer supported.
1964
Skip Montanaroe5d7f7f2002-09-20 14:16:59 +00001965- The 'new' module is now statically linked.
Barry Warsaw6f3410d2001-08-22 04:08:41 +00001966
Tim Peters0afb6092001-08-15 06:06:44 +00001967Tools
Skip Montanaroe5d7f7f2002-09-20 14:16:59 +00001968-----
Tim Peters0afb6092001-08-15 06:06:44 +00001969
1970- The new Tools/scripts/cleanfuture.py can be used to automatically
Andrew M. Kuchlingb0532092001-08-15 15:54:56 +00001971 edit out obsolete future statements from Python source code. See
Tim Peters0afb6092001-08-15 06:06:44 +00001972 the module docstring for details.
1973
Tim Peters20f51a72001-07-21 02:31:40 +00001974Tests
Skip Montanaroe5d7f7f2002-09-20 14:16:59 +00001975-----
Tim Peters20f51a72001-07-21 02:31:40 +00001976
Tim Peters5e824c32001-08-12 22:25:01 +00001977- regrtest.py now knows which tests are expected to be skipped on some
Barry Warsaw6f3410d2001-08-22 04:08:41 +00001978 platforms, allowing to give clearer test result output. regrtest
1979 also has optional --use/-u switch to run normally disabled tests
1980 which require network access or consume significant disk resources.
Tim Peters5e824c32001-08-12 22:25:01 +00001981
Tim Peters20f51a72001-07-21 02:31:40 +00001982- Several new tests in the standard test suite, with special thanks to
1983 Nick Mathewson.
1984
1985Core
Skip Montanaroe5d7f7f2002-09-20 14:16:59 +00001986----
Tim Peters20f51a72001-07-21 02:31:40 +00001987
Barry Warsaw6f3410d2001-08-22 04:08:41 +00001988- The floor division operator // has been added as outlined in PEP
1989 238. The / operator still provides classic division (and will until
1990 Python 3.0) unless "from __future__ import division" is included, in
1991 which case the / operator will provide true division. The operator
1992 module provides truediv() and floordiv() functions. Augmented
1993 assignment variants are included, as are the equivalent overloadable
1994 methods and C API methods. See the PEP for a full discussion:
1995 <http://python.sf.net/peps/pep-0238.html>
1996
Tim Peters6cd6a822001-08-17 22:11:27 +00001997- Future statements are now effective in simulated interactive shells
1998 (like IDLE). This should "just work" by magic, but read Michael
1999 Hudson's "Future statements in simulated shells" PEP 264 for full
2000 details: <http://python.sf.net/peps/pep-0264.html>.
2001
Guido van Rossumf86ddd22001-08-17 21:21:04 +00002002- The type/class unification (PEP 252-253) was integrated into the
2003 trunk and is not so tentative any more (the exact specification of
2004 some features is still tentative). A lot of work has done on fixing
2005 bugs and adding robustness and features (performance still has to
2006 come a long way).
2007
Marc-André Lemburg888fac02001-07-31 14:24:31 +00002008- Warnings about a mismatch in the Python API during extension import
2009 now use the Python warning framework (which makes it possible to
2010 write filters for these warnings).
2011
Barry Warsaw9b3be7f2001-08-14 18:35:02 +00002012- A function's __dict__ (aka func_dict) will now always be a
2013 dictionary. It used to be possible to delete it or set it to None,
2014 but now both actions raise TypeErrors. It is still legal to set it
2015 to a dictionary object. Getting func.__dict__ before any attributes
2016 have been assigned now returns an empty dictionary instead of None.
2017
Guido van Rossum32aa5d22001-09-05 18:43:35 +00002018- A new command line option, -E, was added which disables the use of
2019 all environment variables, or at least those that are specifically
2020 significant to Python. Usually those have a name starting with
2021 "PYTHON". This was used to fix a problem where the tests fail if
2022 the user happens to have PYTHONHOME or PYTHONPATH pointing to an
2023 older distribution.
2024
Marc-André Lemburgd6277912001-07-31 14:42:42 +00002025Library
Skip Montanaroe5d7f7f2002-09-20 14:16:59 +00002026-------
Marc-André Lemburgd6277912001-07-31 14:42:42 +00002027
Tim Peters5e824c32001-08-12 22:25:01 +00002028- New class Differ and new functions ndiff() and restore() in difflib.py.
2029 These package the algorithms used by the popular Tools/scripts/ndiff.py,
Tim Peters0afb6092001-08-15 06:06:44 +00002030 for programmatic reuse.
Tim Peters5e824c32001-08-12 22:25:01 +00002031
Marc-André Lemburgd6277912001-07-31 14:42:42 +00002032- New function xml.sax.saxutils.quoteattr(): Quote an XML attribute
2033 value using the minimal quoting required for the value; more
2034 reliable than using xml.sax.saxutils.escape() for attribute values.
2035
2036- Readline completion support for cmd.Cmd was added.
2037
Barry Warsaw6f3410d2001-08-22 04:08:41 +00002038- Calling os.tempnam() or os.tmpnam() generate RuntimeWarnings.
2039
2040- Added function threading.BoundedSemaphore()
2041
2042- Added Ka-Ping Yee's cgitb.py module.
2043
Skip Montanaroe5d7f7f2002-09-20 14:16:59 +00002044- The 'new' module now exposes the CO_xxx flags.
Barry Warsaw6f3410d2001-08-22 04:08:41 +00002045
Martin v. Löwis560da622001-11-24 09:24:51 +00002046- The gc module offers the get_referents function.
2047
Marc-André Lemburgd6277912001-07-31 14:42:42 +00002048New platforms
Skip Montanaroe5d7f7f2002-09-20 14:16:59 +00002049-------------
Marc-André Lemburgd6277912001-07-31 14:42:42 +00002050
2051C API
Skip Montanaroe5d7f7f2002-09-20 14:16:59 +00002052-----
Marc-André Lemburgd6277912001-07-31 14:42:42 +00002053
Marc-André Lemburg888fac02001-07-31 14:24:31 +00002054- Two new APIs PyOS_snprintf() and PyOS_vsnprintf() were added
2055 which provide a cross-platform implementations for the
2056 relatively new snprintf()/vsnprintf() C lib APIs. In contrast to
2057 the standard sprintf() and vsprintf() C lib APIs, these versions
2058 apply bounds checking on the used buffer which enhances protection
2059 against buffer overruns.
2060
Marc-André Lemburg48dbfe92001-07-31 14:37:40 +00002061- Unicode APIs now use name mangling to assure that mixing interpreters
Tim Petersc1731372001-08-04 08:12:36 +00002062 and extensions using different Unicode widths is rendered next to
2063 impossible. Trying to import an incompatible Unicode-aware extension
Marc-André Lemburg48dbfe92001-07-31 14:37:40 +00002064 will result in an ImportError. Unicode extensions writers must make
2065 sure to check the Unicode width compatibility in their extensions by
2066 using at least one of the mangled Unicode APIs in the extension.
2067
Martin v. Löwis339d0f72001-08-17 18:39:25 +00002068- Two new flags METH_NOARGS and METH_O are available in method definition
2069 tables to simplify implementation of methods with no arguments and a
2070 single untyped argument. Calling such methods is more efficient than
2071 calling corresponding METH_VARARGS methods. METH_OLDARGS is now
2072 deprecated.
2073
Tim Petersc1731372001-08-04 08:12:36 +00002074Windows
Skip Montanaroe5d7f7f2002-09-20 14:16:59 +00002075-------
Tim Petersc1731372001-08-04 08:12:36 +00002076
2077- "import module" now compiles module.pyw if it exists and nothing else
2078 relevant is found.
2079
Tim Peters20f51a72001-07-21 02:31:40 +00002080
Guido van Rossum55a78992001-07-17 17:22:32 +00002081What's New in Python 2.2a1?
Tim Petersf553f892001-05-01 20:45:31 +00002082===========================
2083
Skip Montanaroe5d7f7f2002-09-20 14:16:59 +00002084*Release date: 18-Jul-2001*
2085
Tim Petersf553f892001-05-01 20:45:31 +00002086Core
Skip Montanaroe5d7f7f2002-09-20 14:16:59 +00002087----
Tim Petersa814db52001-05-14 07:05:58 +00002088
Tim Peters6d6c1a32001-08-02 04:15:00 +00002089- TENTATIVELY, a large amount of code implementing much of what's
2090 described in PEP 252 (Making Types Look More Like Classes) and PEP
2091 253 (Subtyping Built-in Types) was added. This will be released
2092 with Python 2.2a1. Documentation will be provided separately
2093 through http://www.python.org/2.2/. The purpose of releasing this
2094 with Python 2.2a1 is to test backwards compatibility. It is
2095 possible, though not likely, that a decision is made not to release
2096 this code as part of 2.2 final, if any serious backwards
Raymond Hettingerf2f2a2c2002-08-19 14:25:03 +00002097 incompatibilities are found during alpha testing that cannot be
Tim Peters6d6c1a32001-08-02 04:15:00 +00002098 repaired.
2099
Guido van Rossum55a78992001-07-17 17:22:32 +00002100- Generators were added; this is a new way to create an iterator (see
Tim Peters11a0d102001-07-17 18:48:00 +00002101 below) using what looks like a simple function containing one or
Guido van Rossum55a78992001-07-17 17:22:32 +00002102 more 'yield' statements. See PEP 255. Since this adds a new
2103 keyword to the language, this feature must be enabled by including a
2104 future statement: "from __future__ import generators" (see PEP 236).
2105 Generators will become a standard feature in a future release
2106 (probably 2.3). Without this future statement, 'yield' remains an
2107 ordinary identifier, but a warning is issued each time it is used.
2108 (These warnings currently don't conform to the warnings framework of
2109 PEP 230; we intend to fix this in 2.2a2.)
2110
Marc-André Lemburg12e74b32001-05-22 08:58:23 +00002111- The UTF-16 codec was modified to be more RFC compliant. It will now
2112 only remove BOM characters at the start of the string and then
2113 only if running in native mode (UTF-16-LE and -BE won't remove a
2114 leading BMO character).
2115
Marc-André Lemburgfab96cc2001-05-15 18:38:45 +00002116- Strings now have a new method .decode() to complement the already
2117 existing .encode() method. These two methods provide direct access
2118 to the corresponding decoders and encoders of the registered codecs.
2119
2120 To enhance the usability of the .encode() method, the special
2121 casing of Unicode object return values was dropped (Unicode objects
2122 were auto-magically converted to string using the default encoding).
Tim Peterseb28ef22001-06-02 05:27:19 +00002123
Marc-André Lemburgfab96cc2001-05-15 18:38:45 +00002124 Both methods will now return whatever the codec in charge of the
2125 requested encoding returns as object, e.g. Unicode codecs will
2126 return Unicode objects when decoding is requested ("äöü".decode("latin-1")
2127 will return u"äöü"). This enables codec writer to create codecs
2128 for various simple to use conversions.
2129
2130 New codecs were added to demonstrate these new features (the .encode()
2131 and .decode() columns indicate the type of the returned objects):
2132
Skip Montanaroe5d7f7f2002-09-20 14:16:59 +00002133 +---------+-----------+-----------+-----------------------------+
2134 |Name | .encode() | .decode() | Description |
2135 +=========+===========+===========+=============================+
2136 |uu | string | string | UU codec (e.g. for email) |
2137 +---------+-----------+-----------+-----------------------------+
2138 |base64 | string | string | base64 codec |
2139 +---------+-----------+-----------+-----------------------------+
2140 |quopri | string | string | quoted-printable codec |
2141 +---------+-----------+-----------+-----------------------------+
2142 |zlib | string | string | zlib compression |
2143 +---------+-----------+-----------+-----------------------------+
2144 |hex | string | string | 2-byte hex codec |
2145 +---------+-----------+-----------+-----------------------------+
2146 |rot-13 | string | Unicode | ROT-13 Unicode charmap codec|
2147 +---------+-----------+-----------+-----------------------------+
Marc-André Lemburgfab96cc2001-05-15 18:38:45 +00002148
Mark Hammond2a0af792001-05-14 03:09:36 +00002149- Some operating systems now support the concept of a default Unicode
2150 encoding for file system operations. Notably, Windows supports 'mbcs'
2151 as the default. The Macintosh will also adopt this concept in the medium
Guido van Rossum1bd797a2001-05-14 13:53:38 +00002152 term, although the default encoding for that platform will be other than
Mark Hammond2a0af792001-05-14 03:09:36 +00002153 'mbcs'.
Guido van Rossum1bd797a2001-05-14 13:53:38 +00002154
2155 On operating system that support non-ASCII filenames, it is common for
Mark Hammond2a0af792001-05-14 03:09:36 +00002156 functions that return filenames (such as os.listdir()) to return Python
2157 string objects pre-encoded using the default file system encoding for
2158 the platform. As this encoding is likely to be different from Python's
2159 default encoding, converting this name to a Unicode object before passing
2160 it back to the Operating System would result in a Unicode error, as Python
Tim Petersa814db52001-05-14 07:05:58 +00002161 would attempt to use its default encoding (generally ASCII) rather than
2162 the default encoding for the file system.
Guido van Rossum1bd797a2001-05-14 13:53:38 +00002163
Tim Petersa814db52001-05-14 07:05:58 +00002164 In general, this change simply removes surprises when working with
2165 Unicode and the file system, making these operations work as you expect,
2166 increasing the transparency of Unicode objects in this context.
Mark Hammond2a0af792001-05-14 03:09:36 +00002167 See [????] for more details, including examples.
Tim Petersf553f892001-05-01 20:45:31 +00002168
Tim Peters61dff2b2001-05-08 15:43:37 +00002169- Float (and complex) literals in source code were evaluated to full
2170 precision only when running from a .py file; the same code loaded from a
2171 .pyc (or .pyo) file could suffer numeric differences starting at about the
2172 12th significant decimal digit. For example, on a machine with IEEE-754
2173 floating arithmetic,
2174
2175 x = 9007199254740992.0
2176 print long(x)
2177
2178 printed 9007199254740992 if run directly from .py, but 9007199254740000
2179 if from a compiled (.pyc or .pyo) file. This was due to marshal using
2180 str(float) instead of repr(float) when building code objects. marshal
2181 now uses repr(float) instead, which should reproduce floats to full
2182 machine precision (assuming the platform C float<->string I/O conversion
2183 functions are of good quality).
2184
2185 This may cause floating-point results to change in some cases, and
2186 usually for the better, but may also cause numerically unstable
2187 algorithms to break.
2188
Tim Peters2f228e72001-05-13 00:19:31 +00002189- The implementation of dicts suffers fewer collisions, which has speed
2190 benefits. However, the order in which dict entries appear in dict.keys(),
2191 dict.values() and dict.items() may differ from previous releases for a
2192 given dict. Nothing is defined about this order, so no program should
2193 rely on it. Nevertheless, it's easy to write test cases that rely on the
2194 order by accident, typically because of printing the str() or repr() of a
2195 dict to an "expected results" file. See Lib/test/test_support.py's new
2196 sortdict(dict) function for a simple way to display a dict in sorted
2197 order.
2198
Tim Peters7a3bfc32001-06-12 01:22:22 +00002199- Many other small changes to dicts were made, resulting in faster
2200 operation along the most common code paths.
2201
Guido van Rossum10315822001-05-01 20:54:30 +00002202- Dictionary objects now support the "in" operator: "x in dict" means
2203 the same as dict.has_key(x).
2204
Barry Warsaw51acc8d2001-06-26 20:12:50 +00002205- The update() method of dictionaries now accepts generic mapping
2206 objects. Specifically the argument object must support the .keys()
2207 and __getitem__() methods. This allows you to say, for example,
2208 {}.update(UserDict())
2209
Guido van Rossum10315822001-05-01 20:54:30 +00002210- Iterators were added; this is a generalized way of providing values
2211 to a for loop. See PEP 234. There's a new built-in function iter()
2212 to return an iterator. There's a new protocol to get the next value
2213 from an iterator using the next() method (in Python) or the
2214 tp_iternext slot (in C). There's a new protocol to get iterators
2215 using the __iter__() method (in Python) or the tp_iter slot (in C).
2216 Iterating (i.e. a for loop) over a dictionary generates its keys.
2217 Iterating over a file generates its lines.
2218
Tim Petersf553f892001-05-01 20:45:31 +00002219- The following functions were generalized to work nicely with iterator
Skip Montanaroa2a07bc2002-09-30 15:23:01 +00002220 arguments::
Skip Montanaroe5d7f7f2002-09-20 14:16:59 +00002221
Tim Peterse63415e2001-05-08 04:38:29 +00002222 map(), filter(), reduce(), zip()
Tim Peters8572b4f2001-05-06 01:05:02 +00002223 list(), tuple() (PySequence_Tuple() and PySequence_Fast() in C API)
2224 max(), min()
Tim Peters1af03e92001-05-26 19:37:54 +00002225 join() method of strings
2226 extend() method of lists
Tim Peters75f8e352001-05-05 11:33:43 +00002227 'x in y' and 'x not in y' (PySequence_Contains() in C API)
2228 operator.countOf() (PySequence_Count() in C API)
Skip Montanaroe5d7f7f2002-09-20 14:16:59 +00002229 right-hand side of assignment statements with multiple targets, such as ::
Tim Petersd6d010b2001-06-21 02:49:55 +00002230 x, y, z = some_iterable_object_returning_exactly_3_values
Tim Peters75f8e352001-05-05 11:33:43 +00002231
Tim Petersd85e1022001-05-11 21:51:48 +00002232- Accessing module attributes is significantly faster (for example,
2233 random.random or os.path or yourPythonModule.yourAttribute).
2234
Tim Peterse63415e2001-05-08 04:38:29 +00002235- Comparing dictionary objects via == and != is faster, and now works even
2236 if the keys and values don't support comparisons other than ==.
2237
Tim Peters95bf9392001-05-10 08:32:44 +00002238- Comparing dictionaries in ways other than == and != is slower: there were
2239 insecurities in the dict comparison implementation that could cause Python
2240 to crash if the element comparison routines for the dict keys and/or
2241 values mutated the dicts. Making the code bulletproof slowed it down.
2242
Tim Peterseb28ef22001-06-02 05:27:19 +00002243- Collisions in dicts are resolved via a new approach, which can help
2244 dramatically in bad cases. For example, looking up every key in a dict
Tim Peters7a3bfc32001-06-12 01:22:22 +00002245 d with d.keys() == [i << 16 for i in range(20000)] is approximately 500x
Tim Peterseb28ef22001-06-02 05:27:19 +00002246 faster now. Thanks to Christian Tismer for pointing out the cause and
2247 the nature of an effective cure (last December! better late than never).
Tim Peters15d49292001-05-27 07:39:22 +00002248
Tim Peters52e155e2001-06-16 05:42:57 +00002249- repr() is much faster for large containers (dict, list, tuple).
2250
2251
Tim Petersa814db52001-05-14 07:05:58 +00002252Library
Skip Montanaroe5d7f7f2002-09-20 14:16:59 +00002253-------
Tim Petersa814db52001-05-14 07:05:58 +00002254
Fred Drake960fdf92001-07-20 18:38:26 +00002255- The constants ascii_letters, ascii_lowercase. and ascii_uppercase
Raymond Hettingerf2f2a2c2002-08-19 14:25:03 +00002256 were added to the string module. These a locale-independent
Fred Drake960fdf92001-07-20 18:38:26 +00002257 constants, unlike letters, lowercase, and uppercase. These are now
2258 use in appropriate locations in the standard library.
2259
Martin v. Löwisf0473d52001-07-18 16:17:16 +00002260- The flags used in dlopen calls can now be configured using
2261 sys.setdlopenflags and queried using sys.getdlopenflags.
2262
Guido van Rossumc7e4aca2001-07-12 11:54:37 +00002263- Fredrik Lundh's xmlrpclib is now a standard library module. This
2264 provides full client-side XML-RPC support. In addition,
2265 Demo/xmlrpc/ contains two server frameworks (one SocketServer-based,
2266 one asyncore-based). Thanks to Eric Raymond for the documentation.
2267
Guido van Rossum643d3912001-07-05 14:46:25 +00002268- The xrange() object is simplified: it no longer supports slicing,
2269 repetition, comparisons, efficient 'in' checking, the tolist()
2270 method, or the start, stop and step attributes. See PEP 260.
2271
Martin v. Löwisebf94db2001-06-06 06:25:40 +00002272- A new function fnmatch.filter to filter lists of file names was added.
2273
Barry Warsawffd674d2001-05-22 16:00:10 +00002274- calendar.py uses month and day names based on the current locale.
2275
Guido van Rossum2e0a6542001-05-15 02:14:44 +00002276- strop is now *really* obsolete (this was announced before with 1.6),
2277 and issues DeprecationWarning when used (except for the four items
2278 that are still imported into string.py).
2279
Tim Petersa814db52001-05-14 07:05:58 +00002280- Cookie.py now sorts key+value pairs by key in output strings.
2281
2282- pprint.isrecursive(object) didn't correctly identify recursive objects.
2283 Now it does.
2284
Tim Peters95b3f782001-05-14 18:39:41 +00002285- pprint functions now much faster for large containers (tuple, list, dict).
2286
Tim Peters7b9542a2001-06-10 23:40:19 +00002287- New 'q' and 'Q' format codes in the struct module, corresponding to C
2288 types "long long" and "unsigned long long" (on Windows, __int64). In
2289 native mode, these can be used only when the platform C compiler supports
2290 these types (when HAVE_LONG_LONG is #define'd by the Python config
2291 process), and then they inherit the sizes and alignments of the C types.
Tim Peters7a3bfc32001-06-12 01:22:22 +00002292 In standard mode, 'q' and 'Q' are supported on all platforms, and are
2293 8-byte integral types.
Tim Peters7b9542a2001-06-10 23:40:19 +00002294
Guido van Rossum83213cc2001-06-12 16:48:52 +00002295- The site module installs a new built-in function 'help' that invokes
2296 pydoc.help. It must be invoked as 'help()'; when invoked as 'help',
2297 it displays a message reminding the user to use 'help()' or
2298 'help(object)'.
2299
Tim Petersa814db52001-05-14 07:05:58 +00002300Tests
Skip Montanaroe5d7f7f2002-09-20 14:16:59 +00002301-----
Tim Petersa814db52001-05-14 07:05:58 +00002302
2303- New test_mutants.py runs dict comparisons where the key and value
Raymond Hettingerf2f2a2c2002-08-19 14:25:03 +00002304 comparison operators mutate the dicts randomly during comparison. This
Tim Petersa814db52001-05-14 07:05:58 +00002305 rapidly causes Python to crash under earlier releases (not for the faint
2306 of heart: it can also cause Win9x to freeze or reboot!).
2307
Raymond Hettingerf2f2a2c2002-08-19 14:25:03 +00002308- New test_pprint.py verifies that pprint.isrecursive() and
Tim Peters95b3f782001-05-14 18:39:41 +00002309 pprint.isreadable() return sensible results. Also verifies that simple
2310 cases produce correct output.
Tim Petersa814db52001-05-14 07:05:58 +00002311
Tim Peters4324aa32001-05-28 22:30:08 +00002312C API
Skip Montanaroe5d7f7f2002-09-20 14:16:59 +00002313-----
Tim Peters4324aa32001-05-28 22:30:08 +00002314
2315- Removed the unused last_is_sticky argument from the internal
2316 _PyTuple_Resize(). If this affects you, you were cheating.
Skip Montanaroe5d7f7f2002-09-20 14:16:59 +00002317
2318----
2319
2320**(For information about older versions, consult the HISTORY file.)**