home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / pyth_os2.zip / python-1.0.2 / Misc / NEWS < prev    next >
Text File  |  1994-05-04  |  23KB  |  640 lines

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