blob: 6eb77190abb7c32e5b2493ade22c4d75801cb77c [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
4Below is a partial list of changes. This list is much more detailed than
5previous; however it is still not complete. I did go through my CVS logs
6but ran out of time. I believe that at least all major changes are
7actually noted here. Note that I have not placed
8
9
10Miscellaneous
11-------------
12
13- The default module search path is now much saner. Both on Unix and
14Windows, it is essentially derived from the path to the executable which
15can be overridden by setting the environment variable $PYTHONHOME). The
16value of $PYTHONPATH on Windows is now inserted in front of the default
17path, like in Unix (instead of overriding the default path). On Windows,
18the directory containing the executable is added to the end of the path.
19
20- The silly -s command line option and the corresponding
21PYTHONSUPPRESS environment variable (and the Py_SuppressPrint global
22flag in the Python/C API) are gone.
23
24- Most problems on 64-bit platforms should now be fixed. Andrew
25Kuchling helped. Some uncommon extension modules are still not
26clean (image and audio ops?).
27
28- Fixed a bug where multiple anonymous tuple arguments would be mixed up
29when using the debugger or profiler (reported by Just van Rossum).
30The simplest example is ``def f((a,b),(c,d)): print a,b,c,d''; this
31would print the wrong value when run under the debugger or profiler.
32
33- Plugged the two-byte memory leak in the tokenizer when reading an
34interactive EOF.
35
36
37Performance
38-----------
39
40- It's much faster (almost twice for pystone.py -- see Tools/scripts).
41
42- Some speedup by using separate free lists for method objects (both
43the C and the Python variety) and for floating point numbers.
44
45- Big speedup by allocating frame objects with a single malloc() call.
46The Python/C API for frames is changed (you shouldn't be using this
47anyway).
48
49- Significant speedup by inlining some common opcodes for common operand
50types (e.g. i+i, i-i, and list[i]). Fredrik Lundh.
51
52- Small speedup by reordering the method tables of some common
53objects (e.g. list.append is now first).
54
55
56Documentation
57-------------
58
59- Many new pieces of library documentation were contributed, mostly by
60Andrew Kuchling. Even cmath is now documented! There's also a
61chapter of the library manual, "libundoc.tex", which provides a
62listing of all undocumented modules, plus their status (e.g. internal,
63obsolete, or in need of documentation). Also contributions by Sue
64Williams, Skip Montanaro, and some module authors who succumbed to
65pressure to document their own contributed modules :-). Note that
66printing the documentation now kills fewer trees -- the margins have
67been reduced.
68
69- I have started documenting the Python/C API. Unfortunately this project
70hasn't been completed yet. It will be complete before the final release of
71Python 1.5, though. At the moment, it's better to read the LaTeX source
72than to attempt to run it through LaTeX and print the resulting dvi file.
73
74- The posix module (and hence os.py) now has doc strings! Thanks to Neil
75Schemenauer. I received a few other contributions of doc strings. In most
76other places, doc strings are still wishful thinking...
77
78
79Language changes
80----------------
81
82- Private variables with leading double underscore are now a permanent
83feature of the language. (These were experimental in release 1.4. I have
84favorable experience using them; I can't label them "experimental"
85forever.)
86
87- There's new string literal syntax for "raw strings". Prefixing a string
88literal with the letter r (or R) disables all escape processing in the
89string; for example, r'\n' is a two-character string consisting of a
90backslash followed by the letter n. This combines with all forms of string
91quotes; it is actually useful for triple quoted doc strings which might
92contain references to \n or \t. An embedded quote prefixed with a
93backslash does not terminate the string, but the backslash is still
94included in the string; for example, r'\'' is a two-character string
95consisting of a backslash and a quote. (Raw strings are also
96affectionately known as Robin strings, after their inventor, Robin
97Friedrich.)
98
99- There's a simple assert statement, and a new exception AssertionError.
100For example, ``assert foo > 0'' is equivalent to ``if not foo > 0: raise
101AssertionError''. Sorry, the text of the asserted condition is not
102available; it would be too generate code for this. However, the text is
103displayed as part of the traceback! There's also a -O option to the
104interpreter that removes SET_LINENO instructions, assert statements; it
105uses and produces .pyo files instead of .pyc files. In the future it
106should be possible to write external bytecode optimizers that create better
107optimized .pyo files. Without -O, the assert statement actually generates
108code that first checks __debug__; if this variable is false, the assertion
109is not checked. __debug__ is a built-in variable whose value is
110initialized to track the -O flag (it's true iff -O is not specified). With
111-O, no code is generated for assert statements, nor for code of the form
112``if __debug__: <something>''. Sorry, no further constant folding happens.
113
114
115Changes to builtin features
Guido van Rossumf0b69f01997-08-15 02:50:47 +0000116---------------------------
117
Guido van Rossum61000331997-08-15 04:39:58 +0000118- There's a new function sys.exc_info() which returns the tuple
119(sys.exc_type, sys.exc_value, sys.exc_traceback) in a thread-safe way.
Guido van Rossumf0b69f01997-08-15 02:50:47 +0000120
Guido van Rossum61000331997-08-15 04:39:58 +0000121- There's a new variable sys.executable, pointing to the executable file
122for the Python interpreter.
Guido van Rossumf0b69f01997-08-15 02:50:47 +0000123
Guido van Rossum61000331997-08-15 04:39:58 +0000124- The semantics of try-except have changed subtly so that calling a
125function in an exception handler that itself raises and catches an
126exception no longer overwrites the sys.exc_* variables. This also
127alleviates the problem that objects referenced in a stack frame that
128caught an exception are kept alive until another exception is caught
129-- the sys.exc_* variables are restored to their previous value when
130returning from a function that caught an exception.
Guido van Rossumf0b69f01997-08-15 02:50:47 +0000131
Guido van Rossum61000331997-08-15 04:39:58 +0000132- There's a new "buffer" interface. Certain objects (e.g. strings and
133arrays) now support the "buffer" protocol. Buffer objects are acceptable
134whenever formerly a string was required for a write operation; mutable
135buffer objects can be the target of a read operation using the call
136f.readinto(buffer). A cool feature is that regular expression matching now
137also work on array objects. Contribution by Jack Jansen. (Needs
138documentation.)
139
140- String interning: dictionary lookups are faster when the lookup
141string object is the same object as the key in the dictionary, not
142just a string with the same value. This is done by having a pool of
143"interned" strings. Most names generated by the interpreter are now
144automatically interned, and there's a new built-in function intern(s)
145that returns the interned version of a string. Interned strings are
146not a different object type, and interning is totally optional, but by
147interning most keys a speedup of about 15% was obtained for the
148pystone benchmark.
149
150- Dictionary objects have several new methods; clear() and copy() have
151the obvious semantics, while update(d) merges the contents of another
152dictionary d into this one, overriding existing keys. BTW, the
153dictionary implementation file is now called dictobject.c rather than
154the confusing mappingobject.c.
155
156- The sort() methods for lists no longer uses the C library qsort(); I
157wrote my own quicksort implementation, with help from Tim Peters.
158This solves a bug in dictionary comparisons on some Solaris versions
159when Python is built with threads, and makes sorting lists even
160faster.
161
162- The intrinsic function dir() is much smarter; it looks in __dict__,
163__members__ and __methods__.
164
165- When a module is deleted, its globals are now deleted in two phases.
166In the first phase, all variables whose name begins with exactly one
167underscore are replaced by None; in the second phase, all variables
168are deleted. This makes it possible to have global objects whose
169destructors depend on other globals. The deletion order within each
170phase is still random.
171
172- It is no longer an error for a function to be called without a
173global variable __builtins__ -- an empty directory will be provided
174by default.
175
176- Guido's corollary to the "Don Beaudry hack": it is now possible to do
177metaprogramming by using an instance as a base class. Not for the
178faint of heart; and undocumented as yet, but basically if a base class
179is an instance, its class will be instantiated to create the new
180class. Jim Fulton will love it -- it also works with instances of his
181"extension classes", since it is triggered by the presence of a
182__class__ attribute on the purported base class.
183
184
185New extension modules
186---------------------
187
188- New extension modules cStringIO.c and cPickle.c, written by Jim
189Fulton and other folks at Digital Creations. These are much more
190efficient than their Python counterparts StringIO.py and pickle.py,
191but don't support subclassing. cPickle.c clocks up to 1000 times
192faster than pickle.py. The pickle.py module has been updated to make
193it compatible with the new binary format that cPickle.c produces (by
194default it produces the old all-ASCII format compatible with the old
195pickle.py, still much faster than pickle.py; it can read both
196formats). A new helper module, copy_reg.py, is provided to register
197extensions to the pickling code. (These are now identical to the
198release 0.3 from Digital Creations.)
199
200- New extension module zlibmodule.c, interfacing to the free zlib
201library (gzip compatible compression). There's also a module gzip.py
202which provides a higher level interface. Written by Andrew Kuchling
203and Jeremy Hylton.
204
205- New module readline; see the "miscellaneous" section above.
206
207- New Unix extension module resource.c, by Jeremy Hylton, provides
208access to getrlimit(), getrusage(), setrusage(), getpagesize(), and
209related symbolic constants.
210
211- New extension puremodule.c, by Barry Warsaw, which interfaces to the
212Purify(TM) C API. See also the file Misc/PURIFY.README. It is also
213possible to enable Purify by simply setting the PURIFY Makefile
214variable in the Modules/Setup file.
215
216
217Changes in extension modules
218----------------------------
219
220- The struct extension module has several new features to control byte
221order and word size. It supports reading and writing IEEE floats even
222on platforms where this is not the native format.
223
224- The fcntl extension module now exports the needed symbolic
225constants. (Formerly these were in FCNTL.py which was not available
226or correct for all platforms.)
227
228- The extension modules dbm, gdbm and bsddb now check that the
229database is still open before making any new calls.
230
231- Various modules now export their type object: socket.SocketType,
232array.ArrayType.
233
234- The pthread support for the thread module now works on most platforms.
235
236- STDWIN is now officially obsolete. Support for it will eventually
237be removed from the distribution.
238
239- The binascii extension module is now hopefully fully debugged. (XXX
240Oops -- Fredril Lundh promised me a fix that I never received.)
241
242
243New library modules
244-------------------
245
246- New (still experimental) Perl-style regular expression module,
247re.py, which uses a new interface for matching as well as a new
248syntax; the new interface avoids the thread-unsafety of the regex
249interface. This comes with a helper extension reopmodule.c and vastly
250rewritten regexpr.c. Most work on this was done by Jeffrey Ollie, Tim
251Peters, and Andrew Kuchling. See the documentation libre.tex. In
2521.5, the old regex module is still fully supported; in the future, it
253will become obsolete.
254
255- New module gzip.py; see zlib above.
256
257- New module keyword.py exports knowledge about Python's built-in
258keywords. (New version by Ka-Ping Yee.)
259
260- New module pprint.py (with documentation) which supports
261pretty-printing of lists, tuples, & dictionaries recursively. By Fred
262Drake.
263
264- New module code.py. The function code.compile_command() can
265determine whether an interactively entered command is complete or not,
266distinguishing incomplete from invalid input.
267
268- There is now a library module xdr.py which can read and write the
269XDR data format as used by Sun RPC, for example. It uses the struct
270module.
271
272
273Changes in library modules
274--------------------------
275
276- Module codehack.py is now completely obsolete.
277
278- Revamped module tokenize.py is much more accurate and has an
279interface that makes it a breeze to write code to colorize Python
280source code. Contributed by Ka-Ping Yee.
281
282- In ihooks.py, ModuleLoader.load_module() now closes the file under
283all circumstances.
284
285- The tempfile.py module has a new class, TemporaryFile, which creates
286an open temporary file that will be deleted automatically when
287closed. This works on Windows and MacOS as well as on Unix. (Jim
288Fulton.)
289
290- Changes to the cgi.py module: Most imports are now done at the
291top of the module, which provides a speedup when using ni (Jim
292Fulton). The problem with file upload to a Windows platform is solved
293by using the new tempfile.TemporaryFile class; temporary files are now
294always opened in binary mode (Jim Fulton). The cgi.escape() function
295now takes an optional flag argument that quotes '"' to '&quot;'. It
296is now possible to invoke cgi.py from a command line script, to test
297cgi scripts more easily outside an http server. There's an optional
298limit to the size of uploads to POST (Skip Montanaro). Added a
299'strict_parsing' option to all parsing functions (Jim Fulton). The
300function parse_qs() now uses urllib.unquote() on the name as well as
301the value of fields (Clarence Gardner).
302
303- httplib.py: the socket object is no longer closed; all HTTP/1.*
304versions are now treated the same; and it is now thread-safe (by not
305using the regex module).
306
307- BaseHTTPModule.py: treat all HTTP/1.* versions the same.
308
309- The popen2.py module is now rewritten using a class, which makes
310access to the standard error stream and the process id of the
311subprocess possible.
312
313- Added timezone support to the rfc822.py module; also added
314recognition of some non-standard date formats, by Lars Wirzenius.
315
316- mhlib.py: various enhancements, including almost compatible parsing
317of message sequence specifiers without invoking a subprocess. Also
318added a createmessage() method by Lars Wirzenius.
319
320- The StringIO.StringIO class now supports readline(nbytes). (Lars
321Wirzenius.) (Of course, you should be using cStringIO for performance.)
322
323- UserDict.py supports the new dictionary methods as well.
324
325- Improvements for whrandom.py by Tim Peters: use 32-bit arithmetic to
326speed it up, and replace 0 seed values by 1 to avoid degeneration.
327
328- Module ftplib.py: added support for parsing a .netrc file. Fred
329Drake.
330
331- urllib.py: the ftp cache is now limited to 10 entries. Added
332quote_plus() method which is like qupte() but also replaces spaces
333with '+', for encoding CGI form arguments. Catch all errors from the
334ftp module. HTTP requests now add the Host: header line. The proxy
335variable names are now mapped to lower case, for Windows.
336
337- shelve.py: use cPickle and cStringIO when available.
338
339- The mimetools.py module now uses the available Python modules for
340decoding quoted-printable, uuencode and base64 formats, rather than
341creating a subprocess.
342
343- The python debugger (pdb.py, and its base class bdb.py) now support
344conditional breakpoints. See the docs.
345
346- The modules base64.py, uu.py and quopri.py can now be used as simple
347command line utilities.
348
349- Various small fixes to the nntplib.py module that I can't bother to
350document in detail.
351
352- There is a cache for results in urlparse.urlparse(); its size limit
353is set to 20 (not 2000 as it was in earlier alphas).
354
355- Sjoerd Mullender's mimify.py module now supports base64 encoding and
356includes functions to handle the funny encoding you sometimes see in mail
357headers. It is now documented.
358
359
360Changes to the build process
361----------------------------
362
363- The way GNU readline is configured is totally different. The
364--with-readline configure option is gone. It is now an extension
365module, which may be loaded dynamically. You must enable it (and
366specify the correct linraries to link with) in the Modules/Setup file.
367Importing the module installs some hooks which enable command line
368editing. When the interpreter shell is invoked interactively, it
369attempts to import the readline module; when this fails, the default
370input mechanism is used. The hook variables are PyOS_InputHook and
371PyOS_ReadlineFunctionPointer. (Code contributed by Lee Busby, with
372ideas from William Magro.)
373
374- New build procedure: a single library, libpython1.5.a, is now built,
375which contains absolutely everything except for a one-line main()
376program (which calls Py_Main(argc, argv) to start the interpreter
377shell). This makes life much simpler for applications that need to
378embed Python. The serial number of the build is now included in the
379version string (sys.version).
380
381- As far as I can tell, neither gcc -Wall nor the Microsoft compiler
382emits a single warning any more when compiling Python.
383
384- A set of patches from Lee Busby has been integrated that make it
385possible to catch floating point exceptions. Use the configure option
386--with-fpectl to enable the patches; the extension modules fpectl and
387fpetest provide control to enable/disable and test the feature,
388respectively.
389
390- The support for shared libraries under AIX is now simpler and more
391robust. Thanks to Vladimir Marangozov for revamping his own patches!
392
393- The Modules/makesetup script now reads a file Setup.local as well as
394a file Setup. Most changes to the Setup script can be done by editing
395Setup.local instead, which makes it easier to carry a particular setup
396over from one release to the next.
397
398- The configure script is smarter about C compiler options; e.g. with
399gcc it uses -O2 and -g when possible, and on some other platforms it
400uses -Olimit 1500 to avoid a warning from the optimizer about the main
401loop in ceval.c (which has more than 1000 basic blocks).
402
403- The configure script now detects whether malloc(0) returns a NULL
404pointer or a valid block (of length zero). This avoids the nonsense
405of always adding one byte to all malloc() arguments on most platforms.
406
407
408Change to the Python/C API
409--------------------------
410
411- I've completed the Grand Renaming, with the help of Roger Masse and Barry
412Warsaw. This makes reading or debugging the code much easier. Many other
413unrelated code reorganizations have also been carried out.
414
415- PyObject_Compare() can now raise an exception. Check with
416PyErr_Occurred(). The comparison function in an object type may also
417raise an exception.
418
419- The slice interface uses an upper bound of INT_MAX when no explicit
420upper bound is given (e.x. for a[1:]). It used to ask the object for
421its length and do the calculations.
422
423- Support for multiple independent interpreters. See Doc/api.tex,
424functions Py_NewInterpreter() and Py_EndInterpreter(). Since the
425documentation is incomplete, also see the new Demo/pysvr example
426(which shows how to use these in a threaded application) and the
427source code.
428
429- There is now a Py_Finalize() function which "de-initializes"
430Python. It is possible to completely restart the interpreter
431repeatedly by calling Py_Finalize() followed by Py_Initialize(). A
432change of functionality in Py_Initialize() means that it is now a
433fatal error to call it while the interpreter is already initialized.
434The old, half-hearted Py_Cleanup() routine is gone. Use of Py_Exit()
435is deprecated (it is nothing more than Py_Finalize() followed by
436exit()).
437
438- There are no known memory leaks. While Py_Finalize() doesn't free
439*all* allocated memory (some of it is hard to track down), repeated
440calls to Py_Finalize() and Py_Initialize() do not create unaccessible
441heap blocks.
442
443- There is now explicit per-thread state. (Inspired by, but not the
444same as, Greg Stein's free threading patches.)
445
446- There is now better support for threading C applications. There are
447now explicit APIs to manipulate the interpreter lock. Read the source
448or the Demo/pysvr example; the new functions are
449PyEval_{Acquire,Release}{Lock,Thread}().
450
451- New wrappers around malloc() and friends: Py_Malloc() etc. call
452malloc() and call PyErr_NoMemory() when it fails; PyMem_Malloc() call
453just malloc(). Use of these wrappers could be essential if multiple
454memory allocators exist (e.g. when using certain DLL setups under
455Windows). (Idea by Jim Fulton.)
456
457- New C API PyImport_Import() which uses whatever __import__() hook
458that is installed for the current execution environment. By Jim
459Fulton.
460
461- It is now possible for an extension module's init function to fail
462non-fatally, by calling one of the PyErr_* functions and returning.
463
464- The PyInt_AS_LONG() and PyFloat_AS_DOUBLE() macros now cast their
465argument to the proper type, like the similar PyString macros already
466did. (Suggestion by Marc-Andre Lemburg.)
467
468- Some of the Py_Get* function, like Py_GetVersion() (but not yet
469Py_GetPath()) are now declared as returning a const char *. (More
470should follow.)
471
472- Changed the run-time library to check for exceptions after object
473comparisons. PyObject_Compare() can now return an exception; use
474PyErr_Occurred() to check (there is *no* special return value).
475
476- PyFile_WriteString() and Py_Flushline() now return error indicators
477instead of clearing exceptions. This fixes an obscure bug where using
478these would clear a pending exception, discovered by Just van Rossum.
479
480
481Tkinter
482-------
483
484- New standard dialog modules for Tkinter: tkColorChooser.py,
485tkCommonDialog.py, tkMessageBox.py, tkFileDialog.py, tkSimpleDialog.py
486These interface with the new Tk dialog scripts. Contributed by
487Fredrik Lundh.
488
489- Tkinter.py: when the first Tk object is destroyed, it sets the
490hiddel global _default_root to None, so that when another Tk object is
491created it becomes the new default root. Other miscellaneous
492changes and fixes.
493
494- The _tkinter.c extension module has been revamped. It now support
495Tk versions 4.1 through 8.0; support for 4.0 has been dropped. It
496works well under Windows and Mac (with the latest Tk ports to those
497platforms). It also supports threading -- it is safe for one
498(Python-created) thread to be blocked in _tkinter.mainloop() while
499other threads modify widgets. (To make the changes visible, those
500threads must use update_idletasks()method.) Unfortunately, on Windows
501and Mac, Tk 8.0 no longer supports CreateFileHandler, so
502_tkinter.createfilehandler is not available on those platforms. I
503will have to rethink how to interface with Tcl's lower-level event
504mechanism, or with its channels (which are like Python's file-like
505objects).
506
507
508Tools and Demos
509---------------
510
511- A new regression test suite is provided, which tests most of the
512standard and built-in modules. The regression test is run by invoking
513the script Lib/test/regrtest.py. Barry Warsaw wrote the test harnass;
514he and Roger Masse contributed most of the new tests.
515
516- New tool: faqwiz -- the CGI script that is used to maintain the
517Python FAQ (http://grail.cnri.reston.va.us/cgi-bin/faqw.py). In
518Tools/faqwiz.
519
520- New tool: webchecker -- a simple extensible web robot that, when
521aimed at a web server, checks that server for dead links. Available
522are a command line utility as well as a Tkinter based GUI version. In
523Tools/webchecker. A simplified version of this program is dissected
524in my article in O'Reilly's WWW Journal, the issue on Scripting
525Languages (Vol 2, No 2); Scripting the Web with Python (pp 97-120).
526Includes a parser for robots.txt files by Skip Montanaro.
527
528- New small tools: cvsfiles.py (prints a list of all files under CVS
529in a particular directory tree), treesync.py (a rather Guido-specific
530script to synchronize two source trees, one on Windows NT, the other
531one on Unix under CVS but accessible from the NT box), and logmerge.py
532(sort a collection of RCS or CVS logs by date). In Tools/scripts.
533
534- The freeze script now also works under Windows (NT). Another
535feature allows the -p option to be pointed at the Python source tree
536instead of the installation prefix. This was loosely based on part of
537xfreeze by Sam Rushing and Bill Tutt.
538
539- New examples (Demo/extend) that show how to use the generic
540extension makefile (Misc/Makefile.pre.in).
541
542- Tools/scripts/h2py.py now supports C++ comments.
543
544- The pystone.py script is upgraded to version 1.1; there was a bug in
545version 1.0 (distributed with Python 1.4) that leaked memory. Also,
546in 1.1, the LOOPS variable is incremented to 10000.
547
548
549Windows (NT and 95)
550-------------------
551
552- New project files for Developer Studio (Visual C++) 5.0 for Windows
553NT (the old VC++ 4.2 Makefile is also still supported, but will
554eventually be withdrawn due to its bulkiness).
555
556- See the note on the new module search path in the "Miscellaneous" section
557above.
558
559- Support for Win32s (the 32-bit Windows API under Windows 3.1) is
560basically withdrawn. If it still works for you, you're lucky.
561
562- There's a new extension module, msvcrt.c, which provides various
563low-level operations defined in the Microsoft Visual C++ Runtime Library.
564These include locking(), setmode(), get_osfhandle(), set_osfhandle(), and
565console I/O functions like kbhit(), getch() and putch().
566
567- The -u option not only sets the standard I/O streams to unbuffered
568status, but also sets them in binary mode.
569
570- The, sys.prefix and sys.exec_prefix variables point to the directory
571where Python is installed, or to the top of the source tree, if it was run
572from there.
573
574- The ntpath module (normally used as os.path) supports ~ to $HOME
575expansion in expanduser().
576
577- The freeze tool now works on Windows.
578
579- See also the Tkinter category for a note on _tkinter.createfilehandler().
580
581
582Mac
583---
584
585- As always, the Macintosh port was done by Jack Jansen. See his
586separate announcement for the Mac specific source code and the binary
587distribution(s).
588
589
590More
591----
592
593The following items should be expanded upon:
Guido van Rossumf0b69f01997-08-15 02:50:47 +0000594
595- formatter.*Writer.flush
596
597- dis.{cmp_op, hascompare}
598
Guido van Rossum61000331997-08-15 04:39:58 +0000599- ftplib: FTP.ntransfercmd, parse150
Guido van Rossumf0b69f01997-08-15 02:50:47 +0000600
601- imghdr recognizes bmp, png
602
Guido van Rossumf0b69f01997-08-15 02:50:47 +0000603- mimify base64 support
604
605- new.function revived
606
Guido van Rossumf0b69f01997-08-15 02:50:47 +0000607- cgi.FieldStorage: __len__ added
608
609New exceptions:
610 FloatingPointError
611Deleted exception:
612 ConflictError
613
614> audioop.ratecv
615
616> posix.O_APPEND
617> posix.O_CREAT
618> posix.O_DSYNC
619> posix.O_EXCL
620> posix.O_NDELAY
621> posix.O_NOCTTY
622> posix.O_NONBLOCK
623> posix.O_RDONLY
624> posix.O_RDWR
625> posix.O_RSYNC
626> posix.O_SYNC
627> posix.O_TRUNC
628> posix.O_WRONLY
629 posix.O_TEXT
630 posix.O_BINARY
631(also in os, of course)
632
633> regex.get_syntax
634
635> socket.getprotobyname
636
637> strop.replace
638Also string.replace
639
640- Jack's buffer interface!
641 - supported by regex module!
642
Guido van Rossumf0b69f01997-08-15 02:50:47 +0000643- posix.error, nt.error renamed to os.error
644
645- rfc822 getdate_tz and parsedate_tz
646
647- shelve.*.sync
648
649- shutil improved interface
650
651- socket.getprotobynameo
652
Guido van Rossumf0b69f01997-08-15 02:50:47 +0000653- new al module for SGI
654
Guido van Rossumf0b69f01997-08-15 02:50:47 +0000655Obsolete: cgensupport.[ch] are now in Modules and only linked with glmodule.c.
656
657- much faster file.read() and readlines() on windows