blob: 2dac5666b372ce6ee18885492b9af703887ef11e [file] [log] [blame]
Guido van Rossumf0b69f01997-08-15 02:50:47 +00001What's new in this release?
Guido van Rossum61000331997-08-15 04:39:58 +00002===========================
3
Guido van Rossume96bd3f1998-12-21 21:45:04 +00004Below is a list of all relevant changes since release 1.5.1. Older
5changes are in the file HISTORY. The most recent changes are listed
6first.
Guido van Rossum61000331997-08-15 04:39:58 +00007
Guido van Rossum1f83cce1997-10-06 21:04:35 +00008A note on attributions: while I have sprinkled some names throughout
Guido van Rossum7ea639b1997-11-26 16:36:28 +00009here, I'm grateful to many more people who remain unnamed. You may
Guido van Rossum1f83cce1997-10-06 21:04:35 +000010find your name in the ACKS file. If you believe you deserve more
11credit, let me know and I'll add you to the list!
12
Guido van Rossum437cfe81999-04-08 20:17:57 +000013(In the sake of steramlining the release process, I'm now using output
14from rcs2log. This gives complete disclosure but is more verbose and
15requires more effort to read. Let me know if this is acceptable.
16--Guido.)
17
18
19======================================================================
20
Guido van Rossumb65a43a1999-04-13 15:52:45 +000021
22From 1.5.2c1 to 1.5.2 (final)
23=============================
24
25Tue Apr 13 15:44:49 1999 Guido van Rossum <guido@eric.cnri.reston.va.us>
26
27 * PCbuild/python15.wse: Bump version to 1.5.2 (final)
28
29 * PCbuild/python15.dsp: Added shamodule.c
30
31 * PC/config.c: Added sha module!
32
33 * README, Include/patchlevel.h: Prepare for final release.
34
35 * Misc/ACKS:
36 More (Cameron Laird is honorary; the others are 1.5.2c1 testers).
37
38 * Python/thread_solaris.h:
39 While I can't really test this thoroughly, Pat Knight and the Solaris
40 man pages suggest that the proper thing to do is to add THR_NEW_LWP to
41 the flags on thr_create(), and that there really isn't a downside, so
42 I'll do that.
43
44 * Misc/ACKS:
45 Bunch of new names who helped iron out the last wrinkles of 1.5.2.
46
47 * PC/python_nt.rc:
48 Bump the myusterious M$ version number from 1,5,2,1 to 1,5,2,3.
49 (I can't even display this on NT, maybe Win/98 can?)
50
51 * Lib/pstats.py:
52 Fix mysterious references to jprofile that were in the source since
53 its creation. I'm assuming these were once valid references to "Jim
54 Roskind's profile"...
55
56 * Lib/Attic/threading_api.py:
57 Removed; since long subsumed in Doc/lib/libthreading.tex
58
59 * Modules/socketmodule.c:
60 Put back __osf__ support for gethostbyname_r(); the real bug was that
61 it was being used even without threads. This of course might be an
62 all-platform problem so now we only use the _r variant when we are
63 using threads.
64
65Mon Apr 12 22:51:20 1999 Guido van Rossum <guido@eric.cnri.reston.va.us>
66
67 * Modules/cPickle.c:
68 Fix accidentally reversed NULL test in load_mark(). Suggested by
69 Tamito Kajiyama. (This caused a bug only on platforms where malloc(0)
70 returns NULL.)
71
72 * README:
73 Add note about popen2 problem on Linux noticed by Pablo Bleyer.
74
75 * README: Add note about -D_REENTRANT for HP-UX 10.20.
76
77 * Modules/Makefile.pre.in: 'clean' target should remove hassignal.
78
79 * PC/Attic/vc40.mak, PC/readme.txt:
80 Remove all VC++ info (except VC 1.5) from readme.txt;
81 remove the VC++ 4.0 project file; remove the unused _tkinter extern defs.
82
83 * README: Clarify PC build instructions (point to PCbuild).
84
85 * Modules/zlibmodule.c: Cast added by Jack Jansen (for Mac port).
86
87 * Lib/plat-sunos5/CDIO.py, Lib/plat-linux2/CDROM.py:
88 Forgot to add this file. CDROM device parameters.
89
90 * Lib/gzip.py: Two different changes.
91
92 1. Jack Jansen reports that on the Mac, the time may be negative, and
93 solves this by adding a write32u() function that writes an unsigned
94 long.
95
96 2. On 64-bit platforms the CRC comparison fails; I've fixed this by
97 casting both values to be compared to "unsigned long" i.e. modulo
98 0x100000000L.
99
100Sat Apr 10 18:42:02 1999 Guido van Rossum <guido@eric.cnri.reston.va.us>
101
102 * PC/Attic/_tkinter.def: No longer needed.
103
104 * Misc/ACKS: Correct missed character in Andrew Dalke's name.
105
106 * README: Add DEC Ultrix notes (from Donn Cave's email).
107
108 * configure: The usual
109
110 * configure.in:
111 Quote a bunch of shell variables used in test, related to long-long.
112
113 * Objects/fileobject.c, Modules/shamodule.c, Modules/regexpr.c:
114 casts for picky compilers.
115
116 * Modules/socketmodule.c:
117 3-arg gethostbyname_r doesn't really work on OSF/1.
118
119 * PC/vc15_w31/_.c, PC/vc15_lib/_.c, Tools/pynche/__init__.py:
120 Avoid totally empty files.
121
122Fri Apr 9 14:56:35 1999 Guido van Rossum <guido@eric.cnri.reston.va.us>
123
124 * Tools/scripts/fixps.py: Use re instead of regex.
125 Don't rewrite the file in place.
126 (Reported by Andy Dustman.)
127
128 * Lib/netrc.py, Lib/shlex.py: Get rid of #! line
129
130Thu Apr 8 23:13:37 1999 Guido van Rossum <guido@eric.cnri.reston.va.us>
131
132 * PCbuild/python15.wse: Use the Tcl 8.0.5 installer.
133 Add a variable %_TCL_% that makes it easier to switch to a different version.
134
135
136======================================================================
137
138
Guido van Rossum437cfe81999-04-08 20:17:57 +0000139From 1.5.2b2 to 1.5.2c1
140=======================
141
Guido van Rossumb65a43a1999-04-13 15:52:45 +0000142Thu Apr 8 23:13:37 1999 Guido van Rossum <guido@eric.cnri.reston.va.us>
143
144 * PCbuild/python15.wse:
145 Release 1.5.2c1. Add IDLE and Uninstall to program group.
146 Don't distribute zlib.dll. Tweak some comments.
147
148 * PCbuild/zlib.dsp: Now using static zlib 1.1.3
149
150 * Lib/dos-8x3/userdict.py, Lib/dos-8x3/userlist.py, Lib/dos-8x3/test_zli.py, Lib/dos-8x3/test_use.py, Lib/dos-8x3/test_pop.py, Lib/dos-8x3/test_pic.py, Lib/dos-8x3/test_ntp.py, Lib/dos-8x3/test_gzi.py, Lib/dos-8x3/test_fcn.py, Lib/dos-8x3/test_cpi.py, Lib/dos-8x3/test_bsd.py, Lib/dos-8x3/posixfil.py, Lib/dos-8x3/mimetype.py, Lib/dos-8x3/nturl2pa.py, Lib/dos-8x3/compilea.py, Lib/dos-8x3/exceptio.py, Lib/dos-8x3/basehttp.py:
151 The usual
152
153 * Include/patchlevel.h: Release 1.5.2c1
154
155 * README: Release 1.5.2c1.
156
157 * Misc/NEWS: News for the 1.5.2c1 release.
Guido van Rossum437cfe81999-04-08 20:17:57 +0000158
159 * Lib/test/test_strftime.py:
160 On Windows, we suddenly find, strftime() may return "" for an
161 unsupported format string. (I guess this is because the logic for
162 deciding whether to reallocate the buffer or not has been improved.)
163 This caused the test code to crash on result[0]. Fix this by assuming
164 an empty result also means the format is not supported.
165
166 * Demo/tkinter/matt/window-creation-w-location.py:
167 This demo imported some private code from Matt. Make it cripple along.
168
169 * Lib/lib-tk/Tkinter.py:
170 Delete an accidentally checked-in feature that actually broke more
171 than was worth it: when deleting a canvas item, it would try to
172 automatically delete the bindings for that item. Since there's
173 nothing that says you can't reuse the tag and still have the bindings,
174 this is not correct. Also, it broke at least one demo
175 (Demo/tkinter/matt/rubber-band-box-demo-1.py).
176
177 * Python/thread_wince.h: Win/CE thread support by Mark Hammond.
178
179Wed Apr 7 20:23:17 1999 Guido van Rossum <guido@eric.cnri.reston.va.us>
180
181 * Modules/zlibmodule.c:
182 Patch by Andrew Kuchling to unflush() (flush() for deflating).
183 Without this, if inflate() returned Z_BUF_ERROR asking for more output
184 space, we would report the error; now, we increase the buffer size and
185 try again, just as for Z_OK.
186
187 * Lib/test/test_gzip.py: Use binary mode for all gzip files we open.
188
189 * Tools/idle/ChangeLog: New change log.
190
191 * Tools/idle/README.txt, Tools/idle/NEWS.txt: New version.
192
193 * Python/pythonrun.c:
194 Alas, get rid of the Win specific hack to ask the user to press Return
195 before exiting when an error happened. This didn't work right when
196 Python is invoked from a daemon.
197
198 * Tools/idle/idlever.py: Version bump awaiting impending new release.
199 (Not much has changed :-( )
200
201 * Lib/lib-tk/Tkinter.py:
202 lower, tkraise/lift hide Misc.lower, Misc.tkraise/lift,
203 so the preferred name for them is tag_lower, tag_raise
204 (similar to tag_bind, and similar to the Text widget);
205 unfortunately can't delete the old ones yet (maybe in 1.6)
206
207 * Python/thread.c, Python/strtod.c, Python/mystrtoul.c, Python/import.c, Python/ceval.c:
208 Changes by Mark Hammond for Windows CE. Mostly of the form
209 #ifdef DONT_HAVE_header_H ... #endif around #include <header.h>.
210
211 * Python/bltinmodule.c:
212 Remove unused variable from complex_from_string() code.
213
214 * Include/patchlevel.h:
215 Add the possibility of a gamma release (release candidate).
216 Add '+' to string version number to indicate we're beyond b2 now.
217
218 * Modules/posixmodule.c: Add extern decl for fsync() for SunOS 4.x.
219
220 * Lib/smtplib.py: Changes by Per Cederquist and The Dragon.
221
222 Per writes:
223
224 """
225 The application where Signum Support uses smtplib needs to be able to
226 report good error messages to the user when sending email fails. To
227 help in diagnosing problems it is useful to be able to report the
228 entire message sent by the server, not only the SMTP error code of the
229 offending command.
230
231 A lot of the functions in sendmail.py unfortunately discards the
232 message, leaving only the code. The enclosed patch fixes that
233 problem.
234
235 The enclosed patch also introduces a base class for exceptions that
236 include an SMTP error code and error message, and make the code and
237 message available on separate attributes, so that surrounding code can
238 deal with them in whatever way it sees fit. I've also added some
239 documentation to the exception classes.
240
241 The constructor will now raise an exception if it cannot connect to
242 the SMTP server.
243
244 The data() method will raise an SMTPDataError if it doesn't receive
245 the expected 354 code in the middle of the exchange.
246
247 According to section 5.2.10 of RFC 1123 a smtp client must accept "any
248 text, including no text at all" after the error code. If the response
249 of a HELO command contains no text self.helo_resp will be set to the
250 empty string (""). The patch fixes the test in the sendmail() method
251 so that helo_resp is tested against None; if it has the empty string
252 as value the sendmail() method would invoke the helo() method again.
253
254 The code no longer accepts a -1 reply from the ehlo() method in
255 sendmail().
256
257 [Text about removing SMTPRecipientsRefused deleted --GvR]
258 """
259
260 and also:
261
262 """
263 smtplib.py appends an extra blank line to the outgoing mail if the
264 `msg' argument to the sendmail method already contains a trailing
265 newline. This patch should fix the problem.
266 """
267
268 The Dragon writes:
269
270 """
271 Mostly I just re-added the SMTPRecipientsRefused exception
272 (the exeption object now has the appropriate info in it ) [Per had
273 removed this in his patch --GvR] and tweaked the behavior of the
274 sendmail method whence it throws the newly added SMTPHeloException (it
275 was closing the connection, which it shouldn't. whatever catches the
276 exception should do that. )
277
278 I pondered the change of the return values to tuples all around,
279 and after some thinking I decided that regularizing the return values was
280 too much of the Right Thing (tm) to not do.
281
282 My one concern is that code expecting an integer & getting a tuple
283 may fail silently.
284
285 (i.e. if it's doing :
286
287 x.somemethod() >= 400:
288 expecting an integer, the expression will always be true if it gets a
289 tuple instead. )
290
291 However, most smtplib code I've seen only really uses the
292 sendmail() method, so this wouldn't bother it. Usually code I've seen
293 that calls the other methods usually only calls helo() and ehlo() for
294 doing ESMTP, a feature which was not in the smtplib included with 1.5.1,
295 and thus I would think not much code uses it yet.
296 """
297
298Tue Apr 6 19:38:18 1999 Guido van Rossum <guido@eric.cnri.reston.va.us>
299
300 * Lib/test/test_ntpath.py:
301 Fix the tests now that splitdrive() no longer treats UNC paths special.
302 (Some tests converted to splitunc() tests.)
303
304 * Lib/ntpath.py:
305 Withdraw the UNC support from splitdrive(). Instead, a new function
306 splitunc() parses UNC paths. The contributor of the UNC parsing in
307 splitdrive() doesn't like it, but I haven't heard a good reason to
308 keep it, and it causes some problems. (I think there's a
309 philosophical problem -- to me, the split*() functions are purely
310 syntactical, and the fact that \\foo is not a valid path doesn't mean
311 that it shouldn't be considered an absolute path.)
312
313 Also (quite separately, but strangely related to the philosophical
314 issue above) fix abspath() so that if win32api exists, it doesn't fail
315 when the path doesn't actually exist -- if GetFullPathName() fails,
316 fall back on the old strategy (join with getcwd() if neccessary, and
317 then use normpath()).
318
319 * configure.in, configure, config.h.in, acconfig.h:
320 For BeOS PowerPC. Chris Herborth.
321
322Mon Apr 5 21:54:14 1999 Guido van Rossum <guido@eric.cnri.reston.va.us>
323
324 * Modules/timemodule.c:
325 Jonathan Giddy notes, and Chris Lawrence agrees, that some comments on
326 #else/#endif are wrong, and that #if HAVE_TM_ZONE should be #ifdef.
327
328 * Misc/ACKS:
329 Bunch of new contributors, including 9 who contributed to the Docs,
330 reported by Fred.
331
332Mon Apr 5 18:37:59 1999 Fred Drake <fdrake@eric.cnri.reston.va.us>
333
334 * Lib/gzip.py:
335 Oops, missed mode parameter to open().
336
337 * Lib/gzip.py:
338 Made the default mode 'rb' instead of 'r', for better cross-platform
339 support. (Based on comment on the documentation by Bernhard Reiter
340 <bernhard@csd.uwm.edu>).
341
342Fri Apr 2 22:18:25 1999 Guido van Rossum <guido@eric.cnri.reston.va.us>
343
344 * Tools/scripts/dutree.py:
345 For reasons I dare not explain, this script should always execute
346 main() when imported (in other words, it is not usable as a module).
347
348Thu Apr 1 15:32:30 1999 Guido van Rossum <guido@eric.cnri.reston.va.us>
349
350 * Lib/test/test_cpickle.py: Jonathan Giddy write:
351
352 In test_cpickle.py, the module os got imported, but the line to remove
353 the temp file has gone missing.
354
355Tue Mar 30 20:17:31 1999 Guido van Rossum <guido@eric.cnri.reston.va.us>
356
357 * Lib/BaseHTTPServer.py: Per Cederqvist writes:
358
359 If you send something like "PUT / HTTP/1.0" to something derived from
360 BaseHTTPServer that doesn't define do_PUT, you will get a response
361 that begins like this:
362
363 HTTP/1.0 501 Unsupported method ('do_PUT')
364 Server: SimpleHTTP/0.3 Python/1.5
365 Date: Tue, 30 Mar 1999 18:53:53 GMT
366
367 The server should complain about 'PUT' instead of 'do_PUT'. This
368 patch should fix the problem.
369
370Mon Mar 29 20:33:21 1999 Guido van Rossum <guido@eric.cnri.reston.va.us>
371
372 * Lib/smtplib.py: Patch by Per Cederqvist, who writes:
373
374 """
375 - It needlessly used the makefile() method for each response that is
376 read from the SMTP server.
377
378 - If the remote SMTP server closes the connection unexpectedly the
379 code raised an IndexError. It now raises an SMTPServerDisconnected
380 exception instead.
381
382 - The code now checks that all lines in a multiline response actually
383 contains an error code.
384 """
385
386 The Dragon approves.
387
388Mon Mar 29 20:25:40 1999 Fred Drake <fdrake@eric.cnri.reston.va.us>
389
390 * Lib/compileall.py:
391 When run as a script, report failures in the exit code as well.
392 Patch largely based on changes by Andrew Dalke, as discussed in the
393 distutils-sig.
394
395Mon Mar 29 20:23:41 1999 Guido van Rossum <guido@eric.cnri.reston.va.us>
396
397 * Lib/urllib.py:
398 Hack so that if a 302 or 301 redirect contains a relative URL, the
399 right thing "just happens" (basejoin() with old URL).
400
401 * Modules/cPickle.c:
402 Protection against picling to/from closed (real) file.
403 The problem was reported by Moshe Zadka.
404
405 * Lib/test/test_cpickle.py:
406 Test protection against picling to/from closed (real) file.
407
408 * Modules/timemodule.c: Chris Lawrence writes:
409
410 """
411 The GNU folks, in their infinite wisdom, have decided not to implement
412 altzone in libc6; this would not be horrible, except that timezone
413 (which is implemented) includes the current DST setting (i.e. timezone
414 for Central is 18000 in summer and 21600 in winter). So Python's
415 timezone and altzone variables aren't set correctly during DST.
416
417 Here's a patch relative to 1.5.2b2 that (a) makes timezone and altzone
418 show the "right" thing on Linux (by using the tm_gmtoff stuff
419 available in BSD, which is how the GLIBC manual claims things should
420 be done) and (b) should cope with the southern hemisphere. In pursuit
421 of (b), I also took the liberty of renaming the "summer" and "winter"
422 variables to "july" and "jan". This patch should also make certain
423 time calculations on Linux actually work right (like the tz-aware
424 functions in the rfc822 module).
425
426 (It's hard to find DST that's currently being used in the southern
427 hemisphere; I tested using Africa/Windhoek.)
428 """
429
430 * Lib/test/output/test_gzip:
431 Jonathan Giddy discovered this file was missing.
432
433 * Modules/shamodule.c:
434 Avoid warnings from AIX compiler. Reported by Vladimir (AIX is my
435 middlename) Marangozov, patch coded by Greg Stein.
436
437 * Tools/idle/ScriptBinding.py, Tools/idle/PyShell.py:
438 At Tim Peters' recommendation, add a dummy flush() method to PseudoFile.
439
440Sun Mar 28 17:55:32 1999 Guido van Rossum <guido@eric.cnri.reston.va.us>
441
442 * Tools/scripts/ndiff.py: Tim Peters writes:
443
444 I should have waited overnight <wink/sigh>. Nothing wrong with the one I
445 sent, but I couldn't resist going on to add new -r1 / -r2 cmdline options
446 for recreating the original files from ndiff's output. That's attached, if
447 you're game! Us Windows guys don't usually have a sed sitting around
448 <wink>.
449
450Sat Mar 27 13:34:01 1999 Guido van Rossum <guido@eric.cnri.reston.va.us>
451
452 * Tools/scripts/ndiff.py: Tim Peters writes:
453
454 Attached is a cleaned-up version of ndiff (added useful module
455 docstring, now echo'ed in case of cmd line mistake); added -q option
456 to suppress initial file identification lines; + other minor cleanups,
457 & a slightly faster match engine.
458
459Fri Mar 26 22:36:00 1999 Fred Drake <fdrake@eric.cnri.reston.va.us>
460
461 * Tools/scripts/dutree.py:
462 During display, if EPIPE is raised, it's probably because a pager was
463 killed. Discard the error in that case, but propogate it otherwise.
464
465Fri Mar 26 16:20:45 1999 Guido van Rossum <guido@eric.cnri.reston.va.us>
466
467 * Lib/test/output/test_userlist, Lib/test/test_userlist.py:
468 Test suite for UserList.
469
470 * Lib/UserList.py: Use isinstance() where appropriate.
471 Reformatted with 4-space indent.
472
473Fri Mar 26 16:11:40 1999 Barry Warsaw <bwarsaw@eric.cnri.reston.va.us>
474
475 * Tools/pynche/PyncheWidget.py:
476 Helpwin.__init__(): The text widget should get focus.
477
478 * Tools/pynche/pyColorChooser.py:
479 Removed unnecessary import `from PyncheWidget import PyncheWidget'
480
481Fri Mar 26 15:32:05 1999 Guido van Rossum <guido@eric.cnri.reston.va.us>
482
483 * Lib/test/output/test_userdict, Lib/test/test_userdict.py:
484 Test suite for UserDict
485
486 * Lib/UserDict.py: Improved a bunch of things.
487 The constructor now takes an optional dictionary.
488 Use isinstance() where appropriate.
489
490Thu Mar 25 22:38:49 1999 Guido van Rossum <guido@eric.cnri.reston.va.us>
491
492 * Lib/test/output/test_pickle, Lib/test/output/test_cpickle, Lib/test/test_pickle.py, Lib/test/test_cpickle.py:
493 Basic regr tests for pickle/cPickle
494
495 * Lib/pickle.py:
496 Don't use "exec" in find_class(). It's slow, unnecessary, and (as AMK
497 points out) it doesn't work in JPython Applets.
498
499Thu Mar 25 21:50:27 1999 Andrew Kuchling <akuchlin@eric.cnri.reston.va.us>
500
501 * Lib/test/test_gzip.py:
502 Added a simple test suite for gzip. It simply opens a temp file,
503 writes a chunk of compressed data, closes it, writes another chunk, and
504 reads the contents back to verify that they are the same.
505
506 * Lib/gzip.py:
507 Based on a suggestion from bruce@hams.com, make a trivial change to
508 allow using the 'a' flag as a mode for opening a GzipFile. gzip
509 files, surprisingly enough, can be concatenated and then decompressed;
510 the effect is to concatenate the two chunks of data.
511
512 If we support it on writing, it should also be supported on reading.
513 This *wasn't* trivial, and required rearranging the code in the
514 reading path, particularly the _read() method.
515
516 Raise IOError instead of RuntimeError in two cases, 'Not a gzipped file'
517 and 'Unknown compression method'
518
519Thu Mar 25 21:25:01 1999 Guido van Rossum <guido@eric.cnri.reston.va.us>
520
521 * Lib/test/test_b1.py:
522 Add tests for float() and complex() with string args (Nick/Stephanie
523 Lockwood).
524
525Thu Mar 25 21:21:08 1999 Andrew Kuchling <akuchlin@eric.cnri.reston.va.us>
526
527 * Modules/zlibmodule.c:
528 Add an .unused_data attribute to decompressor objects. If .unused_data
529 is not an empty string, this means that you have arrived at the
530 end of the stream of compressed data, and the contents of .unused_data are
531 whatever follows the compressed stream.
532
533Thu Mar 25 21:16:07 1999 Guido van Rossum <guido@eric.cnri.reston.va.us>
534
535 * Python/bltinmodule.c:
536 Patch by Nick and Stephanie Lockwood to implement complex() with a string
537 argument. This closes TODO item 2.19.
538
539Wed Mar 24 19:09:00 1999 Guido van Rossum <guido@eric.cnri.reston.va.us>
540
541 * Tools/webchecker/wcnew.py: Added Samuel Bayer's new webchecker.
542 Unfortunately his code breaks wcgui.py in a way that's not easy
543 to fix. I expect that this is a temporary situation --
544 eventually Sam's changes will be merged back in.
545 (The changes add a -t option to specify exceptions to the -x
546 option, and explicit checking for #foo style fragment ids.)
547
548 * Objects/dictobject.c:
549 Vladimir Marangozov contributed updated comments.
550
551 * Objects/bufferobject.c: Folded long lines.
552
553 * Lib/test/output/test_sha, Lib/test/test_sha.py:
554 Added Jeremy's test code for the sha module.
555
556 * Modules/shamodule.c, Modules/Setup.in:
557 Added Greg Stein and Andrew Kuchling's sha module.
558 Fix comments about zlib version and URL.
559
560 * Lib/test/test_bsddb.py: Remove the temp file when we're done.
561
562 * Include/pythread.h: Conform to standard boilerplate.
563
564 * configure.in, configure, BeOS/linkmodule, BeOS/ar-fake:
565 Chris Herborth: the new compiler in R4.1 needs some new options to work...
566
567 * Modules/socketmodule.c:
568 Implement two suggestions by Jonathan Giddy: (1) in AIX, clear the
569 data struct before calling gethostby{name,addr}_r(); (2) ignore the
570 3/5/6 args determinations made by the configure script and switch on
571 platform identifiers instead:
572
573 AIX, OSF have 3 args
574 Sun, SGI have 5 args
575 Linux has 6 args
576
577 On all other platforms, undef HAVE_GETHOSTBYNAME_R altogether.
578
579 * Modules/socketmodule.c:
580 Vladimir Marangozov implements the AIX 3-arg gethostbyname_r code.
581
582 * Lib/mailbox.py:
583 Add readlines() to _Subfile class. Not clear who would need it, but
584 Chris Lawrence sent me a broken version; this one is a tad simpler and
585 more conforming to the standard.
586
587Tue Mar 23 23:05:34 1999 Jeremy Hylton <jhylton@eric.cnri.reston.va.us>
588
589 * Lib/gzip.py: use struct instead of bit-manipulate in Python
590
591Tue Mar 23 19:00:55 1999 Guido van Rossum <guido@eric.cnri.reston.va.us>
592
593 * Modules/Makefile.pre.in:
594 Add $(EXE) to various occurrences of python so it will work on Cygwin
595 with egcs (after setting EXE=.exe). Patch by Norman Vine.
596
597 * configure, configure.in:
598 Ack! It never defined HAVE_GETHOSTBYNAME_R so that code was never tested!
599
600Mon Mar 22 22:25:39 1999 Guido van Rossum <guido@eric.cnri.reston.va.us>
601
602 * Include/thread.h:
603 Adding thread.h -- unused but for b/w compatibility.
604 As requested by Bill Janssen.
605
606 * configure.in, configure:
607 Add code to test for all sorts of gethostbyname_r variants,
608 donated by David Arnold.
609
610 * config.h.in, acconfig.h:
611 Add symbols for gethostbyname_r variants (sigh).
612
613 * Modules/socketmodule.c: Clean up pass for the previous patches.
614
615 - Use HAVE_GETHOSTBYNAME_R_6_ARG instead of testing for Linux and
616 glibc2.
617
618 - If gethostbyname takes 3 args, undefine HAVE_GETHOSTBYNAME_R --
619 don't know what code should be used.
620
621 - New symbol USE_GETHOSTBYNAME_LOCK defined iff the lock should be used.
622
623 - Modify the gethostbyaddr() code to also hold on to the lock until
624 after it is safe to release, overlapping with the Python lock.
625
626 (Note: I think that it could in theory be possible that Python code
627 executed while gethostbyname_lock is held could attempt to reacquire
628 the lock -- e.g. in a signal handler or destructor. I will simply say
629 "don't do that then.")
630
631 * Modules/socketmodule.c: Jonathan Giddy writes:
632
633 Here's a patch to fix the race condition, which wasn't fixed by Rob's
634 patch. It holds the gethostbyname lock until the results are copied out,
635 which means that this lock and the Python global lock are held at the same
636 time. This shouldn't be a problem as long as the gethostbyname lock is
637 always acquired when the global lock is not held.
638
639Mon Mar 22 19:25:30 1999 Andrew Kuchling <akuchlin@eric.cnri.reston.va.us>
640
641 * Modules/zlibmodule.c:
642 Fixed the flush() method of compression objects; the test for
643 the end of loop was incorrect, and failed when the flushmode != Z_FINISH.
644 Logic cleaned up and commented.
645
646 * Lib/test/test_zlib.py:
647 Added simple test for the flush() method of compression objects, trying the
648 different flush values Z_NO_FLUSH, Z_SYNC_FLUSH, Z_FULL_FLUSH.
649
650Mon Mar 22 15:28:08 1999 Guido van Rossum <guido@eric.cnri.reston.va.us>
651
652 * Lib/shlex.py:
653 Bug reported by Tobias Thelen: missing "self." in assignment target.
654
655Fri Mar 19 21:50:11 1999 Guido van Rossum <guido@eric.cnri.reston.va.us>
656
657 * Modules/arraymodule.c:
658 Use an unsigned cast to avoid a warning in VC++.
659
660 * Lib/dospath.py, Lib/ntpath.py:
661 New code for split() by Tim Peters, behaves more like posixpath.split().
662
663 * Objects/floatobject.c:
664 Fix a problem with Vladimir's PyFloat_Fini code: clear the free list; if
665 a block cannot be freed, add its free items back to the free list.
666 This is necessary to avoid leaking when Python is reinitialized later.
667
668 * Objects/intobject.c:
669 Fix a problem with Vladimir's PyInt_Fini code: clear the free list; if
670 a block cannot be freed, add its free items back to the free list, and
671 add its valid ints back to the small_ints array if they are in range.
672 This is necessary to avoid leaking when Python is reinitialized later.
673
674 * Lib/types.py:
675 Added BufferType, the type returned by the new builtin buffer(). Greg Stein.
676
677 * Python/bltinmodule.c:
678 New builtin buffer() creates a derived read-only buffer from any
679 object that supports the buffer interface (e.g. strings, arrays).
680
681 * Objects/bufferobject.c:
682 Added check for negative offset for PyBuffer_FromObject and check for
683 negative size for PyBuffer_FromMemory. Greg Stein.
684
685Thu Mar 18 15:10:44 1999 Guido van Rossum <guido@eric.cnri.reston.va.us>
686
687 * Lib/urlparse.py: Sjoerd Mullender writes:
688
689 If a filename on Windows starts with \\, it is converted to a URL
690 which starts with ////. If this URL is passed to urlparse.urlparse
691 you get a path that starts with // (and an empty netloc). If you pass
692 the result back to urlparse.urlunparse, you get a URL that starts with
693 //, which is parsed differently by urlparse.urlparse. The fix is to
694 add the (empty) netloc with accompanying slashes if the path in
695 urlunparse starts with //. Do this for all schemes that use a netloc.
696
697 * Lib/nturl2path.py: Sjoerd Mullender writes:
698
699 Pathnames of files on other hosts in the same domain
700 (\\host\path\to\file) are not translated correctly to URLs and back.
701 The URL should be something like file:////host/path/to/file.
702 Note that a combination of drive letter and remote host is not
703 possible.
704
705Wed Mar 17 22:30:10 1999 Guido van Rossum <guido@eric.cnri.reston.va.us>
706
707 * Lib/urlparse.py:
708 Delete non-standard-conforming code in urljoin() that would use the
709 netloc from the base url as the default netloc for the resulting url
710 even if the schemes differ.
711
712 Once upon a time, when the web was wild, this was a valuable hack
713 because some people had a URL referencing an ftp server colocated with
714 an http server without having the host in the ftp URL (so they could
715 replicate it or change the hostname easily).
716
717 More recently, after the file: scheme got added back to the list of
718 schemes that accept a netloc, it turns out that this caused weirdness
719 when joining an http: URL with a file: URL -- the resulting file: URL
720 would always inherit the host from the http: URL because the file:
721 scheme supports a netloc but in practice never has one.
722
723 There are two reasons to get rid of the old, once-valuable hack,
724 instead of removing the file: scheme from the uses_netloc list. One,
725 the RFC says that file: uses the netloc syntax, and does not endorse
726 the old hack. Two, neither netscape 4.5 nor IE 4.0 support the old
727 hack.
728
729 * Include/ceval.h, Include/abstract.h:
730 Add DLL level b/w compat for PySequence_In and PyEval_CallObject
731
732Tue Mar 16 21:54:50 1999 Guido van Rossum <guido@eric.cnri.reston.va.us>
733
734 * Lib/lib-tk/Tkinter.py: Bug reported by Jim Robinson:
735
736 An attempt to execute grid_slaves with arguments (0,0) results in
737 *all* of the slaves being returned, not just the slave associated with
738 row 0, column 0. This is because the test for arguments in the method
739 does not test to see if row (and column) does not equal None, but
740 rather just whether is evaluates to non-false. A value of 0 fails
741 this test.
742
743Tue Mar 16 14:17:48 1999 Fred Drake <fdrake@eric.cnri.reston.va.us>
744
745 * Modules/cmathmodule.c:
746 Docstring fix: acosh() returns the hyperbolic arccosine, not the
747 hyperbolic cosine. Problem report via David Ascher by one of his
748 students.
749
750Mon Mar 15 21:40:59 1999 Guido van Rossum <guido@eric.cnri.reston.va.us>
751
752 * configure.in:
753 Should test for gethost*by*name_r, not for gethostname_r (which
754 doesn't exist and doesn't make sense).
755
756 * Modules/socketmodule.c:
757 Patch by Rob Riggs for Linux -- glibc2 has a different argument
758 converntion for gethostbyname_r() etc. than Solaris!
759
760 * Python/thread_pthread.h: Rob Riggs wrote:
761
762 """
763 Spec says that on success pthread_create returns 0. It does not say
764 that an error code will be < 0. Linux glibc2 pthread_create() returns
765 ENOMEM (12) when one exceed process limits. (It looks like it should
766 return EAGAIN, but that's another story.)
767
768 For reference, see:
769 http://www.opengroup.org/onlinepubs/7908799/xsh/pthread_create.html
770 """
771
772 [I have a feeling that similar bugs were fixed before; perhaps someone
773 could check that all error checks no check for != 0?]
774
775 * Tools/bgen/bgen/bgenObjectDefinition.py:
776 New mixin class that defines cmp and hash that use
777 the ob_itself pointer. This allows (when using the mixin)
778 different Python objects pointing to the same C object and
779 behaving well as dictionary keys.
780
781 Or so sez Jack Jansen...
782
783 * Lib/urllib.py: Yet another patch by Sjoerd Mullender:
784
785 Don't convert URLs to URLs using pathname2url.
786
787Fri Mar 12 22:15:43 1999 Guido van Rossum <guido@eric.cnri.reston.va.us>
788
789 * Lib/cmd.py: Patch by Michael Scharf. He writes:
790
791 The module cmd requires for each do_xxx command a help_xxx
792 function. I think this is a little old fashioned.
793
794 Here is a patch: use the docstring as help if no help_xxx
795 function can be found.
796
797 [I'm tempted to rip out all the help_* functions from pdb, but I'll
798 resist it. Any takers? --Guido]
799
800 * Tools/freeze/freeze.py: Bug submitted by Wayne Knowles, who writes:
801
802 Under Windows, python freeze.py -o hello hello.py
803 creates all the correct files in the hello subdirectory, but the
804 Makefile has the directory prefix in it for frozen_extensions.c
805 nmake fails because it tries to locate hello/frozen_extensions.c
806
807 (His fix adds a call to os.path.basename() in the appropriate place.)
808
809 * Objects/floatobject.c, Objects/intobject.c:
810 Vladimir has restructured his code somewhat so that the blocks are now
811 represented by an explicit structure. (There are still too many casts
812 in the code, but that may be unavoidable.)
813
814 Also added code so that with -vv it is very chatty about what it does.
815
816 * Demo/zlib/zlibdemo.py, Demo/zlib/minigzip.py:
817 Change #! line to modern usage; also chmod +x
818
819 * Demo/pdist/rrcs, Demo/pdist/rcvs, Demo/pdist/rcsbump:
820 Change #! line to modern usage
821
822 * Lib/nturl2path.py, Lib/urllib.py: From: Sjoerd Mullender
823
824 The filename to URL conversion didn't properly quote special
825 characters.
826 The URL to filename didn't properly unquote special chatacters.
827
828 * Objects/floatobject.c:
829 OK, try again. Vladimir gave me a fix for the alignment bus error,
830 so here's his patch again. This time it works (at least on Solaris,
831 Linux and Irix).
832
833Thu Mar 11 23:21:23 1999 Guido van Rossum <guido@eric.cnri.reston.va.us>
834
835 * Tools/idle/PathBrowser.py:
836 Don't crash when sys.path contains an empty string.
837
838 * Tools/idle/PathBrowser.py:
839 - Don't crash in the case where a superclass is a string instead of a
840 pyclbr.Class object; this can happen when the superclass is
841 unrecognizable (to pyclbr), e.g. when module renaming is used.
842
843 - Show a watch cursor when calling pyclbr (since it may take a while
844 recursively parsing imported modules!).
845
846Thu Mar 11 16:04:04 1999 Fred Drake <fdrake@eric.cnri.reston.va.us>
847
848 * Lib/mimetypes.py:
849 Added .rdf and .xsl as application/xml types. (.rdf is for the
850 Resource Description Framework, a metadata encoding, and .xsl is for
851 the Extensible Stylesheet Language.)
852
853Thu Mar 11 13:26:23 1999 Guido van Rossum <guido@eric.cnri.reston.va.us>
854
855 * Lib/test/output/test_popen2, Lib/test/test_popen2.py:
856 Test for popen2 module, by Chris Tismer.
857
858 * Objects/floatobject.c:
859 Alas, Vladimir's patch caused a bus error (probably double
860 alignment?), and I didn't test it. Withdrawing it for now.
861
862Wed Mar 10 22:55:47 1999 Guido van Rossum <guido@eric.cnri.reston.va.us>
863
864 * Objects/floatobject.c:
865 Patch by Vladimir Marangoz to allow freeing of the allocated blocks of
866 floats on finalization.
867
868 * Objects/intobject.c:
869 Patch by Vladimir Marangoz to allow freeing of the allocated blocks of
870 integers on finalization.
871
872 * Tools/idle/EditorWindow.py, Tools/idle/Bindings.py:
873 Add PathBrowser to File module
874
875 * Tools/idle/PathBrowser.py:
876 "Path browser" - 4 scrolled lists displaying:
877 directories on sys.path
878 modules in selected directory
879 classes in selected module
880 methods of selected class
881
882 Sinlge clicking in a directory, module or class item updates the next
883 column with info about the selected item. Double clicking in a
884 module, class or method item opens the file (and selects the clicked
885 item if it is a class or method).
886
887 I guess eventually I should be using a tree widget for this, but the
888 ones I've seen don't work well enough, so for now I use the old
889 Smalltalk or NeXT style multi-column hierarchical browser.
890
891 * Tools/idle/MultiScrolledLists.py:
892 New utility: multiple scrolled lists in parallel
893
894 * Tools/idle/ScrolledList.py: - White background.
895 - Display "(None)" (or text of your choosing) when empty.
896 - Don't set the focus.
897
898Tue Mar 9 19:31:21 1999 Guido van Rossum <guido@eric.cnri.reston.va.us>
899
900 * Lib/urllib.py:
901 open_http also had the 'data is None' test backwards. don't call with the
902 extra argument if data is None.
903
904 * Demo/embed/demo.c:
905 Call Py_SetProgramName() instead of redefining getprogramname(),
906 reflecting changes in the runtime around 1.5 or earlier.
907
908 * Python/ceval.c:
909 Always test for an error return (usually NULL or -1) without setting
910 an exception.
911
912 * Modules/timemodule.c: Patch by Chris Herborth for BeOS code.
913 He writes:
914
915 I had an off-by-1000 error in floatsleep(),
916 and the problem with time.clock() is that it's not implemented properly
917 on QNX... ANSI says it's supposed to return _CPU_ time used by the
918 process, but on QNX it returns the amount of real time used... so I was
919 confused.
920
921 * Tools/bgen/bgen/macsupport.py: Small change by Jack Jansen.
922 Test for self.returntype behaving like OSErr rather than being it.
923
924Thu Feb 25 16:14:58 1999 Jeremy Hylton <jhylton@eric.cnri.reston.va.us>
925
926 * Lib/urllib.py:
927 http_error had the 'data is None' test backwards. don't call with the
928 extra argument if data is None.
929
930 * Lib/urllib.py: change indentation from 8 spaces to 4 spaces
931
932 * Lib/urllib.py: pleasing the tabnanny
933
934Thu Feb 25 14:26:02 1999 Fred Drake <fdrake@eric.cnri.reston.va.us>
935
936 * Lib/colorsys.py:
937 Oops, one more "x, y, z" to convert...
938
939 * Lib/colorsys.py:
940 Adjusted comment at the top to be less confusing, following Fredrik
941 Lundh's example.
942
943 Converted comment to docstring.
944
945Wed Feb 24 18:49:15 1999 Fred Drake <fdrake@eric.cnri.reston.va.us>
946
947 * Lib/toaiff.py:
948 Use sndhdr instead of the obsolete whatsound module.
949
950Wed Feb 24 18:42:38 1999 Jeremy Hylton <jhylton@eric.cnri.reston.va.us>
951
952 * Lib/urllib.py:
953 When performing a POST request, i.e. when the second argument to
954 urlopen is used to specify form data, make sure the second argument is
955 threaded through all of the http_error_NNN calls. This allows error
956 handlers like the redirect and authorization handlers to properly
957 re-start the connection.
958
959Wed Feb 24 16:25:17 1999 Guido van Rossum <guido@eric.cnri.reston.va.us>
960
961 * Lib/mhlib.py: Patch by Lars Wirzenius:
962
963 o the initial comment is wrong: creating messages is already
964 implemented
965
966 o Message.getbodytext: if the mail or it's part contains an
967 empty content-transfer-encoding header, the code used to
968 break; the change below treats an empty encoding value the same
969 as the other types that do not need decoding
970
971 o SubMessage.getbodytext was missing the decode argument; the
972 change below adds it; I also made it unconditionally return
973 the raw text if decoding was not desired, because my own
974 routines needed that (and it was easier than rewriting my
975 own routines ;-)
976
977Wed Feb 24 00:35:43 1999 Barry Warsaw <bwarsaw@eric.cnri.reston.va.us>
978
979 * Python/bltinmodule.c (initerrors):
980 Make sure that the exception tuples ("base-classes" when
981 string-based exceptions are used) reflect the real class hierarchy,
982 i.e. that SystemExit derives from Exception not StandardError.
983
984 * Lib/exceptions.py:
985 Document the correct class hierarchy for SystemExit. It is not an
986 error and so it derives from Exception and not SystemError. The
987 docstring was incorrect but the implementation was fine.
988
989Tue Feb 23 23:07:51 1999 Guido van Rossum <guido@eric.cnri.reston.va.us>
990
991 * Lib/shutil.py:
992 Add import sys, needed by reference to sys.exc_info() in rmtree().
993 Discovered by Mitch Chapman.
994
995 * config.h.in:
996 Now that we don't have AC_CHECK_LIB(m, pow), the HAVE_LIBM symbol
997 disappears. It wasn't used anywhere anyway...
998
999 * Modules/arraymodule.c:
1000 Carefully check for overflow when allocating the memory for fromfile
1001 -- someone tried to pass in sys.maxint and got bitten by the bogus
1002 calculations.
1003
1004 * configure.in:
1005 Get rid of AC_CHECK_LIB(m, pow) since this is taken care of later with
1006 LIBM (from --with-libm=...); this actually broke the customizability
1007 offered by the latter option. Thanks go to Clay Spence for reporting
1008 this.
1009
1010 * Lib/test/test_dl.py:
1011 1. Print the error message (carefully) when a dl.open() fails in verbose mode.
1012 2. When no test case worked, raise ImportError instead of failing.
1013
1014 * Python/bltinmodule.c:
1015 Patch by Tim Peters to improve the range checks for range() and
1016 xrange(), especially for platforms where int and long are different
1017 sizes (so sys.maxint isn't actually the theoretical limit for the
1018 length of a list, but the largest C int is -- sys.maxint is the
1019 largest Python int, which is actually a C long).
1020
1021 * Makefile.in:
1022 1. Augment the DG/UX rule so it doesn't break the BeOS build.
1023 2. Add $(EXE) to various occurrences of python so it will work on
1024 Cygwin with egcs (after setting EXE=.exe). These patches by
1025 Norman Vine.
1026
1027 * Lib/posixfile.py:
1028 According to Jeffrey Honig, bsd/os 2.0 - 4.0 should be added to the
1029 list (of bsd variants that have a different lock structure).
1030
1031 * Lib/test/test_fcntl.py:
1032 According to Jeffrey Honig, bsd/os 4.0 should be added to the list.
1033
1034 * Modules/timemodule.c:
1035 Patch by Tadayoshi Funaba (with some changes) to be smarter about
1036 guessing what happened when strftime() returns 0. Is it buffer
1037 overflow or was the result simply 0 bytes long? (This happens for an
1038 empty format string, or when the format string is a single %Z and the
1039 timezone is unknown.) if the buffer is at least 256 times as long as
1040 the format, assume the latter.
1041
1042Mon Feb 22 19:01:42 1999 Guido van Rossum <guido@eric.cnri.reston.va.us>
1043
1044 * Lib/urllib.py:
1045 As Des Barry points out, we need to call pathname2url(file) in two
1046 calls to addinfourl() in open_file().
1047
1048 * Modules/Setup.in: Document *static* -- in two places!
1049
1050 * Modules/timemodule.c:
1051 We don't support leap seconds, so the seconds field of a time 9-tuple
1052 should be in the range [0-59]. Noted by Tadayoshi Funaba.
1053
1054 * Modules/stropmodule.c:
1055 In atoi(), don't use isxdigit() to test whether the last character
1056 converted was a "digit" -- use isalnum(). This test is there only to
1057 guard against "+" or "-" being interpreted as a valid int literal.
1058 Reported by Takahiro Nakayama.
1059
1060 * Lib/os.py:
1061 As Finn Bock points out, _P_WAIT etc. don't have a leading underscore
1062 so they don't need to be treated specially here.
1063
1064Mon Feb 22 15:38:58 1999 Fred Drake <fdrake@eric.cnri.reston.va.us>
1065
1066 * Misc/NEWS:
1067 Typo: "apparentlt" --> "apparently"
1068
1069Mon Feb 22 15:38:46 1999 Guido van Rossum <guido@eric.cnri.reston.va.us>
1070
1071 * Lib/urlparse.py: Steve Clift pointed out that 'file' allows a netloc.
1072
1073 * Modules/posixmodule.c:
1074 The docstring for ttyname(..) claims a second "mode" argument. The
1075 actual code does not allow such an argument. (Finn Bock.)
1076
1077 * Lib/lib-old/poly.py:
1078 Dang. Even though this is obsolete code, somebody found a bug, and I
1079 fix it. Oh well.
1080
1081Thu Feb 18 20:51:50 1999 Fred Drake <fdrake@eric.cnri.reston.va.us>
1082
1083 * Lib/pyclbr.py:
1084 Bow to font-lock at the end of the docstring, since it throws stuff
1085 off.
1086
1087 Make sure the path paramter to readmodule() is a list before adding it
1088 with sys.path, or the addition could fail.
1089
Guido van Rossum1f83cce1997-10-06 21:04:35 +00001090
Guido van Rossum7ea639b1997-11-26 16:36:28 +00001091======================================================================
1092
Guido van Rossumc45cf021998-04-10 20:06:21 +00001093
Guido van Rossum74608e61999-02-18 16:02:20 +00001094From 1.5.2b1 to 1.5.2b2
1095=======================
1096
1097General
1098-------
1099
1100- Many memory leaks fixed.
1101
1102- Many small bugs fixed.
1103
1104- Command line option -OO (or -O -O) suppresses inclusion of doc
1105strings in resulting bytecode.
1106
1107Windows-specific changes
1108------------------------
1109
1110- New built-in module winsound provides an interface to the Win32
1111PlaySound() call.
1112
1113- Re-enable the audioop module in the config.c file.
1114
1115- On Windows, support spawnv() and associated P_* symbols.
1116
1117- Fixed the conversion of times() return values on Windows.
1118
1119- Removed freeze from the installer -- it doesn't work without the
1120source tree. (See FAQ 8.11.)
1121
1122- On Windows 95/98, the Tkinter module now is smart enough to find
1123Tcl/Tk even when the PATH environment variable hasn't been set -- when
1124the import of _tkinter fails, it searches in a standard locations,
1125patches os.environ["PATH"], and tries again. When it still fails, a
1126clearer error message is produced. This should avoid most
1127installation problems with Tkinter use (e.g. in IDLE).
1128
1129- The -i option doesn't make any calls to set[v]buf() for stdin --
Fred Drake0df21881999-02-22 15:38:58 +00001130this apparently screwed up _kbhit() and the _tkinter main loop.
Guido van Rossum74608e61999-02-18 16:02:20 +00001131
1132- The ntpath module (and hence, os.path on Windows) now parses out UNC
1133paths (e.g. \\host\mountpoint\dir\file) as "drive letters", so that
1134splitdrive() will \\host\mountpoint as the drive and \dir\file as the
1135path. ** EXPERIMENTAL **
1136
1137- Added a hack to the exit code so that if (1) the exit status is
1138nonzero and (2) we think we have our own DOS box (i.e. we're not
1139started from a command line shell), we print a message and wait for
1140the user to hit a key before the DOS box is closed.
1141
1142- Updated the installer to WISE 5.0g. Added a dialog warning about
1143the imminent Tcl installation. Added a dialog to specify the program
1144group name in the start menu. Upgraded the Tcl installer to Tcl
11458.0.4.
1146
1147Changes to intrinsics
1148---------------------
1149
1150- The repr() or str() of a module object now shows the __file__
1151attribute (i.e., the file which it was loaded), or the string
1152"(built-in)" if there is no __file__ attribute.
1153
1154- The range() function now avoids overflow during its calculations (if
1155at all possible).
1156
1157- New info string sys.hexversion, which is an integer encoding the
1158version in hexadecimal. In other words, hex(sys.hexversion) ==
11590x010502b2 for Python 1.5.2b2.
1160
1161New or improved ports
1162---------------------
1163
1164- Support for Nextstep descendants (future Mac systems).
1165
1166- Improved BeOS support.
1167
1168- Support dynamic loading of shared libraries on NetBSD platforms that
1169use ELF (i.e., MIPS and Alpha systems).
1170
1171Configuration/build changes
1172---------------------------
1173
1174- The Lib/test directory is no longer included in the default module
1175search path (sys.path) -- "test" has been a package ever since 1.5.
1176
1177- Now using autoconf 2.13.
1178
1179New library modules
1180-------------------
1181
1182- New library modules asyncore and asynchat: these form Sam Rushing's
1183famous asynchronous socket library. Sam has gracefully allowed me to
1184incorporate these in the standard Python library.
1185
1186- New module statvfs contains indexing constants for [f]statvfs()
1187return tuple.
1188
1189Changes to the library
1190----------------------
1191
1192- The wave module (platform-independent support for Windows sound
1193files) has been fixed to actually make it work.
1194
1195- The sunau module (platform-independent support for Sun/NeXT sound
1196files) has been fixed to work across platforms. Also, a weird
1197encoding bug in the header of the audio test data file has been
1198corrected.
1199
1200- Fix a bug in the urllib module that occasionally tripped up
1201webchecker and other ftp retrieves.
1202
1203- ConfigParser's get() method now accepts an optional keyword argument
1204(vars) that is substituted on top of the defaults that were setup in
1205__init__. You can now also have recusive references in your
1206configuration file.
1207
1208- Some improvements to the Queue module, including a put_nowait()
1209module and an optional "block" second argument, to get() and put(),
1210defaulting to 1.
1211
1212- The updated xmllib module is once again compatible with the version
1213present in Python 1.5.1 (this was accidentally broken in 1.5.2b1).
1214
1215- The bdb module (base class for the debugger) now supports
1216canonicalizing pathnames used in breakpoints. The derived class must
1217override the new canonical() method for this to work. Also changed
1218clear_break() to the backwards compatible old signature, and added
1219clear_bpbynumber() for the new functionality.
1220
1221- In sgmllib (and hence htmllib), recognize attributes even if they
1222don't have space in front of them. I.e. '<a
1223name="foo"href="bar.html">' will now have two attributes recognized.
1224
1225- In the debugger (pdb), change clear syntax to support three
1226alternatives: clear; clear file:line; clear bpno bpno ...
1227
1228- The os.path module now pretends to be a submodule within the os
1229"package", so you can do things like "from os.path import exists".
1230
1231- The standard exceptions now have doc strings.
1232
1233- In the smtplib module, exceptions are now classes. Also avoid
1234inserting a non-standard space after "TO" in rcpt() command.
1235
1236- The rfc822 module's getaddrlist() method now uses all occurrences of
1237the specified header instead of just the first. Some other bugfixes
1238too (to handle more weird addresses found in a very large test set,
1239and to avoid crashes on certain invalid dates), and a small test
1240module has been added.
1241
1242- Fixed bug in urlparse in the common-case code for HTTP URLs; it
1243would lose the query, fragment, and/or parameter information.
1244
1245- The sndhdr module no longer supports whatraw() -- it depended on a
1246rare extenral program.
1247
1248- The UserList module/class now supports the extend() method, like
1249real list objects.
1250
1251- The uu module now deals better with trailing garbage generated by
1252some broke uuencoders.
1253
1254- The telnet module now has an my_interact() method which uses threads
1255instead of select. The interact() method uses this by default on
1256Windows (where the single-threaded version doesn't work).
1257
1258- Add a class to mailbox.py for dealing with qmail directory
1259mailboxes. The test code was extended to notice these being used as
1260well.
1261
1262Changes to extension modules
1263----------------------------
1264
1265- Support for the [f]statvfs() system call, where it exists.
1266
1267- Fixed some bugs in cPickle where bad input could cause it to dump
1268core.
1269
1270- Fixed cStringIO to make the writelines() function actually work.
1271
1272- Added strop.expandtabs() so string.expandtabs() is now much faster.
1273
1274- Added fsync() and fdatasync(), if they appear to exist.
1275
1276- Support for "long files" (64-bit seek pointers).
1277
1278- Fixed a bug in the zlib module's flush() function.
1279
1280- Added access() system call. It returns 1 if access granted, 0 if
1281not.
1282
1283- The curses module implements an optional nlines argument to
1284w.scroll(). (It then calls wscrl(win, nlines) instead of scoll(win).)
1285
1286Changes to tools
1287----------------
1288
1289- Some changes to IDLE; see Tools/idle/NEWS.txt.
1290
1291- Latest version of Misc/python-mode.el included.
1292
1293Changes to Tkinter
1294------------------
1295
1296- Avoid tracebacks when an image is deleted after its root has been
1297destroyed.
1298
1299Changes to the Python/C API
1300---------------------------
1301
1302- When parentheses are used in a PyArg_Parse[Tuple]() call, any
1303sequence is now accepted, instead of requiring a tuple. This is in
1304line with the general trend towards accepting arbitrary sequences.
1305
1306- Added PyModule_GetFilename().
1307
1308- In PyNumber_Power(), remove unneeded and even harmful test for float
1309to the negative power (which is already and better done in
1310floatobject.c).
1311
1312- New version identification symbols; read patchlevel.h for info. The
1313version numbers are now exported by Python.h.
1314
1315- Rolled back the API version change -- it's back to 1007!
1316
1317- The frozenmain.c function calls PyInitFrozenExtensions().
1318
1319- Added 'N' format character to Py_BuildValue -- like 'O' but doesn't
1320INCREF.
1321
1322
1323======================================================================
1324
1325
Guido van Rossume96bd3f1998-12-21 21:45:04 +00001326From 1.5.2a2 to 1.5.2b1
1327=======================
1328
1329Changes to intrinsics
1330---------------------
1331
1332- New extension NotImplementedError, derived from RuntimeError. Not
1333used, but recommended use is for "abstract" methods to raise this.
1334
1335- The parser will now spit out a warning or error when -t or -tt is
1336used for parser input coming from a string, too.
1337
1338- The code generator now inserts extra SET_LINENO opcodes when
1339compiling multi-line argument lists.
1340
1341- When comparing bound methods, use identity test on the objects, not
1342equality test.
1343
1344New or improved ports
1345---------------------
1346
1347- Chris Herborth has redone his BeOS port; it now works on PowerPC
1348(R3/R4) and x86 (R4 only). Threads work too in this port.
1349
1350Renaming
1351--------
1352
1353- Thanks to Chris Herborth, the thread primitives now have proper Py*
1354names in the source code (they already had those for the linker,
1355through some smart macros; but the source still had the old, un-Py
1356names).
1357
1358Configuration/build changes
1359---------------------------
1360
1361- Improved support for FreeBSD/3.
1362
1363- Check for pthread_detach instead of pthread_create in libc.
1364
1365- The makesetup script now searches EXECINCLUDEPY before INCLUDEPY.
1366
1367- Misc/Makefile.pre.in now also looks at Setup.thread and Setup.local.
1368Otherwise modules such as thread didn't get incorporated in extensions.
1369
1370New library modules
1371-------------------
1372
Guido van Rossumde8b0261998-12-22 16:41:09 +00001373- shlex.py by Eric Raymond provides a lexical analyzer class for
1374simple shell-like syntaxes.
1375
1376- netrc.py by Eric Raymond provides a parser for .netrc files. (The
1377undocumented Netrc class in ftplib.py is now obsolete.)
1378
Guido van Rossume96bd3f1998-12-21 21:45:04 +00001379- codeop.py is a new module that contains the compile_command()
1380function that was previously in code.py. This is so that JPython can
1381provide its own version of this function, while still sharing the
1382higher-level classes in code.py.
1383
1384- turtle.py is a new module for simple turtle graphics. I'm still
1385working on it; let me know if you use this to teach Python to children
1386or other novices without prior programming experience.
1387
1388Obsoleted library modules
1389-------------------------
1390
1391- poly.py and zmod.py have been moved to Lib/lib-old to emphasize
1392their status of obsoleteness. They don't do a particularly good job
1393and don't seem particularly relevant to the Python core.
1394
1395New tools
1396---------
1397
1398- I've added IDLE: my Integrated DeveLopment Environment for Python.
1399Requires Tcl/Tk (and Tkinter). Works on Windows and Unix (and should
1400work on Macintosh, but I haven't been able to test it there; it does
1401depend on new features in 1.5.2 and perhaps even new features in
14021.5.2b1, especially the new code module). This is very much a work in
1403progress. I'd like to hear how people like it compared to PTUI (or
1404any other IDE they are familiar with).
1405
1406- New tools by Barry Warsaw:
1407
1408 = audiopy: controls the Solaris Audio device
1409 = pynche: The PYthonically Natural Color and Hue Editor
1410 = world: Print mappings between country names and DNS country codes
1411
1412New demos
1413---------
1414
1415- Demo/scripts/beer.py prints the lyrics to an arithmetic drinking
1416song.
1417
1418- Demo/tkinter/guido/optionmenu.py shows how to do an option menu in
1419Tkinter. (By Fredrik Lundh -- not by me!)
1420
1421Changes to the library
1422----------------------
1423
1424- compileall.py now avoids recompiling .py files that haven't changed;
1425it adds a -f option to force recompilation.
1426
1427- New version of xmllib.py by Sjoerd Mullender (0.2 with latest
1428patches).
1429
1430- nntplib.py: statparse() no longer lowercases the message-id.
1431
1432- types.py: use type(__stdin__) for FileType.
1433
1434- urllib.py: fix translations for filenames with "funny" characters.
Guido van Rossumde8b0261998-12-22 16:41:09 +00001435Patch by Sjoerd Mullender. Note that if you subclass one of the
1436URLopener classes, and you have copied code from the old urllib.py,
1437your subclass may stop working. A long-term solution is to provide
1438more methods so that you don't have to copy code.
Guido van Rossume96bd3f1998-12-21 21:45:04 +00001439
1440- cgi.py: In read_multi, allow a subclass to override the class we
1441instantiate when we create a recursive instance, by setting the class
1442variable 'FieldStorageClass' to the desired class. By default, this
1443is set to None, in which case we use self.__class__ (as before).
1444Also, a patch by Jim Fulton to pass additional arguments to recursive
1445calls to the FieldStorage constructor from its read_multi method.
1446
1447- UserList.py: In __getslice__, use self.__class__ instead of
1448UserList.
1449
1450- In SimpleHTTPServer.py, the server specified in test() should be
1451BaseHTTPServer.HTTPServer, in case the request handler should want to
1452reference the two attributes added by BaseHTTPServer.server_bind. (By
1453Jeff Rush, for Bobo). Also open the file in binary mode, so serving
1454images from a Windows box might actually work.
1455
1456- In CGIHTTPServer.py, the list of acceptable formats is -split-
1457on spaces but -joined- on commas, resulting in double commas
1458in the joined text. (By Jeff Rush.)
1459
1460- SocketServer.py, patch by Jeff Bauer: a minor change to declare two
1461new threaded versions of Unix Server classes, using the ThreadingMixIn
1462class: ThreadingUnixStreamServer, ThreadingUnixDatagramServer.
1463
1464- bdb.py: fix bomb on deleting a temporary breakpoint: there's no
1465method do_delete(); do_clear() was meant. By Greg Ward.
1466
1467- getopt.py: accept a non-list sequence for the long options (request
1468by Jack Jansen). Because it might be a common mistake to pass a
1469single string, this situation is treated separately. Also added
1470docstrings (copied from the library manual) and removed the (now
1471redundant) module comments.
1472
1473- tempfile.py: improvements to avoid security leaks.
1474
1475- code.py: moved compile_command() to new module codeop.py.
1476
1477- pickle.py: support pickle format 1.3 (binary float added). By Jim
1478Fulton. Also get rid of the undocumented obsolete Pickler dump_special
1479method.
1480
1481- uu.py: Move 'import sys' to top of module, as noted by Tim Peters.
1482
1483- imaplib.py: fix problem with some versions of IMAP4 servers that
1484choose to mix the case in their CAPABILITIES response.
1485
1486- cmp.py: use (f1, f2) as cache key instead of f1 + ' ' + f2. Noted
1487by Fredrik Lundh.
1488
1489Changes to extension modules
1490----------------------------
1491
1492- More doc strings for several modules were contributed by Chris
1493Petrilli: math, cmath, fcntl.
1494
1495- Fixed a bug in zlibmodule.c that could cause core dumps on
1496decompression of rarely occurring input.
1497
1498- cPickle.c: new version from Jim Fulton, with Open Source copyright
1499notice. Also, initialize self->safe_constructors early on to prevent
1500crash in early dealloc.
1501
1502- cStringIO.c: new version from Jim Fulton, with Open Source copyright
1503notice. Also fixed a core dump in cStringIO.c when doing seeks.
1504
1505- mpzmodule.c: fix signed character usage in mpz.mpz(stringobjecty).
1506
1507- readline.c: Bernard Herzog pointed out that rl_parse_and_bind
1508modifies its argument string (bad function!), so we make a temporary
1509copy.
1510
1511- sunaudiodev.c: Barry Warsaw added more smarts to get the device and
1512control pseudo-device, per audio(7I).
1513
1514Changes to tools
1515----------------
1516
1517- New, improved version of Barry Warsaw's Misc/python-mode.el (editing
1518support for Emacs).
1519
1520- tabnanny.py: added a -q ('quiet') option to tabnanny, which causes
1521only the names of offending files to be printed.
1522
1523- freeze: when printing missing modules, also print the module they
1524were imported from.
1525
1526- untabify.py: patch by Detlef Lannert to implement -t option
1527(set tab size).
1528
1529Changes to Tkinter
1530------------------
1531
1532- grid_bbox(): support new Tk API: grid bbox ?column row? ?column2
1533row2?
1534
1535- _tkinter.c: RajGopal Srinivasan noted that the latest code (1.5.2a2)
1536doesn't work when running in a non-threaded environment. He added
1537some #ifdefs that fix this.
1538
1539Changes to the Python/C API
1540---------------------------
1541
1542- Bumped API version number to 1008 -- enough things have changed!
1543
1544- There's a new macro, PyThreadState_GET(), which does the same work
1545as PyThreadState_Get() without the overhead of a function call (it
1546also avoids the error check). The two top calling locations of
1547PyThreadState_Get() have been changed to use this macro.
1548
1549- All symbols intended for export from a DLL or shared library are now
1550marked as such (with the DL_IMPORT() macro) in the header file that
1551declares them. This was needed for the BeOS port, and should also
1552make some other ports easier. The PC port no longer needs the file
1553with exported symbols (PC/python_nt.def). There's also a DL_EXPORT
1554macro which is only used for init methods in extension modules, and
1555for Py_Main().
1556
1557Invisible changes to internals
1558------------------------------
1559
1560- Fixed a bug in new_buffersize() in fileobject.c which could
1561return a buffer size that was way too large.
1562
1563- Use PySys_WriteStderr instead of fprintf in most places.
1564
1565- dictobject.c: remove dead code discovered by Vladimir Marangozov.
1566
1567- tupleobject.c: make tuples less hungry -- an extra item was
1568allocated but never used. Tip by Vladimir Marangozov.
1569
1570- mymath.h: Metrowerks PRO4 finally fixes the hypot snafu. (Jack
1571Jansen)
1572
1573- import.c: Jim Fulton fixes a reference count bug in
1574PyEval_GetGlobals.
1575
1576- glmodule.c: check in the changed version after running the stubber
1577again -- this solves the conflict with curses over the 'clear' entry
1578point much nicer. (Jack Jansen had checked in the changes to cstubs
1579eons ago, but I never regenrated glmodule.c :-( )
1580
1581- frameobject.c: fix reference count bug in PyFrame_New. Vladimir
1582Marangozov.
1583
1584- stropmodule.c: add a missing DECREF in an error exit. Submitted by
1585Jonathan Giddy.
1586
1587
1588======================================================================
1589
1590
Guido van Rossume8c10f91998-10-17 19:43:13 +00001591From 1.5.2a1 to 1.5.2a2
1592=======================
1593
1594General
1595-------
1596
1597- It is now a syntax error to have a function argument without a
1598default following one with a default.
1599
1600- __file__ is now set to the .py file if it was parsed (it used to
1601always be the .pyc/.pyo file).
1602
1603- Don't exit with a fatal error during initialization when there's a
1604problem with the exceptions.py module.
1605
1606- New environment variable PYTHONOPTIMIZE can be used to set -O.
1607
1608- New version of python-mode.el for Emacs.
1609
1610Miscellaneous fixed bugs
1611------------------------
1612
1613- No longer print the (confusing) error message about stack underflow
1614while compiling.
1615
1616- Some threading and locking bugs fixed.
1617
1618- When errno is zero, report "Error", not "Success".
1619
1620Documentation
1621-------------
1622
1623- Documentation will be released separately.
1624
1625- Doc strings added to array and md5 modules by Chris Petrilli.
1626
1627Ports and build procedure
1628-------------------------
1629
1630- Stop installing when a move or copy fails.
1631
1632- New version of the OS/2 port code by Jeff Rush.
1633
1634- The makesetup script handles absolute filenames better.
1635
1636- The 'new' module is now enabled by default in the Setup file.
1637
1638- I *think* I've solved the problem with the Linux build blowing up
1639sometimes due to a conflict between sigcheck/intrcheck and
1640signalmodule.
1641
1642Built-in functions
1643------------------
1644
1645- The second argument to apply() can now be any sequence, not just a
1646tuple.
1647
1648Built-in types
1649--------------
1650
1651- Lists have a new method: L1.extend(L2) is equivalent to the common
1652idiom L1[len(L1):] = L2.
1653
1654- Better error messages when a sequence is indexed with a non-integer.
1655
1656- Bettter error message when calling a non-callable object (include
1657the type in the message).
1658
1659Python services
1660---------------
1661
1662- New version of cPickle.c fixes some bugs.
1663
1664- pickle.py: improved instantiation error handling.
1665
1666- code.py: reworked quite a bit. New base class
1667InteractiveInterpreter and derived class InteractiveConsole. Fixed
1668several problems in compile_command().
1669
1670- py_compile.py: print error message and continue on syntax errors.
1671Also fixed an old bug with the fstat code (it was never used).
1672
1673- pyclbr.py: support submodules of packages.
1674
1675String Services
1676---------------
1677
1678- StringIO.py: raise the right exception (ValueError) for attempted
1679I/O on closed StringIO objects.
1680
1681- re.py: fixed a bug in subn(), which caused .groups() to fail inside
1682the replacement function called by sub().
1683
1684- The struct module has a new format 'P': void * in native mode.
1685
1686Generic OS Services
1687-------------------
1688
1689- Module time: Y2K robustness. 2-digit year acceptance depends on
1690value of time.accept2dyear, initialized from env var PYTHONY2K,
1691default 0. Years 00-68 mean 2000-2068, while 69-99 mean 1969-1999
1692(POSIX or X/Open recommendation).
1693
1694- os.path: normpath(".//x") should return "x", not "/x".
1695
1696- getpass.py: fall back on default_getpass() when sys.stdin.fileno()
1697doesn't work.
1698
1699- tempfile.py: regenerate the template after a fork() call.
1700
1701Optional OS Services
1702--------------------
1703
1704- In the signal module, disable restarting interrupted system calls
1705when we have siginterrupt().
1706
1707Debugger
1708--------
1709
1710- No longer set __args__; this feature is no longer supported and can
1711affect the debugged code.
1712
1713- cmd.py, pdb.py and bdb.py have been overhauled by Richard Wolff, who
1714added aliases and some other useful new features, e.g. much better
1715breakpoint support: temporary breakpoint, disabled breakpoints,
1716breakpoints with ignore counts, and conditions; breakpoints can be set
1717on a file before it is loaded.
1718
1719Profiler
1720--------
1721
1722- Changes so that JPython can use it. Also fix the calibration code
1723so it actually works again
1724.
1725Internet Protocols and Support
1726------------------------------
1727
1728- imaplib.py: new version from Piers Lauder.
1729
1730- smtplib.py: change sendmail() method to accept a single string or a
1731list or strings as the destination (commom newbie mistake).
1732
1733- poplib.py: LIST with a msg argument fixed.
1734
1735- urlparse.py: some optimizations for common case (http).
1736
1737- urllib.py: support content-length in info() for ftp protocol;
1738support for a progress meter through a third argument to
1739urlretrieve(); commented out gopher test (the test site is dead).
1740
1741Internet Data handling
1742----------------------
1743
1744- sgmllib.py: support tags with - or . in their name.
1745
1746- mimetypes.py: guess_type() understands 'data' URLs.
1747
1748Restricted Execution
1749--------------------
1750
1751- The classes rexec.RModuleLoader and rexec.RModuleImporter no
1752longer exist.
1753
1754Tkinter
1755-------
1756
1757- When reporting an exception, store its info in sys.last_*. Also,
1758write all of it to stderr.
1759
1760- Added NS, EW, and NSEW constants, for grid's sticky option.
1761
1762- Fixed last-minute bug in 1.5.2a1 release: need to include "mytime.h".
1763
1764- Make bind variants without a sequence return a tuple of sequences
1765(formerly it returned a string, which wasn't very convenient).
1766
1767- Add image commands to the Text widget (these are new in Tk 8.0).
1768
1769- Added new listbox and canvas methods: {xview,yview}_{scroll,moveto}.)
1770
1771- Improved the thread code (but you still can't call update() from
1772another thread on Windows).
1773
1774- Fixed unnecessary references to _default_root in the new dialog
1775modules.
1776
1777- Miscellaneous problems fixed.
1778
1779
1780Windows General
1781---------------
1782
1783- Call LoadLibraryEx(..., ..., LOAD_WITH_ALTERED_SEARCH_PATH) to
1784search for dependent dlls in the directory containing the .pyd.
1785
1786- In debugging mode, call DebugBreak() in Py_FatalError().
1787
1788Windows Installer
1789-----------------
1790
1791- Install zlib.dll in the DLLs directory instead of in the win32
1792system directory, to avoid conflicts with other applications that have
1793their own zlib.dll.
1794
1795Test Suite
1796----------
1797
1798- test_long.py: new test for long integers, by Tim Peters.
1799
1800- regrtest.py: improved so it can be used for other test suites as
1801well.
1802
1803- test_strftime.py: use re to compare test results, to support legal
1804variants (e.g. on Linux).
1805
1806Tools and Demos
1807---------------
1808
1809- Four new scripts in Tools/scripts: crlf.py and lfcr.py (to
1810remove/add Windows style '\r\n' line endings), untabify.py (to remove
1811tabs), and rgrep.yp (reverse grep).
1812
1813- Improvements to Tools/freeze/. Each Python module is now written to
1814its own C file. This prevents some compilers or assemblers from
1815blowing up on large frozen programs, and saves recompilation time if
1816only a few modules are changed. Other changes too, e.g. new command
1817line options -x and -i.
1818
1819- Much improved (and smaller!) version of Tools/scripts/mailerdaemon.py.
1820
1821Python/C API
1822------------
1823
1824- New mechanism to support extensions of the type object while
1825remaining backward compatible with extensions compiled for previous
1826versions of Python 1.5. A flags field indicates presence of certain
1827fields.
1828
1829- Addition to the buffer API to differentiate access to bytes and
18308-bit characters (in anticipation of Unicode characters).
1831
1832- New argument parsing format t# ("text") to indicate 8-bit
1833characters; s# simply means 8-bit bytes, for backwards compatibility.
1834
1835- New object type, bufferobject.c is an example and can be used to
1836create buffers from memory.
1837
1838- Some support for 64-bit longs, including some MS platforms.
1839
1840- Many calls to fprintf(stderr, ...) have been replaced with calls to
1841PySys_WriteStderr(...).
1842
1843- The calling context for PyOS_Readline() has changed: it must now be
1844called with the interpreter lock held! It releases the lock around
1845the call to the function pointed to by PyOS_ReadlineFunctionPointer
1846(default PyOS_StdioReadline()).
1847
1848- New APIs PyLong_FromVoidPtr() and PyLong_AsVoidPtr().
1849
1850- Renamed header file "thread.h" to "pythread.h".
1851
1852- The code string of code objects may now be anything that supports the
1853buffer API.
1854
1855
1856======================================================================
1857
1858
Guido van Rossumf5475c91998-08-06 17:55:46 +00001859From 1.5.1 to 1.5.2a1
1860=====================
1861
Guido van Rossumab9d6f01998-08-10 22:01:13 +00001862General
1863-------
1864
1865- When searching for the library, a landmark that is a compiled module
1866(string.pyc or string.pyo) is also accepted.
1867
1868- When following symbolic links to the python executable, use a loop
1869so that a symlink to a symlink can work.
1870
1871- Added a hack so that when you type 'quit' or 'exit' at the
1872interpreter, you get a friendly explanation of how to press Ctrl-D (or
1873Ctrl-Z) to exit.
1874
1875- New and improved Misc/python-mode.el (Python mode for Emacs).
1876
Guido van Rossum27b3bc31998-08-11 18:42:26 +00001877- Revert a new feature in Unix dynamic loading: for one or two
1878revisions, modules were loaded using the RTLD_GLOBAL flag. It turned
1879out to be a bad idea.
1880
Guido van Rossumab9d6f01998-08-10 22:01:13 +00001881Miscellaneous fixed bugs
1882------------------------
Guido van Rossumf5475c91998-08-06 17:55:46 +00001883
1884- All patches on the patch page have been integrated. (But much more
1885has been done!)
1886
1887- Several memory leaks plugged (e.g. the one for classes with a
1888__getattr__ method).
1889
Guido van Rossumf5475c91998-08-06 17:55:46 +00001890- Removed the only use of calloc(). This triggered an obscure bug on
1891multiprocessor Sparc Solaris 2.6.
1892
Guido van Rossum27b3bc31998-08-11 18:42:26 +00001893- Fix a peculiar bug that would allow "import sys.time" to succeed
1894(believing the built-in time module to be a part of the sys package).
1895
1896- Fix a bug in the overflow checking when converting a Python long to
1897a C long (failed to convert -2147483648L, and some other cases).
1898
Guido van Rossumf5475c91998-08-06 17:55:46 +00001899Documentation
1900-------------
1901
Guido van Rossum27b3bc31998-08-11 18:42:26 +00001902- Doc strings have been added to many extension modules: __builtin__,
1903errno, select, signal, socket, sys, thread, time. Also to methods of
1904list objects (try [].append.__doc__). A doc string on a type will now
1905automatically be propagated to an instance if the instance has methods
1906that are accessed in the usual way.
1907
Guido van Rossumf5475c91998-08-06 17:55:46 +00001908- The documentation has been expanded and the formatting improved.
1909(Remember that the documentation is now unbundled and has its own
1910release cycle though; see http://www.python.org/doc/.)
1911
Guido van Rossumab9d6f01998-08-10 22:01:13 +00001912- Added Misc/Porting -- a mini-FAQ on porting to a new platform.
1913
1914Ports and build procedure
1915-------------------------
Guido van Rossumf5475c91998-08-06 17:55:46 +00001916
1917- The BeOS port is now integrated. Courtesy Chris Herborth.
1918
1919- Symbol files for FreeBSD 2.x and 3.x have been contributed
1920(Lib/plat-freebsd[23]/*).
1921
Guido van Rossumab9d6f01998-08-10 22:01:13 +00001922- Support HPUX 10.20 DCE threads.
Guido van Rossumf5475c91998-08-06 17:55:46 +00001923
Guido van Rossumab9d6f01998-08-10 22:01:13 +00001924- Finally fixed the configure script so that (on SGI) if -OPT:Olimit=0
1925works, it won't also use -Olimit 1500 (which gives a warning for every
1926file). Also support the SGI_ABI environment variable better.
Guido van Rossumf5475c91998-08-06 17:55:46 +00001927
Guido van Rossumab9d6f01998-08-10 22:01:13 +00001928- The makesetup script now understands absolute pathnames ending in .o
1929in the module -- it assumes it's a file for which we have no source.
Guido van Rossumf5475c91998-08-06 17:55:46 +00001930
Guido van Rossum27b3bc31998-08-11 18:42:26 +00001931- Other miscellaneous improvements to the configure script and
1932Makefiles.
1933
Guido van Rossumab9d6f01998-08-10 22:01:13 +00001934- The test suite now uses a different sound sample.
Guido van Rossumf5475c91998-08-06 17:55:46 +00001935
Guido van Rossum27b3bc31998-08-11 18:42:26 +00001936Built-in functions
1937------------------
Guido van Rossumab9d6f01998-08-10 22:01:13 +00001938
1939- Better checks for invalid input to int(), long(), string.atoi(),
1940string.atol(). (Formerly, a sign without digits would be accepted as
1941a legal ways to spell zero.)
1942
Guido van Rossumab9d6f01998-08-10 22:01:13 +00001943- Changes to map() and filter() to use the length of a sequence only
1944as a hint -- if an IndexError happens earlier, take that. (Formerly,
1945this was considered an error.)
1946
1947- Experimental feature in getattr(): a third argument can specify a
1948default (instead of raising AttributeError).
1949
1950- Implement round() slightly different, so that for negative ndigits
1951no additional errors happen in the last step.
1952
Guido van Rossum27b3bc31998-08-11 18:42:26 +00001953- The open() function now adds the filename to the exception when it
1954fails.
Guido van Rossumab9d6f01998-08-10 22:01:13 +00001955
Guido van Rossum27b3bc31998-08-11 18:42:26 +00001956Built-in exceptions
1957-------------------
1958
1959- New standard exceptions EnvironmentError and PosixError.
1960EnvironmentError is the base class for IOError and PosixError;
1961PosixError is the same as os.error. All this so that either exception
1962class can be instantiated with a third argument indicating a filename.
1963The built-in function open() and most os/posix functions that take a
1964filename argument now use this.
1965
1966Built-in types
1967--------------
1968
1969- List objects now have an experimental pop() method; l.pop() returns
1970and removes the last item; l.pop(i) returns and removes the item at
1971i. Also, the sort() method is faster again. Sorting is now also
1972safer: it is impossible for the sorting function to modify the list
1973while the sort is going on (which could cause core dumps).
1974
1975- Changes to comparisons: numbers are now smaller than any other type.
1976This is done to prevent the circularity where [] < 0L < 1 < [] is
1977true. As a side effect, cmp(None, 0) is now positive instead of
Guido van Rossumab9d6f01998-08-10 22:01:13 +00001978negative. This *shouldn't* affect any working code, but I've found
1979that the change caused several "sleeping" bugs to become active, so
1980beware!
1981
1982- Instance methods may now have other callable objects than just
1983Python functions as their im_func. Use new.instancemethod() or write
1984your own C code to create them; new.instancemethod() may be called
1985with None for the instance to create an unbound method.
1986
1987- Assignment to __name__, __dict__ or __bases__ of a class object is
1988now allowed (with stringent type checks); also allow assignment to
1989__getattr__ etc. The cached values for __getattr__ etc. are
1990recomputed after such assignments (but not for derived classes :-( ).
1991
Guido van Rossumab9d6f01998-08-10 22:01:13 +00001992- Allow assignment to some attributes of function objects: func_code,
1993func_defaults and func_doc / __doc__. (With type checks except for
1994__doc__ / func_doc .)
1995
Guido van Rossum27b3bc31998-08-11 18:42:26 +00001996Python services
Guido van Rossumf5475c91998-08-06 17:55:46 +00001997---------------
1998
1999- New tests (in Lib/test): reperf.py (regular expression benchmark),
2000sortperf.py (list sorting benchmark), test_MimeWriter.py (test case
2001for the MimeWriter module).
2002
Guido van Rossum27b3bc31998-08-11 18:42:26 +00002003- Generalized test/regrtest.py so that it is useful for testing other
2004packages.
Guido van Rossumf5475c91998-08-06 17:55:46 +00002005
Guido van Rossum27b3bc31998-08-11 18:42:26 +00002006- The ihooks.py module now understands package imports.
Guido van Rossumf5475c91998-08-06 17:55:46 +00002007
Guido van Rossum27b3bc31998-08-11 18:42:26 +00002008- In code.py, add a class that subsumes Fredrik Lundh's
2009PythonInterpreter class. The interact() function now uses this.
Guido van Rossumf5475c91998-08-06 17:55:46 +00002010
Guido van Rossum27b3bc31998-08-11 18:42:26 +00002011- In rlcompleter.py, in completer(), return None instead of raising an
2012IndexError when there are no more completions left.
2013
2014- Fixed the marshal module to test for certain common kinds of invalid
2015input. (It's still not foolproof!)
2016
2017- In the operator module, add an alias (now the preferred name)
2018"contains" for "sequenceincludes".
2019
2020String Services
2021---------------
2022
2023- In the string and strop modules, in the replace() function, treat an
2024empty pattern as an error (since it's not clear what was meant!).
2025
2026- Some speedups to re.py, especially the string substitution and split
2027functions. Also added new function/method findall(), to find all
2028occurrences of a given substring.
2029
2030- In cStringIO, add better argument type checking and support the
2031readonly 'closed' attribute (like regular files).
2032
2033- In the struct module, unsigned 1-2 byte sized formats no longer
2034result in long integer values.
2035
2036Miscellaneous services
2037----------------------
Guido van Rossumf5475c91998-08-06 17:55:46 +00002038
2039- In whrandom.py, added new method and function randrange(), same as
2040choice(range(start, stop, step)) but faster. This addresses the
2041problem that randint() was accidentally defined as taking an inclusive
2042range. Also, randint(a, b) is now redefined as randrange(a, b+1),
2043adding extra range and type checking to its arguments!
2044
Guido van Rossumab9d6f01998-08-10 22:01:13 +00002045- Add some semi-thread-safety to random.gauss() (it used to be able to
2046crash when invoked from separate threads; now the worst it can do is
2047give a duplicate result occasionally).
2048
Guido van Rossum27b3bc31998-08-11 18:42:26 +00002049- Some restructuring and generalization done to cmd.py.
2050
2051- Major upgrade to ConfigParser.py; converted to using 're', added new
2052exceptions, support underscore in section header and option name. No
2053longer add 'name' option to every section; instead, add '__name__'.
2054
Guido van Rossumf5475c91998-08-06 17:55:46 +00002055- In getpass.py, don't use raw_input() to ask for the password -- we
Guido van Rossumab9d6f01998-08-10 22:01:13 +00002056don't want it to show up in the readline history! Also don't catch
2057interrupts (the try-finally already does all necessary cleanup).
Guido van Rossumf5475c91998-08-06 17:55:46 +00002058
Guido van Rossum27b3bc31998-08-11 18:42:26 +00002059Generic OS Services
2060-------------------
2061
2062- New functions in os.py: makedirs(), removedirs(), renames(). New
2063variable: linesep (the line separator as found in binary files,
2064i.e. '\n' on Unix, '\r\n' on DOS/Windows, '\r' on Mac. Do *not* use
2065this with files opened in (default) text mode; the line separator used
2066will always be '\n'!
2067
2068- Changes to the 'os.path' submodule of os.py: added getsize(),
2069getmtime(), getatime() -- these fetch the most popular items from the
2070stat return tuple.
2071
2072- In the time module, add strptime(), if it exists. (This parses a
2073time according to a format -- the inverse of strftime().) Also,
2074remove the call to mktime() from strftime() -- it messed up the
2075formatting of some non-local times.
2076
2077- In the socket module, added a new function gethostbyname_ex().
2078Also, don't use #ifdef to test for some symbols that are enums on some
2079platforms (and should exist everywhere).
2080
2081Optional OS Services
2082--------------------
2083
2084- Some fixes to gzip.py. In particular, the readlines() method now
2085returns the lines *with* trailing newline characters, like readlines()
2086of regular file objects. Also, it didn't work together with cPickle;
2087fixed that.
2088
2089- In whichdb.py, support byte-swapped dbhash (bsddb) files.
2090
2091- In anydbm.py, look at the type of an existing database to determine
2092which module to use to open it. (The anydbm.error exception is now a
2093tuple.)
2094
2095Unix Services
2096-------------
2097
2098- In the termios module, in tcsetattr(), initialize the structure vy
2099calling tcgetattr().
2100
2101- Added some of the "wait status inspection" macros as functions to
2102the posix module (and thus to the os module): WEXITSTATUS(),
2103WIFEXITED(), WIFSIGNALED(), WIFSTOPPED(), WSTOPSIG(), WTERMSIG().
2104
2105- In the syslog module, make the default facility more intuitive
2106(matching the docs).
2107
2108Debugger
2109--------
2110
2111- In pdb.py, support for setting breaks on files/modules that haven't
2112been loaded yet.
2113
2114Internet Protocols and Support
2115------------------------------
Guido van Rossumf5475c91998-08-06 17:55:46 +00002116
Guido van Rossumab9d6f01998-08-10 22:01:13 +00002117- Changes in urllib.py; sped up unquote() and quote(). Fixed an
2118obscure bug in quote_plus(). Added urlencode(dict) -- convenience
2119function for sending a POST request with urlopen(). Use the getpass
2120module to ask for a password. Rewrote the (test) main program so that
2121when used as a script, it can retrieve one or more URLs to stdout.
2122Use -t to run the self-test. Made the proxy code work again.
Guido van Rossumf5475c91998-08-06 17:55:46 +00002123
Guido van Rossumab9d6f01998-08-10 22:01:13 +00002124- In cgi.py, treat "HEAD" the same as "GET", so that CGI scripts don't
2125fail when someone asks for their HEAD. Also, for POST, set the
2126default content-type to application/x-www-form-urlencoded. Also, in
2127FieldStorage.__init__(), when method='GET', always get the query
2128string from environ['QUERY_STRING'] or sys.argv[1] -- ignore an
2129explicitly passed in fp.
Guido van Rossumf5475c91998-08-06 17:55:46 +00002130
Guido van Rossum27b3bc31998-08-11 18:42:26 +00002131- The smtplib.py module now supports ESMTP and has improved standard
2132compliance, for picky servers.
2133
Guido van Rossumf5475c91998-08-06 17:55:46 +00002134- Improved imaplib.py.
2135
Guido van Rossum27b3bc31998-08-11 18:42:26 +00002136- Fixed UDP support in SocketServer.py (it never worked).
Guido van Rossumf5475c91998-08-06 17:55:46 +00002137
Guido van Rossumab9d6f01998-08-10 22:01:13 +00002138- Fixed a small bug in CGIHTTPServer.py.
Guido van Rossumf5475c91998-08-06 17:55:46 +00002139
Guido van Rossum27b3bc31998-08-11 18:42:26 +00002140Internet Data handling
2141----------------------
Guido van Rossumf5475c91998-08-06 17:55:46 +00002142
Guido van Rossum27b3bc31998-08-11 18:42:26 +00002143- In rfc822.py, add a new class AddressList. Also support a new
2144overridable method, isheader(). Also add a get() method similar to
2145dictionaries (and make getheader() an alias for it). Also, be smarter
2146about seekable (test whether fp.tell() works) and test for presence of
2147unread() method before trying seeks.
Guido van Rossumf5475c91998-08-06 17:55:46 +00002148
Guido van Rossum27b3bc31998-08-11 18:42:26 +00002149- In sgmllib.py, restore the call to report_unbalanced() that was lost
2150long ago. Also some other improvements: handle <? processing
2151instructions >, allow . and - in entity names, and allow \r\n as line
2152separator.
Guido van Rossumf5475c91998-08-06 17:55:46 +00002153
Guido van Rossum27b3bc31998-08-11 18:42:26 +00002154- Some restructuring and generalization done to multifile.py; support
2155a 'seekable' flag.
Guido van Rossumf5475c91998-08-06 17:55:46 +00002156
Guido van Rossum27b3bc31998-08-11 18:42:26 +00002157Restricted Execution
2158--------------------
Guido van Rossumf5475c91998-08-06 17:55:46 +00002159
Guido van Rossum27b3bc31998-08-11 18:42:26 +00002160- Improvements to rexec.py: package support; support a (minimal)
2161sys.exc_info(). Also made the (test) main program a bit fancier (you
2162can now use it to run arbitrary Python scripts in restricted mode).
Guido van Rossumab9d6f01998-08-10 22:01:13 +00002163
2164Tkinter
2165-------
2166
2167- On Unix, Tkinter can now safely be used from a multi-threaded
2168application. (Formerly, no threads would make progress while
2169Tkinter's mainloop() was active, because it didn't release the Python
2170interpreter lock.) Unfortunately, on Windows, threads other than the
2171main thread should not call update() or update_idletasks() because
2172this will deadlock the application.
2173
2174- An interactive interpreter that uses readline and Tkinter no longer
2175uses up all available CPU time.
2176
2177- Even if readline is not used, Tk windows created in an interactive
2178interpreter now get continuously updated. (This even works in Windows
2179as long as you don't hit a key.)
2180
2181- New demos in Demo/tkinter/guido/: brownian.py, redemo.py, switch.py.
2182
2183- No longer register Tcl_finalize() as a low-level exit handler. It
2184may call back into Python, and that's a bad idea.
2185
2186- Allow binding of Tcl commands (given as a string).
2187
2188- Some minor speedups; replace explicitly coded getint() with int() in
2189most places.
2190
2191- In FileDialog.py, remember the directory of the selected file, if
2192given.
2193
2194- Change the names of all methods in the Wm class: they are now
2195wm_title(), etc. The old names (title() etc.) are still defined as
2196aliases.
2197
2198- Add a new method of interpreter objects, interpaddr(). This returns
2199the address of the Tcl interpreter object, as an integer. Not very
2200useful for the Python programmer, but this can be called by another C
2201extension that needs to make calls into the Tcl/Tk C API and needs to
2202get the address of the Tcl interpreter object. A simple cast of the
2203return value to (Tcl_Interp *) will do the trick.
2204
Guido van Rossum27b3bc31998-08-11 18:42:26 +00002205Windows General
2206---------------
Guido van Rossumab9d6f01998-08-10 22:01:13 +00002207
2208- Don't insist on proper case for module source files if the filename
2209is all uppercase (e.g. FOO.PY now matches foo; but FOO.py still
2210doesn't). This should address problems with this feature on
2211oldfashioned filesystems (Novell servers?).
2212
Guido van Rossum27b3bc31998-08-11 18:42:26 +00002213Windows Library
2214---------------
2215
2216- os.environ is now all uppercase, but accesses are case insensitive,
2217and the putenv() calls made as a side effect of changing os.environ
2218are case preserving.
2219
2220- Removed samefile(), sameopenfile(), samestat() from os.path (aka
2221ntpath.py) -- these cannot be made to work reliably (at least I
2222wouldn't know how).
2223
Guido van Rossumab9d6f01998-08-10 22:01:13 +00002224- Fixed os.pipe() so that it returns file descriptors acceptable to
2225os.read() and os.write() (like it does on Unix), rather than Windows
2226file handles.
2227
Guido van Rossum27b3bc31998-08-11 18:42:26 +00002228- Added a table of WSA error codes to socket.py.
2229
2230- In the select module, put the (huge) file descriptor arrays on the
2231heap.
Guido van Rossumab9d6f01998-08-10 22:01:13 +00002232
2233- The getpass module now raises KeyboardInterrupt when it sees ^C.
2234
Guido van Rossumab9d6f01998-08-10 22:01:13 +00002235- In mailbox.py, fix tell/seek when using files opened in text mode.
2236
2237- In rfc822.py, fix tell/seek when using files opened in text mode.
2238
Guido van Rossum27b3bc31998-08-11 18:42:26 +00002239- In the msvcrt extension module, release the interpreter lock for
2240calls that may block: _locking(), _getch(), _getche(). Also fix a
2241bogus error return when open_osfhandle() doesn't have the right
2242argument list.
Guido van Rossumab9d6f01998-08-10 22:01:13 +00002243
Guido van Rossum27b3bc31998-08-11 18:42:26 +00002244Windows Installer
2245-----------------
2246
2247- The registry key used is now "1.5" instead of "1.5.x" -- so future
2248versions of 1.5 and Mark Hammond's win32all installer don't need to be
2249resynchronized.
2250
2251Windows Tools
2252-------------
2253
2254- Several improvements to freeze specifically for Windows.
2255
2256Windows Build Procedure
2257-----------------------
2258
2259- The VC++ project files and the WISE installer have been moved to the
2260PCbuild subdirectory, so they are distributed in the same subdirectory
2261where they must be used. This avoids confusion.
2262
2263- New project files for Windows 3.1 port by Jim Ahlstrom.
2264
2265- Got rid of the obsolete subdirectory PC/setup_nt/.
Guido van Rossumab9d6f01998-08-10 22:01:13 +00002266
2267- The projects now use distinct filenames for the .exe, .dll, .lib and
2268.pyd files built in debug mode (by appending "_d" to the base name,
2269before the extension). This makes it easier to switch between the two
2270and get the right versions. There's a pragma in config.h that directs
2271the linker to include the appropriate .lib file (so python15.lib no
2272longer needs to be explicit in your project).
2273
Guido van Rossumab9d6f01998-08-10 22:01:13 +00002274- The installer now installs more files (e.g. config.h). The idea is
2275that you shouldn't need the source distribution if you want build your
2276own extensions in C or C++.
2277
Guido van Rossumab9d6f01998-08-10 22:01:13 +00002278Tools and Demos
Guido van Rossumf5475c91998-08-06 17:55:46 +00002279---------------
2280
Guido van Rossumab9d6f01998-08-10 22:01:13 +00002281- New script nm2def.py by Marc-Andre Lemburg, to construct
2282PC/python_nt.def automatically (some hand editing still required).
Guido van Rossumf5475c91998-08-06 17:55:46 +00002283
2284- New tool ndiff.py: Tim Peters' text diffing tool.
2285
Guido van Rossumab9d6f01998-08-10 22:01:13 +00002286- Various and sundry improvements to the freeze script.
2287
Guido van Rossumf5475c91998-08-06 17:55:46 +00002288- The script texi2html.py (which was part of the Doc tree but is no
2289longer used there) has been moved to the Tools/scripts subdirectory.
2290
2291- Some generalizations in the webchecker code. There's now a
2292primnitive gui for websucker.py: wsgui.py. (In Tools/webchecker/.)
2293
Guido van Rossumab9d6f01998-08-10 22:01:13 +00002294- The ftpmirror.py script now handles symbolic links properly, and
2295also files with multiple spaces in their names.
Guido van Rossumf5475c91998-08-06 17:55:46 +00002296
Guido van Rossumab9d6f01998-08-10 22:01:13 +00002297- The 1.5.1 tabnanny.py suffers an assert error if fed a script whose
2298last line is both indented and lacks a newline. This is now fixed.
Guido van Rossumf5475c91998-08-06 17:55:46 +00002299
2300Python/C API
2301------------
2302
Guido van Rossumab9d6f01998-08-10 22:01:13 +00002303- Added missing prototypes for PyEval_CallFunction() and
2304PyEval_CallMethod().
2305
Guido van Rossum27b3bc31998-08-11 18:42:26 +00002306- New macro PyList_SET_ITEM().
Guido van Rossumf5475c91998-08-06 17:55:46 +00002307
2308- New macros to access object members for PyFunction, PyCFunction
2309objects.
2310
2311- New APIs PyImport_AppendInittab() an PyImport_ExtendInittab() to
2312dynamically add one or many entries to the table of built-in modules.
2313
2314- New macro Py_InitModule3(name, methods, doc) which calls
2315Py_InitModule4() with appropriate arguments. (The -4 variant requires
2316you to pass an obscure version number constant which is always the same.)
2317
Guido van Rossum27b3bc31998-08-11 18:42:26 +00002318- New APIs PySys_WriteStdout() and PySys_WriteStderr() to write to
2319sys.stdout or sys.stderr using a printf-like interface. (Used in
2320_tkinter.c, for example.)
Guido van Rossumab9d6f01998-08-10 22:01:13 +00002321
Guido van Rossum27b3bc31998-08-11 18:42:26 +00002322- New APIs for conversion between Python longs and C 'long long' if
2323your compiler supports it.
Guido van Rossumab9d6f01998-08-10 22:01:13 +00002324
2325- PySequence_In() is now called PySequence_Contains().
2326(PySequence_In() is still supported for b/w compatibility; it is
2327declared obsolete because its argument order is confusing.)
2328
2329- PyDict_GetItem() and PyDict_GetItemString() are changed so that they
2330*never* raise an exception -- (even if the hash() fails, simply clear
2331the error). This was necessary because there is lots of code out
2332there that already assumes this.
2333
Guido van Rossum27b3bc31998-08-11 18:42:26 +00002334- Changes to PySequence_Tuple() and PySequence_List() to use the
2335length of a sequence only as a hint -- if an IndexError happens
2336earlier, take that. (Formerly, this was considered an error.)
Guido van Rossumab9d6f01998-08-10 22:01:13 +00002337
Guido van Rossum27b3bc31998-08-11 18:42:26 +00002338- Reformatted abstract.c to give it a more familiar "look" and fixed
2339many error checking bugs.
2340
2341- Add NULL pointer checks to all calls of a C function through a type
2342object and extensions (e.g. nb_add).
2343
2344- The code that initializes sys.path now calls Py_GetPythonHome()
2345instead of getenv("PYTHONHOME"). This, together with the new API
2346Py_SetPythonHome(), makes it easier for embedding applications to
2347change the notion of Python's "home" directory (where the libraries
2348etc. are sought).
2349
2350- Fixed a very old bug in the parsing of "O?" format specifiers.
Guido van Rossumab9d6f01998-08-10 22:01:13 +00002351
2352
2353======================================================================