================================ ==> Release 1.1 (6 Oct 1994) <== ================================ This release adds several new features, improved configuration and portability, and more fixed bugs than I can list here (including some memory leaks). The source compiles and runs out of the box on more platforms than ever -- including Windows NT. Makefiles or projects for a variety of non-UNIX platforms are provided. Apology: many new features are badly documented or not at all. I had the choice -- postpone the new release indefinitely, or release it now, with working code but some undocumented areas... New language features: - More flexible operator overloading for user-defined classes (INCOMPATIBLE WITH PREVIOUS VERSIONS!) See end of tutorial. - Classes can define methods named __getattr__, __setattr__ and __delattr__ to trap attribute accesses. See end of tutorial. - Classes can define method __call__ so instances can be called directly. See end of tutorial. New support facilities: - The Makefiles (for the base interpreter as well as for extensions) now support creating dynamically loadable modules if the platform supports shared libraries. - Passing the interpreter a .pyc file as script argument will execute the code in that file. (On the Mac such files can be double-clicked!) - New Freeze script, to create independently distributable "binaries" of Python programs -- look in Demo/freeze - Improved h2py script (in Demo/scripts) follows #includes and supports macros with one argument - New module compileall generates .pyc files for all modules in a directory (tree) without also executing them - Threads should work on more platforms New built-in modules: - tkinter (support for Tcl's Tk widget set) is now part of the base distribution - signal allows catching or ignoring UNIX signals (unfortunately still undocumented -- any taker?) - termios provides portable access to POSIX tty settings - curses provides an interface to the System V curses library - syslog provides an interface to the (BSD?) syslog daemon - 'new' provides interfaces to create new built-in object types (e.g. modules and functions) - sybase provides an interface to SYBASE database New/obsolete built-in methods: - callable(x) tests whether x can be called - sockets now have a setblocking() method - sockets no longer have an allowbroadcast() method - socket methods send() and sendto() return byte count New standard library modules: - types.py defines standard names for built-in types, e.g. StringType - urlparse.py parses URLs according to the latest Internet draft - uu.py does uuencode/uudecode (not the fastest in the world, but quicker than installing uuencode on a non-UNIX machine :-) - New, faster and more powerful profile module.py - mhlib.py provides interface to MH folders and messages New facilities for extension writers (unfortunately still undocumented): - newgetargs() supports optional arguments and improved error messages - O!, O& O? formats for getargs allow more versatile type checking of non-standard types - can register pending asynchronous callback, to be called the next time the Python VM begins a new instruction (Py_AddPendingCall) - can register cleanup routines to be called when Python exits (Py_AtExit) - makesetup script understands C++ files in Setup file (use file.C or file.cc) - Make variable OPT is passed on to sub-Makefiles - An init() routine may signal an error by not entering the module in the module table and raising an exception instead - For long module names, instead of foobarbletchmodule.c you can use foobarbletch.c - getintvalue() and getfloatvalue() try to convert any object instead of requiring an "intobject" or "floatobject" - All the [new]getargs() formats that retrieve an integer value will now also work if a float is passed - C function listtuple() converts list to tuple, fast - You should now call sigcheck() instead of intrcheck(); sigcheck() also sets an exception when it returns nonzero --Guido van Rossum, CWI, Amsterdam URL: