blob: 8ce4744f1012ae8081c0baaae207b6f4d84bbd57 [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
Guido van Rossum2da391f1997-08-18 21:17:32 +00006but ran out of time. Some changes made beteen Oct 1996 and April 1997
7have not yet been noted.
Guido van Rossum61000331997-08-15 04:39:58 +00008
9
10Miscellaneous
11-------------
12
Guido van Rossum2da391f1997-08-18 21:17:32 +000013- The default module search path is now much saner. Both on Unix and
14Windows, it is essentially derived from the path to the executable
15(which can be overridden by setting the environment variable
16$PYTHONHOME). The value of $PYTHONPATH on Windows is now inserted in
17front of the default path, like in Unix (instead of overriding the
18default path). On Windows, the directory containing the executable is
19added to the end of the path.
20
21- On Unix, when using sys.argv[0] to insert the script directory in
22front of sys.path, expand a symbolic link. You can now install a
23program in a private directory and have a symbolic link to it in a
24public bin directory, and it will put the private directory in the
25module search path. Note that the symlink is expanded in sys.path[0]
26but not in sys.argv[0], so you can still tell the name by which you
27were invoked.
28
29- It is now recommended to use ``#!/usr/bin/env python'' instead of
30``#!/usr/local/bin/python'' at the start of executable scripts, except
31for CGI scripts. It has been determined that the use of /usr/bin/env
32is more portable than that of /usr/local/bin/python -- scripts almost
33never have to be edited when the Python interpreter lives in a
34non-standard place. Note that this doesn't work for CGI scripts since
35the python executable often doesn't live in the HTTP server's default
36search path.
Guido van Rossum61000331997-08-15 04:39:58 +000037
38- The silly -s command line option and the corresponding
39PYTHONSUPPRESS environment variable (and the Py_SuppressPrint global
40flag in the Python/C API) are gone.
41
42- Most problems on 64-bit platforms should now be fixed. Andrew
43Kuchling helped. Some uncommon extension modules are still not
44clean (image and audio ops?).
45
46- Fixed a bug where multiple anonymous tuple arguments would be mixed up
47when using the debugger or profiler (reported by Just van Rossum).
48The simplest example is ``def f((a,b),(c,d)): print a,b,c,d''; this
49would print the wrong value when run under the debugger or profiler.
50
Guido van Rossum2da391f1997-08-18 21:17:32 +000051- The sort() methods for lists no longer uses the C library qsort(); I
52wrote my own quicksort implementation, with help from Tim Peters.
53This solves a bug in dictionary comparisons on some Solaris versions
54when Python is built with threads, and makes sorting lists even
55faster.
56
57- The hacks that the dictionary implementation used to speed up
58repeated lookups of the same C string were removed; these were a
59source of subtle problems and don't seem to serve much of a purpose
60any longer.
61
62- All traces of support for the long dead access statement have been
63removed from the sources.
64
Guido van Rossum61000331997-08-15 04:39:58 +000065- Plugged the two-byte memory leak in the tokenizer when reading an
66interactive EOF.
67
68
69Performance
70-----------
71
Guido van Rossum2da391f1997-08-18 21:17:32 +000072- It's much faster (almost twice for pystone.py -- see
73Tools/scripts). See the entry on string interning below.
Guido van Rossum61000331997-08-15 04:39:58 +000074
75- Some speedup by using separate free lists for method objects (both
76the C and the Python variety) and for floating point numbers.
77
78- Big speedup by allocating frame objects with a single malloc() call.
79The Python/C API for frames is changed (you shouldn't be using this
80anyway).
81
82- Significant speedup by inlining some common opcodes for common operand
83types (e.g. i+i, i-i, and list[i]). Fredrik Lundh.
84
85- Small speedup by reordering the method tables of some common
86objects (e.g. list.append is now first).
87
Guido van Rossum2da391f1997-08-18 21:17:32 +000088- Big optimization to the read() method of file objects. A read()
89without arguments now attempts to use fstat to allocate a buffer of
90the right size; for pipes and sockets, it will fall back to doubling
91the buffer size. While that the improvement is real on all systems,
92it is most dramatic on Windows.
93
Guido van Rossum61000331997-08-15 04:39:58 +000094
95Documentation
96-------------
97
98- Many new pieces of library documentation were contributed, mostly by
99Andrew Kuchling. Even cmath is now documented! There's also a
100chapter of the library manual, "libundoc.tex", which provides a
101listing of all undocumented modules, plus their status (e.g. internal,
102obsolete, or in need of documentation). Also contributions by Sue
103Williams, Skip Montanaro, and some module authors who succumbed to
104pressure to document their own contributed modules :-). Note that
105printing the documentation now kills fewer trees -- the margins have
106been reduced.
107
108- I have started documenting the Python/C API. Unfortunately this project
109hasn't been completed yet. It will be complete before the final release of
110Python 1.5, though. At the moment, it's better to read the LaTeX source
111than to attempt to run it through LaTeX and print the resulting dvi file.
112
113- The posix module (and hence os.py) now has doc strings! Thanks to Neil
114Schemenauer. I received a few other contributions of doc strings. In most
115other places, doc strings are still wishful thinking...
116
117
118Language changes
119----------------
120
121- Private variables with leading double underscore are now a permanent
122feature of the language. (These were experimental in release 1.4. I have
123favorable experience using them; I can't label them "experimental"
124forever.)
125
126- There's new string literal syntax for "raw strings". Prefixing a string
127literal with the letter r (or R) disables all escape processing in the
128string; for example, r'\n' is a two-character string consisting of a
129backslash followed by the letter n. This combines with all forms of string
130quotes; it is actually useful for triple quoted doc strings which might
131contain references to \n or \t. An embedded quote prefixed with a
132backslash does not terminate the string, but the backslash is still
133included in the string; for example, r'\'' is a two-character string
134consisting of a backslash and a quote. (Raw strings are also
135affectionately known as Robin strings, after their inventor, Robin
136Friedrich.)
137
Guido van Rossum2da391f1997-08-18 21:17:32 +0000138- There's a simple assert statement, and a new exception
139AssertionError. For example, ``assert foo > 0'' is equivalent to ``if
140not foo > 0: raise AssertionError''. Sorry, the text of the asserted
141condition is not available; it would be too generate code for this.
142However, the text is displayed as part of the traceback! There's also
143a -O option to the interpreter that removes SET_LINENO instructions,
144assert statements; it uses and produces .pyo files instead of .pyc
145files (the line numbers are still available in the .pyo file, as a
146separate table; but the removal of the SET_LINENO instructions means
147that the debugger can't set breakpoints on lines in -O mode). In the
148future it should be possible to write external bytecode optimizers
149that create better optimized .pyo files. Without -O, the assert
150statement actually generates code that first checks __debug__; if this
151variable is false, the assertion is not checked. __debug__ is a
152built-in variable whose value is initialized to track the -O flag
153(it's true iff -O is not specified). With -O, no code is generated
154for assert statements, nor for code of the form ``if __debug__:
155<something>''. Sorry, no further constant folding happens.
Guido van Rossum61000331997-08-15 04:39:58 +0000156
157
158Changes to builtin features
Guido van Rossumf0b69f01997-08-15 02:50:47 +0000159---------------------------
160
Guido van Rossum2da391f1997-08-18 21:17:32 +0000161- There's a new exception FloatingPointError (used only by Lee Busby's
162patches to catch floating point exceptions, at the moment).
163
164- The obsolete exception ConflictError has been deleted.
165
Guido van Rossum61000331997-08-15 04:39:58 +0000166- There's a new function sys.exc_info() which returns the tuple
167(sys.exc_type, sys.exc_value, sys.exc_traceback) in a thread-safe way.
Guido van Rossumf0b69f01997-08-15 02:50:47 +0000168
Guido van Rossum61000331997-08-15 04:39:58 +0000169- There's a new variable sys.executable, pointing to the executable file
170for the Python interpreter.
Guido van Rossumf0b69f01997-08-15 02:50:47 +0000171
Guido van Rossum61000331997-08-15 04:39:58 +0000172- The semantics of try-except have changed subtly so that calling a
173function in an exception handler that itself raises and catches an
174exception no longer overwrites the sys.exc_* variables. This also
175alleviates the problem that objects referenced in a stack frame that
176caught an exception are kept alive until another exception is caught
177-- the sys.exc_* variables are restored to their previous value when
178returning from a function that caught an exception.
Guido van Rossumf0b69f01997-08-15 02:50:47 +0000179
Guido van Rossum61000331997-08-15 04:39:58 +0000180- There's a new "buffer" interface. Certain objects (e.g. strings and
181arrays) now support the "buffer" protocol. Buffer objects are acceptable
182whenever formerly a string was required for a write operation; mutable
183buffer objects can be the target of a read operation using the call
184f.readinto(buffer). A cool feature is that regular expression matching now
185also work on array objects. Contribution by Jack Jansen. (Needs
186documentation.)
187
188- String interning: dictionary lookups are faster when the lookup
189string object is the same object as the key in the dictionary, not
190just a string with the same value. This is done by having a pool of
191"interned" strings. Most names generated by the interpreter are now
192automatically interned, and there's a new built-in function intern(s)
193that returns the interned version of a string. Interned strings are
194not a different object type, and interning is totally optional, but by
195interning most keys a speedup of about 15% was obtained for the
196pystone benchmark.
197
198- Dictionary objects have several new methods; clear() and copy() have
199the obvious semantics, while update(d) merges the contents of another
200dictionary d into this one, overriding existing keys. BTW, the
201dictionary implementation file is now called dictobject.c rather than
202the confusing mappingobject.c.
203
Guido van Rossum61000331997-08-15 04:39:58 +0000204- The intrinsic function dir() is much smarter; it looks in __dict__,
205__members__ and __methods__.
206
Guido van Rossum2da391f1997-08-18 21:17:32 +0000207- The intrinsic functions int(), long() and float() can now take a
208string argument and then do the same thing as string.atoi(),
209string.atol(), and string.atof(). No second 'base' argument is
210allowed, and complex() does not take a string (nobody cared enough).
211
Guido van Rossum61000331997-08-15 04:39:58 +0000212- When a module is deleted, its globals are now deleted in two phases.
213In the first phase, all variables whose name begins with exactly one
214underscore are replaced by None; in the second phase, all variables
215are deleted. This makes it possible to have global objects whose
216destructors depend on other globals. The deletion order within each
217phase is still random.
218
219- It is no longer an error for a function to be called without a
220global variable __builtins__ -- an empty directory will be provided
221by default.
222
223- Guido's corollary to the "Don Beaudry hack": it is now possible to do
224metaprogramming by using an instance as a base class. Not for the
225faint of heart; and undocumented as yet, but basically if a base class
226is an instance, its class will be instantiated to create the new
227class. Jim Fulton will love it -- it also works with instances of his
228"extension classes", since it is triggered by the presence of a
229__class__ attribute on the purported base class.
230
Guido van Rossum2da391f1997-08-18 21:17:32 +0000231- New optional parameter to the readlines() method of file objects.
232This indicates the number of bytes to read (the actual number of bytes
233read will be somewhat larger due to buffering reading until the end of
234the line). Some optimizations have also been made to speed it up (but
235not as much as read()).
236
Guido van Rossum61000331997-08-15 04:39:58 +0000237
238New extension modules
239---------------------
240
241- New extension modules cStringIO.c and cPickle.c, written by Jim
242Fulton and other folks at Digital Creations. These are much more
243efficient than their Python counterparts StringIO.py and pickle.py,
244but don't support subclassing. cPickle.c clocks up to 1000 times
Guido van Rossum2da391f1997-08-18 21:17:32 +0000245faster than pickle.py; cStringIO.c's improvement is less dramatic but
246still significant. The pickle.py module has been updated to make it
247compatible with the new binary format that cPickle.c produces (by
Guido van Rossum61000331997-08-15 04:39:58 +0000248default it produces the old all-ASCII format compatible with the old
249pickle.py, still much faster than pickle.py; it can read both
250formats). A new helper module, copy_reg.py, is provided to register
251extensions to the pickling code. (These are now identical to the
252release 0.3 from Digital Creations.)
253
254- New extension module zlibmodule.c, interfacing to the free zlib
255library (gzip compatible compression). There's also a module gzip.py
256which provides a higher level interface. Written by Andrew Kuchling
257and Jeremy Hylton.
258
259- New module readline; see the "miscellaneous" section above.
260
261- New Unix extension module resource.c, by Jeremy Hylton, provides
262access to getrlimit(), getrusage(), setrusage(), getpagesize(), and
263related symbolic constants.
264
265- New extension puremodule.c, by Barry Warsaw, which interfaces to the
266Purify(TM) C API. See also the file Misc/PURIFY.README. It is also
267possible to enable Purify by simply setting the PURIFY Makefile
268variable in the Modules/Setup file.
269
270
271Changes in extension modules
272----------------------------
273
274- The struct extension module has several new features to control byte
275order and word size. It supports reading and writing IEEE floats even
276on platforms where this is not the native format.
277
278- The fcntl extension module now exports the needed symbolic
279constants. (Formerly these were in FCNTL.py which was not available
280or correct for all platforms.)
281
282- The extension modules dbm, gdbm and bsddb now check that the
283database is still open before making any new calls.
284
285- Various modules now export their type object: socket.SocketType,
286array.ArrayType.
287
Guido van Rossum2da391f1997-08-18 21:17:32 +0000288- The socket module's accept() method now returns unknown addresses as
289a tuple rather than raising an exception. (This can happen in
290promiscuous mode.) Theres' also a new function getprotobyname().
291
Guido van Rossum61000331997-08-15 04:39:58 +0000292- The pthread support for the thread module now works on most platforms.
293
294- STDWIN is now officially obsolete. Support for it will eventually
295be removed from the distribution.
296
297- The binascii extension module is now hopefully fully debugged. (XXX
298Oops -- Fredril Lundh promised me a fix that I never received.)
299
Guido van Rossum2da391f1997-08-18 21:17:32 +0000300- audioop.c: added a ratecv method
301
302- posixmodule.c: now exports the O_* flags (O_APPEND etc.). On
303Windows, also O_TEXT and O_BINARY. The 'error' variable (the
304exception is raises) is renamed -- its string value is now "os.error",
305so newbies don't believe they have to import posix (or nt) to catch
306it when they see os.error reported as posix.error.
307
308- A new version of the al (audio library) module for SGI was
309contributed by Sjoerd Mullender.
310
311- The regex module has a new function get_syntax() which retrieves the
312syntax setting set by set_syntax(). The code was also sanitized,
313removing worries about unclean error handling. See also below for its
314successor, re.py.
315
316- The "new" module (which creates new objects of various types) once
317again has a fully functioning new.function() method. Dangerous as
318ever!
319
Guido van Rossum61000331997-08-15 04:39:58 +0000320
321New library modules
322-------------------
323
324- New (still experimental) Perl-style regular expression module,
325re.py, which uses a new interface for matching as well as a new
326syntax; the new interface avoids the thread-unsafety of the regex
327interface. This comes with a helper extension reopmodule.c and vastly
328rewritten regexpr.c. Most work on this was done by Jeffrey Ollie, Tim
329Peters, and Andrew Kuchling. See the documentation libre.tex. In
3301.5, the old regex module is still fully supported; in the future, it
331will become obsolete.
332
333- New module gzip.py; see zlib above.
334
335- New module keyword.py exports knowledge about Python's built-in
336keywords. (New version by Ka-Ping Yee.)
337
338- New module pprint.py (with documentation) which supports
339pretty-printing of lists, tuples, & dictionaries recursively. By Fred
340Drake.
341
342- New module code.py. The function code.compile_command() can
343determine whether an interactively entered command is complete or not,
344distinguishing incomplete from invalid input.
345
Guido van Rossum522578e1997-08-28 03:43:21 +0000346- There is now a library module xdrlib.py which can read and write the
Guido van Rossum61000331997-08-15 04:39:58 +0000347XDR data format as used by Sun RPC, for example. It uses the struct
348module.
349
350
351Changes in library modules
352--------------------------
353
354- Module codehack.py is now completely obsolete.
355
356- Revamped module tokenize.py is much more accurate and has an
357interface that makes it a breeze to write code to colorize Python
358source code. Contributed by Ka-Ping Yee.
359
360- In ihooks.py, ModuleLoader.load_module() now closes the file under
361all circumstances.
362
363- The tempfile.py module has a new class, TemporaryFile, which creates
364an open temporary file that will be deleted automatically when
365closed. This works on Windows and MacOS as well as on Unix. (Jim
366Fulton.)
367
368- Changes to the cgi.py module: Most imports are now done at the
369top of the module, which provides a speedup when using ni (Jim
370Fulton). The problem with file upload to a Windows platform is solved
371by using the new tempfile.TemporaryFile class; temporary files are now
372always opened in binary mode (Jim Fulton). The cgi.escape() function
373now takes an optional flag argument that quotes '"' to '&quot;'. It
374is now possible to invoke cgi.py from a command line script, to test
375cgi scripts more easily outside an http server. There's an optional
376limit to the size of uploads to POST (Skip Montanaro). Added a
377'strict_parsing' option to all parsing functions (Jim Fulton). The
378function parse_qs() now uses urllib.unquote() on the name as well as
Guido van Rossum2da391f1997-08-18 21:17:32 +0000379the value of fields (Clarence Gardner). The FieldStorage class now
380has a __len__() method.
Guido van Rossum61000331997-08-15 04:39:58 +0000381
382- httplib.py: the socket object is no longer closed; all HTTP/1.*
383versions are now treated the same; and it is now thread-safe (by not
384using the regex module).
385
386- BaseHTTPModule.py: treat all HTTP/1.* versions the same.
387
388- The popen2.py module is now rewritten using a class, which makes
389access to the standard error stream and the process id of the
390subprocess possible.
391
Guido van Rossum2da391f1997-08-18 21:17:32 +0000392- Added timezone support to the rfc822.py module, in the form of a
393getdate_tz() method and a parsedate_tz() function. Also added
Guido van Rossum61000331997-08-15 04:39:58 +0000394recognition of some non-standard date formats, by Lars Wirzenius.
395
396- mhlib.py: various enhancements, including almost compatible parsing
397of message sequence specifiers without invoking a subprocess. Also
398added a createmessage() method by Lars Wirzenius.
399
400- The StringIO.StringIO class now supports readline(nbytes). (Lars
401Wirzenius.) (Of course, you should be using cStringIO for performance.)
402
403- UserDict.py supports the new dictionary methods as well.
404
405- Improvements for whrandom.py by Tim Peters: use 32-bit arithmetic to
406speed it up, and replace 0 seed values by 1 to avoid degeneration.
407
Guido van Rossum2da391f1997-08-18 21:17:32 +0000408- Module ftplib.py: added support for parsing a .netrc file (Fred
409Drake). Also added an ntransfercmd() method to the FTP class, which
410allows access to the expected size of a transfer when available, and a
411parse150() function to the module which parses the corresponding 150
412response.
Guido van Rossum61000331997-08-15 04:39:58 +0000413
414- urllib.py: the ftp cache is now limited to 10 entries. Added
415quote_plus() method which is like qupte() but also replaces spaces
416with '+', for encoding CGI form arguments. Catch all errors from the
417ftp module. HTTP requests now add the Host: header line. The proxy
Guido van Rossum2da391f1997-08-18 21:17:32 +0000418variable names are now mapped to lower case, for Windows. The
419spliturl() function no longer erroneously throws away all data past
420the first newline. The basejoin() function now intereprets "../"
421correctly.
Guido van Rossum61000331997-08-15 04:39:58 +0000422
Guido van Rossum2da391f1997-08-18 21:17:32 +0000423- shelve.py: use cPickle and cStringIO when available. Also added
424a sync() method, which calls the database's sync() method if there is
425one.
Guido van Rossum61000331997-08-15 04:39:58 +0000426
427- The mimetools.py module now uses the available Python modules for
428decoding quoted-printable, uuencode and base64 formats, rather than
429creating a subprocess.
430
431- The python debugger (pdb.py, and its base class bdb.py) now support
432conditional breakpoints. See the docs.
433
434- The modules base64.py, uu.py and quopri.py can now be used as simple
435command line utilities.
436
437- Various small fixes to the nntplib.py module that I can't bother to
438document in detail.
439
440- There is a cache for results in urlparse.urlparse(); its size limit
441is set to 20 (not 2000 as it was in earlier alphas).
442
443- Sjoerd Mullender's mimify.py module now supports base64 encoding and
444includes functions to handle the funny encoding you sometimes see in mail
445headers. It is now documented.
446
Guido van Rossum2da391f1997-08-18 21:17:32 +0000447- mailbox.py: Added BabylMailbox. Improved the way the mailbox is
448gotten from the environment.
449
450- Many more modules now correctly open files in binary mode when this
451is necessary on non-Unix platforms.
452
453- The copying functions in the undocumented module shutil.py are
454smarter.
455
456- The Writer classes in the formatter.py module now have a flush()
457method.
458
459- The Python bytecode disassembler module, dis.py, has been enhanced
460quite a bit. There's now one main function, dis.dis(), which takes
461almost any kind of object (function, module, class, instance, method,
462code object) and disassembles it; without arguments it disassembles
463the last frame of the last traceback. The other functions have
464changed slightly, too.
465
466- The imghdr.py module recognizes new image types: BMP, PNG.
467
468- The string module has a new function replace(str, old, new,
469[maxsplit]) which does substring replacements. It is actually
470implemented in C in the strop module. The functions [r]find() an
471[r]index() have an optional 4th argument indicating the end of the
472substring to search, alsoo implemented by their strop counterparts.
473(Remember, never import strop -- import string uses strop when
474available with zero overhead.)
475
Guido van Rossum61000331997-08-15 04:39:58 +0000476
477Changes to the build process
478----------------------------
479
480- The way GNU readline is configured is totally different. The
481--with-readline configure option is gone. It is now an extension
482module, which may be loaded dynamically. You must enable it (and
483specify the correct linraries to link with) in the Modules/Setup file.
484Importing the module installs some hooks which enable command line
485editing. When the interpreter shell is invoked interactively, it
486attempts to import the readline module; when this fails, the default
487input mechanism is used. The hook variables are PyOS_InputHook and
488PyOS_ReadlineFunctionPointer. (Code contributed by Lee Busby, with
489ideas from William Magro.)
490
491- New build procedure: a single library, libpython1.5.a, is now built,
492which contains absolutely everything except for a one-line main()
493program (which calls Py_Main(argc, argv) to start the interpreter
494shell). This makes life much simpler for applications that need to
495embed Python. The serial number of the build is now included in the
496version string (sys.version).
497
498- As far as I can tell, neither gcc -Wall nor the Microsoft compiler
499emits a single warning any more when compiling Python.
500
501- A set of patches from Lee Busby has been integrated that make it
502possible to catch floating point exceptions. Use the configure option
503--with-fpectl to enable the patches; the extension modules fpectl and
504fpetest provide control to enable/disable and test the feature,
505respectively.
506
507- The support for shared libraries under AIX is now simpler and more
508robust. Thanks to Vladimir Marangozov for revamping his own patches!
509
510- The Modules/makesetup script now reads a file Setup.local as well as
511a file Setup. Most changes to the Setup script can be done by editing
512Setup.local instead, which makes it easier to carry a particular setup
513over from one release to the next.
514
515- The configure script is smarter about C compiler options; e.g. with
516gcc it uses -O2 and -g when possible, and on some other platforms it
517uses -Olimit 1500 to avoid a warning from the optimizer about the main
518loop in ceval.c (which has more than 1000 basic blocks).
519
520- The configure script now detects whether malloc(0) returns a NULL
521pointer or a valid block (of length zero). This avoids the nonsense
522of always adding one byte to all malloc() arguments on most platforms.
523
524
525Change to the Python/C API
526--------------------------
527
Guido van Rossum2da391f1997-08-18 21:17:32 +0000528- I've completed the Grand Renaming, with the help of Roger Masse and
529Barry Warsaw. This makes reading or debugging the code much easier.
530Many other unrelated code reorganizations have also been carried out.
531The allobjects.h header file is gone; instead, you would have to
532include Python.h followed by rename2.h. But you're better off running
533Tools/scripts/fixcid.py -s Misc/RENAME on your source, so you can omit
534the rename2.h; it will disappear in the next release.
535
536- The API functions in the file cgensupport.c are no longer
537supported. This file has been moved to Modules and is only ever
538compiled when the SGI specific 'gl' module is built.
Guido van Rossum61000331997-08-15 04:39:58 +0000539
540- PyObject_Compare() can now raise an exception. Check with
541PyErr_Occurred(). The comparison function in an object type may also
542raise an exception.
543
544- The slice interface uses an upper bound of INT_MAX when no explicit
545upper bound is given (e.x. for a[1:]). It used to ask the object for
546its length and do the calculations.
547
548- Support for multiple independent interpreters. See Doc/api.tex,
549functions Py_NewInterpreter() and Py_EndInterpreter(). Since the
550documentation is incomplete, also see the new Demo/pysvr example
551(which shows how to use these in a threaded application) and the
552source code.
553
554- There is now a Py_Finalize() function which "de-initializes"
555Python. It is possible to completely restart the interpreter
556repeatedly by calling Py_Finalize() followed by Py_Initialize(). A
557change of functionality in Py_Initialize() means that it is now a
558fatal error to call it while the interpreter is already initialized.
559The old, half-hearted Py_Cleanup() routine is gone. Use of Py_Exit()
560is deprecated (it is nothing more than Py_Finalize() followed by
561exit()).
562
Guido van Rossum2da391f1997-08-18 21:17:32 +0000563- There are no known memory leaks left. While Py_Finalize() doesn't
564free *all* allocated memory (some of it is hard to track down),
565repeated calls to Py_Finalize() and Py_Initialize() do not create
566unaccessible heap blocks.
Guido van Rossum61000331997-08-15 04:39:58 +0000567
568- There is now explicit per-thread state. (Inspired by, but not the
569same as, Greg Stein's free threading patches.)
570
571- There is now better support for threading C applications. There are
572now explicit APIs to manipulate the interpreter lock. Read the source
573or the Demo/pysvr example; the new functions are
574PyEval_{Acquire,Release}{Lock,Thread}().
575
576- New wrappers around malloc() and friends: Py_Malloc() etc. call
577malloc() and call PyErr_NoMemory() when it fails; PyMem_Malloc() call
578just malloc(). Use of these wrappers could be essential if multiple
579memory allocators exist (e.g. when using certain DLL setups under
580Windows). (Idea by Jim Fulton.)
581
582- New C API PyImport_Import() which uses whatever __import__() hook
583that is installed for the current execution environment. By Jim
584Fulton.
585
586- It is now possible for an extension module's init function to fail
587non-fatally, by calling one of the PyErr_* functions and returning.
588
589- The PyInt_AS_LONG() and PyFloat_AS_DOUBLE() macros now cast their
590argument to the proper type, like the similar PyString macros already
591did. (Suggestion by Marc-Andre Lemburg.)
592
593- Some of the Py_Get* function, like Py_GetVersion() (but not yet
594Py_GetPath()) are now declared as returning a const char *. (More
595should follow.)
596
597- Changed the run-time library to check for exceptions after object
598comparisons. PyObject_Compare() can now return an exception; use
599PyErr_Occurred() to check (there is *no* special return value).
600
601- PyFile_WriteString() and Py_Flushline() now return error indicators
602instead of clearing exceptions. This fixes an obscure bug where using
603these would clear a pending exception, discovered by Just van Rossum.
604
Guido van Rossum2da391f1997-08-18 21:17:32 +0000605- PyArg_GetInt() is gone.
606
607- It's no longer necessary to include graminit.h when calling one of
608the extended parser API functions. The three public grammar start
609symbols are now in Python.h as Py_single_input, Py_file_input, and
610Py_eval_input.
611
Guido van Rossum61000331997-08-15 04:39:58 +0000612
613Tkinter
614-------
615
Guido van Rossum2da391f1997-08-18 21:17:32 +0000616- On popular demand, _tkinter once again installs a hook for readline
617that processes certain Tk events while waiting for the user to type
618(using PyOS_InputHook).
619
620- A patch by Craig McPheeters plugs the most obnoxious memory leaks,
621caused by command definitions referencing widget objects beyond their
622lifetime.
623
624- New standard dialog modules: tkColorChooser.py, tkCommonDialog.py,
625tkMessageBox.py, tkFileDialog.py, tkSimpleDialog.py These interface
626with the new Tk dialog scripts. Contributed by Fredrik Lundh.
Guido van Rossum61000331997-08-15 04:39:58 +0000627
628- Tkinter.py: when the first Tk object is destroyed, it sets the
629hiddel global _default_root to None, so that when another Tk object is
630created it becomes the new default root. Other miscellaneous
631changes and fixes.
632
633- The _tkinter.c extension module has been revamped. It now support
634Tk versions 4.1 through 8.0; support for 4.0 has been dropped. It
635works well under Windows and Mac (with the latest Tk ports to those
636platforms). It also supports threading -- it is safe for one
637(Python-created) thread to be blocked in _tkinter.mainloop() while
638other threads modify widgets. (To make the changes visible, those
639threads must use update_idletasks()method.) Unfortunately, on Windows
640and Mac, Tk 8.0 no longer supports CreateFileHandler, so
641_tkinter.createfilehandler is not available on those platforms. I
642will have to rethink how to interface with Tcl's lower-level event
643mechanism, or with its channels (which are like Python's file-like
644objects).
645
646
647Tools and Demos
648---------------
649
650- A new regression test suite is provided, which tests most of the
651standard and built-in modules. The regression test is run by invoking
652the script Lib/test/regrtest.py. Barry Warsaw wrote the test harnass;
653he and Roger Masse contributed most of the new tests.
654
655- New tool: faqwiz -- the CGI script that is used to maintain the
656Python FAQ (http://grail.cnri.reston.va.us/cgi-bin/faqw.py). In
657Tools/faqwiz.
658
659- New tool: webchecker -- a simple extensible web robot that, when
660aimed at a web server, checks that server for dead links. Available
661are a command line utility as well as a Tkinter based GUI version. In
662Tools/webchecker. A simplified version of this program is dissected
663in my article in O'Reilly's WWW Journal, the issue on Scripting
664Languages (Vol 2, No 2); Scripting the Web with Python (pp 97-120).
665Includes a parser for robots.txt files by Skip Montanaro.
666
667- New small tools: cvsfiles.py (prints a list of all files under CVS
668in a particular directory tree), treesync.py (a rather Guido-specific
669script to synchronize two source trees, one on Windows NT, the other
670one on Unix under CVS but accessible from the NT box), and logmerge.py
671(sort a collection of RCS or CVS logs by date). In Tools/scripts.
672
673- The freeze script now also works under Windows (NT). Another
674feature allows the -p option to be pointed at the Python source tree
675instead of the installation prefix. This was loosely based on part of
676xfreeze by Sam Rushing and Bill Tutt.
677
678- New examples (Demo/extend) that show how to use the generic
679extension makefile (Misc/Makefile.pre.in).
680
681- Tools/scripts/h2py.py now supports C++ comments.
682
Guido van Rossum2da391f1997-08-18 21:17:32 +0000683- Tools/scripts/pystone.py script is upgraded to version 1.1; there
684was a bug in version 1.0 (distributed with Python 1.4) that leaked
685memory. Also, in 1.1, the LOOPS variable is incremented to 10000.
686
687- Demo/classes/Rat.py completely rewritten by Sjoerd Mullender.
Guido van Rossum61000331997-08-15 04:39:58 +0000688
689
690Windows (NT and 95)
691-------------------
692
693- New project files for Developer Studio (Visual C++) 5.0 for Windows
694NT (the old VC++ 4.2 Makefile is also still supported, but will
695eventually be withdrawn due to its bulkiness).
696
697- See the note on the new module search path in the "Miscellaneous" section
698above.
699
700- Support for Win32s (the 32-bit Windows API under Windows 3.1) is
701basically withdrawn. If it still works for you, you're lucky.
702
703- There's a new extension module, msvcrt.c, which provides various
704low-level operations defined in the Microsoft Visual C++ Runtime Library.
705These include locking(), setmode(), get_osfhandle(), set_osfhandle(), and
706console I/O functions like kbhit(), getch() and putch().
707
708- The -u option not only sets the standard I/O streams to unbuffered
709status, but also sets them in binary mode.
710
711- The, sys.prefix and sys.exec_prefix variables point to the directory
712where Python is installed, or to the top of the source tree, if it was run
713from there.
714
715- The ntpath module (normally used as os.path) supports ~ to $HOME
716expansion in expanduser().
717
718- The freeze tool now works on Windows.
719
Guido van Rossum2da391f1997-08-18 21:17:32 +0000720- See also the Tkinter category for a sad note on
721_tkinter.createfilehandler().
722
723- The truncate() method for file objects now works on Windows.
724
725- Py_Initialize() is no longer called when the DLL is loaded. You
726must call it yourself. (And you can't call it twice -- it's a fatal
727error to call it when Python is already initialized.)
Guido van Rossum61000331997-08-15 04:39:58 +0000728
729
730Mac
731---
732
Guido van Rossum2da391f1997-08-18 21:17:32 +0000733- As always, the Macintosh port will be done by Jack Jansen. He will
734make a separate announcement for the Mac specific source code and the
735binary distribution(s) when these are ready.
Guido van Rossum61000331997-08-15 04:39:58 +0000736
737
Guido van Rossum2da391f1997-08-18 21:17:32 +0000738Fixed after 1.5a3 was released
739------------------------------
Guido van Rossum61000331997-08-15 04:39:58 +0000740
Guido van Rossum2da391f1997-08-18 21:17:32 +0000741The following changes have been made to the source base after the
742release of 1.5a3. These need to be merged into their respective
743categories for the next release.
Guido van Rossumf0b69f01997-08-15 02:50:47 +0000744
Guido van Rossum522578e1997-08-28 03:43:21 +0000745- faqwiz.py: version 0.8; Recognize https:// as URL; <html>...</html>
746feature; better install instructions; removed faqmain.py (which was an
747older version).
748
749- nntplib.py: Fixed some bugs reported by Lars Wirzenius (to Debian)
750about the treatment of lines starting with '.'. Added a minimal test
751function.
752
753- struct module: ignore most whitespace in format strings.
754
755- urllib.py: close the socket and temp file in URLopener.retrieve() so
756that multiple retrievals using the same connection work.
757
758- Three new C API functions:
759
760 - int PyErr_GivenExceptionMatches(obj1, obj2)
761
762 Returns 1 if obj1 and obj2 are the same object, or if obj1 is an
763 instance of type obj2, or of a class derived from obj2
764
765 - int PyErr_ExceptionMatches(obj)
766
767 Higher level wrapper around PyErr_GivenExceptionMatches() which uses
768 PyErr_Occurred() as obj1. This will be the more commonly called
769 function.
770
771 - void PyErr_NormalizeException(typeptr, valptr, tbptr)
772
773 Normalizes exceptions, and places the normalized values in the
774 arguments. If type is not a class, this does nothing. If type is a
775 class, then it makes sure that value is an instance of the class by:
776
777 1. if instance is of the type, or a class derived from type, it does
778 nothing.
779
780 2. otherwise it instantiates the class, using the value as an
781 argument. If value is None, it uses an empty arg tuple, and if
782 the value is a tuple, it uses just that.
783
784- Demo/metaclasses: new demo subdir explains metaclasses (read
785index.html in a browser).
786
787- core interpreter: remove the distinction between tuple and list
788unpacking; allow an arbitrary sequence on the right hand side of any
789unpack instruction. (UNPACK_LIST and UNPACK_TUPLE now do the same
790thing, which should really be called UNPACK_SEQUENCE.)
791
792- classes: Allow assignments to an instance's __dict__ or __class__,
793so you can change ivars (including shared ivars -- shock horror) and
794change classes dynamically. Also make the check on read-only
795attributes of classes less draconic -- only the specials names
796__dict__, __bases__, __name__ and __{get,set,del}attr__ can't be
797assigned.
798
799- Two new built-in functions: issubclass() and isinstance(). Both
800take classes as their second arguments. The former takes a class as
801the first argument and returns true iff first is second, or is a
802subclass of second. The latter takes any object as the first argument
803and returns true iff first is an instance of the second, or any
804subclass of second.
805
806- configure: Added configuration tests for presence of alarm(),
807pause(), and getpwent().
808
809- Doc/Makefile: changed latex2html targets.
810
811- classes: Reverse the search order for the Don Beaudry hook so that
812the first class with an applicable hook wins. Makes more sense.
813
814- Changed the checks made in Py_Initialize() and Py_Finalize(). It is
815now legal to call these more than once. The first call to
816Py_Initialize() initializes, the first call to Py_Finalize()
817finalizes. There's also a new API, Py_IsInitalized() which checks
818whether we are already initialized (in case you want to leave things
819as they were).
820
821- Completely disable the declarations for malloc(), realloc() and
822free(). Any 90's C compiler has these in header files, and the tests
823to decide whether to suppress the declarations kept failing on some
824platforms.
825
826- *Before* (instead of after) signalmodule.o is added, remove both
827intrcheck.o and sigcheck.o. This should get rid of warnings in ar or
828ld on various systems.
829
830- Added reop to PC/config.c
831
832- configure: Decided to use -Aa -D_HPUX_SOURCE on HP-UX platforms.
833Removed outdated HP-UX comments from README. Added Cray T3E comments.
834
835- Various renames of statically defined functions that had name
836conflicts on some systems, e.g. strndup (GNU libc), join (Cray),
837roundup (sys/types.h).
838
839- urllib.py: Interpret three slashes in file: URL as local file (for
840Netscape on Windows/Mac).
841
842- copy.py: Make sure the objects returned by __getinitargs__() are
843kept alive (in the memo) to avoid a certain kind of nasty crash. (Not
844easily reproducable because it requires a later call to
845__getinitargs__() to return a tuple that happens to be allocated at
846the same address.)
847
848- Added definition of AR to toplevel Makefile. Renamed @buildno temp
849file to buildno1.
850
851- Moved Include/assert.h to Parser/assert.h, which seems to be the
852only place where it's needed.
853
854- Alas, the thread support for _tkinter didn't work. Withdrew it.
855
856- Tweaked the dictionary lookup code again for some more speed
857(Vladimir Marangozov).
858
859- NT build: Changed the way python15.lib is included in the other
860projects. Per Mark Hammond's suggestion, add it to the extra libs in
861Settings instead of to the project's source files.
862
863- regrtest.py: Change default verbosity so that there are only three
864levels left: -q, default and -v. In default mode, the name of each
865test is now printed. -v is the same as the old -vv. -q is more quiet
866than the old default mode.
867
868- Removed the old FAQ from the distribution. You now have to get it
869from the web!
870
871- Removed the PC/make_nt.in file from the distribution; it is no
872longer needed.
873
874- Changed the build sequence so that shared modules are built last.
875This fixes things for AIX and doesn't hurt elsewhere.
876
877- Improved test for GNU MP v1 in mpzmodule.c
Guido van Rossumf0b69f01997-08-15 02:50:47 +0000878
Guido van Rossum2da391f1997-08-18 21:17:32 +0000879- fileobject.c: ftell() on Linux discards all buffered data; changed
Guido van Rossum522578e1997-08-28 03:43:21 +0000880read() code to use lseek() instead to get the same effect
Guido van Rossumf0b69f01997-08-15 02:50:47 +0000881
Guido van Rossum2da391f1997-08-18 21:17:32 +0000882- configure.in, configure, importdl.c: NeXT sharedlib fixes
Guido van Rossumf0b69f01997-08-15 02:50:47 +0000883
Guido van Rossum2da391f1997-08-18 21:17:32 +0000884- tupleobject.c: PyTuple_SetItem asserts refcnt==1
Guido van Rossumf0b69f01997-08-15 02:50:47 +0000885
Guido van Rossum522578e1997-08-28 03:43:21 +0000886- resource.c: Different strategy regarding whether to declare
887getrusage() and getpagesize() -- #ifdef doesn't work, Linux has
888conflicting decls in its headers. Choice: only declare the return
889type, not the argument prototype, and not on Linux.
Guido van Rossumf0b69f01997-08-15 02:50:47 +0000890
Guido van Rossum2da391f1997-08-18 21:17:32 +0000891- importdl.c, configure*: set sharedlib extensions properly for NeXT
Guido van Rossumf0b69f01997-08-15 02:50:47 +0000892
Guido van Rossum2da391f1997-08-18 21:17:32 +0000893- configure*, Makefile.in, Modules/Makefile.pre.in: AIX shared libraries
894fixed; moved addition of PURIFY to LINKCC to configure
Guido van Rossumf0b69f01997-08-15 02:50:47 +0000895
Guido van Rossum522578e1997-08-28 03:43:21 +0000896- reopmodule.c, regexmodule.c, regexpr.c, zlibmodule.c: needed casts
897added to shup up various compilers.
Guido van Rossumf0b69f01997-08-15 02:50:47 +0000898
Guido van Rossum2da391f1997-08-18 21:17:32 +0000899- _tkinter.c: removed buggy mac #ifndef
Guido van Rossumf0b69f01997-08-15 02:50:47 +0000900
Guido van Rossum2da391f1997-08-18 21:17:32 +0000901- Doc: various Mac documentation changes, added docs for 'ic' module
Guido van Rossumf0b69f01997-08-15 02:50:47 +0000902
Guido van Rossum2da391f1997-08-18 21:17:32 +0000903- PC/make_nt.in: deleted
Guido van Rossumf0b69f01997-08-15 02:50:47 +0000904
Guido van Rossum522578e1997-08-28 03:43:21 +0000905- test_time.py, test_strftime.py: tweaks to catch %Z (which may return
906"")
Guido van Rossumf0b69f01997-08-15 02:50:47 +0000907
Guido van Rossum2da391f1997-08-18 21:17:32 +0000908- test_rotor.py: print b -> print `b`
Guido van Rossumf0b69f01997-08-15 02:50:47 +0000909
Guido van Rossum2da391f1997-08-18 21:17:32 +0000910- Tkinter.py: (tagOrId) -> (tagOrId,)