blob: 7da148aedd6b9a2a76419e03fd8319a647a1b6c3 [file] [log] [blame]
Jeremy Hylton1b618592000-09-26 05:32:36 +00001What's New in Python 2.0b2?
Guido van Rossum61000331997-08-15 04:39:58 +00002===========================
3
Guido van Rossum8ed602b2000-09-01 22:34:33 +00004Below is a list of all relevant changes since release 1.6. Older
Guido van Rossumf2ffce02000-09-05 04:38:34 +00005changes are in the file HISTORY. If you are making the jump directly
6from Python 1.5.2 to 2.0, make sure to read the section for 1.6 in the
7HISTORY file! Many important changes listed there.
Guido van Rossum61000331997-08-15 04:39:58 +00008
Guido van Rossumf2ffce02000-09-05 04:38:34 +00009Alternatively, a good overview of the changes between 1.5.2 and 2.0 is
10the document "What's New in Python 2.0" by Kuchling and Moshe Zadka:
11http://starship.python.net/crew/amk/python/writing/new-python/.
Guido van Rossum1f83cce1997-10-06 21:04:35 +000012
Guido van Rossumf2ffce02000-09-05 04:38:34 +000013--Guido van Rossum (home page: http://www.pythonlabs.com/~guido/)
Guido van Rossum437cfe81999-04-08 20:17:57 +000014
15======================================================================
16
Jeremy Hylton1b618592000-09-26 05:32:36 +000017
18What's new in 2.0 beta 2 (since beta 1)?
19========================================
20
21Core language, builtins, and interpreter
22
23- Add support for unbounded ints in %d,i,y,x,X,o formats for string
24 inter
25
26- Add -h and -V flags to print the usage message and Python version
27 number and exit immediately.polation.
28
29Standard library and extensions
30
31- array: reverse method of array now works. buffer_info now does
32 argument checking; it still takes no arguments.
33
34- asyncore/asynchat: included most recent version from Sam Rushing
35
36- cgi: accept & or ; as separate characters when parsing form data
37
38- CGIHTTPServer: now works on Windows (and perhaps even Mac).
39
40- ConfigParser: When reading the file, options spelled in upper case
41 letters are now accessible.
42
43- copy: Copy Unicode objects atomically.
44
45- cPickle: fails gracefully when copy_reg can't be imported
46
47- cStringIO: implemented readlines method.
48
49- dbm: Add set and setdefault methods to dbm object. Add constant
50 library to module that names the library used. Better doc strings
51 and argument checking. Uses configure to determine which ndbm.h
52 file to include; Berkeley DB's nbdm is now an option.
53
54- distutils: Update to version 0.9.3.
55
56- dl: Add several dl.RTLD_ constants.
57
58- fpectl: Now supported on FreeBSD.
59
60- gc: Add DEBUG_SAVEALL option. When enabled all garbage objects
61 found by the collector will be saved in gc.garbage. This is useful
62 for debugging a program that creates reference cycles.
63
64- httplib: Three changes. Restore support for set_debuglevel feature
65 of HTTP class. Do not close socket on zero-length response. Do not
66 crash when server sends invalid content-length header.
67
68- mailbox: XXX conformance to maildir specification ???
69
70- operator: Add contains, invert, __invert__ as aliases for
71 __contains__, inv, and __inv__ respectively.
72
73- os: Add support for popen2 and popen3 on all platforms where fork
74 exists.
75
76- os: (Windows only) Add startfile function athat exposes part of
77 Win32 ShellExecute functionality.
78
79- os.path: (NT, DOS) Treat trailing colon correctly in os.path.join.
80 os.path.join("a:", "b") yields "a:b".
81
82- pickle: Now raises ValueError when an invalid pickle that contains
83 a non-string repr where a string repr was expected. This behavior
84 matches cPickle.
85
86- posixfile: XXX remove __del__ method ???
87
88- py_compile: support \r in source file
89
90- readline: Does not immediately exit when ^C is hit when readline and
91 threads are configured. Adds defintion of rl_library_version.
92
93- rfc822: Domain literals returned by AddrlistClass method
94 getdomainliteral are now properly wrapped in brackets.
95
96- site: sys.setdefaultencoding() should only be called in case the
97 standard default encoding ("ascii") is changed. This safes quite a
98 few cycles during startup since the first call to
99 setdefaultencoding() will initialize the codec registry and the
100 encodings package.
101
102- socket: Support for size hint in readlines method of object returned
103 by makefile.
104
105- sre: Added experimental expand method to match objects. Does not
106 user buffer interface on Unicode strings. Does not hang if group id
107 is followed by whitespace.
108
109- StringIO: size hint in readlines is now supported as documented.
110
111- struct: Check ranges for bytes and shorts.
112
113- urllib: Improved handling of win32 proxy settings. Fixed quote and
114 quote_plus functions so that the always encode a comma ','.
115
116- Tkinter: Image objects are now guaranteed to have unique ids. Set
117 event.delta to zero if Tk version doesn't support mousewheel.
118 Removed some debugging prints.
119
120- UserList: now implements __contains__.
121
122- webbrower: On Windows, use os.startfile instead of os.popen, which
123 works around a bug in certain versions of Norton AntiVirus that
124 leads directly to a Blue Screen.
125
126- xml: New version detection code allows PyXML to override standard
127 XML package if PyXML version is greater than 0.6.1.
128
129- xml.dom: XXX
130
131- xml.sax: XXX
132
133- XXX pyexpat: XXX
134
135C API
136
137- Add three new convenience functions for module initialization --
138 PyModule_AddObject(), PyModule_AddIntConstant(), and
139 PyModule_AddStringConstant().
140
141- Cleaned up definition of NULL in C source code; all defintions were
142 removed and add #error to Python.h if NULL isn't defined after
143 #include of stdio.h.
144
145- Py_PROTO macros that were removed in 2.0b1 have been restored for
146 backwards compatibility (at the source level) with old extensions.
147
148- XXX PyOS_sighandler_t, PyOS_getsig, PyOS_setsig
149
150- Add PyString_AsStringAndSize call that provides access to the
151 internal data buffer and size of a string object -- or the default
152 encoded version of a Unicode object.
153
154Internals
155
156- On Unix, fix code for finding Python installation directory so that
157 it works when argv[0] is a relative path.
158
159- Added a true unicode_internal_encode function and fixed the
160 unicode_internal_decode function to support Unicode objects directly
161 rather than by generating a copy of the object.
162
163- XXX Unicode database compression
164
165Build and platform-specific issues
166
167- Better support of GNU Pth via --with-pth configure option.
168
169- Fix linker problems on Reliant UNIX
170
171- Changes for the benefit of SunOS 4.1.4 (really!). mmapmodule.c:
172 Don't define MS_SYNC to be zero when it is undefined. Added missing
173 prototypes in posixmodule.c.
174
175- Improved support for HP-UX build
176
177
178What's new in 2.0 beta 1?
179=========================
180
Guido van Rossumf2ffce02000-09-05 04:38:34 +0000181Source Incompatibilities
182------------------------
183
184None. Note that 1.6 introduced several incompatibilities with 1.5.2,
185such as single-argument append(), connect() and bind(), and changes to
186str(long) and repr(float).
187
188
189Binary Incompatibilities
190------------------------
191
192- Third party extensions built for Python 1.5.x or 1.6 cannot be used
193with Python 2.0; these extensions will have to be rebuilt for Python
1942.0.
195
196- On Windows, attempting to import a third party extension built for
197Python 1.5.x or 1.6 results in an immediate crash; there's not much we
198can do about this. Check your PYTHONPATH environment variable!
199
200- Python bytecode files (*.pyc and *.pyo) are not compatible between
201releases.
202
203
204Overview of Changes Since 1.6
205-----------------------------
206
207There are many new modules (including brand new XML support through
208the xml package, and i18n support through the gettext module); a list
209of all new modules is included below. Lots of bugs have been fixed.
210
Jeremy Hylton24c3d602000-09-05 19:36:26 +0000211The process for making major new changes to the language has changed
212since Python 1.6. Enhancements must now be documented by a Python
213Enhancement Proposal (PEP) before they can be accepted.
214
Guido van Rossumf2ffce02000-09-05 04:38:34 +0000215There are several important syntax enhancements, described in more
216detail below:
217
218 - Augmented assignment, e.g. x += 1
219
220 - List comprehensions, e.g. [x**2 for x in range(10)]
221
222 - Extended import statement, e.g. import Module as Name
223
224 - Extended print statement, e.g. print >> file, "Hello"
225
226Other important changes:
227
228 - Optional collection of cyclical garbage
229
Jeremy Hylton24c3d602000-09-05 19:36:26 +0000230Python Enhancement Proposal (PEP)
231---------------------------------
232
233PEP stands for Python Enhancement Proposal. A PEP is a design
234document providing information to the Python community, or describing
235a new feature for Python. The PEP should provide a concise technical
236specification of the feature and a rationale for the feature.
237
238We intend PEPs to be the primary mechanisms for proposing new
239features, for collecting community input on an issue, and for
240documenting the design decisions that have gone into Python. The PEP
241author is responsible for building consensus within the community and
242documenting dissenting opinions.
243
244The PEPs are available at http://python.sourceforge.net/peps/.
Guido van Rossumf2ffce02000-09-05 04:38:34 +0000245
246Augmented Assignment
247--------------------
248
249This must have been the most-requested feature of the past years!
250Eleven new assignment operators were added:
251
Guido van Rossume905e952000-09-05 12:42:46 +0000252 += -= *= /= %= **= <<= >>= &= ^= |=
Guido van Rossumf2ffce02000-09-05 04:38:34 +0000253
254For example,
255
256 A += B
257
258is similar to
259
260 A = A + B
261
262except that A is evaluated only once (relevant when A is something
263like dict[index].attr).
264
265However, if A is a mutable object, A may be modified in place. Thus,
266if A is a number or a string, A += B has the same effect as A = A+B
267(except A is only evaluated once); but if a is a list, A += B has the
268same effect as A.extend(B)!
269
270Classes and built-in object types can override the new operators in
271order to implement the in-place behavior; the not-in-place behavior is
272used automatically as a fallback when an object doesn't implement the
273in-place behavior. For classes, the method name is derived from the
274method name for the corresponding not-in-place operator by inserting
275an 'i' in front of the name, e.g. __iadd__ implements in-place
276__add__.
277
278Augmented assignment was implemented by Thomas Wouters.
279
280
281List Comprehensions
282-------------------
283
284This is a flexible new notation for lists whose elements are computed
285from another list (or lists). The simplest form is:
286
287 [<expression> for <variable> in <sequence>]
288
Guido van Rossum56db0952000-09-06 23:34:25 +0000289For example, [i**2 for i in range(4)] yields the list [0, 1, 4, 9].
Guido van Rossumf2ffce02000-09-05 04:38:34 +0000290This is more efficient than map() with a lambda.
291
292You can also add a condition:
293
294 [<expression> for <variable> in <sequence> if <condition>]
295
296For example, [w for w in words if w == w.lower()] would yield the list
297of words that contain no uppercase characters. This is more efficient
298than filter() with a lambda.
299
300You can also have nested for loops and more than one 'if' clause. For
301example, here's a function that flattens a sequence of sequences::
302
303 def flatten(seq):
304 return [x for subseq in seq for x in subseq]
305
306 flatten([[0], [1,2,3], [4,5], [6,7,8,9], []])
307
308This prints
309
310 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
311
312List comprehensions originated as a patch set from Greg Ewing; Skip
Jeremy Hylton24c3d602000-09-05 19:36:26 +0000313Montanaro and Thomas Wouters also contributed. Described by PEP 202.
Guido van Rossumf2ffce02000-09-05 04:38:34 +0000314
315
316Extended Import Statement
317-------------------------
318
319Many people have asked for a way to import a module under a different
320name. This can be accomplished like this:
321
322 import foo
323 bar = foo
324 del foo
325
326but this common idiom gets old quickly. A simple extension of the
327import statement now allows this to be written as follows:
328
329 import foo as bar
330
331There's also a variant for 'from ... import':
332
333 from foo import bar as spam
334
335This also works with packages; e.g. you can write this:
336
337 import test.regrtest as regrtest
338
339Note that 'as' is not a new keyword -- it is recognized only in this
340context (this is only possible because the syntax for the import
341statement doesn't involve expressions).
342
Jeremy Hylton24c3d602000-09-05 19:36:26 +0000343Implemented by Thomas Wouters. Described by PEP 221.
Guido van Rossumf2ffce02000-09-05 04:38:34 +0000344
345
346Extended Print Statement
347------------------------
348
349Easily the most controversial new feature, this extension to the print
350statement adds an option to make the output go to a different file
351than the default sys.stdout.
352
353For example, to write an error message to sys.stderr, you can now
354write:
355
356 print >> sys.stderr, "Error: bad dog!"
357
358As a special feature, if the expression used to indicate the file
359evaluates to None, the current value of sys.stdout used. Thus:
360
361 print >> None, "Hello world"
362
363is equivalent to
364
365 print "Hello world"
366
Jeremy Hylton24c3d602000-09-05 19:36:26 +0000367Design and implementation by Barry Warsaw. Described by PEP 214.
Guido van Rossumf2ffce02000-09-05 04:38:34 +0000368
369
370Optional Collection of Cyclical Garbage
371---------------------------------------
372
373Python is now equipped with a garbage collector that can hunt down
374cyclical references between Python objects. It's no replacement for
375reference counting; in fact, it depends on the reference counts being
376correct, and decides that a set of objects belong to a cycle if all
377their reference counts can be accounted for from their references to
378each other. This devious scheme was first proposed by Eric Tiedemann,
379and brought to implementation by Neil Schemenauer.
380
381There's a module "gc" that lets you control some parameters of the
382garbage collection. There's also an option to the configure script
383that lets you enable or disable the garbage collection. In 2.0b1,
384it's on by default, so that we (hopefully) can collect decent user
385experience with this new feature. There are some questions about its
386performance. if it proves to be too much of a problem, we'll turn it
387off by default in the final 2.0 release.
388
389
390Smaller Changes
391---------------
392
393A new function zip() was added. zip(seq1, seq2, ...) is equivalent to
394map(None, seq1, seq2, ...) when the sequences have the same length;
395i.e. zip([1,2,3], [10,20,30]) returns [(1,10), (2,20), (3,30)]. When
396the lists are not all the same length, the shortest list wins:
Jeremy Hylton24c3d602000-09-05 19:36:26 +0000397zip([1,2,3], [10,20]) returns [(1,10), (2,20)]. See PEP 201.
Guido van Rossumf2ffce02000-09-05 04:38:34 +0000398
399sys.version_info is a tuple (major, minor, micro, level, serial).
400
401Dictionaries have an odd new method, setdefault(key, default).
402dict.setdefault(key, default) returns dict[key] if it exists; if not,
403it sets dict[key] to default and returns that value. Thus:
404
405 dict.setdefault(key, []).append(item)
406
407does the same work as this common idiom:
408
409 if not dict.has_key(key):
410 dict[key] = []
411 dict[key].append(item)
412
Jeremy Hylton24c3d602000-09-05 19:36:26 +0000413There are two new variants of SyntaxError that are raised for
414indentation-related errors: IndentationError and TabError.
415
416Changed \x to consume exactly two hex digits; see PEP 223. Added \U
417escape that consumes exactly eight hex digits.
Jeremy Hyltonbdebd542000-09-05 18:28:54 +0000418
419The limits on the size of expressions and file in Python source code
420have been raised from 2**16 to 2**32. Previous versions of Python
421were limited because the maximum argument size the Python VM accepted
422was 2**16. This limited the size of object constructor expressions,
423e.g. [1,2,3] or {'a':1, 'b':2}, and the size of source files. This
424limit was raised thanks to a patch by Charles Waldman that effectively
425fixes the problem. It is now much more likely that you will be
426limited by available memory than by an arbitrary limit in Python.
427
428The interpreter's maximum recursion depth can be modified by Python
429programs using sys.getrecursionlimit and sys.setrecursionlimit. This
430limit is the maximum number of recursive calls that can be made by
431Python code. The limit exists to prevent infinite recursion from
432overflowing the C stack and causing a core dump. The default value is
4331000. The maximum safe value for a particular platform can be found
434by running Misc/find_recursionlimit.py.
Guido van Rossumf2ffce02000-09-05 04:38:34 +0000435
436New Modules and Packages
437------------------------
438
439atexit - for registering functions to be called when Python exits.
440
441imputil - Greg Stein's alternative API for writing custom import
442hooks.
443
444pyexpat - an interface to the Expat XML parser, contributed by Paul
445Prescod.
446
447xml - a new package with XML support code organized (so far) in three
448subpackages: xml.dom, xml.sax, and xml.parsers. Describing these
449would fill a volume. There's a special feature whereby a
450user-installed package named _xmlplus overrides the standard
451xmlpackage; this is intended to give the XML SIG a hook to distribute
452backwards-compatible updates to the standard xml package.
453
454webbrowser - a platform-independent API to launch a web browser.
455
456
Guido van Rossume905e952000-09-05 12:42:46 +0000457Changed Modules
458---------------
459
Jeremy Hylton24c3d602000-09-05 19:36:26 +0000460array -- new methods for array objects: count, extend, index, pop, and
461remove
462
463binascii -- new functions b2a_hex and a2b_hex that convert between
464binary data and its hex representation
465
Jeremy Hyltonbdebd542000-09-05 18:28:54 +0000466calendar -- Many new functions that support features including control
467over which day of the week is the first day, returning strings instead
468of printing them. Also new symbolic constants for days of week,
469e.g. MONDAY, ..., SUNDAY.
470
471cgi -- FieldStorage objects have a getvalue method that works like a
472dictionary's get method and returns the value attribute of the object.
473
474ConfigParser -- The parser object has new methods has_option,
475remove_section, remove_option, set, and write. They allow the module
476to be used for writing config files as well as reading them.
477
478ftplib -- ntransfercmd(), transfercmd(), and retrbinary() all now
Guido van Rossume905e952000-09-05 12:42:46 +0000479optionally support the RFC 959 REST command.
480
Jeremy Hyltonbdebd542000-09-05 18:28:54 +0000481gzip -- readline and readlines now accept optional size arguments
Guido van Rossume905e952000-09-05 12:42:46 +0000482
Jeremy Hyltonbdebd542000-09-05 18:28:54 +0000483httplib -- New interfaces and support for HTTP/1.1 by Greg Stein. See
484the module doc strings for details.
Guido van Rossum830ca2a2000-09-05 15:34:16 +0000485
Jeremy Hylton24c3d602000-09-05 19:36:26 +0000486locale -- implement getdefaultlocale for Win32 and Macintosh
487
488marshal -- no longer dumps core when marshaling deeply nested or
489recursive data structures
490
491os -- new functions isatty, seteuid, setegid, setreuid, setregid
492
Jeremy Hyltonbdebd542000-09-05 18:28:54 +0000493os/popen2 -- popen2/popen3/popen4 support under Windows. popen2/popen3
494support under Unix.
495
Jeremy Hylton24c3d602000-09-05 19:36:26 +0000496os/pty -- support for openpty and forkpty
Jeremy Hyltonbdebd542000-09-05 18:28:54 +0000497
498os.path -- fix semantics of os.path.commonprefix
499
500smtplib -- support for sending very long messages
501
502socket -- new function getfqdn()
503
504readline -- new functions to read, write and truncate history files.
505The readline section of the library reference manual contains an
506example.
507
Jeremy Hylton24c3d602000-09-05 19:36:26 +0000508select -- add interface to poll system call
509
Jeremy Hyltonbdebd542000-09-05 18:28:54 +0000510shutil -- new copyfileobj function
511
512SimpleHTTPServer, CGIHTTPServer -- Fix problems with buffering in the
513HTTP server.
514
Jeremy Hylton24c3d602000-09-05 19:36:26 +0000515Tkinter -- optimization of function flatten
Jeremy Hyltonbdebd542000-09-05 18:28:54 +0000516
517urllib -- scans environment variables for proxy configuration,
Tim Peters8b092332000-09-05 20:15:25 +0000518e.g. http_proxy.
Jeremy Hyltonbdebd542000-09-05 18:28:54 +0000519
520whichdb -- recognizes dumbdbm format
Guido van Rossume905e952000-09-05 12:42:46 +0000521
522
523Obsolete Modules
524----------------
525
526None. However note that 1.6 made a whole slew of modules obsolete:
527stdwin, soundex, cml, cmpcache, dircache, dump, find, grep, packmail,
528poly, zmod, strop, util, whatsound.
529
530
531Changed, New, Obsolete Tools
532----------------------------
533
Tim Peters8b092332000-09-05 20:15:25 +0000534None.
Guido van Rossume905e952000-09-05 12:42:46 +0000535
536
Guido van Rossumf2ffce02000-09-05 04:38:34 +0000537C-level Changes
538---------------
539
540Several cleanup jobs were carried out throughout the source code.
541
542All C code was converted to ANSI C; we got rid of all uses of the
543Py_PROTO() macro, which makes the header files a lot more readable.
544
545Most of the portability hacks were moved to a new header file,
546pyport.h; several other new header files were added and some old
547header files were removed, in an attempt to create a more rational set
548of header files. (Few of these ever need to be included explicitly;
549they are all included by Python.h.)
550
Guido van Rossumf2ffce02000-09-05 04:38:34 +0000551Trent Mick ensured portability to 64-bit platforms, under both Linux
Jeremy Hylton24c3d602000-09-05 19:36:26 +0000552and Win64, especially for the new Intel Itanium processor. Mick also
553added large file support for Linux64 and Win64.
Guido van Rossumf2ffce02000-09-05 04:38:34 +0000554
Jeremy Hyltonbdebd542000-09-05 18:28:54 +0000555The C APIs to return an object's size have been update to consistently
556use the form PyXXX_Size, e.g. PySequence_Size and PyDict_Size. In
557previous versions, the abstract interfaces used PyXXX_Length and the
558concrete interfaces used PyXXX_Size. The old names,
559e.g. PyObject_Length, are still available for backwards compatibility
560at the API level, but are deprecated.
561
Jeremy Hylton24c3d602000-09-05 19:36:26 +0000562The PyOS_CheckStack function has been implemented on Windows by
563Fredrik Lundh. It prevents Python from failing with a stack overflow
564on Windows.
Jeremy Hyltonbdebd542000-09-05 18:28:54 +0000565
566The GC changes resulted in creation of two new slots on object,
567tp_traverse and tp_clear. The augmented assignment changes result in
Guido van Rossum4338a282000-09-06 13:02:08 +0000568the creation of a new slot for each in-place operator.
Jeremy Hyltonbdebd542000-09-05 18:28:54 +0000569
570The GC API creates new requirements for container types implemented in
Guido van Rossum4338a282000-09-06 13:02:08 +0000571C extension modules. See Include/objimpl.h for details.
Jeremy Hyltonbdebd542000-09-05 18:28:54 +0000572
Jeremy Hylton24c3d602000-09-05 19:36:26 +0000573PyErr_Format has been updated to automatically calculate the size of
574the buffer needed to hold the formatted result string. This change
575prevents crashes caused by programmer error.
Jeremy Hyltonbdebd542000-09-05 18:28:54 +0000576
Jeremy Hylton24c3d602000-09-05 19:36:26 +0000577New C API calls: PyObject_AsFileDescriptor, PyErr_WriteUnraisable.
Guido van Rossume905e952000-09-05 12:42:46 +0000578
Jeremy Hylton24c3d602000-09-05 19:36:26 +0000579PyRun_AnyFileEx, PyRun_SimpleFileEx, PyRun_FileEx -- New functions
580that are the same as their non-Ex counterparts except they take an
581extra flag argument that tells them to close the file when done.
582
583XXX There were other API changes that should be fleshed out here.
Guido van Rossumab9d6f01998-08-10 22:01:13 +0000584
Tim Peters8b092332000-09-05 20:15:25 +0000585
586Windows Changes
587---------------
588
589New popen2/popen3/peopen4 in os module (see Changed Modules above).
590
591os.popen is much more usable on Windows 95 and 98. See Microsoft
592Knowledge Base article Q150956. The Win9x workaround described there
593is implemented by the new w9xpopen.exe helper in the root of your
594Python installation. Note that Python uses this internally; it is not
595a standalone program.
596
597Administrator privileges are no longer required to install Python
598on Windows NT or Windows 2000. If you have administrator privileges,
599Python's registry info will be written under HKEY_LOCAL_MACHINE.
600Otherwise the installer backs off to writing Python's registry info
Guido van Rossum4338a282000-09-06 13:02:08 +0000601under HKEY_CURRENT_USER. The latter is sufficient for all "normal"
Tim Peters8b092332000-09-05 20:15:25 +0000602uses of Python, but will prevent some advanced uses from working
603(for example, running a Python script as an NT service, or possibly
604from CGI).
605
606[This was new in 1.6] The installer no longer runs a separate Tcl/Tk
607installer; instead, it installs the needed Tcl/Tk files directly in the
608Python directory. If you already have a Tcl/Tk installation, this
609wastes some disk space (about 4 Megs) but avoids problems with
610conflicting Tcl/Tk installations, and makes it much easier for Python
611to ensure that Tcl/Tk can find all its files.
612
613[This was new in 1.6] The Windows installer now installs by default in
614\Python20\ on the default volume, instead of \Program Files\Python-2.0\.
615
Guido van Rossumab9d6f01998-08-10 22:01:13 +0000616======================================================================