blob: ea5513b87f80927c434bdcd5ea448639372cc507 [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
Tim Peters482c0212000-09-26 06:33:09 +000023- Add support for unbounded ints in %d,i,u,x,X,o formats; for example
24 "%d" % 2L**64 == "18446744073709551616"
Jeremy Hylton1b618592000-09-26 05:32:36 +000025
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
Tim Peters482c0212000-09-26 06:33:09 +000076- os: (Windows only) Add startfile function that acts like double-
77 clicking on a file in Explorer (or passing the file name to the
78 DOS "start" command).
Jeremy Hylton1b618592000-09-26 05:32:36 +000079
Tim Peters482c0212000-09-26 06:33:09 +000080- os.path: (Windows, DOS) Treat trailing colon correctly in
81 os.path.join. os.path.join("a:", "b") yields "a:b".
Jeremy Hylton1b618592000-09-26 05:32:36 +000082
83- pickle: Now raises ValueError when an invalid pickle that contains
84 a non-string repr where a string repr was expected. This behavior
85 matches cPickle.
86
87- posixfile: XXX remove __del__ method ???
88
89- py_compile: support \r in source file
90
91- readline: Does not immediately exit when ^C is hit when readline and
92 threads are configured. Adds defintion of rl_library_version.
93
94- rfc822: Domain literals returned by AddrlistClass method
95 getdomainliteral are now properly wrapped in brackets.
96
97- site: sys.setdefaultencoding() should only be called in case the
Tim Peters482c0212000-09-26 06:33:09 +000098 standard default encoding ("ascii") is changed. This saves quite a
Jeremy Hylton1b618592000-09-26 05:32:36 +000099 few cycles during startup since the first call to
100 setdefaultencoding() will initialize the codec registry and the
101 encodings package.
102
103- socket: Support for size hint in readlines method of object returned
104 by makefile.
105
106- sre: Added experimental expand method to match objects. Does not
107 user buffer interface on Unicode strings. Does not hang if group id
108 is followed by whitespace.
109
110- StringIO: size hint in readlines is now supported as documented.
111
112- struct: Check ranges for bytes and shorts.
113
114- urllib: Improved handling of win32 proxy settings. Fixed quote and
115 quote_plus functions so that the always encode a comma ','.
116
117- Tkinter: Image objects are now guaranteed to have unique ids. Set
118 event.delta to zero if Tk version doesn't support mousewheel.
119 Removed some debugging prints.
120
121- UserList: now implements __contains__.
122
123- webbrower: On Windows, use os.startfile instead of os.popen, which
124 works around a bug in certain versions of Norton AntiVirus that
Tim Peters482c0212000-09-26 06:33:09 +0000125 leads directly to a Blue Screen freeze.
Jeremy Hylton1b618592000-09-26 05:32:36 +0000126
127- xml: New version detection code allows PyXML to override standard
128 XML package if PyXML version is greater than 0.6.1.
129
130- xml.dom: XXX
131
132- xml.sax: XXX
133
134- XXX pyexpat: XXX
135
136C API
137
138- Add three new convenience functions for module initialization --
139 PyModule_AddObject(), PyModule_AddIntConstant(), and
140 PyModule_AddStringConstant().
141
142- Cleaned up definition of NULL in C source code; all defintions were
143 removed and add #error to Python.h if NULL isn't defined after
144 #include of stdio.h.
145
146- Py_PROTO macros that were removed in 2.0b1 have been restored for
147 backwards compatibility (at the source level) with old extensions.
148
149- XXX PyOS_sighandler_t, PyOS_getsig, PyOS_setsig
150
151- Add PyString_AsStringAndSize call that provides access to the
152 internal data buffer and size of a string object -- or the default
153 encoded version of a Unicode object.
154
155Internals
156
157- On Unix, fix code for finding Python installation directory so that
158 it works when argv[0] is a relative path.
159
160- Added a true unicode_internal_encode function and fixed the
161 unicode_internal_decode function to support Unicode objects directly
162 rather than by generating a copy of the object.
163
Tim Peters482c0212000-09-26 06:33:09 +0000164- Several of the internal Unicode tables are much smaller now, and
165 the source code should be much friendlier to weaker compilers.
Jeremy Hylton1b618592000-09-26 05:32:36 +0000166
167Build and platform-specific issues
168
169- Better support of GNU Pth via --with-pth configure option.
170
171- Fix linker problems on Reliant UNIX
172
173- Changes for the benefit of SunOS 4.1.4 (really!). mmapmodule.c:
174 Don't define MS_SYNC to be zero when it is undefined. Added missing
175 prototypes in posixmodule.c.
176
177- Improved support for HP-UX build
178
179
180What's new in 2.0 beta 1?
181=========================
182
Guido van Rossumf2ffce02000-09-05 04:38:34 +0000183Source Incompatibilities
184------------------------
185
186None. Note that 1.6 introduced several incompatibilities with 1.5.2,
187such as single-argument append(), connect() and bind(), and changes to
188str(long) and repr(float).
189
190
191Binary Incompatibilities
192------------------------
193
194- Third party extensions built for Python 1.5.x or 1.6 cannot be used
195with Python 2.0; these extensions will have to be rebuilt for Python
1962.0.
197
198- On Windows, attempting to import a third party extension built for
199Python 1.5.x or 1.6 results in an immediate crash; there's not much we
200can do about this. Check your PYTHONPATH environment variable!
201
202- Python bytecode files (*.pyc and *.pyo) are not compatible between
203releases.
204
205
206Overview of Changes Since 1.6
207-----------------------------
208
209There are many new modules (including brand new XML support through
210the xml package, and i18n support through the gettext module); a list
211of all new modules is included below. Lots of bugs have been fixed.
212
Jeremy Hylton24c3d602000-09-05 19:36:26 +0000213The process for making major new changes to the language has changed
214since Python 1.6. Enhancements must now be documented by a Python
215Enhancement Proposal (PEP) before they can be accepted.
216
Guido van Rossumf2ffce02000-09-05 04:38:34 +0000217There are several important syntax enhancements, described in more
218detail below:
219
220 - Augmented assignment, e.g. x += 1
221
222 - List comprehensions, e.g. [x**2 for x in range(10)]
223
224 - Extended import statement, e.g. import Module as Name
225
226 - Extended print statement, e.g. print >> file, "Hello"
227
228Other important changes:
229
230 - Optional collection of cyclical garbage
231
Jeremy Hylton24c3d602000-09-05 19:36:26 +0000232Python Enhancement Proposal (PEP)
233---------------------------------
234
235PEP stands for Python Enhancement Proposal. A PEP is a design
236document providing information to the Python community, or describing
237a new feature for Python. The PEP should provide a concise technical
238specification of the feature and a rationale for the feature.
239
240We intend PEPs to be the primary mechanisms for proposing new
241features, for collecting community input on an issue, and for
242documenting the design decisions that have gone into Python. The PEP
243author is responsible for building consensus within the community and
244documenting dissenting opinions.
245
246The PEPs are available at http://python.sourceforge.net/peps/.
Guido van Rossumf2ffce02000-09-05 04:38:34 +0000247
248Augmented Assignment
249--------------------
250
251This must have been the most-requested feature of the past years!
252Eleven new assignment operators were added:
253
Guido van Rossume905e952000-09-05 12:42:46 +0000254 += -= *= /= %= **= <<= >>= &= ^= |=
Guido van Rossumf2ffce02000-09-05 04:38:34 +0000255
256For example,
257
258 A += B
259
260is similar to
261
262 A = A + B
263
264except that A is evaluated only once (relevant when A is something
265like dict[index].attr).
266
267However, if A is a mutable object, A may be modified in place. Thus,
268if A is a number or a string, A += B has the same effect as A = A+B
269(except A is only evaluated once); but if a is a list, A += B has the
270same effect as A.extend(B)!
271
272Classes and built-in object types can override the new operators in
273order to implement the in-place behavior; the not-in-place behavior is
274used automatically as a fallback when an object doesn't implement the
275in-place behavior. For classes, the method name is derived from the
276method name for the corresponding not-in-place operator by inserting
277an 'i' in front of the name, e.g. __iadd__ implements in-place
278__add__.
279
280Augmented assignment was implemented by Thomas Wouters.
281
282
283List Comprehensions
284-------------------
285
286This is a flexible new notation for lists whose elements are computed
287from another list (or lists). The simplest form is:
288
289 [<expression> for <variable> in <sequence>]
290
Guido van Rossum56db0952000-09-06 23:34:25 +0000291For example, [i**2 for i in range(4)] yields the list [0, 1, 4, 9].
Guido van Rossumf2ffce02000-09-05 04:38:34 +0000292This is more efficient than map() with a lambda.
293
294You can also add a condition:
295
296 [<expression> for <variable> in <sequence> if <condition>]
297
298For example, [w for w in words if w == w.lower()] would yield the list
299of words that contain no uppercase characters. This is more efficient
300than filter() with a lambda.
301
302You can also have nested for loops and more than one 'if' clause. For
303example, here's a function that flattens a sequence of sequences::
304
305 def flatten(seq):
306 return [x for subseq in seq for x in subseq]
307
308 flatten([[0], [1,2,3], [4,5], [6,7,8,9], []])
309
310This prints
311
312 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
313
314List comprehensions originated as a patch set from Greg Ewing; Skip
Jeremy Hylton24c3d602000-09-05 19:36:26 +0000315Montanaro and Thomas Wouters also contributed. Described by PEP 202.
Guido van Rossumf2ffce02000-09-05 04:38:34 +0000316
317
318Extended Import Statement
319-------------------------
320
321Many people have asked for a way to import a module under a different
322name. This can be accomplished like this:
323
324 import foo
325 bar = foo
326 del foo
327
328but this common idiom gets old quickly. A simple extension of the
329import statement now allows this to be written as follows:
330
331 import foo as bar
332
333There's also a variant for 'from ... import':
334
335 from foo import bar as spam
336
337This also works with packages; e.g. you can write this:
338
339 import test.regrtest as regrtest
340
341Note that 'as' is not a new keyword -- it is recognized only in this
342context (this is only possible because the syntax for the import
343statement doesn't involve expressions).
344
Jeremy Hylton24c3d602000-09-05 19:36:26 +0000345Implemented by Thomas Wouters. Described by PEP 221.
Guido van Rossumf2ffce02000-09-05 04:38:34 +0000346
347
348Extended Print Statement
349------------------------
350
351Easily the most controversial new feature, this extension to the print
352statement adds an option to make the output go to a different file
353than the default sys.stdout.
354
355For example, to write an error message to sys.stderr, you can now
356write:
357
358 print >> sys.stderr, "Error: bad dog!"
359
360As a special feature, if the expression used to indicate the file
361evaluates to None, the current value of sys.stdout used. Thus:
362
363 print >> None, "Hello world"
364
365is equivalent to
366
367 print "Hello world"
368
Jeremy Hylton24c3d602000-09-05 19:36:26 +0000369Design and implementation by Barry Warsaw. Described by PEP 214.
Guido van Rossumf2ffce02000-09-05 04:38:34 +0000370
371
372Optional Collection of Cyclical Garbage
373---------------------------------------
374
375Python is now equipped with a garbage collector that can hunt down
376cyclical references between Python objects. It's no replacement for
377reference counting; in fact, it depends on the reference counts being
378correct, and decides that a set of objects belong to a cycle if all
379their reference counts can be accounted for from their references to
380each other. This devious scheme was first proposed by Eric Tiedemann,
381and brought to implementation by Neil Schemenauer.
382
383There's a module "gc" that lets you control some parameters of the
384garbage collection. There's also an option to the configure script
385that lets you enable or disable the garbage collection. In 2.0b1,
386it's on by default, so that we (hopefully) can collect decent user
387experience with this new feature. There are some questions about its
388performance. if it proves to be too much of a problem, we'll turn it
389off by default in the final 2.0 release.
390
391
392Smaller Changes
393---------------
394
395A new function zip() was added. zip(seq1, seq2, ...) is equivalent to
396map(None, seq1, seq2, ...) when the sequences have the same length;
397i.e. zip([1,2,3], [10,20,30]) returns [(1,10), (2,20), (3,30)]. When
398the lists are not all the same length, the shortest list wins:
Jeremy Hylton24c3d602000-09-05 19:36:26 +0000399zip([1,2,3], [10,20]) returns [(1,10), (2,20)]. See PEP 201.
Guido van Rossumf2ffce02000-09-05 04:38:34 +0000400
401sys.version_info is a tuple (major, minor, micro, level, serial).
402
403Dictionaries have an odd new method, setdefault(key, default).
404dict.setdefault(key, default) returns dict[key] if it exists; if not,
405it sets dict[key] to default and returns that value. Thus:
406
407 dict.setdefault(key, []).append(item)
408
409does the same work as this common idiom:
410
411 if not dict.has_key(key):
412 dict[key] = []
413 dict[key].append(item)
414
Jeremy Hylton24c3d602000-09-05 19:36:26 +0000415There are two new variants of SyntaxError that are raised for
416indentation-related errors: IndentationError and TabError.
417
418Changed \x to consume exactly two hex digits; see PEP 223. Added \U
419escape that consumes exactly eight hex digits.
Jeremy Hyltonbdebd542000-09-05 18:28:54 +0000420
421The limits on the size of expressions and file in Python source code
422have been raised from 2**16 to 2**32. Previous versions of Python
423were limited because the maximum argument size the Python VM accepted
424was 2**16. This limited the size of object constructor expressions,
425e.g. [1,2,3] or {'a':1, 'b':2}, and the size of source files. This
426limit was raised thanks to a patch by Charles Waldman that effectively
427fixes the problem. It is now much more likely that you will be
428limited by available memory than by an arbitrary limit in Python.
429
430The interpreter's maximum recursion depth can be modified by Python
431programs using sys.getrecursionlimit and sys.setrecursionlimit. This
432limit is the maximum number of recursive calls that can be made by
433Python code. The limit exists to prevent infinite recursion from
434overflowing the C stack and causing a core dump. The default value is
4351000. The maximum safe value for a particular platform can be found
436by running Misc/find_recursionlimit.py.
Guido van Rossumf2ffce02000-09-05 04:38:34 +0000437
438New Modules and Packages
439------------------------
440
441atexit - for registering functions to be called when Python exits.
442
443imputil - Greg Stein's alternative API for writing custom import
444hooks.
445
446pyexpat - an interface to the Expat XML parser, contributed by Paul
447Prescod.
448
449xml - a new package with XML support code organized (so far) in three
450subpackages: xml.dom, xml.sax, and xml.parsers. Describing these
451would fill a volume. There's a special feature whereby a
452user-installed package named _xmlplus overrides the standard
453xmlpackage; this is intended to give the XML SIG a hook to distribute
454backwards-compatible updates to the standard xml package.
455
456webbrowser - a platform-independent API to launch a web browser.
457
458
Guido van Rossume905e952000-09-05 12:42:46 +0000459Changed Modules
460---------------
461
Jeremy Hylton24c3d602000-09-05 19:36:26 +0000462array -- new methods for array objects: count, extend, index, pop, and
463remove
464
465binascii -- new functions b2a_hex and a2b_hex that convert between
466binary data and its hex representation
467
Jeremy Hyltonbdebd542000-09-05 18:28:54 +0000468calendar -- Many new functions that support features including control
469over which day of the week is the first day, returning strings instead
470of printing them. Also new symbolic constants for days of week,
471e.g. MONDAY, ..., SUNDAY.
472
473cgi -- FieldStorage objects have a getvalue method that works like a
474dictionary's get method and returns the value attribute of the object.
475
476ConfigParser -- The parser object has new methods has_option,
477remove_section, remove_option, set, and write. They allow the module
478to be used for writing config files as well as reading them.
479
480ftplib -- ntransfercmd(), transfercmd(), and retrbinary() all now
Guido van Rossume905e952000-09-05 12:42:46 +0000481optionally support the RFC 959 REST command.
482
Jeremy Hyltonbdebd542000-09-05 18:28:54 +0000483gzip -- readline and readlines now accept optional size arguments
Guido van Rossume905e952000-09-05 12:42:46 +0000484
Jeremy Hyltonbdebd542000-09-05 18:28:54 +0000485httplib -- New interfaces and support for HTTP/1.1 by Greg Stein. See
486the module doc strings for details.
Guido van Rossum830ca2a2000-09-05 15:34:16 +0000487
Jeremy Hylton24c3d602000-09-05 19:36:26 +0000488locale -- implement getdefaultlocale for Win32 and Macintosh
489
490marshal -- no longer dumps core when marshaling deeply nested or
491recursive data structures
492
493os -- new functions isatty, seteuid, setegid, setreuid, setregid
494
Jeremy Hyltonbdebd542000-09-05 18:28:54 +0000495os/popen2 -- popen2/popen3/popen4 support under Windows. popen2/popen3
496support under Unix.
497
Jeremy Hylton24c3d602000-09-05 19:36:26 +0000498os/pty -- support for openpty and forkpty
Jeremy Hyltonbdebd542000-09-05 18:28:54 +0000499
500os.path -- fix semantics of os.path.commonprefix
501
502smtplib -- support for sending very long messages
503
504socket -- new function getfqdn()
505
506readline -- new functions to read, write and truncate history files.
507The readline section of the library reference manual contains an
508example.
509
Jeremy Hylton24c3d602000-09-05 19:36:26 +0000510select -- add interface to poll system call
511
Jeremy Hyltonbdebd542000-09-05 18:28:54 +0000512shutil -- new copyfileobj function
513
514SimpleHTTPServer, CGIHTTPServer -- Fix problems with buffering in the
515HTTP server.
516
Jeremy Hylton24c3d602000-09-05 19:36:26 +0000517Tkinter -- optimization of function flatten
Jeremy Hyltonbdebd542000-09-05 18:28:54 +0000518
519urllib -- scans environment variables for proxy configuration,
Tim Peters8b092332000-09-05 20:15:25 +0000520e.g. http_proxy.
Jeremy Hyltonbdebd542000-09-05 18:28:54 +0000521
522whichdb -- recognizes dumbdbm format
Guido van Rossume905e952000-09-05 12:42:46 +0000523
524
525Obsolete Modules
526----------------
527
528None. However note that 1.6 made a whole slew of modules obsolete:
529stdwin, soundex, cml, cmpcache, dircache, dump, find, grep, packmail,
530poly, zmod, strop, util, whatsound.
531
532
533Changed, New, Obsolete Tools
534----------------------------
535
Tim Peters8b092332000-09-05 20:15:25 +0000536None.
Guido van Rossume905e952000-09-05 12:42:46 +0000537
538
Guido van Rossumf2ffce02000-09-05 04:38:34 +0000539C-level Changes
540---------------
541
542Several cleanup jobs were carried out throughout the source code.
543
544All C code was converted to ANSI C; we got rid of all uses of the
545Py_PROTO() macro, which makes the header files a lot more readable.
546
547Most of the portability hacks were moved to a new header file,
548pyport.h; several other new header files were added and some old
549header files were removed, in an attempt to create a more rational set
550of header files. (Few of these ever need to be included explicitly;
551they are all included by Python.h.)
552
Guido van Rossumf2ffce02000-09-05 04:38:34 +0000553Trent Mick ensured portability to 64-bit platforms, under both Linux
Jeremy Hylton24c3d602000-09-05 19:36:26 +0000554and Win64, especially for the new Intel Itanium processor. Mick also
555added large file support for Linux64 and Win64.
Guido van Rossumf2ffce02000-09-05 04:38:34 +0000556
Jeremy Hyltonbdebd542000-09-05 18:28:54 +0000557The C APIs to return an object's size have been update to consistently
558use the form PyXXX_Size, e.g. PySequence_Size and PyDict_Size. In
559previous versions, the abstract interfaces used PyXXX_Length and the
560concrete interfaces used PyXXX_Size. The old names,
561e.g. PyObject_Length, are still available for backwards compatibility
562at the API level, but are deprecated.
563
Jeremy Hylton24c3d602000-09-05 19:36:26 +0000564The PyOS_CheckStack function has been implemented on Windows by
565Fredrik Lundh. It prevents Python from failing with a stack overflow
566on Windows.
Jeremy Hyltonbdebd542000-09-05 18:28:54 +0000567
568The GC changes resulted in creation of two new slots on object,
569tp_traverse and tp_clear. The augmented assignment changes result in
Guido van Rossum4338a282000-09-06 13:02:08 +0000570the creation of a new slot for each in-place operator.
Jeremy Hyltonbdebd542000-09-05 18:28:54 +0000571
572The GC API creates new requirements for container types implemented in
Guido van Rossum4338a282000-09-06 13:02:08 +0000573C extension modules. See Include/objimpl.h for details.
Jeremy Hyltonbdebd542000-09-05 18:28:54 +0000574
Jeremy Hylton24c3d602000-09-05 19:36:26 +0000575PyErr_Format has been updated to automatically calculate the size of
576the buffer needed to hold the formatted result string. This change
577prevents crashes caused by programmer error.
Jeremy Hyltonbdebd542000-09-05 18:28:54 +0000578
Jeremy Hylton24c3d602000-09-05 19:36:26 +0000579New C API calls: PyObject_AsFileDescriptor, PyErr_WriteUnraisable.
Guido van Rossume905e952000-09-05 12:42:46 +0000580
Jeremy Hylton24c3d602000-09-05 19:36:26 +0000581PyRun_AnyFileEx, PyRun_SimpleFileEx, PyRun_FileEx -- New functions
582that are the same as their non-Ex counterparts except they take an
583extra flag argument that tells them to close the file when done.
584
585XXX There were other API changes that should be fleshed out here.
Guido van Rossumab9d6f01998-08-10 22:01:13 +0000586
Tim Peters8b092332000-09-05 20:15:25 +0000587
588Windows Changes
589---------------
590
591New popen2/popen3/peopen4 in os module (see Changed Modules above).
592
593os.popen is much more usable on Windows 95 and 98. See Microsoft
594Knowledge Base article Q150956. The Win9x workaround described there
595is implemented by the new w9xpopen.exe helper in the root of your
596Python installation. Note that Python uses this internally; it is not
597a standalone program.
598
599Administrator privileges are no longer required to install Python
600on Windows NT or Windows 2000. If you have administrator privileges,
601Python's registry info will be written under HKEY_LOCAL_MACHINE.
602Otherwise the installer backs off to writing Python's registry info
Guido van Rossum4338a282000-09-06 13:02:08 +0000603under HKEY_CURRENT_USER. The latter is sufficient for all "normal"
Tim Peters8b092332000-09-05 20:15:25 +0000604uses of Python, but will prevent some advanced uses from working
605(for example, running a Python script as an NT service, or possibly
606from CGI).
607
608[This was new in 1.6] The installer no longer runs a separate Tcl/Tk
609installer; instead, it installs the needed Tcl/Tk files directly in the
610Python directory. If you already have a Tcl/Tk installation, this
611wastes some disk space (about 4 Megs) but avoids problems with
612conflicting Tcl/Tk installations, and makes it much easier for Python
613to ensure that Tcl/Tk can find all its files.
614
615[This was new in 1.6] The Windows installer now installs by default in
616\Python20\ on the default volume, instead of \Program Files\Python-2.0\.
617
Guido van Rossumab9d6f01998-08-10 22:01:13 +0000618======================================================================