Guido van Rossum | 8c97365 | 1994-07-14 13:57:11 +0000 | [diff] [blame] | 1 | ==================================== |
| 2 | ==> Release 1.0.3 (14 July 1994) <== |
| 3 | ==================================== |
| 4 | |
| 5 | This release consists entirely of bug fixes to the C sources; see the |
| 6 | head of ../ChangeLog for a complete list. Most important bugs fixed: |
| 7 | |
| 8 | - Sometimes the format operator (string%expr) would drop the last |
| 9 | character of the format string |
| 10 | |
| 11 | - Tokenizer looped when last line did not end in \n |
| 12 | |
| 13 | - Bug when triple-quoted string ended in quote plus newline |
| 14 | |
| 15 | - Typo in socketmodule (listen) (== instead of =) |
| 16 | |
| 17 | - typing vars() at the >>> prompt would cause recursive output |
| 18 | |
Guido van Rossum | 5c74304 | 1994-05-04 13:10:17 +0000 | [diff] [blame] | 19 | ================================== |
| 20 | ==> Release 1.0.2 (4 May 1994) <== |
| 21 | ================================== |
| 22 | |
| 23 | Overview of the most visible changes. Bug fixes are not listed. See |
| 24 | also ChangeLog. |
| 25 | |
| 26 | Tokens |
| 27 | ------ |
| 28 | |
| 29 | * String literals follow Standard C rules: they may be continued on |
| 30 | the next line using a backslash; adjacent literals are concatenated |
| 31 | at compile time. |
| 32 | |
| 33 | * A new kind of string literals, surrounded by triple quotes (""" or |
| 34 | '''), can be continued on the next line without a backslash. |
| 35 | |
| 36 | Syntax |
| 37 | ------ |
| 38 | |
| 39 | * Function arguments may have a default value, e.g. def f(a, b=1); |
| 40 | defaults are evaluated at function definition time. This also applies |
| 41 | to lambda. |
| 42 | |
| 43 | * The try-except statement has an optional else clause, which is |
| 44 | executed when no exception occurs in the try clause. |
| 45 | |
| 46 | Interpreter |
| 47 | ----------- |
| 48 | |
| 49 | * The result of a statement-level expression is no longer printed, |
| 50 | except_ for expressions entered interactively. Consequently, the -k |
| 51 | command line option is gone. |
| 52 | |
| 53 | * The result of the last printed interactive expression is assigned to |
| 54 | the variable '_'. |
| 55 | |
| 56 | * Access to implicit global variables has been speeded up by removing |
| 57 | an always-failing dictionary lookup in the dictionary of local |
| 58 | variables (mod suggested by Steve Makewski and Tim Peters). |
| 59 | |
| 60 | * There is a new command line option, -u, to force stdout and stderr |
| 61 | to be unbuffered. |
| 62 | |
| 63 | * Incorporated Steve Majewski's mods to import.c for dynamic loading |
| 64 | under AIX. |
| 65 | |
| 66 | * Fewer chances of dumping core when trying to reload or re-import |
| 67 | static built-in, dynamically loaded built-in, or frozen modules. |
| 68 | |
| 69 | * Loops over sequences now don't ask for the sequence's length when |
| 70 | they start, but try to access items 0, 1, 2, and so on until they hit |
| 71 | an IndexError. This makes it possible to create classes that generate |
| 72 | infinite or indefinite sequences a la Steve Majewski. This affects |
| 73 | for loops, the (not) in operator, and the built-in functions filter(), |
| 74 | map(), max(), min(), reduce(). |
| 75 | |
| 76 | Changed Built-in operations |
| 77 | --------------------------- |
| 78 | |
| 79 | * The '%' operator on strings (printf-style formatting) supports a new |
| 80 | feature (adapted from a patch by Donald Beaudry) to allow |
| 81 | '%(<key>)<format>' % {...} to take values from a dictionary by name |
| 82 | instead of from a tuple by position (see also the new function |
| 83 | vars()). |
| 84 | |
| 85 | * The '%s' formatting operator is changed to accept any type and |
| 86 | convert it to a string using str(). |
| 87 | |
| 88 | * Dictionaries with more than 20,000 entries can now be created |
| 89 | (thanks to Steve Kirsch). |
| 90 | |
| 91 | New Built-in Functions |
| 92 | ---------------------- |
| 93 | |
| 94 | * vars() returns a dictionary containing the local variables; vars(m) |
| 95 | returns a dictionary containing the variables of module m. Note: |
| 96 | dir(x) is now equivalent to vars(x).keys(). |
| 97 | |
| 98 | Changed Built-in Functions |
| 99 | -------------------------- |
| 100 | |
| 101 | * open() has an optional third argument to specify the buffer size: 0 |
| 102 | for unbuffered, 1 for line buffered, >1 for explicit buffer size, <0 |
| 103 | for default. |
| 104 | |
| 105 | * open()'s second argument is now optional; it defaults to "r". |
| 106 | |
| 107 | * apply() now checks that its second argument is indeed a tuple. |
| 108 | |
| 109 | New Built-in Modules |
| 110 | -------------------- |
| 111 | |
| 112 | Changed Built-in Modules |
| 113 | ------------------------ |
| 114 | |
| 115 | The thread module no longer supports exit_prog(). |
| 116 | |
| 117 | New Python Modules |
| 118 | ------------------ |
| 119 | |
| 120 | * Module addpack contains a standard interface to modify sys.path to |
| 121 | find optional packages (groups of related modules). |
| 122 | |
| 123 | * Module urllib contains a number of functions to access |
| 124 | World-Wide-Web files specified by their URL. |
| 125 | |
| 126 | * Module httplib implements the client side of the HTTP protocol used |
| 127 | by World-Wide-Web servers. |
| 128 | |
| 129 | * Module gopherlib implements the client side of the Gopher protocol. |
| 130 | |
| 131 | * Module mailbox (by Jack Jansen) contains a parser for UNIX and MMDF |
| 132 | style mailbox files. |
| 133 | |
| 134 | * Module random contains various random distributions, e.g. gauss(). |
| 135 | |
| 136 | * Module lockfile locks and unlocks open files using fcntl (inspired |
| 137 | by a similar module by Andy Bensky). |
| 138 | |
| 139 | * Module ntpath (by Jaap Vermeulen) implements path operations for |
| 140 | Windows/NT. |
| 141 | |
| 142 | * Module test_thread (in Lib/test) contains a small test set for the |
| 143 | thread module. |
| 144 | |
| 145 | Changed Python Modules |
| 146 | ---------------------- |
| 147 | |
| 148 | * The string module's expandvars() function is now documented and is |
| 149 | implemented in Python (using regular expressions) instead of forking |
| 150 | off a shell process. |
| 151 | |
| 152 | * Module rfc822 now supports accessing the header fields using the |
| 153 | mapping/dictionary interface, e.g. h['subject']. |
| 154 | |
| 155 | * Module pdb now makes it possible to set a break on a function |
| 156 | (syntax: break <expression>, where <expression> yields a function |
| 157 | object). |
| 158 | |
| 159 | Changed Demos |
| 160 | ------------- |
| 161 | |
| 162 | * The Demo/scripts/freeze.py script is working again (thanks to Jaap |
| 163 | Vermeulen). |
| 164 | |
| 165 | New Demos |
| 166 | --------- |
| 167 | |
| 168 | * Demo/threads/Generator.py is a proposed interface for restartable |
| 169 | functions a la Tim Peters. |
| 170 | |
| 171 | * Demo/scripts/newslist.py, by Quentin Stafford-Fraser, generates a |
| 172 | directory full of HTML pages which between them contain links to all |
| 173 | the newsgroups available on your server. |
| 174 | |
| 175 | * Demo/dns contains a DNS (Domain Name Server) client. |
| 176 | |
| 177 | * Demo/lutz contains miscellaneous demos by Mark Lutz (e.g. psh.py, a |
| 178 | nice enhanced Python shell!!!). |
| 179 | |
| 180 | * Demo/turing contains a Turing machine by Amrit Prem. |
| 181 | |
| 182 | Documentation |
| 183 | ------------- |
| 184 | |
| 185 | * Documented new language features mentioned above (but not all new |
| 186 | modules). |
| 187 | |
| 188 | * Added a chapter to the Tutorial describing recent additions to |
| 189 | Python. |
| 190 | |
| 191 | * Clarified some sentences in the reference manual, |
| 192 | e.g. break/continue, local/global scope, slice assignment. |
| 193 | |
| 194 | Source Structure |
| 195 | ---------------- |
| 196 | |
| 197 | * Moved Include/tokenizer.h to Parser/tokenizer.h. |
| 198 | |
| 199 | * Added Python/getopt.c for systems that don't have it. |
| 200 | |
| 201 | Emacs mode |
| 202 | ---------- |
| 203 | |
| 204 | * Indentation of continuated lines is done more intelligently; |
| 205 | consequently the variable py-continuation-offset is gone. |
| 206 | |
Guido van Rossum | 617536e | 1994-04-14 13:01:54 +0000 | [diff] [blame] | 207 | ======================================== |
| 208 | ==> Release 1.0.1 (15 February 1994) <== |
| 209 | ======================================== |
| 210 | |
| 211 | * Many portability fixes should make it painless to build Python on |
| 212 | several new platforms, e.g. NeXT, SEQUENT, WATCOM, DOS, and Windows. |
| 213 | |
| 214 | * Fixed test for <stdarg.h> -- this broke on some platforms. |
| 215 | |
| 216 | * Fixed test for shared library dynalic loading -- this broke on SunOS |
| 217 | 4.x using the GNU loader. |
| 218 | |
| 219 | * Changed order and number of SVR4 networking libraries (it is now |
| 220 | -lsocket -linet -lnsl, if these libraries exist). |
| 221 | |
| 222 | * Installing the build intermediate stages with "make libainstall" now |
| 223 | also installs config.c.in, Setup and makesetup, which are used by the |
| 224 | new Extensions mechanism. |
| 225 | |
| 226 | * Improved README file contains more hints and new troubleshooting |
| 227 | section. |
| 228 | |
| 229 | * The built-in module strop now defines fast versions of three more |
| 230 | functions of the standard string module: atoi(), atol() and atof(). |
| 231 | The strop versions of atoi() and atol() support an optional second |
| 232 | argument to specify the base (default 10). NOTE: you don't have to |
| 233 | explicitly import strop to use the faster versions -- the string |
| 234 | module contains code to let versions from stop override the default |
| 235 | versions. |
| 236 | |
| 237 | * There is now a working Lib/dospath.py for those who use Python under |
| 238 | DOS (or Windows). Thanks, Jaap! |
| 239 | |
| 240 | * There is now a working Modules/dosmodule.c for DOS (or Windows) |
| 241 | system calls. |
| 242 | |
| 243 | * Lib.os.py has been reorganized (making it ready for more operating |
| 244 | systems). |
| 245 | |
| 246 | * Lib/ospath.py is now obsolete (use os.path instead). |
| 247 | |
| 248 | * Many fixes to the tutorial to make it match Python 1.0. Thanks, |
| 249 | Tim! |
| 250 | |
| 251 | * Fixed Doc/Makefile, Doc/README and various scripts there. |
| 252 | |
| 253 | * Added missing description of fdopen to Doc/libposix.tex. |
| 254 | |
| 255 | * Made cleanup() global, for the benefit of embedded applications. |
| 256 | |
| 257 | * Added parsing of addresses and dates to Lib/rfc822.py. |
| 258 | |
| 259 | * Small fixes to Lib/aifc.py, Lib/sunau.py, Lib/tzparse.py to make |
| 260 | them usable at all. |
| 261 | |
| 262 | * New module Lib/wave.py reads RIFF (*.wav) audio files. |
| 263 | |
| 264 | * Module Lib/filewin.py moved to Lib/stdwin/filewin.py where it |
| 265 | belongs. |
| 266 | |
| 267 | * New options and comments for Modules/makesetup (used by new |
| 268 | Extension mechanism). |
| 269 | |
| 270 | * Misc/HYPE contains text of announcement of 1.0.0 in comp.lang.misc |
| 271 | and elsewhere. |
| 272 | |
| 273 | * Fixed coredump in filter(None, 'abcdefg'). |
| 274 | |
| 275 | |
Guido van Rossum | a85d053 | 1994-01-26 17:24:14 +0000 | [diff] [blame] | 276 | ======================================= |
| 277 | ==> Release 1.0.0 (26 January 1994) <== |
| 278 | ======================================= |
| 279 | |
| 280 | As is traditional, so many things have changed that I can't pretend to |
| 281 | be complete in these release notes, but I'll try anyway :-) |
| 282 | |
| 283 | Note that the very last section is labeled "remaining bugs". |
| 284 | |
| 285 | |
| 286 | Source organization and build process |
| 287 | ------------------------------------- |
| 288 | |
| 289 | * The sources have finally been split: instead of a single src |
| 290 | subdirectory there are now separate directories Include, Parser, |
| 291 | Grammar, Objects, Python and Modules. Other directories also start |
| 292 | with a capital letter: Misc, Doc, Lib, Demo. |
| 293 | |
| 294 | * A few extensions (notably Amoeba and X support) have been moved to a |
| 295 | separate subtree Extensions, which is no longer in the core |
| 296 | distribution, but separately ftp'able as extensions.tar.Z. (The |
| 297 | distribution contains a placeholder Ext-dummy with a description of |
| 298 | the Extensions subtree as well as the most recent versions of the |
| 299 | scripts used there.) |
| 300 | |
| 301 | * A few large specialized demos (SGI video and www) have been |
| 302 | moved to a separate subdirectory Demo2, which is no longer in the core |
| 303 | distribution, but separately ftp'able as demo2.tar.Z. |
| 304 | |
| 305 | * Parts of the standard library have been moved to subdirectories: |
| 306 | there are now standard subdirectories stdwin, test, sgi and sun4. |
| 307 | |
| 308 | * The configuration process has radically changed: I now use GNU |
| 309 | autoconf. This makes it much easier to build on new Unix flavors, as |
| 310 | well as fully supporting VPATH (if your Make has it). The scripts |
| 311 | Configure.py and Addmodule.sh are no longer needed. Many source files |
| 312 | have been adapted in order to work with the symbols that the configure |
| 313 | script generated by autoconf defines (or not); the resulting source is |
| 314 | much more portable to different C compilers and operating systems, |
| 315 | even non Unix systems (a Mac port was done in an afternoon). See the |
| 316 | toplevel README file for a description of the new build process. |
| 317 | |
| 318 | * GNU readline (a slightly newer version) is now a subdirectory of the |
| 319 | Python toplevel. It is still not automatically configured (being |
| 320 | totally autoconf-unaware :-). One problem has been solved: typing |
| 321 | Control-C to a readline prompt will now work. The distribution no |
| 322 | longer contains a "super-level" directory (above the python toplevel |
| 323 | directory), and dl, dl-dld and GNU dld are no longer part of the |
| 324 | Python distribution (you can still ftp them from |
| 325 | ftp.cwi.nl:/pub/dynload). |
| 326 | |
| 327 | * The DOS functions have been taken out of posixmodule.c and moved |
| 328 | into a separate file dosmodule.c. |
| 329 | |
| 330 | * There's now a separate file version.c which contains nothing but |
| 331 | the version number. |
| 332 | |
| 333 | * The actual main program is now contained in config.c (unless NO_MAIN |
| 334 | is defined); pythonmain.c now contains a function realmain() which is |
| 335 | called from config.c's main(). |
| 336 | |
| 337 | * All files needed to use the built-in module md5 are now contained in |
| 338 | the distribution. The module has been cleaned up considerably. |
| 339 | |
| 340 | |
| 341 | Documentation |
| 342 | ------------- |
| 343 | |
| 344 | * The library manual has been split into many more small latex files, |
| 345 | so it is easier to edit Doc/lib.tex file to create a custom library |
| 346 | manual, describing only those modules supported on your system. (This |
| 347 | is not automated though.) |
| 348 | |
| 349 | * A fourth manual has been added, titled "Extending and Embedding the |
| 350 | Python Interpreter" (Doc/ext.tex), which collects information about |
| 351 | the interpreter which was previously spread over several files in the |
| 352 | misc subdirectory. |
| 353 | |
| 354 | * The entire documentation is now also available on-line for those who |
| 355 | have a WWW browser (e.g. NCSA Mosaic). Point your browser to the URL |
| 356 | "http://www.cwi.nl/~guido/Python.html". |
| 357 | |
| 358 | |
| 359 | Syntax |
| 360 | ------ |
| 361 | |
| 362 | * Strings may now be enclosed in double quotes as well as in single |
| 363 | quotes. There is no difference in interpretation. The repr() of |
| 364 | string objects will use double quotes if the string contains a single |
Guido van Rossum | 5125908 | 1994-01-26 18:20:06 +0000 | [diff] [blame] | 365 | quote and no double quotes. Thanks to Amrit Prem for these changes! |
Guido van Rossum | a85d053 | 1994-01-26 17:24:14 +0000 | [diff] [blame] | 366 | |
| 367 | * There is a new keyword 'exec'. This replaces the exec() built-in |
| 368 | function. If a function contains an exec statement, local variable |
| 369 | optimization is not performed for that particular function, thus |
| 370 | making assignment to local variables in exec statements less |
| 371 | confusing. (As a consequence, os.exec and python.exec have been |
| 372 | renamed to execv.) |
| 373 | |
| 374 | * There is a new keyword 'lambda'. An expression of the form |
| 375 | |
| 376 | lambda <parameters> : <expression> |
| 377 | |
| 378 | yields an anonymous function. This is really only syntactic sugar; |
| 379 | you can just as well define a local function using |
| 380 | |
| 381 | def some_temporary_name(<parameters>): return <expression> |
| 382 | |
| 383 | Lambda expressions are particularly useful in combination with map(), |
Guido van Rossum | 5125908 | 1994-01-26 18:20:06 +0000 | [diff] [blame] | 384 | filter() and reduce(), described below. Thanks to Amrit Prem for |
Guido van Rossum | a85d053 | 1994-01-26 17:24:14 +0000 | [diff] [blame] | 385 | submitting this code (as well as map(), filter(), reduce() and |
| 386 | xrange())! |
| 387 | |
| 388 | |
| 389 | Built-in functions |
| 390 | ------------------ |
| 391 | |
| 392 | * The built-in module containing the built-in functions is called |
| 393 | __builtin__ instead of builtin. |
| 394 | |
| 395 | * New built-in functions map(), filter() and reduce() perform standard |
| 396 | functional programming operations (though not lazily): |
| 397 | |
| 398 | - map(f, seq) returns a new sequence whose items are the items from |
| 399 | seq with f() applied to them. |
| 400 | |
| 401 | - filter(f, seq) returns a subsequence of seq consisting of those |
| 402 | items for which f() is true. |
| 403 | |
| 404 | - reduce(f, seq, initial) returns a value computed as follows: |
| 405 | acc = initial |
| 406 | for item in seq: acc = f(acc, item) |
| 407 | return acc |
| 408 | |
| 409 | * New function xrange() creates a "range object". Its arguments are |
| 410 | the same as those of range(), and when used in a for loop a range |
| 411 | objects also behaves identical. The advantage of xrange() over |
| 412 | range() is that its representation (if the range contains many |
| 413 | elements) is much more compact than that of range(). The disadvantage |
| 414 | is that the result cannot be used to initialize a list object or for |
| 415 | the "Python idiom" [RED, GREEN, BLUE] = range(3). On some modern |
| 416 | architectures, benchmarks have shown that "for i in range(...): ..." |
| 417 | actually executes *faster* than "for i in xrange(...): ...", but on |
| 418 | memory starved machines like PCs running DOS range(100000) may be just |
| 419 | too big to be represented at all... |
| 420 | |
| 421 | * Built-in function exec() has been replaced by the exec statement -- |
| 422 | see above. |
| 423 | |
| 424 | |
| 425 | The interpreter |
| 426 | --------------- |
| 427 | |
| 428 | * Syntax errors are now not printed to stderr by the parser, but |
| 429 | rather the offending line and other relevant information are packed up |
| 430 | in the SyntaxError exception argument. When the main loop catches a |
| 431 | SyntaxError exception it will print the error in the same format as |
| 432 | previously, but at the proper position in the stack traceback. |
| 433 | |
| 434 | * You can now set a maximum to the number of traceback entries |
| 435 | printed by assigning to sys.tracebacklimit. The default is 1000. |
| 436 | |
| 437 | * The version number in .pyc files has changed yet again. |
| 438 | |
| 439 | * It is now possible to have a .pyc file without a corresponding .py |
| 440 | file. (Warning: this may break existing installations if you have an |
| 441 | old .pyc file lingering around somewhere on your module search path |
| 442 | without a corresponding .py file, when there is a .py file for a |
| 443 | module of the same name further down the path -- the new interpreter |
| 444 | will find the first .pyc file and complain about it, while the old |
| 445 | interpreter would ignore it and use the .py file further down.) |
| 446 | |
| 447 | * The list sys.builtin_module_names is now sorted and also contains |
| 448 | the names of a few hardwired built-in modules (sys, __main__ and |
| 449 | __builtin__). |
| 450 | |
| 451 | * A module can now find its own name by accessing the global variable |
| 452 | __name__. Assigning to this variable essentially renames the module |
| 453 | (it should also be stored under a different key in sys.modules). |
| 454 | A neat hack follows from this: a module that wants to execute a main |
| 455 | program when called as a script no longer needs to compare |
| 456 | sys.argv[0]; it can simply do "if __name__ == '__main__': main()". |
| 457 | |
| 458 | * When an object is printed by the print statement, its implementation |
| 459 | of str() is used. This means that classes can define __str__(self) to |
| 460 | direct how their instances are printed. This is different from |
| 461 | __repr__(self), which should define an unambigous string |
| 462 | representation of the instance. (If __str__() is not defined, it |
| 463 | defaults to __repr__().) |
| 464 | |
| 465 | * Functions and code objects can now be compared meaningfully. |
| 466 | |
| 467 | * On systems supporting SunOS or SVR4 style shared libraries, dynamic |
| 468 | loading of modules using shared libraries is automatically configured. |
| 469 | Thanks to Bill Jansen and Denis Severson for contributing this change! |
| 470 | |
| 471 | |
| 472 | Built-in objects |
| 473 | ---------------- |
| 474 | |
| 475 | * File objects have acquired a new method writelines() which is the |
| 476 | reverse of readlines(). (It does not actually write lines, just a |
| 477 | list of strings, but the symmetry makes the choice of name OK.) |
| 478 | |
| 479 | |
| 480 | Built-in modules |
| 481 | ---------------- |
| 482 | |
| 483 | * Socket objects no longer support the avail() method. Use the select |
| 484 | module instead, or use this function to replace it: |
| 485 | |
| 486 | def avail(f): |
| 487 | import select |
| 488 | return f in select.select([f], [], [], 0)[0] |
| 489 | |
| 490 | * Initialization of stdwin is done differently. It actually modifies |
| 491 | sys.argv (taking out the options the X version of stdwin recognizes) |
| 492 | the first time it is imported. |
| 493 | |
| 494 | * A new built-in module parser provides a rudimentary interface to the |
| 495 | python parser. Corresponding standard library modules token and symbol |
| 496 | defines the numeric values of tokens and non-terminal symbols. |
| 497 | |
| 498 | * The posix module has aquired new functions setuid(), setgid(), |
| 499 | execve(), and exec() has been renamed to execv(). |
| 500 | |
| 501 | * The array module is extended with 8-byte object swaps, the 'i' |
| 502 | format character, and a reverse() method. The read() and write() |
| 503 | methods are renamed to fromfile() and tofile(). |
| 504 | |
| 505 | * The rotor module has freed of portability bugs. This introduces a |
| 506 | backward compatibility problem: strings encoded with the old rotor |
| 507 | module can't be decoded by the new version. |
| 508 | |
| 509 | * For select.select(), a timeout (4th) argument of None means the same |
| 510 | as leaving the timeout argument out. |
| 511 | |
| 512 | * Module strop (and hence standard library module string) has aquired |
Guido van Rossum | 5125908 | 1994-01-26 18:20:06 +0000 | [diff] [blame] | 513 | a new function: rindex(). Thanks to Amrit Prem! |
Guido van Rossum | a85d053 | 1994-01-26 17:24:14 +0000 | [diff] [blame] | 514 | |
| 515 | * Module regex defines a new function symcomp() which uses an extended |
| 516 | regular expression syntax: parenthesized subexpressions may be labeled |
| 517 | using the form "\(<labelname>...\)", and the group() method can return |
| 518 | sub-expressions by name. Thanks to Tracy Tims for these changes! |
| 519 | |
| 520 | * Multiple threads are now supported on Solaris 2. Thanks to Sjoerd |
| 521 | Mullender! |
| 522 | |
| 523 | |
| 524 | Standard library modules |
| 525 | ------------------------ |
| 526 | |
| 527 | * The library is now split in several subdirectories: all stuff using |
| 528 | stdwin is in Lib/stdwin, all SGI specific (or SGI Indigo or GL) stuff |
| 529 | is in Lib/sgi, all Sun Sparc specific stuff is in Lib/sun4, and all |
| 530 | test modules are in Lib/test. The default module search path will |
| 531 | include all relevant subdirectories by default. |
| 532 | |
| 533 | * Module os now knows about trying to import dos. It defines |
| 534 | functions execl(), execle(), execlp() and execvp(). |
| 535 | |
| 536 | * New module dospath (should be attacked by a DOS hacker though). |
| 537 | |
| 538 | * All modules defining classes now define __init__() constructors |
| 539 | instead of init() methods. THIS IS AN INCOMPATIBLE CHANGE! |
| 540 | |
| 541 | * Some minor changes and bugfixes module ftplib (mostly Steve |
| 542 | Majewski's suggestions); the debug() method is renamed to |
| 543 | set_debuglevel(). |
| 544 | |
| 545 | * Some new test modules (not run automatically by testall though): |
| 546 | test_audioop, test_md5, test_rgbimg, test_select. |
| 547 | |
| 548 | * Module string now defines rindex() and rfind() in analogy of index() |
| 549 | and find(). It also defines atof() and atol() (and corresponding |
| 550 | exceptions) in analogy to atoi(). |
| 551 | |
| 552 | * Added help() functions to modules profile and pdb. |
| 553 | |
| 554 | * The wdb debugger (now in Lib/stdwin) now shows class or instance |
| 555 | variables on a double click. Thanks to Sjoerd Mullender! |
| 556 | |
| 557 | * The (undocumented) module lambda has gone -- you couldn't import it |
| 558 | any more, and it was basically more a demo than a library module... |
| 559 | |
| 560 | |
| 561 | Multimedia extensions |
| 562 | --------------------- |
| 563 | |
| 564 | * The optional built-in modules audioop and imageop are now standard |
| 565 | parts of the interpreter. Thanks to Sjoerd Mullender and Jack Jansen |
| 566 | for contributing this code! |
| 567 | |
| 568 | * There's a new operation in audioop: minmax(). |
| 569 | |
| 570 | * There's a new built-in module called rgbimg which supports portable |
| 571 | efficient reading of SGI RCG image files. Thanks also to Paul |
| 572 | Haeberli for the original code! (Who will contribute a GIF reader?) |
| 573 | |
| 574 | * The module aifc is gone -- you should now always use aifc, which has |
| 575 | received a facelift. |
| 576 | |
| 577 | * There's a new module sunau., for reading Sun (and NeXT) audio files. |
| 578 | |
| 579 | * There's a new module audiodev which provides a uniform interface to |
| 580 | (SGI Indigo and Sun Sparc) audio hardware. |
| 581 | |
| 582 | * There's a new module sndhdr which recognizes various sound files by |
| 583 | looking in their header and checking for various magic words. |
| 584 | |
| 585 | |
| 586 | Optimizations |
| 587 | ------------- |
| 588 | |
| 589 | * Most optimizations below can be configured by compile-time flags. |
| 590 | Thanks to Sjoerd Mullender for submitting these optimizations! |
| 591 | |
| 592 | * Small integers (default -1..99) are shared -- i.e. if two different |
| 593 | functions compute the same value it is possible (but not |
| 594 | guaranteed!!!) that they return the same *object*. Python programs |
| 595 | can detect this but should *never* rely on it. |
| 596 | |
| 597 | * Empty tuples (which all compare equal) are shared in the same |
| 598 | manner. |
| 599 | |
| 600 | * Tuples of size up to 20 (default) are put in separate free lists |
| 601 | when deallocated. |
| 602 | |
| 603 | * There is a compile-time option to cache a string's hash function, |
| 604 | but this appeared to have a negligeable effect, and as it costs 4 |
| 605 | bytes per string it is disabled by default. |
| 606 | |
| 607 | |
| 608 | Embedding Python |
| 609 | ---------------- |
| 610 | |
| 611 | * The initialization interface has been simplified somewhat. You now |
| 612 | only call "initall()" to initialize the interpreter. |
| 613 | |
| 614 | * The previously announced renaming of externally visible identifiers |
| 615 | has not been carried out. It will happen in a later release. Sorry. |
| 616 | |
| 617 | |
| 618 | Miscellaneous bugs that have been fixed |
| 619 | --------------------------------------- |
| 620 | |
| 621 | * All known portability bugs. |
| 622 | |
| 623 | * Version 0.9.9 dumped core in <listobject>.sort() which has been |
| 624 | fixed. Thanks to Jaap Vermeulen for fixing this and posting the fix |
| 625 | on the mailing list while I was away! |
| 626 | |
| 627 | * Core dump on a format string ending in '%', e.g. in the expression |
| 628 | '%' % None. |
| 629 | |
| 630 | * The array module yielded a bogus result for concatenation (a+b would |
| 631 | yield a+a). |
| 632 | |
| 633 | * Some serious memory leaks in strop.split() and strop.splitfields(). |
| 634 | |
| 635 | * Several problems with the nis module. |
| 636 | |
| 637 | * Subtle problem when copying a class method from another class |
| 638 | through assignment (the method could not be called). |
| 639 | |
| 640 | |
| 641 | Remaining bugs |
| 642 | -------------- |
| 643 | |
| 644 | * One problem with 64-bit machines remains -- since .pyc files are |
| 645 | portable and use only 4 bytes to represent an integer object, 64-bit |
| 646 | integer literals are silently truncated when written into a .pyc file. |
| 647 | Work-around: use eval('123456789101112'). |
| 648 | |
| 649 | * The freeze script doesn't work any more. A new and more portable |
| 650 | one can probably be cooked up using tricks from Extensions/mkext.py. |
| 651 | |
| 652 | * The dos support hasn't been tested yet. (Really Soon Now we should |
| 653 | have a PC with a working C compiler!) |
| 654 | |
| 655 | |
| 656 | --Guido van Rossum, CWI, Amsterdam <Guido.van.Rossum@cwi.nl> |
| 657 | URL: <http://www.cwi.nl/cwi/people/Guido.van.Rossum.html> |