blob: 392e05598d1079d94fdb70acb7bfa7c3c54bb740 [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
13
Guido van Rossum7ea639b1997-11-26 16:36:28 +000014======================================================================
15
Guido van Rossumc45cf021998-04-10 20:06:21 +000016
Guido van Rossum74608e61999-02-18 16:02:20 +000017From 1.5.2b1 to 1.5.2b2
18=======================
19
20General
21-------
22
23- Many memory leaks fixed.
24
25- Many small bugs fixed.
26
27- Command line option -OO (or -O -O) suppresses inclusion of doc
28strings in resulting bytecode.
29
30Windows-specific changes
31------------------------
32
33- New built-in module winsound provides an interface to the Win32
34PlaySound() call.
35
36- Re-enable the audioop module in the config.c file.
37
38- On Windows, support spawnv() and associated P_* symbols.
39
40- Fixed the conversion of times() return values on Windows.
41
42- Removed freeze from the installer -- it doesn't work without the
43source tree. (See FAQ 8.11.)
44
45- On Windows 95/98, the Tkinter module now is smart enough to find
46Tcl/Tk even when the PATH environment variable hasn't been set -- when
47the import of _tkinter fails, it searches in a standard locations,
48patches os.environ["PATH"], and tries again. When it still fails, a
49clearer error message is produced. This should avoid most
50installation problems with Tkinter use (e.g. in IDLE).
51
52- The -i option doesn't make any calls to set[v]buf() for stdin --
Fred Drake0df21881999-02-22 15:38:58 +000053this apparently screwed up _kbhit() and the _tkinter main loop.
Guido van Rossum74608e61999-02-18 16:02:20 +000054
55- The ntpath module (and hence, os.path on Windows) now parses out UNC
56paths (e.g. \\host\mountpoint\dir\file) as "drive letters", so that
57splitdrive() will \\host\mountpoint as the drive and \dir\file as the
58path. ** EXPERIMENTAL **
59
60- Added a hack to the exit code so that if (1) the exit status is
61nonzero and (2) we think we have our own DOS box (i.e. we're not
62started from a command line shell), we print a message and wait for
63the user to hit a key before the DOS box is closed.
64
65- Updated the installer to WISE 5.0g. Added a dialog warning about
66the imminent Tcl installation. Added a dialog to specify the program
67group name in the start menu. Upgraded the Tcl installer to Tcl
688.0.4.
69
70Changes to intrinsics
71---------------------
72
73- The repr() or str() of a module object now shows the __file__
74attribute (i.e., the file which it was loaded), or the string
75"(built-in)" if there is no __file__ attribute.
76
77- The range() function now avoids overflow during its calculations (if
78at all possible).
79
80- New info string sys.hexversion, which is an integer encoding the
81version in hexadecimal. In other words, hex(sys.hexversion) ==
820x010502b2 for Python 1.5.2b2.
83
84New or improved ports
85---------------------
86
87- Support for Nextstep descendants (future Mac systems).
88
89- Improved BeOS support.
90
91- Support dynamic loading of shared libraries on NetBSD platforms that
92use ELF (i.e., MIPS and Alpha systems).
93
94Configuration/build changes
95---------------------------
96
97- The Lib/test directory is no longer included in the default module
98search path (sys.path) -- "test" has been a package ever since 1.5.
99
100- Now using autoconf 2.13.
101
102New library modules
103-------------------
104
105- New library modules asyncore and asynchat: these form Sam Rushing's
106famous asynchronous socket library. Sam has gracefully allowed me to
107incorporate these in the standard Python library.
108
109- New module statvfs contains indexing constants for [f]statvfs()
110return tuple.
111
112Changes to the library
113----------------------
114
115- The wave module (platform-independent support for Windows sound
116files) has been fixed to actually make it work.
117
118- The sunau module (platform-independent support for Sun/NeXT sound
119files) has been fixed to work across platforms. Also, a weird
120encoding bug in the header of the audio test data file has been
121corrected.
122
123- Fix a bug in the urllib module that occasionally tripped up
124webchecker and other ftp retrieves.
125
126- ConfigParser's get() method now accepts an optional keyword argument
127(vars) that is substituted on top of the defaults that were setup in
128__init__. You can now also have recusive references in your
129configuration file.
130
131- Some improvements to the Queue module, including a put_nowait()
132module and an optional "block" second argument, to get() and put(),
133defaulting to 1.
134
135- The updated xmllib module is once again compatible with the version
136present in Python 1.5.1 (this was accidentally broken in 1.5.2b1).
137
138- The bdb module (base class for the debugger) now supports
139canonicalizing pathnames used in breakpoints. The derived class must
140override the new canonical() method for this to work. Also changed
141clear_break() to the backwards compatible old signature, and added
142clear_bpbynumber() for the new functionality.
143
144- In sgmllib (and hence htmllib), recognize attributes even if they
145don't have space in front of them. I.e. '<a
146name="foo"href="bar.html">' will now have two attributes recognized.
147
148- In the debugger (pdb), change clear syntax to support three
149alternatives: clear; clear file:line; clear bpno bpno ...
150
151- The os.path module now pretends to be a submodule within the os
152"package", so you can do things like "from os.path import exists".
153
154- The standard exceptions now have doc strings.
155
156- In the smtplib module, exceptions are now classes. Also avoid
157inserting a non-standard space after "TO" in rcpt() command.
158
159- The rfc822 module's getaddrlist() method now uses all occurrences of
160the specified header instead of just the first. Some other bugfixes
161too (to handle more weird addresses found in a very large test set,
162and to avoid crashes on certain invalid dates), and a small test
163module has been added.
164
165- Fixed bug in urlparse in the common-case code for HTTP URLs; it
166would lose the query, fragment, and/or parameter information.
167
168- The sndhdr module no longer supports whatraw() -- it depended on a
169rare extenral program.
170
171- The UserList module/class now supports the extend() method, like
172real list objects.
173
174- The uu module now deals better with trailing garbage generated by
175some broke uuencoders.
176
177- The telnet module now has an my_interact() method which uses threads
178instead of select. The interact() method uses this by default on
179Windows (where the single-threaded version doesn't work).
180
181- Add a class to mailbox.py for dealing with qmail directory
182mailboxes. The test code was extended to notice these being used as
183well.
184
185Changes to extension modules
186----------------------------
187
188- Support for the [f]statvfs() system call, where it exists.
189
190- Fixed some bugs in cPickle where bad input could cause it to dump
191core.
192
193- Fixed cStringIO to make the writelines() function actually work.
194
195- Added strop.expandtabs() so string.expandtabs() is now much faster.
196
197- Added fsync() and fdatasync(), if they appear to exist.
198
199- Support for "long files" (64-bit seek pointers).
200
201- Fixed a bug in the zlib module's flush() function.
202
203- Added access() system call. It returns 1 if access granted, 0 if
204not.
205
206- The curses module implements an optional nlines argument to
207w.scroll(). (It then calls wscrl(win, nlines) instead of scoll(win).)
208
209Changes to tools
210----------------
211
212- Some changes to IDLE; see Tools/idle/NEWS.txt.
213
214- Latest version of Misc/python-mode.el included.
215
216Changes to Tkinter
217------------------
218
219- Avoid tracebacks when an image is deleted after its root has been
220destroyed.
221
222Changes to the Python/C API
223---------------------------
224
225- When parentheses are used in a PyArg_Parse[Tuple]() call, any
226sequence is now accepted, instead of requiring a tuple. This is in
227line with the general trend towards accepting arbitrary sequences.
228
229- Added PyModule_GetFilename().
230
231- In PyNumber_Power(), remove unneeded and even harmful test for float
232to the negative power (which is already and better done in
233floatobject.c).
234
235- New version identification symbols; read patchlevel.h for info. The
236version numbers are now exported by Python.h.
237
238- Rolled back the API version change -- it's back to 1007!
239
240- The frozenmain.c function calls PyInitFrozenExtensions().
241
242- Added 'N' format character to Py_BuildValue -- like 'O' but doesn't
243INCREF.
244
245
246======================================================================
247
248
Guido van Rossume96bd3f1998-12-21 21:45:04 +0000249From 1.5.2a2 to 1.5.2b1
250=======================
251
252Changes to intrinsics
253---------------------
254
255- New extension NotImplementedError, derived from RuntimeError. Not
256used, but recommended use is for "abstract" methods to raise this.
257
258- The parser will now spit out a warning or error when -t or -tt is
259used for parser input coming from a string, too.
260
261- The code generator now inserts extra SET_LINENO opcodes when
262compiling multi-line argument lists.
263
264- When comparing bound methods, use identity test on the objects, not
265equality test.
266
267New or improved ports
268---------------------
269
270- Chris Herborth has redone his BeOS port; it now works on PowerPC
271(R3/R4) and x86 (R4 only). Threads work too in this port.
272
273Renaming
274--------
275
276- Thanks to Chris Herborth, the thread primitives now have proper Py*
277names in the source code (they already had those for the linker,
278through some smart macros; but the source still had the old, un-Py
279names).
280
281Configuration/build changes
282---------------------------
283
284- Improved support for FreeBSD/3.
285
286- Check for pthread_detach instead of pthread_create in libc.
287
288- The makesetup script now searches EXECINCLUDEPY before INCLUDEPY.
289
290- Misc/Makefile.pre.in now also looks at Setup.thread and Setup.local.
291Otherwise modules such as thread didn't get incorporated in extensions.
292
293New library modules
294-------------------
295
Guido van Rossumde8b0261998-12-22 16:41:09 +0000296- shlex.py by Eric Raymond provides a lexical analyzer class for
297simple shell-like syntaxes.
298
299- netrc.py by Eric Raymond provides a parser for .netrc files. (The
300undocumented Netrc class in ftplib.py is now obsolete.)
301
Guido van Rossume96bd3f1998-12-21 21:45:04 +0000302- codeop.py is a new module that contains the compile_command()
303function that was previously in code.py. This is so that JPython can
304provide its own version of this function, while still sharing the
305higher-level classes in code.py.
306
307- turtle.py is a new module for simple turtle graphics. I'm still
308working on it; let me know if you use this to teach Python to children
309or other novices without prior programming experience.
310
311Obsoleted library modules
312-------------------------
313
314- poly.py and zmod.py have been moved to Lib/lib-old to emphasize
315their status of obsoleteness. They don't do a particularly good job
316and don't seem particularly relevant to the Python core.
317
318New tools
319---------
320
321- I've added IDLE: my Integrated DeveLopment Environment for Python.
322Requires Tcl/Tk (and Tkinter). Works on Windows and Unix (and should
323work on Macintosh, but I haven't been able to test it there; it does
324depend on new features in 1.5.2 and perhaps even new features in
3251.5.2b1, especially the new code module). This is very much a work in
326progress. I'd like to hear how people like it compared to PTUI (or
327any other IDE they are familiar with).
328
329- New tools by Barry Warsaw:
330
331 = audiopy: controls the Solaris Audio device
332 = pynche: The PYthonically Natural Color and Hue Editor
333 = world: Print mappings between country names and DNS country codes
334
335New demos
336---------
337
338- Demo/scripts/beer.py prints the lyrics to an arithmetic drinking
339song.
340
341- Demo/tkinter/guido/optionmenu.py shows how to do an option menu in
342Tkinter. (By Fredrik Lundh -- not by me!)
343
344Changes to the library
345----------------------
346
347- compileall.py now avoids recompiling .py files that haven't changed;
348it adds a -f option to force recompilation.
349
350- New version of xmllib.py by Sjoerd Mullender (0.2 with latest
351patches).
352
353- nntplib.py: statparse() no longer lowercases the message-id.
354
355- types.py: use type(__stdin__) for FileType.
356
357- urllib.py: fix translations for filenames with "funny" characters.
Guido van Rossumde8b0261998-12-22 16:41:09 +0000358Patch by Sjoerd Mullender. Note that if you subclass one of the
359URLopener classes, and you have copied code from the old urllib.py,
360your subclass may stop working. A long-term solution is to provide
361more methods so that you don't have to copy code.
Guido van Rossume96bd3f1998-12-21 21:45:04 +0000362
363- cgi.py: In read_multi, allow a subclass to override the class we
364instantiate when we create a recursive instance, by setting the class
365variable 'FieldStorageClass' to the desired class. By default, this
366is set to None, in which case we use self.__class__ (as before).
367Also, a patch by Jim Fulton to pass additional arguments to recursive
368calls to the FieldStorage constructor from its read_multi method.
369
370- UserList.py: In __getslice__, use self.__class__ instead of
371UserList.
372
373- In SimpleHTTPServer.py, the server specified in test() should be
374BaseHTTPServer.HTTPServer, in case the request handler should want to
375reference the two attributes added by BaseHTTPServer.server_bind. (By
376Jeff Rush, for Bobo). Also open the file in binary mode, so serving
377images from a Windows box might actually work.
378
379- In CGIHTTPServer.py, the list of acceptable formats is -split-
380on spaces but -joined- on commas, resulting in double commas
381in the joined text. (By Jeff Rush.)
382
383- SocketServer.py, patch by Jeff Bauer: a minor change to declare two
384new threaded versions of Unix Server classes, using the ThreadingMixIn
385class: ThreadingUnixStreamServer, ThreadingUnixDatagramServer.
386
387- bdb.py: fix bomb on deleting a temporary breakpoint: there's no
388method do_delete(); do_clear() was meant. By Greg Ward.
389
390- getopt.py: accept a non-list sequence for the long options (request
391by Jack Jansen). Because it might be a common mistake to pass a
392single string, this situation is treated separately. Also added
393docstrings (copied from the library manual) and removed the (now
394redundant) module comments.
395
396- tempfile.py: improvements to avoid security leaks.
397
398- code.py: moved compile_command() to new module codeop.py.
399
400- pickle.py: support pickle format 1.3 (binary float added). By Jim
401Fulton. Also get rid of the undocumented obsolete Pickler dump_special
402method.
403
404- uu.py: Move 'import sys' to top of module, as noted by Tim Peters.
405
406- imaplib.py: fix problem with some versions of IMAP4 servers that
407choose to mix the case in their CAPABILITIES response.
408
409- cmp.py: use (f1, f2) as cache key instead of f1 + ' ' + f2. Noted
410by Fredrik Lundh.
411
412Changes to extension modules
413----------------------------
414
415- More doc strings for several modules were contributed by Chris
416Petrilli: math, cmath, fcntl.
417
418- Fixed a bug in zlibmodule.c that could cause core dumps on
419decompression of rarely occurring input.
420
421- cPickle.c: new version from Jim Fulton, with Open Source copyright
422notice. Also, initialize self->safe_constructors early on to prevent
423crash in early dealloc.
424
425- cStringIO.c: new version from Jim Fulton, with Open Source copyright
426notice. Also fixed a core dump in cStringIO.c when doing seeks.
427
428- mpzmodule.c: fix signed character usage in mpz.mpz(stringobjecty).
429
430- readline.c: Bernard Herzog pointed out that rl_parse_and_bind
431modifies its argument string (bad function!), so we make a temporary
432copy.
433
434- sunaudiodev.c: Barry Warsaw added more smarts to get the device and
435control pseudo-device, per audio(7I).
436
437Changes to tools
438----------------
439
440- New, improved version of Barry Warsaw's Misc/python-mode.el (editing
441support for Emacs).
442
443- tabnanny.py: added a -q ('quiet') option to tabnanny, which causes
444only the names of offending files to be printed.
445
446- freeze: when printing missing modules, also print the module they
447were imported from.
448
449- untabify.py: patch by Detlef Lannert to implement -t option
450(set tab size).
451
452Changes to Tkinter
453------------------
454
455- grid_bbox(): support new Tk API: grid bbox ?column row? ?column2
456row2?
457
458- _tkinter.c: RajGopal Srinivasan noted that the latest code (1.5.2a2)
459doesn't work when running in a non-threaded environment. He added
460some #ifdefs that fix this.
461
462Changes to the Python/C API
463---------------------------
464
465- Bumped API version number to 1008 -- enough things have changed!
466
467- There's a new macro, PyThreadState_GET(), which does the same work
468as PyThreadState_Get() without the overhead of a function call (it
469also avoids the error check). The two top calling locations of
470PyThreadState_Get() have been changed to use this macro.
471
472- All symbols intended for export from a DLL or shared library are now
473marked as such (with the DL_IMPORT() macro) in the header file that
474declares them. This was needed for the BeOS port, and should also
475make some other ports easier. The PC port no longer needs the file
476with exported symbols (PC/python_nt.def). There's also a DL_EXPORT
477macro which is only used for init methods in extension modules, and
478for Py_Main().
479
480Invisible changes to internals
481------------------------------
482
483- Fixed a bug in new_buffersize() in fileobject.c which could
484return a buffer size that was way too large.
485
486- Use PySys_WriteStderr instead of fprintf in most places.
487
488- dictobject.c: remove dead code discovered by Vladimir Marangozov.
489
490- tupleobject.c: make tuples less hungry -- an extra item was
491allocated but never used. Tip by Vladimir Marangozov.
492
493- mymath.h: Metrowerks PRO4 finally fixes the hypot snafu. (Jack
494Jansen)
495
496- import.c: Jim Fulton fixes a reference count bug in
497PyEval_GetGlobals.
498
499- glmodule.c: check in the changed version after running the stubber
500again -- this solves the conflict with curses over the 'clear' entry
501point much nicer. (Jack Jansen had checked in the changes to cstubs
502eons ago, but I never regenrated glmodule.c :-( )
503
504- frameobject.c: fix reference count bug in PyFrame_New. Vladimir
505Marangozov.
506
507- stropmodule.c: add a missing DECREF in an error exit. Submitted by
508Jonathan Giddy.
509
510
511======================================================================
512
513
Guido van Rossume8c10f91998-10-17 19:43:13 +0000514From 1.5.2a1 to 1.5.2a2
515=======================
516
517General
518-------
519
520- It is now a syntax error to have a function argument without a
521default following one with a default.
522
523- __file__ is now set to the .py file if it was parsed (it used to
524always be the .pyc/.pyo file).
525
526- Don't exit with a fatal error during initialization when there's a
527problem with the exceptions.py module.
528
529- New environment variable PYTHONOPTIMIZE can be used to set -O.
530
531- New version of python-mode.el for Emacs.
532
533Miscellaneous fixed bugs
534------------------------
535
536- No longer print the (confusing) error message about stack underflow
537while compiling.
538
539- Some threading and locking bugs fixed.
540
541- When errno is zero, report "Error", not "Success".
542
543Documentation
544-------------
545
546- Documentation will be released separately.
547
548- Doc strings added to array and md5 modules by Chris Petrilli.
549
550Ports and build procedure
551-------------------------
552
553- Stop installing when a move or copy fails.
554
555- New version of the OS/2 port code by Jeff Rush.
556
557- The makesetup script handles absolute filenames better.
558
559- The 'new' module is now enabled by default in the Setup file.
560
561- I *think* I've solved the problem with the Linux build blowing up
562sometimes due to a conflict between sigcheck/intrcheck and
563signalmodule.
564
565Built-in functions
566------------------
567
568- The second argument to apply() can now be any sequence, not just a
569tuple.
570
571Built-in types
572--------------
573
574- Lists have a new method: L1.extend(L2) is equivalent to the common
575idiom L1[len(L1):] = L2.
576
577- Better error messages when a sequence is indexed with a non-integer.
578
579- Bettter error message when calling a non-callable object (include
580the type in the message).
581
582Python services
583---------------
584
585- New version of cPickle.c fixes some bugs.
586
587- pickle.py: improved instantiation error handling.
588
589- code.py: reworked quite a bit. New base class
590InteractiveInterpreter and derived class InteractiveConsole. Fixed
591several problems in compile_command().
592
593- py_compile.py: print error message and continue on syntax errors.
594Also fixed an old bug with the fstat code (it was never used).
595
596- pyclbr.py: support submodules of packages.
597
598String Services
599---------------
600
601- StringIO.py: raise the right exception (ValueError) for attempted
602I/O on closed StringIO objects.
603
604- re.py: fixed a bug in subn(), which caused .groups() to fail inside
605the replacement function called by sub().
606
607- The struct module has a new format 'P': void * in native mode.
608
609Generic OS Services
610-------------------
611
612- Module time: Y2K robustness. 2-digit year acceptance depends on
613value of time.accept2dyear, initialized from env var PYTHONY2K,
614default 0. Years 00-68 mean 2000-2068, while 69-99 mean 1969-1999
615(POSIX or X/Open recommendation).
616
617- os.path: normpath(".//x") should return "x", not "/x".
618
619- getpass.py: fall back on default_getpass() when sys.stdin.fileno()
620doesn't work.
621
622- tempfile.py: regenerate the template after a fork() call.
623
624Optional OS Services
625--------------------
626
627- In the signal module, disable restarting interrupted system calls
628when we have siginterrupt().
629
630Debugger
631--------
632
633- No longer set __args__; this feature is no longer supported and can
634affect the debugged code.
635
636- cmd.py, pdb.py and bdb.py have been overhauled by Richard Wolff, who
637added aliases and some other useful new features, e.g. much better
638breakpoint support: temporary breakpoint, disabled breakpoints,
639breakpoints with ignore counts, and conditions; breakpoints can be set
640on a file before it is loaded.
641
642Profiler
643--------
644
645- Changes so that JPython can use it. Also fix the calibration code
646so it actually works again
647.
648Internet Protocols and Support
649------------------------------
650
651- imaplib.py: new version from Piers Lauder.
652
653- smtplib.py: change sendmail() method to accept a single string or a
654list or strings as the destination (commom newbie mistake).
655
656- poplib.py: LIST with a msg argument fixed.
657
658- urlparse.py: some optimizations for common case (http).
659
660- urllib.py: support content-length in info() for ftp protocol;
661support for a progress meter through a third argument to
662urlretrieve(); commented out gopher test (the test site is dead).
663
664Internet Data handling
665----------------------
666
667- sgmllib.py: support tags with - or . in their name.
668
669- mimetypes.py: guess_type() understands 'data' URLs.
670
671Restricted Execution
672--------------------
673
674- The classes rexec.RModuleLoader and rexec.RModuleImporter no
675longer exist.
676
677Tkinter
678-------
679
680- When reporting an exception, store its info in sys.last_*. Also,
681write all of it to stderr.
682
683- Added NS, EW, and NSEW constants, for grid's sticky option.
684
685- Fixed last-minute bug in 1.5.2a1 release: need to include "mytime.h".
686
687- Make bind variants without a sequence return a tuple of sequences
688(formerly it returned a string, which wasn't very convenient).
689
690- Add image commands to the Text widget (these are new in Tk 8.0).
691
692- Added new listbox and canvas methods: {xview,yview}_{scroll,moveto}.)
693
694- Improved the thread code (but you still can't call update() from
695another thread on Windows).
696
697- Fixed unnecessary references to _default_root in the new dialog
698modules.
699
700- Miscellaneous problems fixed.
701
702
703Windows General
704---------------
705
706- Call LoadLibraryEx(..., ..., LOAD_WITH_ALTERED_SEARCH_PATH) to
707search for dependent dlls in the directory containing the .pyd.
708
709- In debugging mode, call DebugBreak() in Py_FatalError().
710
711Windows Installer
712-----------------
713
714- Install zlib.dll in the DLLs directory instead of in the win32
715system directory, to avoid conflicts with other applications that have
716their own zlib.dll.
717
718Test Suite
719----------
720
721- test_long.py: new test for long integers, by Tim Peters.
722
723- regrtest.py: improved so it can be used for other test suites as
724well.
725
726- test_strftime.py: use re to compare test results, to support legal
727variants (e.g. on Linux).
728
729Tools and Demos
730---------------
731
732- Four new scripts in Tools/scripts: crlf.py and lfcr.py (to
733remove/add Windows style '\r\n' line endings), untabify.py (to remove
734tabs), and rgrep.yp (reverse grep).
735
736- Improvements to Tools/freeze/. Each Python module is now written to
737its own C file. This prevents some compilers or assemblers from
738blowing up on large frozen programs, and saves recompilation time if
739only a few modules are changed. Other changes too, e.g. new command
740line options -x and -i.
741
742- Much improved (and smaller!) version of Tools/scripts/mailerdaemon.py.
743
744Python/C API
745------------
746
747- New mechanism to support extensions of the type object while
748remaining backward compatible with extensions compiled for previous
749versions of Python 1.5. A flags field indicates presence of certain
750fields.
751
752- Addition to the buffer API to differentiate access to bytes and
7538-bit characters (in anticipation of Unicode characters).
754
755- New argument parsing format t# ("text") to indicate 8-bit
756characters; s# simply means 8-bit bytes, for backwards compatibility.
757
758- New object type, bufferobject.c is an example and can be used to
759create buffers from memory.
760
761- Some support for 64-bit longs, including some MS platforms.
762
763- Many calls to fprintf(stderr, ...) have been replaced with calls to
764PySys_WriteStderr(...).
765
766- The calling context for PyOS_Readline() has changed: it must now be
767called with the interpreter lock held! It releases the lock around
768the call to the function pointed to by PyOS_ReadlineFunctionPointer
769(default PyOS_StdioReadline()).
770
771- New APIs PyLong_FromVoidPtr() and PyLong_AsVoidPtr().
772
773- Renamed header file "thread.h" to "pythread.h".
774
775- The code string of code objects may now be anything that supports the
776buffer API.
777
778
779======================================================================
780
781
Guido van Rossumf5475c91998-08-06 17:55:46 +0000782From 1.5.1 to 1.5.2a1
783=====================
784
Guido van Rossumab9d6f01998-08-10 22:01:13 +0000785General
786-------
787
788- When searching for the library, a landmark that is a compiled module
789(string.pyc or string.pyo) is also accepted.
790
791- When following symbolic links to the python executable, use a loop
792so that a symlink to a symlink can work.
793
794- Added a hack so that when you type 'quit' or 'exit' at the
795interpreter, you get a friendly explanation of how to press Ctrl-D (or
796Ctrl-Z) to exit.
797
798- New and improved Misc/python-mode.el (Python mode for Emacs).
799
Guido van Rossum27b3bc31998-08-11 18:42:26 +0000800- Revert a new feature in Unix dynamic loading: for one or two
801revisions, modules were loaded using the RTLD_GLOBAL flag. It turned
802out to be a bad idea.
803
Guido van Rossumab9d6f01998-08-10 22:01:13 +0000804Miscellaneous fixed bugs
805------------------------
Guido van Rossumf5475c91998-08-06 17:55:46 +0000806
807- All patches on the patch page have been integrated. (But much more
808has been done!)
809
810- Several memory leaks plugged (e.g. the one for classes with a
811__getattr__ method).
812
Guido van Rossumf5475c91998-08-06 17:55:46 +0000813- Removed the only use of calloc(). This triggered an obscure bug on
814multiprocessor Sparc Solaris 2.6.
815
Guido van Rossum27b3bc31998-08-11 18:42:26 +0000816- Fix a peculiar bug that would allow "import sys.time" to succeed
817(believing the built-in time module to be a part of the sys package).
818
819- Fix a bug in the overflow checking when converting a Python long to
820a C long (failed to convert -2147483648L, and some other cases).
821
Guido van Rossumf5475c91998-08-06 17:55:46 +0000822Documentation
823-------------
824
Guido van Rossum27b3bc31998-08-11 18:42:26 +0000825- Doc strings have been added to many extension modules: __builtin__,
826errno, select, signal, socket, sys, thread, time. Also to methods of
827list objects (try [].append.__doc__). A doc string on a type will now
828automatically be propagated to an instance if the instance has methods
829that are accessed in the usual way.
830
Guido van Rossumf5475c91998-08-06 17:55:46 +0000831- The documentation has been expanded and the formatting improved.
832(Remember that the documentation is now unbundled and has its own
833release cycle though; see http://www.python.org/doc/.)
834
Guido van Rossumab9d6f01998-08-10 22:01:13 +0000835- Added Misc/Porting -- a mini-FAQ on porting to a new platform.
836
837Ports and build procedure
838-------------------------
Guido van Rossumf5475c91998-08-06 17:55:46 +0000839
840- The BeOS port is now integrated. Courtesy Chris Herborth.
841
842- Symbol files for FreeBSD 2.x and 3.x have been contributed
843(Lib/plat-freebsd[23]/*).
844
Guido van Rossumab9d6f01998-08-10 22:01:13 +0000845- Support HPUX 10.20 DCE threads.
Guido van Rossumf5475c91998-08-06 17:55:46 +0000846
Guido van Rossumab9d6f01998-08-10 22:01:13 +0000847- Finally fixed the configure script so that (on SGI) if -OPT:Olimit=0
848works, it won't also use -Olimit 1500 (which gives a warning for every
849file). Also support the SGI_ABI environment variable better.
Guido van Rossumf5475c91998-08-06 17:55:46 +0000850
Guido van Rossumab9d6f01998-08-10 22:01:13 +0000851- The makesetup script now understands absolute pathnames ending in .o
852in the module -- it assumes it's a file for which we have no source.
Guido van Rossumf5475c91998-08-06 17:55:46 +0000853
Guido van Rossum27b3bc31998-08-11 18:42:26 +0000854- Other miscellaneous improvements to the configure script and
855Makefiles.
856
Guido van Rossumab9d6f01998-08-10 22:01:13 +0000857- The test suite now uses a different sound sample.
Guido van Rossumf5475c91998-08-06 17:55:46 +0000858
Guido van Rossum27b3bc31998-08-11 18:42:26 +0000859Built-in functions
860------------------
Guido van Rossumab9d6f01998-08-10 22:01:13 +0000861
862- Better checks for invalid input to int(), long(), string.atoi(),
863string.atol(). (Formerly, a sign without digits would be accepted as
864a legal ways to spell zero.)
865
Guido van Rossumab9d6f01998-08-10 22:01:13 +0000866- Changes to map() and filter() to use the length of a sequence only
867as a hint -- if an IndexError happens earlier, take that. (Formerly,
868this was considered an error.)
869
870- Experimental feature in getattr(): a third argument can specify a
871default (instead of raising AttributeError).
872
873- Implement round() slightly different, so that for negative ndigits
874no additional errors happen in the last step.
875
Guido van Rossum27b3bc31998-08-11 18:42:26 +0000876- The open() function now adds the filename to the exception when it
877fails.
Guido van Rossumab9d6f01998-08-10 22:01:13 +0000878
Guido van Rossum27b3bc31998-08-11 18:42:26 +0000879Built-in exceptions
880-------------------
881
882- New standard exceptions EnvironmentError and PosixError.
883EnvironmentError is the base class for IOError and PosixError;
884PosixError is the same as os.error. All this so that either exception
885class can be instantiated with a third argument indicating a filename.
886The built-in function open() and most os/posix functions that take a
887filename argument now use this.
888
889Built-in types
890--------------
891
892- List objects now have an experimental pop() method; l.pop() returns
893and removes the last item; l.pop(i) returns and removes the item at
894i. Also, the sort() method is faster again. Sorting is now also
895safer: it is impossible for the sorting function to modify the list
896while the sort is going on (which could cause core dumps).
897
898- Changes to comparisons: numbers are now smaller than any other type.
899This is done to prevent the circularity where [] < 0L < 1 < [] is
900true. As a side effect, cmp(None, 0) is now positive instead of
Guido van Rossumab9d6f01998-08-10 22:01:13 +0000901negative. This *shouldn't* affect any working code, but I've found
902that the change caused several "sleeping" bugs to become active, so
903beware!
904
905- Instance methods may now have other callable objects than just
906Python functions as their im_func. Use new.instancemethod() or write
907your own C code to create them; new.instancemethod() may be called
908with None for the instance to create an unbound method.
909
910- Assignment to __name__, __dict__ or __bases__ of a class object is
911now allowed (with stringent type checks); also allow assignment to
912__getattr__ etc. The cached values for __getattr__ etc. are
913recomputed after such assignments (but not for derived classes :-( ).
914
Guido van Rossumab9d6f01998-08-10 22:01:13 +0000915- Allow assignment to some attributes of function objects: func_code,
916func_defaults and func_doc / __doc__. (With type checks except for
917__doc__ / func_doc .)
918
Guido van Rossum27b3bc31998-08-11 18:42:26 +0000919Python services
Guido van Rossumf5475c91998-08-06 17:55:46 +0000920---------------
921
922- New tests (in Lib/test): reperf.py (regular expression benchmark),
923sortperf.py (list sorting benchmark), test_MimeWriter.py (test case
924for the MimeWriter module).
925
Guido van Rossum27b3bc31998-08-11 18:42:26 +0000926- Generalized test/regrtest.py so that it is useful for testing other
927packages.
Guido van Rossumf5475c91998-08-06 17:55:46 +0000928
Guido van Rossum27b3bc31998-08-11 18:42:26 +0000929- The ihooks.py module now understands package imports.
Guido van Rossumf5475c91998-08-06 17:55:46 +0000930
Guido van Rossum27b3bc31998-08-11 18:42:26 +0000931- In code.py, add a class that subsumes Fredrik Lundh's
932PythonInterpreter class. The interact() function now uses this.
Guido van Rossumf5475c91998-08-06 17:55:46 +0000933
Guido van Rossum27b3bc31998-08-11 18:42:26 +0000934- In rlcompleter.py, in completer(), return None instead of raising an
935IndexError when there are no more completions left.
936
937- Fixed the marshal module to test for certain common kinds of invalid
938input. (It's still not foolproof!)
939
940- In the operator module, add an alias (now the preferred name)
941"contains" for "sequenceincludes".
942
943String Services
944---------------
945
946- In the string and strop modules, in the replace() function, treat an
947empty pattern as an error (since it's not clear what was meant!).
948
949- Some speedups to re.py, especially the string substitution and split
950functions. Also added new function/method findall(), to find all
951occurrences of a given substring.
952
953- In cStringIO, add better argument type checking and support the
954readonly 'closed' attribute (like regular files).
955
956- In the struct module, unsigned 1-2 byte sized formats no longer
957result in long integer values.
958
959Miscellaneous services
960----------------------
Guido van Rossumf5475c91998-08-06 17:55:46 +0000961
962- In whrandom.py, added new method and function randrange(), same as
963choice(range(start, stop, step)) but faster. This addresses the
964problem that randint() was accidentally defined as taking an inclusive
965range. Also, randint(a, b) is now redefined as randrange(a, b+1),
966adding extra range and type checking to its arguments!
967
Guido van Rossumab9d6f01998-08-10 22:01:13 +0000968- Add some semi-thread-safety to random.gauss() (it used to be able to
969crash when invoked from separate threads; now the worst it can do is
970give a duplicate result occasionally).
971
Guido van Rossum27b3bc31998-08-11 18:42:26 +0000972- Some restructuring and generalization done to cmd.py.
973
974- Major upgrade to ConfigParser.py; converted to using 're', added new
975exceptions, support underscore in section header and option name. No
976longer add 'name' option to every section; instead, add '__name__'.
977
Guido van Rossumf5475c91998-08-06 17:55:46 +0000978- In getpass.py, don't use raw_input() to ask for the password -- we
Guido van Rossumab9d6f01998-08-10 22:01:13 +0000979don't want it to show up in the readline history! Also don't catch
980interrupts (the try-finally already does all necessary cleanup).
Guido van Rossumf5475c91998-08-06 17:55:46 +0000981
Guido van Rossum27b3bc31998-08-11 18:42:26 +0000982Generic OS Services
983-------------------
984
985- New functions in os.py: makedirs(), removedirs(), renames(). New
986variable: linesep (the line separator as found in binary files,
987i.e. '\n' on Unix, '\r\n' on DOS/Windows, '\r' on Mac. Do *not* use
988this with files opened in (default) text mode; the line separator used
989will always be '\n'!
990
991- Changes to the 'os.path' submodule of os.py: added getsize(),
992getmtime(), getatime() -- these fetch the most popular items from the
993stat return tuple.
994
995- In the time module, add strptime(), if it exists. (This parses a
996time according to a format -- the inverse of strftime().) Also,
997remove the call to mktime() from strftime() -- it messed up the
998formatting of some non-local times.
999
1000- In the socket module, added a new function gethostbyname_ex().
1001Also, don't use #ifdef to test for some symbols that are enums on some
1002platforms (and should exist everywhere).
1003
1004Optional OS Services
1005--------------------
1006
1007- Some fixes to gzip.py. In particular, the readlines() method now
1008returns the lines *with* trailing newline characters, like readlines()
1009of regular file objects. Also, it didn't work together with cPickle;
1010fixed that.
1011
1012- In whichdb.py, support byte-swapped dbhash (bsddb) files.
1013
1014- In anydbm.py, look at the type of an existing database to determine
1015which module to use to open it. (The anydbm.error exception is now a
1016tuple.)
1017
1018Unix Services
1019-------------
1020
1021- In the termios module, in tcsetattr(), initialize the structure vy
1022calling tcgetattr().
1023
1024- Added some of the "wait status inspection" macros as functions to
1025the posix module (and thus to the os module): WEXITSTATUS(),
1026WIFEXITED(), WIFSIGNALED(), WIFSTOPPED(), WSTOPSIG(), WTERMSIG().
1027
1028- In the syslog module, make the default facility more intuitive
1029(matching the docs).
1030
1031Debugger
1032--------
1033
1034- In pdb.py, support for setting breaks on files/modules that haven't
1035been loaded yet.
1036
1037Internet Protocols and Support
1038------------------------------
Guido van Rossumf5475c91998-08-06 17:55:46 +00001039
Guido van Rossumab9d6f01998-08-10 22:01:13 +00001040- Changes in urllib.py; sped up unquote() and quote(). Fixed an
1041obscure bug in quote_plus(). Added urlencode(dict) -- convenience
1042function for sending a POST request with urlopen(). Use the getpass
1043module to ask for a password. Rewrote the (test) main program so that
1044when used as a script, it can retrieve one or more URLs to stdout.
1045Use -t to run the self-test. Made the proxy code work again.
Guido van Rossumf5475c91998-08-06 17:55:46 +00001046
Guido van Rossumab9d6f01998-08-10 22:01:13 +00001047- In cgi.py, treat "HEAD" the same as "GET", so that CGI scripts don't
1048fail when someone asks for their HEAD. Also, for POST, set the
1049default content-type to application/x-www-form-urlencoded. Also, in
1050FieldStorage.__init__(), when method='GET', always get the query
1051string from environ['QUERY_STRING'] or sys.argv[1] -- ignore an
1052explicitly passed in fp.
Guido van Rossumf5475c91998-08-06 17:55:46 +00001053
Guido van Rossum27b3bc31998-08-11 18:42:26 +00001054- The smtplib.py module now supports ESMTP and has improved standard
1055compliance, for picky servers.
1056
Guido van Rossumf5475c91998-08-06 17:55:46 +00001057- Improved imaplib.py.
1058
Guido van Rossum27b3bc31998-08-11 18:42:26 +00001059- Fixed UDP support in SocketServer.py (it never worked).
Guido van Rossumf5475c91998-08-06 17:55:46 +00001060
Guido van Rossumab9d6f01998-08-10 22:01:13 +00001061- Fixed a small bug in CGIHTTPServer.py.
Guido van Rossumf5475c91998-08-06 17:55:46 +00001062
Guido van Rossum27b3bc31998-08-11 18:42:26 +00001063Internet Data handling
1064----------------------
Guido van Rossumf5475c91998-08-06 17:55:46 +00001065
Guido van Rossum27b3bc31998-08-11 18:42:26 +00001066- In rfc822.py, add a new class AddressList. Also support a new
1067overridable method, isheader(). Also add a get() method similar to
1068dictionaries (and make getheader() an alias for it). Also, be smarter
1069about seekable (test whether fp.tell() works) and test for presence of
1070unread() method before trying seeks.
Guido van Rossumf5475c91998-08-06 17:55:46 +00001071
Guido van Rossum27b3bc31998-08-11 18:42:26 +00001072- In sgmllib.py, restore the call to report_unbalanced() that was lost
1073long ago. Also some other improvements: handle <? processing
1074instructions >, allow . and - in entity names, and allow \r\n as line
1075separator.
Guido van Rossumf5475c91998-08-06 17:55:46 +00001076
Guido van Rossum27b3bc31998-08-11 18:42:26 +00001077- Some restructuring and generalization done to multifile.py; support
1078a 'seekable' flag.
Guido van Rossumf5475c91998-08-06 17:55:46 +00001079
Guido van Rossum27b3bc31998-08-11 18:42:26 +00001080Restricted Execution
1081--------------------
Guido van Rossumf5475c91998-08-06 17:55:46 +00001082
Guido van Rossum27b3bc31998-08-11 18:42:26 +00001083- Improvements to rexec.py: package support; support a (minimal)
1084sys.exc_info(). Also made the (test) main program a bit fancier (you
1085can now use it to run arbitrary Python scripts in restricted mode).
Guido van Rossumab9d6f01998-08-10 22:01:13 +00001086
1087Tkinter
1088-------
1089
1090- On Unix, Tkinter can now safely be used from a multi-threaded
1091application. (Formerly, no threads would make progress while
1092Tkinter's mainloop() was active, because it didn't release the Python
1093interpreter lock.) Unfortunately, on Windows, threads other than the
1094main thread should not call update() or update_idletasks() because
1095this will deadlock the application.
1096
1097- An interactive interpreter that uses readline and Tkinter no longer
1098uses up all available CPU time.
1099
1100- Even if readline is not used, Tk windows created in an interactive
1101interpreter now get continuously updated. (This even works in Windows
1102as long as you don't hit a key.)
1103
1104- New demos in Demo/tkinter/guido/: brownian.py, redemo.py, switch.py.
1105
1106- No longer register Tcl_finalize() as a low-level exit handler. It
1107may call back into Python, and that's a bad idea.
1108
1109- Allow binding of Tcl commands (given as a string).
1110
1111- Some minor speedups; replace explicitly coded getint() with int() in
1112most places.
1113
1114- In FileDialog.py, remember the directory of the selected file, if
1115given.
1116
1117- Change the names of all methods in the Wm class: they are now
1118wm_title(), etc. The old names (title() etc.) are still defined as
1119aliases.
1120
1121- Add a new method of interpreter objects, interpaddr(). This returns
1122the address of the Tcl interpreter object, as an integer. Not very
1123useful for the Python programmer, but this can be called by another C
1124extension that needs to make calls into the Tcl/Tk C API and needs to
1125get the address of the Tcl interpreter object. A simple cast of the
1126return value to (Tcl_Interp *) will do the trick.
1127
Guido van Rossum27b3bc31998-08-11 18:42:26 +00001128Windows General
1129---------------
Guido van Rossumab9d6f01998-08-10 22:01:13 +00001130
1131- Don't insist on proper case for module source files if the filename
1132is all uppercase (e.g. FOO.PY now matches foo; but FOO.py still
1133doesn't). This should address problems with this feature on
1134oldfashioned filesystems (Novell servers?).
1135
Guido van Rossum27b3bc31998-08-11 18:42:26 +00001136Windows Library
1137---------------
1138
1139- os.environ is now all uppercase, but accesses are case insensitive,
1140and the putenv() calls made as a side effect of changing os.environ
1141are case preserving.
1142
1143- Removed samefile(), sameopenfile(), samestat() from os.path (aka
1144ntpath.py) -- these cannot be made to work reliably (at least I
1145wouldn't know how).
1146
Guido van Rossumab9d6f01998-08-10 22:01:13 +00001147- Fixed os.pipe() so that it returns file descriptors acceptable to
1148os.read() and os.write() (like it does on Unix), rather than Windows
1149file handles.
1150
Guido van Rossum27b3bc31998-08-11 18:42:26 +00001151- Added a table of WSA error codes to socket.py.
1152
1153- In the select module, put the (huge) file descriptor arrays on the
1154heap.
Guido van Rossumab9d6f01998-08-10 22:01:13 +00001155
1156- The getpass module now raises KeyboardInterrupt when it sees ^C.
1157
Guido van Rossumab9d6f01998-08-10 22:01:13 +00001158- In mailbox.py, fix tell/seek when using files opened in text mode.
1159
1160- In rfc822.py, fix tell/seek when using files opened in text mode.
1161
Guido van Rossum27b3bc31998-08-11 18:42:26 +00001162- In the msvcrt extension module, release the interpreter lock for
1163calls that may block: _locking(), _getch(), _getche(). Also fix a
1164bogus error return when open_osfhandle() doesn't have the right
1165argument list.
Guido van Rossumab9d6f01998-08-10 22:01:13 +00001166
Guido van Rossum27b3bc31998-08-11 18:42:26 +00001167Windows Installer
1168-----------------
1169
1170- The registry key used is now "1.5" instead of "1.5.x" -- so future
1171versions of 1.5 and Mark Hammond's win32all installer don't need to be
1172resynchronized.
1173
1174Windows Tools
1175-------------
1176
1177- Several improvements to freeze specifically for Windows.
1178
1179Windows Build Procedure
1180-----------------------
1181
1182- The VC++ project files and the WISE installer have been moved to the
1183PCbuild subdirectory, so they are distributed in the same subdirectory
1184where they must be used. This avoids confusion.
1185
1186- New project files for Windows 3.1 port by Jim Ahlstrom.
1187
1188- Got rid of the obsolete subdirectory PC/setup_nt/.
Guido van Rossumab9d6f01998-08-10 22:01:13 +00001189
1190- The projects now use distinct filenames for the .exe, .dll, .lib and
1191.pyd files built in debug mode (by appending "_d" to the base name,
1192before the extension). This makes it easier to switch between the two
1193and get the right versions. There's a pragma in config.h that directs
1194the linker to include the appropriate .lib file (so python15.lib no
1195longer needs to be explicit in your project).
1196
Guido van Rossumab9d6f01998-08-10 22:01:13 +00001197- The installer now installs more files (e.g. config.h). The idea is
1198that you shouldn't need the source distribution if you want build your
1199own extensions in C or C++.
1200
Guido van Rossumab9d6f01998-08-10 22:01:13 +00001201Tools and Demos
Guido van Rossumf5475c91998-08-06 17:55:46 +00001202---------------
1203
Guido van Rossumab9d6f01998-08-10 22:01:13 +00001204- New script nm2def.py by Marc-Andre Lemburg, to construct
1205PC/python_nt.def automatically (some hand editing still required).
Guido van Rossumf5475c91998-08-06 17:55:46 +00001206
1207- New tool ndiff.py: Tim Peters' text diffing tool.
1208
Guido van Rossumab9d6f01998-08-10 22:01:13 +00001209- Various and sundry improvements to the freeze script.
1210
Guido van Rossumf5475c91998-08-06 17:55:46 +00001211- The script texi2html.py (which was part of the Doc tree but is no
1212longer used there) has been moved to the Tools/scripts subdirectory.
1213
1214- Some generalizations in the webchecker code. There's now a
1215primnitive gui for websucker.py: wsgui.py. (In Tools/webchecker/.)
1216
Guido van Rossumab9d6f01998-08-10 22:01:13 +00001217- The ftpmirror.py script now handles symbolic links properly, and
1218also files with multiple spaces in their names.
Guido van Rossumf5475c91998-08-06 17:55:46 +00001219
Guido van Rossumab9d6f01998-08-10 22:01:13 +00001220- The 1.5.1 tabnanny.py suffers an assert error if fed a script whose
1221last line is both indented and lacks a newline. This is now fixed.
Guido van Rossumf5475c91998-08-06 17:55:46 +00001222
1223Python/C API
1224------------
1225
Guido van Rossumab9d6f01998-08-10 22:01:13 +00001226- Added missing prototypes for PyEval_CallFunction() and
1227PyEval_CallMethod().
1228
Guido van Rossum27b3bc31998-08-11 18:42:26 +00001229- New macro PyList_SET_ITEM().
Guido van Rossumf5475c91998-08-06 17:55:46 +00001230
1231- New macros to access object members for PyFunction, PyCFunction
1232objects.
1233
1234- New APIs PyImport_AppendInittab() an PyImport_ExtendInittab() to
1235dynamically add one or many entries to the table of built-in modules.
1236
1237- New macro Py_InitModule3(name, methods, doc) which calls
1238Py_InitModule4() with appropriate arguments. (The -4 variant requires
1239you to pass an obscure version number constant which is always the same.)
1240
Guido van Rossum27b3bc31998-08-11 18:42:26 +00001241- New APIs PySys_WriteStdout() and PySys_WriteStderr() to write to
1242sys.stdout or sys.stderr using a printf-like interface. (Used in
1243_tkinter.c, for example.)
Guido van Rossumab9d6f01998-08-10 22:01:13 +00001244
Guido van Rossum27b3bc31998-08-11 18:42:26 +00001245- New APIs for conversion between Python longs and C 'long long' if
1246your compiler supports it.
Guido van Rossumab9d6f01998-08-10 22:01:13 +00001247
1248- PySequence_In() is now called PySequence_Contains().
1249(PySequence_In() is still supported for b/w compatibility; it is
1250declared obsolete because its argument order is confusing.)
1251
1252- PyDict_GetItem() and PyDict_GetItemString() are changed so that they
1253*never* raise an exception -- (even if the hash() fails, simply clear
1254the error). This was necessary because there is lots of code out
1255there that already assumes this.
1256
Guido van Rossum27b3bc31998-08-11 18:42:26 +00001257- Changes to PySequence_Tuple() and PySequence_List() to use the
1258length of a sequence only as a hint -- if an IndexError happens
1259earlier, take that. (Formerly, this was considered an error.)
Guido van Rossumab9d6f01998-08-10 22:01:13 +00001260
Guido van Rossum27b3bc31998-08-11 18:42:26 +00001261- Reformatted abstract.c to give it a more familiar "look" and fixed
1262many error checking bugs.
1263
1264- Add NULL pointer checks to all calls of a C function through a type
1265object and extensions (e.g. nb_add).
1266
1267- The code that initializes sys.path now calls Py_GetPythonHome()
1268instead of getenv("PYTHONHOME"). This, together with the new API
1269Py_SetPythonHome(), makes it easier for embedding applications to
1270change the notion of Python's "home" directory (where the libraries
1271etc. are sought).
1272
1273- Fixed a very old bug in the parsing of "O?" format specifiers.
Guido van Rossumab9d6f01998-08-10 22:01:13 +00001274
1275
1276======================================================================