blob: 2290a107c2e049a5921e9b840008d0ba819b3f2c [file] [log] [blame]
Tim Petersf553f892001-05-01 20:45:31 +00001What's New in Python 2.2a0?
2===========================
3
4Core
Tim Petersa814db52001-05-14 07:05:58 +00005
Mark Hammond2a0af792001-05-14 03:09:36 +00006- Some operating systems now support the concept of a default Unicode
7 encoding for file system operations. Notably, Windows supports 'mbcs'
8 as the default. The Macintosh will also adopt this concept in the medium
Guido van Rossum1bd797a2001-05-14 13:53:38 +00009 term, although the default encoding for that platform will be other than
Mark Hammond2a0af792001-05-14 03:09:36 +000010 'mbcs'.
Guido van Rossum1bd797a2001-05-14 13:53:38 +000011
12 On operating system that support non-ASCII filenames, it is common for
Mark Hammond2a0af792001-05-14 03:09:36 +000013 functions that return filenames (such as os.listdir()) to return Python
14 string objects pre-encoded using the default file system encoding for
15 the platform. As this encoding is likely to be different from Python's
16 default encoding, converting this name to a Unicode object before passing
17 it back to the Operating System would result in a Unicode error, as Python
Tim Petersa814db52001-05-14 07:05:58 +000018 would attempt to use its default encoding (generally ASCII) rather than
19 the default encoding for the file system.
Guido van Rossum1bd797a2001-05-14 13:53:38 +000020
Tim Petersa814db52001-05-14 07:05:58 +000021 In general, this change simply removes surprises when working with
22 Unicode and the file system, making these operations work as you expect,
23 increasing the transparency of Unicode objects in this context.
Mark Hammond2a0af792001-05-14 03:09:36 +000024 See [????] for more details, including examples.
Tim Petersf553f892001-05-01 20:45:31 +000025
Tim Peters61dff2b2001-05-08 15:43:37 +000026- Float (and complex) literals in source code were evaluated to full
27 precision only when running from a .py file; the same code loaded from a
28 .pyc (or .pyo) file could suffer numeric differences starting at about the
29 12th significant decimal digit. For example, on a machine with IEEE-754
30 floating arithmetic,
31
32 x = 9007199254740992.0
33 print long(x)
34
35 printed 9007199254740992 if run directly from .py, but 9007199254740000
36 if from a compiled (.pyc or .pyo) file. This was due to marshal using
37 str(float) instead of repr(float) when building code objects. marshal
38 now uses repr(float) instead, which should reproduce floats to full
39 machine precision (assuming the platform C float<->string I/O conversion
40 functions are of good quality).
41
42 This may cause floating-point results to change in some cases, and
43 usually for the better, but may also cause numerically unstable
44 algorithms to break.
45
Tim Peters2f228e72001-05-13 00:19:31 +000046- The implementation of dicts suffers fewer collisions, which has speed
47 benefits. However, the order in which dict entries appear in dict.keys(),
48 dict.values() and dict.items() may differ from previous releases for a
49 given dict. Nothing is defined about this order, so no program should
50 rely on it. Nevertheless, it's easy to write test cases that rely on the
51 order by accident, typically because of printing the str() or repr() of a
52 dict to an "expected results" file. See Lib/test/test_support.py's new
53 sortdict(dict) function for a simple way to display a dict in sorted
54 order.
55
Guido van Rossum10315822001-05-01 20:54:30 +000056- Dictionary objects now support the "in" operator: "x in dict" means
57 the same as dict.has_key(x).
58
59- Iterators were added; this is a generalized way of providing values
60 to a for loop. See PEP 234. There's a new built-in function iter()
61 to return an iterator. There's a new protocol to get the next value
62 from an iterator using the next() method (in Python) or the
63 tp_iternext slot (in C). There's a new protocol to get iterators
64 using the __iter__() method (in Python) or the tp_iter slot (in C).
65 Iterating (i.e. a for loop) over a dictionary generates its keys.
66 Iterating over a file generates its lines.
67
Tim Petersf553f892001-05-01 20:45:31 +000068- The following functions were generalized to work nicely with iterator
69 arguments:
Tim Peterse63415e2001-05-08 04:38:29 +000070 map(), filter(), reduce(), zip()
Tim Peters8572b4f2001-05-06 01:05:02 +000071 list(), tuple() (PySequence_Tuple() and PySequence_Fast() in C API)
72 max(), min()
Tim Petersde9725f2001-05-05 10:06:17 +000073 .join() method of strings
Tim Peters75f8e352001-05-05 11:33:43 +000074 'x in y' and 'x not in y' (PySequence_Contains() in C API)
75 operator.countOf() (PySequence_Count() in C API)
Tim Peters75f8e352001-05-05 11:33:43 +000076
Tim Petersd85e1022001-05-11 21:51:48 +000077- Accessing module attributes is significantly faster (for example,
78 random.random or os.path or yourPythonModule.yourAttribute).
79
Tim Peterse63415e2001-05-08 04:38:29 +000080- Comparing dictionary objects via == and != is faster, and now works even
81 if the keys and values don't support comparisons other than ==.
82
Tim Peters95bf9392001-05-10 08:32:44 +000083- Comparing dictionaries in ways other than == and != is slower: there were
84 insecurities in the dict comparison implementation that could cause Python
85 to crash if the element comparison routines for the dict keys and/or
86 values mutated the dicts. Making the code bulletproof slowed it down.
87
Tim Petersa814db52001-05-14 07:05:58 +000088Library
89
90- Cookie.py now sorts key+value pairs by key in output strings.
91
92- pprint.isrecursive(object) didn't correctly identify recursive objects.
93 Now it does.
94
Tim Peters95b3f782001-05-14 18:39:41 +000095- pprint functions now much faster for large containers (tuple, list, dict).
96
Tim Petersa814db52001-05-14 07:05:58 +000097Tests
98
99- New test_mutants.py runs dict comparisons where the key and value
100 comparison operators mutute the dicts randomly during comparison. This
101 rapidly causes Python to crash under earlier releases (not for the faint
102 of heart: it can also cause Win9x to freeze or reboot!).
103
104- New test_pprint.py verfies that pprint.isrecursive() and
Tim Peters95b3f782001-05-14 18:39:41 +0000105 pprint.isreadable() return sensible results. Also verifies that simple
106 cases produce correct output.
Tim Petersa814db52001-05-14 07:05:58 +0000107
Tim Petersf553f892001-05-01 20:45:31 +0000108
Guido van Rossumffe13be2001-04-16 18:46:45 +0000109What's New in Python 2.1 (final)?
110=================================
111
112We only changed a few things since the last release candidate, all in
113Python library code:
114
115- A bug in the locale module was fixed that affected locales which
116 define no grouping for numeric formatting.
117
118- A few bugs in the weakref module's implementations of weak
119 dictionaries (WeakValueDictionary and WeakKeyDictionary) were fixed,
120 and the test suite was updated to check for these bugs.
121
122- An old bug in the os.path.walk() function (introduced in Python
123 2.0!) was fixed: a non-existent file would cause an exception
124 instead of being ignored.
125
126- Fixed a few bugs in the new symtable module found by Neil Norwitz's
127 PyChecker.
128
129
Guido van Rossum5b08f132001-04-16 02:05:23 +0000130What's New in Python 2.1c2?
131===========================
Barry Warsaw11e89c72001-04-11 20:37:57 +0000132
Guido van Rossum5b08f132001-04-16 02:05:23 +0000133A flurry of small changes, and one showstopper fixed in the nick of
134time made it necessary to release another release candidate. The list
135here is the *complete* list of patches (except version updates):
Guido van Rossum4fb60362001-04-13 00:46:14 +0000136
Guido van Rossum5b08f132001-04-16 02:05:23 +0000137Core
Guido van Rossum4fb60362001-04-13 00:46:14 +0000138
Guido van Rossum5b08f132001-04-16 02:05:23 +0000139- Tim discovered a nasty bug in the dictionary code, caused by
140 PyDict_Next() calling dict_resize(), and the GC code's use of
141 PyDict_Next() violating an assumption in dict_items(). This was
142 fixed with considerable amounts of band-aid, but the net effect is a
143 saner and more robust implementation.
144
145- Made a bunch of symbols static that were accidentally global.
146
147Build and Ports
148
149- The setup.py script didn't check for a new enough version of zlib
150 (1.1.3 is needed). Now it does.
151
152- Changed "make clean" target to also remove shared libraries.
153
154- Added a more general warning about the SGI Irix optimizer to README.
155
156Library
157
158- Fix a bug in urllib.basejoin("http://host", "../file.html") which
159 omitted the slash between host and file.html.
160
161- The mailbox module's _Mailbox class contained a completely broken
162 and undocumented seek() method. Ripped it out.
163
164- Fixed a bunch of typos in various library modules (urllib2, smtpd,
165 sgmllib, netrc, chunk) found by Neil Norwitz's PyChecker.
166
167- Fixed a few last-minute bugs in unittest.
168
169Extensions
170
171- Reverted the patch to the OpenSSL code in socketmodule.c to support
172 RAND_status() and the EGD, and the subsequent patch that tried to
173 fix it for pre-0.9.5 versions; the problem with the patch is that on
174 some systems it issues a warning whenever socket is imported, and
175 that's unacceptable.
176
177Tests
178
179- Fixed the pickle tests to work with "import test.test_pickle".
180
181- Tweaked test_locale.py to actually run the test Windows.
182
183- In distutils/archive_util.py, call zipfile.ZipFile() with mode "w",
184 not "wb" (which is not a valid mode at all).
185
186- Fix pstats browser crashes. Import readline if it exists to make
187 the user interface nicer.
188
189- Add "import thread" to the top of test modules that import the
190 threading module (test_asynchat and test_threadedtempfile). This
191 prevents test failures caused by a broken threading module resulting
192 from a previously caught failed import.
193
194- Changed test_asynchat.py to set the SO_REUSEADDR option; this was
195 needed on some platforms (e.g. Solaris 8) when the tests are run
196 twice in succession.
197
198- Skip rather than fail test_sunaudiodev if no audio device is found.
199
200
201What's New in Python 2.1c1?
202===========================
203
204This list was significantly updated when 2.1c2 was released; the 2.1c1
205release didn't mention most changes that were actually part of 2.1c1:
206
207Legal
208
209- Copyright was assigned to the Python Software Foundation (PSF) and a
210 PSF license (very similar to the CNRI license) was added.
211
212- The CNRI copyright notice was updated to include 2001.
213
214Core
Barry Warsaw11e89c72001-04-11 20:37:57 +0000215
Guido van Rossumc9932722001-04-12 02:31:27 +0000216- After a public outcry, assignment to __debug__ is no longer illegal;
217 instead, a warning is issued. It will become illegal in 2.2.
218
Guido van Rossum5b08f132001-04-16 02:05:23 +0000219- Fixed a core dump with "%#x" % 0, and changed the semantics so that
220 "%#x" now always prepends "0x", even if the value is zero.
221
222- Fixed some nits in the bytecode compiler.
223
224- Fixed core dumps when calling certain kinds of non-functions.
225
226- Fixed various core dumps caused by reference count bugs.
227
228Build and Ports
229
230- Use INSTALL_SCRIPT to install script files.
231
Guido van Rossum34d37dc2001-04-11 21:03:32 +0000232- New port: SCO Unixware 7, by Billy G. Allie.
233
Guido van Rossum5b08f132001-04-16 02:05:23 +0000234- Updated RISCOS port.
235
236- Updated BeOS port and notes.
237
238- Various other porting problems resolved.
239
240Library
241
242- The TERMIOS and SOCKET modules are now truly obsolete and
243 unnecessary. Their symbols are incorporated in the termios and
244 socket modules.
245
246- Fixed some 64-bit bugs in pickle, cPickle, and struct, and added
247 better tests for pickling.
248
249- threading: make Condition.wait() robust against KeyboardInterrupt.
250
251- zipfile: add support to zipfile to support opening an archive
252 represented by an open file rather than a file name. Fix bug where
253 the archive was not properly closed. Fixed a bug in this bugfix
254 where flush() was called for a read-only file.
255
256- imputil: added an uninstall() method to the ImportManager.
257
258- Canvas: fixed bugs in lower() and tkraise() methods.
259
260- SocketServer: API change (added overridable close_request() method)
261 so that the TCP server can explicitly close the request.
262
263- pstats: Eric Raymond added a simple interactive statistics browser,
264 invoked when the module is run as a script.
265
266- locale: fixed a problem in format().
267
268- webbrowser: made it work when the BROWSER environment variable has a
269 value like "/usr/bin/netscape". Made it auto-detect Konqueror for
270 KDE 2. Fixed some other nits.
271
272- unittest: changes to allow using a different exception than
273 AssertionError, and added a few more function aliases. Some other
274 small changes.
275
276- urllib, urllib2: fixed redirect problems and a coupleof other nits.
277
278- asynchat: fixed a critical bug in asynchat that slipped through the
279 2.1b2 release. Fixed another rare bug.
280
281- Fix some unqualified except: clauses (always a bad code example).
282
283XML
284
285- pyexpat: new API get_version_string().
286
287- Fixed some minidom bugs.
288
289Extensions
290
291- Fixed a core dump in _weakref. Removed the weakref.mapping()
292 function (it adds nothing to the API).
293
294- Rationalized the use of header files in the readline module, to make
295 it compile (albeit with some warnings) with the very recent readline
296 4.2, without breaking for earlier versions.
297
298- Hopefully fixed a buffering problem in linuxaudiodev.
299
300- Attempted a fix to make the OpenSSL support in the socket module
301 work again with pre-0.9.5 versions of OpenSSL.
302
303Tests
304
305- Added a test case for asynchat and asyncore.
306
307- Removed coupling between tests where one test failing could break
308 another.
309
310Tools
311
312- Ping added an interactive help browser to pydoc, fixed some nits
313 in the rest of the pydoc code, and added some features to his
314 inspect module.
315
316- An updated python-mode.el version 4.1 which integrates Ken
317 Manheimer's pdbtrack.el. This makes debugging Python code via pdb
318 much nicer in XEmacs and Emacs. When stepping through your program
319 with pdb, in either the shell window or the *Python* window, the
320 source file and line will be tracked by an arrow. Very cool!
321
322- IDLE: syntax warnings in interactive mode are changed into errors.
323
324- Some improvements to Tools/webchecker (ignore some more URL types,
Tim Peters0e57abf2001-05-02 07:39:38 +0000325 follow some more links).
Guido van Rossum5b08f132001-04-16 02:05:23 +0000326
327- Brought the Tools/compiler package up to date.
Guido van Rossum34d37dc2001-04-11 21:03:32 +0000328
Barry Warsaw11e89c72001-04-11 20:37:57 +0000329
Martin v. Löwis0411f6f2001-03-21 08:01:39 +0000330What's New in Python 2.1 beta 2?
331================================
332
Guido van Rossum053ae352001-03-22 14:17:21 +0000333(Unlisted are many fixed bugs, more documentation, etc.)
334
Martin v. Löwis0411f6f2001-03-21 08:01:39 +0000335Core language, builtins, and interpreter
336
Guido van Rossum053ae352001-03-22 14:17:21 +0000337- The nested scopes work (enabled by "from __future__ import
338 nested_scopes") is completed; in particular, the future now extends
339 into code executed through exec, eval() and execfile(), and into the
340 interactive interpreter.
341
342- When calling a base class method (e.g. BaseClass.__init__(self)),
343 this is now allowed even if self is not strictly spoken a class
344 instance (e.g. when using metaclasses or the Don Beaudry hook).
345
346- Slice objects are now comparable but not hashable; this prevents
347 dict[:] from being accepted but meaningless.
348
349- Complex division is now calculated using less braindead algorithms.
350 This doesn't change semantics except it's more likely to give useful
351 results in extreme cases. Complex repr() now uses full precision
352 like float repr().
353
354- sgmllib.py now calls handle_decl() for simple <!...> declarations.
355
Jeremy Hyltonf626db72001-03-23 14:18:27 +0000356- It is illegal to assign to the name __debug__, which is set when the
357 interpreter starts. It is effectively a compile-time constant.
358
359- A warning will be issued if a global statement for a variable
360 follows a use or assignment of that variable.
361
Martin v. Löwis0411f6f2001-03-21 08:01:39 +0000362Standard library
363
Guido van Rossum053ae352001-03-22 14:17:21 +0000364- unittest.py, a unit testing framework by Steve Purcell (PyUNIT,
365 inspired by JUnit), is now part of the standard library. You now
366 have a choice of two testing frameworks: unittest requires you to
367 write testcases as separate code, doctest gathers them from
368 docstrings. Both approaches have their advantages and
369 disadvantages.
370
371- A new module Tix was added, which wraps the Tix extension library
372 for Tk. With that module, it is not necessary to statically link
373 Tix with _tkinter, since Tix will be loaded with Tcl's "package
374 require" command. See Demo/tix/.
375
376- tzparse.py is now obsolete.
377
378- In gzip.py, the seek() and tell() methods are removed -- they were
379 non-functional anyway, and it's better if callers can test for their
380 existence with hasattr().
381
382Python/C API
383
384- PyDict_Next(): it is now safe to call PyDict_SetItem() with a key
385 that's already in the dictionary during a PyDict_Next() iteration.
386 This used to fail occasionally when a dictionary resize operation
387 could be triggered that would rehash all the keys. All other
388 modifications to the dictionary are still off-limits during a
389 PyDict_Next() iteration!
390
391- New extended APIs related to passing compiler variables around.
392
393- New abstract APIs PyObject_IsInstance(), PyObject_IsSubclass()
394 implement isinstance() and issubclass().
395
396- Py_BuildValue() now has a "D" conversion to create a Python complex
397 number from a Py_complex C value.
Martin v. Löwis0411f6f2001-03-21 08:01:39 +0000398
Fred Drake4e262a92001-03-22 18:26:47 +0000399- Extensions types which support weak references must now set the
400 field allocated for the weak reference machinery to NULL themselves;
401 this is done to avoid the cost of checking each object for having a
402 weakly referencable type in PyObject_INIT(), since most types are
403 not weakly referencable.
404
Jeremy Hyltonf626db72001-03-23 14:18:27 +0000405- PyFrame_FastToLocals() and PyFrame_LocalsToFast() copy bindings for
406 free variables and cell variables to and from the frame's f_locals.
407
408- Variants of several functions defined in pythonrun.h have been added
409 to support the nested_scopes future statement. The variants all end
410 in Flags and take an extra argument, a PyCompilerFlags *; examples:
411 PyRun_AnyFileExFlags(), PyRun_InteractiveLoopFlags(). These
412 variants may be removed in Python 2.2, when nested scopes are
Tim Peters0e57abf2001-05-02 07:39:38 +0000413 mandatory.
Jeremy Hyltonf626db72001-03-23 14:18:27 +0000414
Andrew M. Kuchling8e9972c2001-03-22 15:42:08 +0000415Distutils
416
417- the sdist command now writes a PKG-INFO file, as described in PEP 241,
418 into the release tree.
419
Tim Peters0e57abf2001-05-02 07:39:38 +0000420- several enhancements to the bdist_wininst command from Thomas Heller
Andrew M. Kuchling8e9972c2001-03-22 15:42:08 +0000421 (an uninstaller, more customization of the installer's display)
422
423- from Jack Jansen: added Mac-specific code to generate a dialog for
424 users to specify the command-line (because providing a command-line with
Tim Peters0e57abf2001-05-02 07:39:38 +0000425 MacPython is awkward). Jack also made various fixes for the Mac
Andrew M. Kuchling8e9972c2001-03-22 15:42:08 +0000426 and the Metrowerks compiler.
Tim Peters0e57abf2001-05-02 07:39:38 +0000427
428- added 'platforms' and 'keywords' to the set of metadata that can be
429 specified for a distribution.
Andrew M. Kuchling8e9972c2001-03-22 15:42:08 +0000430
431- applied patches from Jason Tishler to make the compiler class work with
432 Cygwin.
433
434
Tim Peters2fe289a2001-03-01 22:19:38 +0000435What's New in Python 2.1 beta 1?
436================================
Tim Petersd66595f2001-02-04 03:09:53 +0000437
438Core language, builtins, and interpreter
439
Guido van Rossum9d0fbde2001-03-02 14:00:32 +0000440- Following an outcry from the community about the amount of code
441 broken by the nested scopes feature introduced in 2.1a2, we decided
442 to make this feature optional, and to wait until Python 2.2 (or at
443 least 6 months) to make it standard. The option can be enabled on a
444 per-module basis by adding "from __future__ import nested_scopes" at
445 the beginning of a module (before any other statements, but after
446 comments and an optional docstring). See PEP 236 (Back to the
447 __future__) for a description of the __future__ statement. PEP 227
448 (Statically Nested Scopes) has been updated to reflect this change,
449 and to clarify the semantics in a number of endcases.
450
451- The nested scopes code, when enabled, has been hardened, and most
452 bugs and memory leaks in it have been fixed.
453
454- Compile-time warnings are now generated for a number of conditions
455 that will break or change in meaning when nested scopes are enabled:
456
457 - Using "from...import *" or "exec" without in-clause in a function
458 scope that also defines a lambda or nested function with one or
459 more free (non-local) variables. The presence of the import* or
460 bare exec makes it impossible for the compiler to determine the
461 exact set of local variables in the outer scope, which makes it
462 impossible to determine the bindings for free variables in the
463 inner scope. To avoid the warning about import *, change it into
464 an import of explicitly name object, or move the import* statement
465 to the global scope; to avoid the warning about bare exec, use
466 exec...in... (a good idea anyway -- there's a possibility that
467 bare exec will be deprecated in the future).
468
469 - Use of a global variable in a nested scope with the same name as a
470 local variable in a surrounding scope. This will change in
471 meaning with nested scopes: the name in the inner scope will
472 reference the variable in the outer scope rather than the global
473 of the same name. To avoid the warning, either rename the outer
474 variable, or use a global statement in the inner function.
475
Neil Schemenauera35c6882001-02-27 04:45:05 +0000476- An optional object allocator has been included. This allocator is
477 optimized for Python objects and should be faster and use less memory
478 than the standard system allocator. It is not enabled by default
479 because of possible thread safety problems. The allocator is only
480 protected by the Python interpreter lock and it is possible that some
481 extension modules require a thread safe allocator. The object
482 allocator can be enabled by providing the "--with-pymalloc" option to
483 configure.
484
Tim Petersd66595f2001-02-04 03:09:53 +0000485Standard library
486
Martin v. Löwis2a5130e2001-02-27 04:21:58 +0000487- pyexpat now detects the expat version if expat.h defines it. A
488 number of additional handlers are provided, which are only available
489 since expat 1.95. In addition, the methods SetParamEntityParsing and
490 GetInputContext of Parser objects are available with 1.95.x
491 only. Parser objects now provide the ordered_attributes and
492 specified_attributes attributes. A new module expat.model was added,
493 which offers a number of additional constants if 1.95.x is used.
494
495- xml.dom offers the new functions registerDOMImplementation and
496 getDOMImplementation.
497
498- xml.dom.minidom offers a toprettyxml method. A number of DOM
499 conformance issues have been resolved. In particular, Element now
500 has an hasAttributes method, and the handling of namespaces was
501 improved.
502
Andrew M. Kuchlingd6a1d792001-02-28 21:05:42 +0000503- Ka-Ping Yee contributed two new modules: inspect.py, a module for
504 getting information about live Python code, and pydoc.py, a module
505 for interactively converting docstrings to HTML or text.
506 Tools/scripts/pydoc, which is now automatically installed into
Tim Peters1eff7962001-03-01 02:31:33 +0000507 <prefix>/bin, uses pydoc.py to display documentation; try running
Guido van Rossume3955a82001-03-02 14:05:59 +0000508 "pydoc -h" for instructions. "pydoc -g" pops up a small GUI that
509 lets you browse the module docstrings using a web browser.
Andrew M. Kuchlingd6a1d792001-02-28 21:05:42 +0000510
Tim Peters1eff7962001-03-01 02:31:33 +0000511- New library module difflib.py, primarily packaging the SequenceMatcher
512 class at the heart of the popular ndiff.py file-comparison tool.
513
514- doctest.py (a framework for verifying Python code examples in docstrings)
515 is now part of the std library.
516
Tim Petersd66595f2001-02-04 03:09:53 +0000517Windows changes
518
Guido van Rossume3955a82001-03-02 14:05:59 +0000519- A new entry in the Start menu, "Module Docs", runs "pydoc -g" -- a
520 small GUI that lets you browse the module docstrings using your
521 default web browser.
522
Tim Peters1eff7962001-03-01 02:31:33 +0000523- Import is now case-sensitive. PEP 235 (Import on Case-Insensitive
524 Platforms) is implemented. See
525
526 http://python.sourceforge.net/peps/pep-0235.html
527
528 for full details, especially the "Current Lower-Left Semantics" section.
529 The new Windows import rules are simpler than before:
530
531 A. If the PYTHONCASEOK environment variable exists, same as
532 before: silently accept the first case-insensitive match of any
533 kind; raise ImportError if none found.
534
535 B. Else search sys.path for the first case-sensitive match; raise
536 ImportError if none found.
537
538 The same rules have been implented on other platforms with case-
539 insensitive but case-preserving filesystems too (including Cygwin, and
540 several flavors of Macintosh operating systems).
Tim Petersd66595f2001-02-04 03:09:53 +0000541
Tim Peters25a9ce32001-02-19 07:06:36 +0000542- winsound module: Under Win9x, winsound.Beep() now attempts to simulate
543 what it's supposed to do (and does do under NT and 2000) via direct
544 port manipulation. It's unknown whether this will work on all systems,
Tim Peters1eff7962001-03-01 02:31:33 +0000545 but it does work on my Win98SE systems now and was known to be useless on
Tim Peters25a9ce32001-02-19 07:06:36 +0000546 all Win9x systems before.
547
Tim Peters1eff7962001-03-01 02:31:33 +0000548- Build: Subproject _test (effectively) renamed to _testcapi.
549
Tim Peters2fe289a2001-03-01 22:19:38 +0000550New platforms
551
552- 2.1 should compile and run out of the box under MacOS X, even using HFS+.
553 Thanks to Steven Majewski!
554
555- 2.1 should compile and run out of the box on Cygwin. Thanks to Jason
556 Tishler!
557
Guido van Rossum9089b272001-03-02 06:49:50 +0000558- 2.1 contains new files and patches for RISCOS, thanks to Dietmar
559 Schwertberger! See RISCOS/README for more information -- it seems
560 that because of the bizarre filename conventions on RISCOS, no port
561 to that platform is easy. Note that the new variable os.endsep is
562 silently supported in order to make life easier on this platform,
563 but we don't advertise it because it's not worth for most folks to
564 care about RISCOS portability.
565
Tim Peters25a9ce32001-02-19 07:06:36 +0000566
Tim Petersd7b5e882001-01-25 03:36:26 +0000567What's New in Python 2.1 alpha 2?
568=================================
Tim Peters40ead762001-01-27 05:35:26 +0000569
Tim Petersd7b5e882001-01-25 03:36:26 +0000570Core language, builtins, and interpreter
571
Jeremy Hylton4589bd82001-02-01 20:38:45 +0000572- Scopes nest. If a name is used in a function or class, but is not
573 local, the definition in the nearest enclosing function scope will
574 be used. One consequence of this change is that lambda statements
575 could reference variables in the namespaces where the lambda is
576 defined. In some unusual cases, this change will break code.
577
578 In all previous version of Python, names were resolved in exactly
579 three namespaces -- the local namespace, the global namespace, and
Jeremy Hyltond6b1cf92001-02-02 20:06:28 +0000580 the builtin namespace. According to this old definition, if a
Jeremy Hylton4589bd82001-02-01 20:38:45 +0000581 function A is defined within a function B, the names bound in B are
582 not visible in A. The new rules make names bound in B visible in A,
583 unless A contains a name binding that hides the binding in B.
584
585 Section 4.1 of the reference manual describes the new scoping rules
586 in detail. The test script in Lib/test/test_scope.py demonstrates
587 some of the effects of the change.
588
589 The new rules will cause existing code to break if it defines nested
590 functions where an outer function has local variables with the same
591 name as globals or builtins used by the inner function. Example:
592
593 def munge(str):
594 def helper(x):
595 return str(x)
596 if type(str) != type(''):
597 str = helper(str)
598 return str.strip()
599
600 Under the old rules, the name str in helper() is bound to the
601 builtin function str(). Under the new rules, it will be bound to
602 the argument named str and an error will occur when helper() is
603 called.
604
Jeremy Hyltond6b1cf92001-02-02 20:06:28 +0000605- The compiler will report a SyntaxError if "from ... import *" occurs
606 in a function or class scope. The language reference has documented
607 that this case is illegal, but the compiler never checked for it.
608 The recent introduction of nested scope makes the meaning of this
609 form of name binding ambiguous. In a future release, the compiler
610 may allow this form when there is no possibility of ambiguity.
611
Tim Peters40ead762001-01-27 05:35:26 +0000612- repr(string) is easier to read, now using hex escapes instead of octal,
613 and using \t, \n and \r instead of \011, \012 and \015 (respectively):
614
615 >>> "\texample \r\n" + chr(0) + chr(255)
616 '\texample \r\n\x00\xff' # in 2.1
617 '\011example \015\012\000\377' # in 2.0
618
Moshe Zadka6af0ce02001-01-29 06:41:00 +0000619- Functions are now compared and hashed by identity, not by value, since
620 the func_code attribute is writable.
621
Fred Drakefb9d7122001-02-01 20:00:40 +0000622- Weak references (PEP 205) have been added. This involves a few
623 changes in the core, an extension module (_weakref), and a Python
624 module (weakref). The weakref module is the public interface. It
625 includes support for "explicit" weak references, proxy objects, and
626 mappings with weakly held values.
627
Jeremy Hylton0072d5a2001-02-01 22:53:15 +0000628- A 'continue' statement can now appear in a try block within the body
629 of a loop. It is still not possible to use continue in a finally
Tim Peters9ea17ac2001-02-02 05:57:15 +0000630 clause.
Jeremy Hylton0072d5a2001-02-01 22:53:15 +0000631
Tim Petersd7b5e882001-01-25 03:36:26 +0000632Standard library
633
Barry Warsaw30dbd142001-01-31 22:14:01 +0000634- mailbox.py now has a new class, PortableUnixMailbox which is
635 identical to UnixMailbox but uses a more portable scheme for
636 determining From_ separators. Also, the constructors for all the
637 classes in this module have a new optional `factory' argument, which
638 is a callable used when new message classes must be instantiated by
639 the next() method.
640
Tim Petersd7b5e882001-01-25 03:36:26 +0000641- random.py is now self-contained, and offers all the functionality of
642 the now-deprecated whrandom.py. See the docs for details. random.py
643 also supports new functions getstate() and setstate(), for saving
Tim Petersd52269b2001-01-25 06:23:18 +0000644 and restoring the internal state of the generator; and jumpahead(n),
645 for quickly forcing the internal state to be the same as if n calls to
646 random() had been made. The latter is particularly useful for multi-
647 threaded programs, creating one instance of the random.Random() class for
648 each thread, then using .jumpahead() to force each instance to use a
649 non-overlapping segment of the full period.
Tim Petersd7b5e882001-01-25 03:36:26 +0000650
Tim Peters0de88fc2001-02-01 04:59:18 +0000651- random.py's seed() function is new. For bit-for-bit compatibility with
652 prior releases, use the whseed function instead. The new seed function
653 addresses two problems: (1) The old function couldn't produce more than
654 about 2**24 distinct internal states; the new one about 2**45 (the best
655 that can be done in the Wichmann-Hill generator). (2) The old function
656 sometimes produced identical internal states when passed distinct
657 integers, and there was no simple way to predict when that would happen;
658 the new one guarantees to produce distinct internal states for all
659 arguments in [0, 27814431486576L).
660
Jeremy Hylton4c4fda02001-02-02 03:29:24 +0000661- The socket module now supports raw packets on Linux. The socket
662 family is AF_PACKET.
663
Tim Peters9ea17ac2001-02-02 05:57:15 +0000664- test_capi.py is a start at running tests of the Python C API. The tests
665 are implemented by the new Modules/_testmodule.c.
666
Jeremy Hyltond6b1cf92001-02-02 20:06:28 +0000667- A new extension module, _symtable, provides provisional access to the
668 internal symbol table used by the Python compiler. A higher-level
669 interface will be added on top of _symtable in a future release.
670
Andrew M. Kuchlingdebc3522001-02-22 15:53:21 +0000671- Removed the obsolete soundex module.
672
Martin v. Löwis2a5130e2001-02-27 04:21:58 +0000673- xml.dom.minidom now uses the standard DOM exceptions. Node supports
674 the isSameNode method; NamedNodeMap the get method.
675
676- xml.sax.expatreader supports the lexical handler property; it
677 generates comment, startCDATA, and endCDATA events.
678
Tim Petersee826f82001-01-31 19:39:44 +0000679Windows changes
680
681- Build procedure: the zlib project is built in a different way that
682 ensures the zlib header files used can no longer get out of synch with
Tim Peters9ea17ac2001-02-02 05:57:15 +0000683 the zlib binary used. See PCbuild\readme.txt for details. Your old
684 zlib-related directories can be deleted; you'll need to download fresh
685 source for zlib and unpack it into a new directory.
Tim Petersee826f82001-01-31 19:39:44 +0000686
Tim Peters9ea17ac2001-02-02 05:57:15 +0000687- Build: New subproject _test for the benefit of test_capi.py (see above).
688
Tim Petersb16c56f2001-02-02 21:24:51 +0000689- Build: New subproject _symtable, for new DLL _symtable.pyd (a nascent
690 interface to some Python compiler internals).
691
692- Build: Subproject ucnhash is gone, since the code was folded into the
Tim Peters9ea17ac2001-02-02 05:57:15 +0000693 unicodedata subproject.
Tim Petersd7b5e882001-01-25 03:36:26 +0000694
Tim Petersa3a3a032000-11-30 05:22:44 +0000695What's New in Python 2.1 alpha 1?
696=================================
697
698Core language, builtins, and interpreter
699
Marc-André Lemburgebb195b2001-01-20 10:34:52 +0000700- There is a new Unicode companion to the PyObject_Str() API
701 called PyObject_Unicode(). It behaves in the same way as the
702 former, but assures that the returned value is an Unicode object
703 (applying the usual coercion if necessary).
Marc-André Lemburgad7c98e2001-01-17 17:09:53 +0000704
Guido van Rossumf98eda02001-01-17 15:54:45 +0000705- The comparison operators support "rich comparison overloading" (PEP
706 207). C extension types can provide a rich comparison function in
707 the new tp_richcompare slot in the type object. The cmp() function
708 and the C function PyObject_Compare() first try the new rich
709 comparison operators before trying the old 3-way comparison. There
710 is also a new C API PyObject_RichCompare() (which also falls back on
711 the old 3-way comparison, but does not constrain the outcome of the
712 rich comparison to a Boolean result).
713
714 The rich comparison function takes two objects (at least one of
715 which is guaranteed to have the type that provided the function) and
716 an integer indicating the opcode, which can be Py_LT, Py_LE, Py_EQ,
717 Py_NE, Py_GT, Py_GE (for <, <=, ==, !=, >, >=), and returns a Python
718 object, which may be NotImplemented (in which case the tp_compare
719 slot function is used as a fallback, if defined).
720
721 Classes can overload individual comparison operators by defining one
722 or more of the methods__lt__, __le__, __eq__, __ne__, __gt__,
Guido van Rossuma88479f2001-01-18 14:28:08 +0000723 __ge__. There are no explicit "reflected argument" versions of
724 these; instead, __lt__ and __gt__ are each other's reflection,
725 likewise for__le__ and __ge__; __eq__ and __ne__ are their own
726 reflection (similar at the C level). No other implications are
727 made; in particular, Python does not assume that == is the Boolean
728 inverse of !=, or that < is the Boolean inverse of >=. This makes
729 it possible to define types with partial orderings.
Guido van Rossumf98eda02001-01-17 15:54:45 +0000730
731 Classes or types that want to implement (in)equality tests but not
732 the ordering operators (i.e. unordered types) should implement ==
733 and !=, and raise an error for the ordering operators.
734
Guido van Rossuma88479f2001-01-18 14:28:08 +0000735 It is possible to define types whose rich comparison results are not
Guido van Rossumf98eda02001-01-17 15:54:45 +0000736 Boolean; e.g. a matrix type might want to return a matrix of bits
737 for A < B, giving elementwise comparisons. Such types should ensure
738 that any interpretation of their value in a Boolean context raises
739 an exception, e.g. by defining __nonzero__ (or the tp_nonzero slot
740 at the C level) to always raise an exception.
741
Guido van Rossuma88479f2001-01-18 14:28:08 +0000742- Complex numbers use rich comparisons to define == and != but raise
743 an exception for <, <=, > and >=. Unfortunately, this also means
744 that cmp() of two complex numbers raises an exception when the two
745 numbers differ. Since it is not mathematically meaningful to compare
746 complex numbers except for equality, I hope that this doesn't break
747 too much code.
748
Tim Peters3389f192001-02-18 08:48:49 +0000749- The outcome of comparing non-numeric objects of different types is
Tim Peters14495852001-02-18 08:28:33 +0000750 not defined by the language, other than that it's arbitrary but
751 consistent (see the Reference Manual). An implementation detail changed
752 in 2.1a1 such that None now compares less than any other object. Code
753 relying on this new behavior (like code that relied on the previous
754 behavior) does so at its own risk.
755
Barry Warsaw573b5412001-01-15 20:43:18 +0000756- Functions and methods now support getting and setting arbitrarily
757 named attributes (PEP 232). Functions have a new __dict__
758 (a.k.a. func_dict) which hold the function attributes. Methods get
759 and set attributes on their underlying im_func. It is a TypeError
760 to set an attribute on a bound method.
761
Guido van Rossum051e3352001-01-15 19:11:10 +0000762- The xrange() object implementation has been improved so that
763 xrange(sys.maxint) can be used on 64-bit platforms. There's still a
764 limitation that in this case len(xrange(sys.maxint)) can't be
765 calculated, but the common idiom "for i in xrange(sys.maxint)" will
766 work fine as long as the index i doesn't actually reach 2**31.
767 (Python uses regular ints for sequence and string indices; fixing
768 that is much more work.)
769
Guido van Rossum1cc8f832001-01-12 16:25:08 +0000770- Two changes to from...import:
771
Guido van Rossumba381232001-02-03 15:06:40 +0000772 1) "from M import X" now works even if (after loading module M)
773 sys.modules['M'] is not a real module; it's basically a getattr()
774 operation with AttributeError exceptions changed into ImportError.
Guido van Rossum1cc8f832001-01-12 16:25:08 +0000775
776 2) "from M import *" now looks for M.__all__ to decide which names to
777 import; if M.__all__ doesn't exist, it uses M.__dict__.keys() but
778 filters out names starting with '_' as before. Whether or not
779 __all__ exists, there's no restriction on the type of M.
780
Guido van Rossumf61f1662001-01-10 20:13:55 +0000781- File objects have a new method, xreadlines(). This is the fastest
782 way to iterate over all lines in a file:
783
784 for line in file.xreadlines():
785 ...do something to line...
786
787 See the xreadlines module (mentioned below) for how to do this for
788 other file-like objects.
789
790- Even if you don't use file.xreadlines(), you may expect a speedup on
791 line-by-line input. The file.readline() method has been optimized
Tim Petersf29b64d2001-01-15 06:33:19 +0000792 quite a bit in platform-specific ways: on systems (like Linux) that
793 support flockfile(), getc_unlocked(), and funlockfile(), those are
794 used by default. On systems (like Windows) without getc_unlocked(),
795 a complicated (but still thread-safe) method using fgets() is used by
796 default.
797
Tim Petersd52269b2001-01-25 06:23:18 +0000798 You can force use of the fgets() method by #define'ing
799 USE_FGETS_IN_GETLINE at build time (it may be faster than
Tim Petersf29b64d2001-01-15 06:33:19 +0000800 getc_unlocked()).
801
Tim Petersd52269b2001-01-25 06:23:18 +0000802 You can force fgets() not to be used by #define'ing
803 DONT_USE_FGETS_IN_GETLINE (this is the first thing to try if std test
Tim Petersf29b64d2001-01-15 06:33:19 +0000804 test_bufio.py fails -- and let us know if it does!).
805
806- In addition, the fileinput module, while still slower than the other
807 methods on most platforms, has been sped up too, by using
808 file.readlines(sizehint).
Guido van Rossumf61f1662001-01-10 20:13:55 +0000809
810- Support for run-time warnings has been added, including a new
811 command line option (-W) to specify the disposition of warnings.
812 See the description of the warnings module below.
813
814- Extensive changes have been made to the coercion code. This mostly
815 affects extension modules (which can now implement mixed-type
816 numerical operators without having to use coercion), but
817 occasionally, in boundary cases the coercion semantics have changed
818 subtly. Since this was a terrible gray area of the language, this
Guido van Rossumae72d872001-01-11 15:00:14 +0000819 is considered an improvement. Also note that __rcmp__ is no longer
Guido van Rossumf61f1662001-01-10 20:13:55 +0000820 supported -- instead of calling __rcmp__, __cmp__ is called with
Guido van Rossuma88479f2001-01-18 14:28:08 +0000821 reflected arguments.
Guido van Rossumf61f1662001-01-10 20:13:55 +0000822
Guido van Rossumf98eda02001-01-17 15:54:45 +0000823- In connection with the coercion changes, a new built-in singleton
824 object, NotImplemented is defined. This can be returned for
825 operations that wish to indicate they are not implemented for a
826 particular combination of arguments. From C, this is
827 Py_NotImplemented.
828
Martin v. Löwisbe4c0f52001-01-04 20:30:56 +0000829- The interpreter accepts now bytecode files on the command line even
830 if they do not have a .pyc or .pyo extension. On Linux, after executing
831
Martin v. Löwise214baa2001-02-04 22:37:56 +0000832import imp,sys,string
833magic = string.join(["\\x%.2x" % ord(c) for c in imp.get_magic()],"")
834reg = ':pyc:M::%s::%s:' % (magic, sys.executable)
835open("/proc/sys/fs/binfmt_misc/register","wb").write(reg)
Martin v. Löwisbe4c0f52001-01-04 20:30:56 +0000836
837 any byte code file can be used as an executable (i.e. as an argument
838 to execve(2)).
839
Tim Peters9940b802000-12-01 07:59:35 +0000840- %[xXo] formats of negative Python longs now produce a sign
Tim Petersa3a3a032000-11-30 05:22:44 +0000841 character. In 1.6 and earlier, they never produced a sign,
842 and raised an error if the value of the long was too large
843 to fit in a Python int. In 2.0, they produced a sign if and
844 only if too large to fit in an int. This was inconsistent
845 across platforms (because the size of an int varies across
846 platforms), and inconsistent with hex() and oct(). Example:
847
848 >>> "%x" % -0x42L
Tim Peters9940b802000-12-01 07:59:35 +0000849 '-42' # in 2.1
Tim Petersa3a3a032000-11-30 05:22:44 +0000850 'ffffffbe' # in 2.0 and before, on 32-bit machines
851 >>> hex(-0x42L)
852 '-0x42L' # in all versions of Python
853
Tim Peters9940b802000-12-01 07:59:35 +0000854 The behavior of %d formats for negative Python longs remains
855 the same as in 2.0 (although in 1.6 and before, they raised
856 an error if the long didn't fit in a Python int).
857
858 %u formats don't make sense for Python longs, but are allowed
859 and treated the same as %d in 2.1. In 2.0, a negative long
860 formatted via %u produced a sign if and only if too large to
861 fit in an int. In 1.6 and earlier, a negative long formatted
862 via %u raised an error if it was too big to fit in an int.
863
Guido van Rossum3661d392000-12-12 22:10:31 +0000864- Dictionary objects have an odd new method, popitem(). This removes
865 an arbitrary item from the dictionary and returns it (in the form of
866 a (key, value) pair). This can be useful for algorithms that use a
867 dictionary as a bag of "to do" items and repeatedly need to pick one
868 item. Such algorithms normally end up running in quadratic time;
869 using popitem() they can usually be made to run in linear time.
870
Tim Peters36cdad12000-12-29 02:06:45 +0000871Standard library
872
Thomas Woutersfe385252001-01-19 23:16:56 +0000873- In the time module, the time argument to the functions strftime,
874 localtime, gmtime, asctime and ctime is now optional, defaulting to
875 the current time (in the local timezone).
876
Guido van Rossumda91f222001-01-15 16:36:08 +0000877- The ftplib module now defaults to passive mode, which is deemed a
878 more useful default given that clients are often inside firewalls
879 these days. Note that this could break if ftplib is used to connect
880 to a *server* that is inside a firewall, from outside; this is
881 expected to be a very rare situation. To fix that, you can call
882 ftp.set_pasv(0).
883
Martin v. Löwis10a27872001-01-13 09:54:41 +0000884- The module site now treats .pth files not only for path configuration,
885 but also supports extensions to the initialization code: Lines starting
886 with import are executed.
887
Guido van Rossumf61f1662001-01-10 20:13:55 +0000888- There's a new module, warnings, which implements a mechanism for
889 issuing and filtering warnings. There are some new built-in
890 exceptions that serve as warning categories, and a new command line
891 option, -W, to control warnings (e.g. -Wi ignores all warnings, -We
892 turns warnings into errors). warnings.warn(message[, category])
893 issues a warning message; this can also be called from C as
894 PyErr_Warn(category, message).
895
896- A new module xreadlines was added. This exports a single factory
897 function, xreadlines(). The intention is that this code is the
898 absolutely fastest way to iterate over all lines in an open
899 file(-like) object:
900
901 import xreadlines
902 for line in xreadlines.xreadlines(file):
903 ...do something to line...
904
905 This is equivalent to the previous the speed record holder using
906 file.readlines(sizehint). Note that if file is a real file object
907 (as opposed to a file-like object), this is equivalent:
908
909 for line in file.xreadlines():
910 ...do something to line...
911
Tim Peters36cdad12000-12-29 02:06:45 +0000912- The bisect module has new functions bisect_left, insort_left,
913 bisect_right and insort_right. The old names bisect and insort
914 are now aliases for bisect_right and insort_right. XXX_right
915 and XXX_left methods differ in what happens when the new element
916 compares equal to one or more elements already in the list: the
917 XXX_left methods insert to the left, the XXX_right methods to the
Tim Peters742bb6f2001-01-05 08:05:32 +0000918 right. Code that doesn't care where equal elements end up should
919 continue to use the old, short names ("bisect" and "insort").
Tim Peters36cdad12000-12-29 02:06:45 +0000920
Andrew M. Kuchlingf6f3a892001-01-13 14:53:34 +0000921- The new curses.panel module wraps the panel library that forms part
922 of SYSV curses and ncurses. Contributed by Thomas Gellekum.
923
Guido van Rossumf61f1662001-01-10 20:13:55 +0000924- The SocketServer module now sets the allow_reuse_address flag by
925 default in the TCPServer class.
926
927- A new function, sys._getframe(), returns the stack frame pointer of
928 the caller. This is intended only as a building block for
929 higher-level mechanisms such as string interpolation.
930
Martin v. Löwis2a5130e2001-02-27 04:21:58 +0000931- The pyexpat module supports a number of new handlers, which are
932 available only in expat 1.2. If invocation of a callback fails, it
933 will report an additional frame in the traceback. Parser objects
934 participate now in garbage collection. If expat reports an unknown
935 encoding, pyexpat will try to use a Python codec; that works only
936 for single-byte charsets. The parser type objects is exposed as
937 XMLParserObject.
938
939- xml.dom now offers standard definitions for symbolic node type and
940 exception code constants, and a hierarchy of DOM exceptions. minidom
941 was adjusted to use them.
942
943- The conformance of xml.dom.minidom to the DOM specification was
944 improved. It detects a number of additional error cases; the
945 previous/next relationship works even when the tree is modified;
946 Node supports the normalize() method; NamedNodeMap, DocumentType and
947 DOMImplementation classes were added; Element supports the
948 hasAttribute and hasAttributeNS methods; and Text supports the splitText
949 method.
950
Guido van Rossumf61f1662001-01-10 20:13:55 +0000951Build issues
952
Guido van Rossum1e33bdc2001-01-23 03:17:00 +0000953- For Unix (and Unix-compatible) builds, configuration and building of
954 extension modules is now greatly automated. Rather than having to
955 edit the Modules/Setup file to indicate which modules should be
956 built and where their include files and libraries are, a
957 distutils-based setup.py script now takes care of building most
958 extension modules. All extension modules built this way are built
959 as shared libraries. Only a few modules that must be linked
960 statically are still listed in the Setup file; you won't need to
961 edit their configuration.
962
963- Python should now build out of the box on Cygwin. If it doesn't,
964 mail to Jason Tishler (jlt63 at users.sourceforge.net).
Guido van Rossumf61f1662001-01-10 20:13:55 +0000965
966- Python now always uses its own (renamed) implementation of getopt()
967 -- there's too much variation among C library getopt()
968 implementations.
969
970- C++ compilers are better supported; the CXX macro is always set to a
971 C++ compiler if one is found.
Tim Peters36cdad12000-12-29 02:06:45 +0000972
Tim Petersd92dfe02000-12-12 01:18:41 +0000973Windows changes
974
975- select module: By default under Windows, a select() call
976 can specify no more than 64 sockets. Python now boosts
977 this Microsoft default to 512. If you need even more than
978 that, see the MS docs (you'll need to #define FD_SETSIZE
979 and recompile Python from source).
980
Guido van Rossumf61f1662001-01-10 20:13:55 +0000981- Support for Windows 3.1, DOS and OS/2 is gone. The Lib/dos-8x3
982 subdirectory is no more!
983
Tim Petersa3a3a032000-11-30 05:22:44 +0000984
Jeremy Hyltond6e20232000-10-16 20:08:38 +0000985What's New in Python 2.0?
Fred Drake1a640502000-10-16 20:27:25 +0000986=========================
Guido van Rossum61000331997-08-15 04:39:58 +0000987
Guido van Rossum8ed602b2000-09-01 22:34:33 +0000988Below is a list of all relevant changes since release 1.6. Older
Guido van Rossumf2ffce02000-09-05 04:38:34 +0000989changes are in the file HISTORY. If you are making the jump directly
990from Python 1.5.2 to 2.0, make sure to read the section for 1.6 in the
991HISTORY file! Many important changes listed there.
Guido van Rossum61000331997-08-15 04:39:58 +0000992
Guido van Rossumf2ffce02000-09-05 04:38:34 +0000993Alternatively, a good overview of the changes between 1.5.2 and 2.0 is
994the document "What's New in Python 2.0" by Kuchling and Moshe Zadka:
995http://starship.python.net/crew/amk/python/writing/new-python/.
Guido van Rossum1f83cce1997-10-06 21:04:35 +0000996
Guido van Rossumf2ffce02000-09-05 04:38:34 +0000997--Guido van Rossum (home page: http://www.pythonlabs.com/~guido/)
Guido van Rossum437cfe81999-04-08 20:17:57 +0000998
999======================================================================
1000
Jeremy Hyltond6e20232000-10-16 20:08:38 +00001001What's new in 2.0 (since release candidate 1)?
1002==============================================
1003
1004Standard library
1005
1006- The copy_reg module was modified to clarify its intended use: to
1007 register pickle support for extension types, not for classes.
1008 pickle() will raise a TypeError if it is passed a class.
1009
1010- Fixed a bug in gettext's "normalize and expand" code that prevented
1011 it from finding an existing .mo file.
1012
1013- Restored support for HTTP/0.9 servers in httplib.
1014
Tim Peters989b7b92000-10-16 20:24:53 +00001015- The math module was changed to stop raising OverflowError in case of
1016 underflow, and return 0 instead in underflow cases. Whether Python
1017 used to raise OverflowError in case of underflow was platform-
1018 dependent (it did when the platform math library set errno to ERANGE
1019 on underflow).
Jeremy Hyltond6e20232000-10-16 20:08:38 +00001020
1021- Fixed a bug in StringIO that occurred when the file position was not
1022 at the end of the file and write() was called with enough data to
1023 extend past the end of the file.
1024
1025- Fixed a bug that caused Tkinter error messages to get lost on
1026 Windows. The bug was fixed by replacing direct use of
1027 interp->result with Tcl_GetStringResult(interp).
1028
1029- Fixed bug in urllib2 that caused it to fail when it received an HTTP
1030 redirect response.
1031
1032- Several changes were made to distutils: Some debugging code was
1033 removed from util. Fixed the installer used when an external zip
1034 program (like WinZip) is not found; the source code for this
1035 installer is in Misc/distutils. check_lib() was modified to behave
1036 more like AC_CHECK_LIB by add other_libraries() as a parameter. The
1037 test for whether installed modules are on sys.path was changed to
1038 use both normcase() and normpath().
1039
Jeremy Hyltond867a2c2000-10-16 20:41:38 +00001040- Several minor bugs were fixed in the xml package (the minidom,
1041 pulldom, expatreader, and saxutils modules).
Jeremy Hyltond6e20232000-10-16 20:08:38 +00001042
1043- The regression test driver (regrtest.py) behavior when invoked with
1044 -l changed: It now reports a count of objects that are recognized as
1045 garbage but not freed by the garbage collector.
1046
Tim Peters989b7b92000-10-16 20:24:53 +00001047- The regression test for the math module was changed to test
1048 exceptional behavior when the test is run in verbose mode. Python
1049 cannot yet guarantee consistent exception behavior across platforms,
1050 so the exception part of test_math is run only in verbose mode, and
1051 may fail on your platform.
Jeremy Hyltond6e20232000-10-16 20:08:38 +00001052
1053Internals
1054
1055- PyOS_CheckStack() has been disabled on Win64, where it caused
1056 test_sre to fail.
1057
1058Build issues
1059
1060- Changed compiler flags, so that gcc is always invoked with -Wall and
1061 -Wstrict-prototypes. Users compiling Python with GCC should see
1062 exactly one warning, except if they have passed configure the
Tim Peters989b7b92000-10-16 20:24:53 +00001063 --with-pydebug flag. The expected warning is for getopt() in
Tim Petersadfb94f2000-10-16 20:51:33 +00001064 Modules/main.c. This warning will be fixed for Python 2.1.
Jeremy Hyltond6e20232000-10-16 20:08:38 +00001065
Tim Petersa3a3a032000-11-30 05:22:44 +00001066- Fixed configure to add -threads argument during linking on OSF1.
Jeremy Hyltond6e20232000-10-16 20:08:38 +00001067
1068Tools and other miscellany
1069
1070- The compiler in Tools/compiler was updated to support the new
1071 language features introduced in 2.0: extended print statement, list
1072 comprehensions, and augmented assignments. The new compiler should
1073 also be backwards compatible with Python 1.5.2; the compiler will
1074 always generate code for the version of the interpreter it runs
Tim Petersa3a3a032000-11-30 05:22:44 +00001075 under.
Jeremy Hyltond6e20232000-10-16 20:08:38 +00001076
Jeremy Hyltoned9e6442000-10-09 18:26:42 +00001077What's new in 2.0 release candidate 1 (since beta 2)?
1078=====================================================
1079
Jeremy Hylton6040aaa2000-10-09 21:27:22 +00001080What is release candidate 1?
1081
1082We believe that release candidate 1 will fix all known bugs that we
1083intend to fix for the 2.0 final release. This release should be a bit
1084more stable than the previous betas. We would like to see even more
1085widespread testing before the final release, so we are producing this
1086release candidate. The final release will be exactly the same unless
1087any show-stopping (or brown bag) bugs are found by testers of the
1088release candidate.
1089
Jeremy Hyltoned9e6442000-10-09 18:26:42 +00001090All the changes since the last beta release are bug fixes or changes
Jeremy Hyltond6e20232000-10-16 20:08:38 +00001091to support building Python for specific platforms.
Jeremy Hyltoned9e6442000-10-09 18:26:42 +00001092
1093Core language, builtins, and interpreter
1094
1095- A bug that caused crashes when __coerce__ was used with augmented
1096 assignment, e.g. +=, was fixed.
1097
1098- Raise ZeroDivisionError when raising zero to a negative number,
1099 e.g. 0.0 ** -2.0. Note that math.pow is unrelated to the builtin
1100 power operator and the result of math.pow(0.0, -2.0) will vary by
1101 platform. On Linux, it raises a ValueError.
1102
1103- A bug in Unicode string interpolation was fixed that occasionally
1104 caused errors with formats including "%%". For example, the
1105 following expression "%% %s" % u"abc" no longer raises a TypeError.
1106
1107- Compilation of deeply nested expressions raises MemoryError instead
1108 of SyntaxError, e.g. eval("[" * 50 + "]" * 50).
1109
1110- In 2.0b2 on Windows, the interpreter wrote .pyc files in text mode,
1111 rendering them useless. They are now written in binary mode again.
1112
1113Standard library
1114
1115- Keyword arguments are now accepted for most pattern and match object
1116 methods in SRE, the standard regular expression engine.
1117
Jeremy Hyltond6e20232000-10-16 20:08:38 +00001118- In SRE, fixed error with negative lookahead and lookbehind that
Jeremy Hylton32e20ff2000-10-09 19:48:11 +00001119 manifested itself as a runtime error in patterns like "(?<!abc)(def)".
Jeremy Hyltoned9e6442000-10-09 18:26:42 +00001120
Jeremy Hyltond6e20232000-10-16 20:08:38 +00001121- Several bugs in the Unicode handling and error handling in _tkinter
1122 were fixed.
Jeremy Hyltoned9e6442000-10-09 18:26:42 +00001123
1124- Fix memory management errors in Merge() and Tkapp_Call() routines.
1125
1126- Several changes were made to cStringIO to make it compatible with
1127 the file-like object interface and with StringIO. If operations are
1128 performed on a closed object, an exception is raised. The truncate
1129 method now accepts a position argument and readline accepts a size
Tim Petersa3a3a032000-11-30 05:22:44 +00001130 argument.
Jeremy Hyltoned9e6442000-10-09 18:26:42 +00001131
1132- There were many changes made to the linuxaudiodev module and its
1133 test suite; as a result, a short, unexpected audio sample should now
Tim Petersa3a3a032000-11-30 05:22:44 +00001134 play when the regression test is run.
Jeremy Hyltoned9e6442000-10-09 18:26:42 +00001135
1136 Note that this module is named poorly, because it should work
1137 correctly on any platform that supports the Open Sound System
Tim Petersa3a3a032000-11-30 05:22:44 +00001138 (OSS).
Jeremy Hyltoned9e6442000-10-09 18:26:42 +00001139
1140 The module now raises exceptions when errors occur instead of
1141 crashing. It also defines the AFMT_A_LAW format (logarithmic A-law
1142 audio) and defines a getptr() method that calls the
1143 SNDCTL_DSP_GETxPTR ioctl defined in the OSS Programmer's Guide.
1144
1145- The library_version attribute, introduced in an earlier beta, was
1146 removed because it can not be supported with early versions of the C
1147 readline library, which provides no way to determine the version at
1148 compile-time.
1149
1150- The binascii module is now enabled on Win64.
1151
Tim Peters46446d62000-10-09 21:19:31 +00001152- tokenize.py no longer suffers "recursion depth" errors when parsing
1153 programs with very long string literals.
1154
Jeremy Hyltoned9e6442000-10-09 18:26:42 +00001155Internals
1156
Jeremy Hyltond6e20232000-10-16 20:08:38 +00001157- Fixed several buffer overflow vulnerabilities in calculate_path(),
Jeremy Hyltoned9e6442000-10-09 18:26:42 +00001158 which is called when the interpreter starts up to determine where
1159 the standard library is installed. These vulnerabilities affect all
1160 previous versions of Python and can be exploited by setting very
1161 long values for PYTHONHOME or argv[0]. The risk is greatest for a
1162 setuid Python script, although use of the wrapper in
1163 Misc/setuid-prog.c will eliminate the vulnerability.
1164
1165- Fixed garbage collection bugs in instance creation that were
1166 triggered when errors occurred during initialization. The solution,
1167 applied in cPickle and in PyInstance_New(), is to call
1168 PyObject_GC_Init() after the initialization of the object's
1169 container attributes is complete.
1170
1171- pyexpat adds definitions of PyModule_AddStringConstant and
1172 PyModule_AddObject if the Python version is less than 2.0, which
1173 provides compatibility with PyXML on Python 1.5.2.
1174
1175- If the platform has a bogus definition for LONG_BIT (the number of
1176 bits in a long), an error will be reported at compile time.
1177
1178- Fix bugs in _PyTuple_Resize() which caused hard-to-interpret garbage
1179 collection crashes and possibly other, unreported crashes.
1180
1181- Fixed a memory leak in _PyUnicode_Fini().
1182
1183Build issues
1184
1185- configure now accepts a --with-suffix option that specifies the
Jeremy Hyltond6e20232000-10-16 20:08:38 +00001186 executable suffix. This is useful for builds on Cygwin and Mac OS
Tim Petersa3a3a032000-11-30 05:22:44 +00001187 X, for example.
Jeremy Hyltoned9e6442000-10-09 18:26:42 +00001188
1189- The mmap.PAGESIZE constant is now initialized using sysconf when
1190 possible, which eliminates a dependency on -lucb for Reliant UNIX.
1191
1192- The md5 file should now compile on all platforms.
1193
1194- The select module now compiles on platforms that do not define
1195 POLLRDNORM and related constants.
1196
1197- Darwin (Mac OS X): Initial support for static builds on this
Tim Petersa3a3a032000-11-30 05:22:44 +00001198 platform.
Jeremy Hyltoned9e6442000-10-09 18:26:42 +00001199
Jeremy Hylton10921202000-10-09 18:34:12 +00001200- BeOS: A number of changes were made to the build and installation
1201 process. ar-fake now operates on a directory of object files.
1202 dl_export.h is gone, and its macros now appear on the mwcc command
1203 line during build on PPC BeOS.
1204
Jeremy Hyltond6e20232000-10-16 20:08:38 +00001205- Platform directory in lib/python2.0 is "plat-beos5" (or
Jeremy Hylton10921202000-10-09 18:34:12 +00001206 "plat-beos4", if building on BeOS 4.5), rather than "plat-beos".
Jeremy Hyltoned9e6442000-10-09 18:26:42 +00001207
1208- Cygwin: Support for shared libraries, Tkinter, and sockets.
1209
1210- SunOS 4.1.4_JL: Fix test for directory existence in configure.
1211
1212Tools and other miscellany
1213
1214- Removed debugging prints from main used with freeze.
1215
Tim Peters46446d62000-10-09 21:19:31 +00001216- IDLE auto-indent no longer crashes when it encounters Unicode
1217 characters.
Jeremy Hylton1b618592000-09-26 05:32:36 +00001218
1219What's new in 2.0 beta 2 (since beta 1)?
1220========================================
1221
1222Core language, builtins, and interpreter
1223
Tim Peters482c0212000-09-26 06:33:09 +00001224- Add support for unbounded ints in %d,i,u,x,X,o formats; for example
Guido van Rossumf62ed9c2000-09-26 11:16:10 +00001225 "%d" % 2L**64 == "18446744073709551616".
Jeremy Hylton1b618592000-09-26 05:32:36 +00001226
Guido van Rossumf62ed9c2000-09-26 11:16:10 +00001227- Add -h and -V command line options to print the usage message and
1228 Python version number and exit immediately.
1229
Jeremy Hyltonfa2e2c12000-09-26 16:31:30 +00001230- eval() and exec accept Unicode objects as code parameters.
1231
1232- getattr() and setattr() now also accept Unicode objects for the
1233 attribute name, which are converted to strings using the default
1234 encoding before lookup.
1235
1236- Multiplication on string and Unicode now does proper bounds
1237 checking; e.g. 'a' * 65536 * 65536 will raise ValueError, "repeated
1238 string is too long."
1239
1240- Better error message when continue is found in try statement in a
Tim Petersa3a3a032000-11-30 05:22:44 +00001241 loop.
Jeremy Hyltonfa2e2c12000-09-26 16:31:30 +00001242
Jeremy Hylton1b618592000-09-26 05:32:36 +00001243
1244Standard library and extensions
1245
Guido van Rossum5b08f132001-04-16 02:05:23 +00001246- socket module: the OpenSSL code now adds support for RAND_status()
1247 and EGD (Entropy Gathering Device).
1248
Guido van Rossumf62ed9c2000-09-26 11:16:10 +00001249- array: reverse() method of array now works. buffer_info() now does
Jeremy Hylton1b618592000-09-26 05:32:36 +00001250 argument checking; it still takes no arguments.
1251
Guido van Rossumf62ed9c2000-09-26 11:16:10 +00001252- asyncore/asynchat: Included most recent version from Sam Rushing.
Jeremy Hylton1b618592000-09-26 05:32:36 +00001253
Guido van Rossumf62ed9c2000-09-26 11:16:10 +00001254- cgi: Accept '&' or ';' as separator characters when parsing form data.
Jeremy Hylton1b618592000-09-26 05:32:36 +00001255
Guido van Rossumf62ed9c2000-09-26 11:16:10 +00001256- CGIHTTPServer: Now works on Windows (and perhaps even Mac).
Jeremy Hylton1b618592000-09-26 05:32:36 +00001257
1258- ConfigParser: When reading the file, options spelled in upper case
Guido van Rossumf62ed9c2000-09-26 11:16:10 +00001259 letters are now correctly converted to lowercase.
Jeremy Hylton1b618592000-09-26 05:32:36 +00001260
1261- copy: Copy Unicode objects atomically.
1262
Guido van Rossumf62ed9c2000-09-26 11:16:10 +00001263- cPickle: Fail gracefully when copy_reg can't be imported.
Jeremy Hylton1b618592000-09-26 05:32:36 +00001264
Guido van Rossumf62ed9c2000-09-26 11:16:10 +00001265- cStringIO: Implemented readlines() method.
Jeremy Hylton1b618592000-09-26 05:32:36 +00001266
Fred Drake67233bc2000-09-26 16:40:27 +00001267- dbm: Add get() and setdefault() methods to dbm object. Add constant
1268 `library' to module that names the library used. Added doc strings
1269 and method names to error messages. Uses configure to determine
1270 which ndbm.h file to include; Berkeley DB's nbdm and GDBM's ndbm is
1271 now available options.
Jeremy Hylton1b618592000-09-26 05:32:36 +00001272
1273- distutils: Update to version 0.9.3.
1274
1275- dl: Add several dl.RTLD_ constants.
1276
1277- fpectl: Now supported on FreeBSD.
1278
1279- gc: Add DEBUG_SAVEALL option. When enabled all garbage objects
1280 found by the collector will be saved in gc.garbage. This is useful
1281 for debugging a program that creates reference cycles.
1282
Guido van Rossumf62ed9c2000-09-26 11:16:10 +00001283- httplib: Three changes: Restore support for set_debuglevel feature
Jeremy Hylton1b618592000-09-26 05:32:36 +00001284 of HTTP class. Do not close socket on zero-length response. Do not
1285 crash when server sends invalid content-length header.
1286
Guido van Rossumf62ed9c2000-09-26 11:16:10 +00001287- mailbox: Mailbox class conforms better to qmail specifications.
Jeremy Hylton1b618592000-09-26 05:32:36 +00001288
Jeremy Hyltonfa2e2c12000-09-26 16:31:30 +00001289- marshal: When reading a short, sign-extend on platforms where shorts
1290 are bigger than 16 bits. When reading a long, repair the unportable
1291 sign extension that was being done for 64-bit machines. (It assumed
1292 that signed right shift sign-extends.)
1293
Guido van Rossumf62ed9c2000-09-26 11:16:10 +00001294- operator: Add contains(), invert(), __invert__() as aliases for
1295 __contains__(), inv(), and __inv__() respectively.
Jeremy Hylton1b618592000-09-26 05:32:36 +00001296
Guido van Rossumf62ed9c2000-09-26 11:16:10 +00001297- os: Add support for popen2() and popen3() on all platforms where
1298 fork() exists. (popen4() is still in the works.)
Jeremy Hylton1b618592000-09-26 05:32:36 +00001299
Guido van Rossumf62ed9c2000-09-26 11:16:10 +00001300- os: (Windows only:) Add startfile() function that acts like double-
Tim Peters482c0212000-09-26 06:33:09 +00001301 clicking on a file in Explorer (or passing the file name to the
1302 DOS "start" command).
Jeremy Hylton1b618592000-09-26 05:32:36 +00001303
Guido van Rossumf62ed9c2000-09-26 11:16:10 +00001304- os.path: (Windows, DOS:) Treat trailing colon correctly in
Tim Peters482c0212000-09-26 06:33:09 +00001305 os.path.join. os.path.join("a:", "b") yields "a:b".
Jeremy Hylton1b618592000-09-26 05:32:36 +00001306
1307- pickle: Now raises ValueError when an invalid pickle that contains
1308 a non-string repr where a string repr was expected. This behavior
1309 matches cPickle.
1310
Guido van Rossumf62ed9c2000-09-26 11:16:10 +00001311- posixfile: Remove broken __del__() method.
Jeremy Hylton1b618592000-09-26 05:32:36 +00001312
Guido van Rossumf62ed9c2000-09-26 11:16:10 +00001313- py_compile: support CR+LF line terminators in source file.
Jeremy Hylton1b618592000-09-26 05:32:36 +00001314
1315- readline: Does not immediately exit when ^C is hit when readline and
Jeremy Hyltonfa2e2c12000-09-26 16:31:30 +00001316 threads are configured. Adds definition of rl_library_version. (The
Guido van Rossumf62ed9c2000-09-26 11:16:10 +00001317 latter addition requires GNU readline 2.2 or later.)
Jeremy Hylton1b618592000-09-26 05:32:36 +00001318
1319- rfc822: Domain literals returned by AddrlistClass method
Guido van Rossumf62ed9c2000-09-26 11:16:10 +00001320 getdomainliteral() are now properly wrapped in brackets.
Jeremy Hylton1b618592000-09-26 05:32:36 +00001321
1322- site: sys.setdefaultencoding() should only be called in case the
Tim Peters482c0212000-09-26 06:33:09 +00001323 standard default encoding ("ascii") is changed. This saves quite a
Jeremy Hylton1b618592000-09-26 05:32:36 +00001324 few cycles during startup since the first call to
1325 setdefaultencoding() will initialize the codec registry and the
1326 encodings package.
1327
Guido van Rossumf62ed9c2000-09-26 11:16:10 +00001328- socket: Support for size hint in readlines() method of object returned
1329 by makefile().
Jeremy Hylton1b618592000-09-26 05:32:36 +00001330
Guido van Rossumf62ed9c2000-09-26 11:16:10 +00001331- sre: Added experimental expand() method to match objects. Does not
Jeremy Hylton625915e2000-10-02 13:43:33 +00001332 use buffer interface on Unicode strings. Does not hang if group id
Jeremy Hylton1b618592000-09-26 05:32:36 +00001333 is followed by whitespace.
1334
Tim Petersa3a3a032000-11-30 05:22:44 +00001335- StringIO: Size hint in readlines() is now supported as documented.
Jeremy Hylton1b618592000-09-26 05:32:36 +00001336
1337- struct: Check ranges for bytes and shorts.
1338
1339- urllib: Improved handling of win32 proxy settings. Fixed quote and
Guido van Rossumf62ed9c2000-09-26 11:16:10 +00001340 quote_plus functions so that the always encode a comma.
Jeremy Hylton1b618592000-09-26 05:32:36 +00001341
1342- Tkinter: Image objects are now guaranteed to have unique ids. Set
1343 event.delta to zero if Tk version doesn't support mousewheel.
1344 Removed some debugging prints.
1345
Guido van Rossumf62ed9c2000-09-26 11:16:10 +00001346- UserList: now implements __contains__().
Jeremy Hylton1b618592000-09-26 05:32:36 +00001347
Fred Drake67233bc2000-09-26 16:40:27 +00001348- webbrowser: On Windows, use os.startfile() instead of os.popen(),
Guido van Rossumf62ed9c2000-09-26 11:16:10 +00001349 which works around a bug in Norton AntiVirus 2000 that leads directly
1350 to a Blue Screen freeze.
Jeremy Hylton1b618592000-09-26 05:32:36 +00001351
1352- xml: New version detection code allows PyXML to override standard
1353 XML package if PyXML version is greater than 0.6.1.
1354
Fred Drake64bb3802000-09-26 16:21:35 +00001355- xml.dom: DOM level 1 support for basic XML. Includes xml.dom.minidom
1356 (conventional DOM), and xml.dom.pulldom, which allows building the DOM
1357 tree only for nodes which are sufficiently interesting to a specific
1358 application. Does not provide the HTML-specific extensions. Still
1359 undocumented.
Jeremy Hylton1b618592000-09-26 05:32:36 +00001360
Fred Drake64bb3802000-09-26 16:21:35 +00001361- xml.sax: SAX 2 support for Python, including all the handler
1362 interfaces needed to process XML 1.0 compliant XML. Some
1363 documentation is already available.
Jeremy Hylton1b618592000-09-26 05:32:36 +00001364
Fred Drake64bb3802000-09-26 16:21:35 +00001365- pyexpat: Renamed to xml.parsers.expat since this is part of the new,
1366 packagized XML support.
Jeremy Hylton1b618592000-09-26 05:32:36 +00001367
Guido van Rossumf62ed9c2000-09-26 11:16:10 +00001368
Jeremy Hylton1b618592000-09-26 05:32:36 +00001369C API
1370
1371- Add three new convenience functions for module initialization --
1372 PyModule_AddObject(), PyModule_AddIntConstant(), and
1373 PyModule_AddStringConstant().
1374
Jeremy Hyltonfa2e2c12000-09-26 16:31:30 +00001375- Cleaned up definition of NULL in C source code; all definitions were
Jeremy Hylton1b618592000-09-26 05:32:36 +00001376 removed and add #error to Python.h if NULL isn't defined after
1377 #include of stdio.h.
1378
Guido van Rossumf62ed9c2000-09-26 11:16:10 +00001379- Py_PROTO() macros that were removed in 2.0b1 have been restored for
Jeremy Hylton1b618592000-09-26 05:32:36 +00001380 backwards compatibility (at the source level) with old extensions.
1381
Guido van Rossumf62ed9c2000-09-26 11:16:10 +00001382- A wrapper API was added for signal() and sigaction(). Instead of
1383 either function, always use PyOS_getsig() to get a signal handler
1384 and PyOS_setsig() to set one. A new convenience typedef
1385 PyOS_sighandler_t is defined for the type of signal handlers.
Jeremy Hylton1b618592000-09-26 05:32:36 +00001386
Guido van Rossumf62ed9c2000-09-26 11:16:10 +00001387- Add PyString_AsStringAndSize() function that provides access to the
Jeremy Hylton1b618592000-09-26 05:32:36 +00001388 internal data buffer and size of a string object -- or the default
1389 encoded version of a Unicode object.
1390
Jeremy Hyltonfa2e2c12000-09-26 16:31:30 +00001391- PyString_Size() and PyString_AsString() accept Unicode objects.
1392
Guido van Rossumf62ed9c2000-09-26 11:16:10 +00001393- The standard header <limits.h> is now included by Python.h (if it
Fred Drake64bb3802000-09-26 16:21:35 +00001394 exists). INT_MAX and LONG_MAX will always be defined, even if
1395 <limits.h> is not available.
Guido van Rossumf62ed9c2000-09-26 11:16:10 +00001396
Jeremy Hyltonfa2e2c12000-09-26 16:31:30 +00001397- PyFloat_FromString takes a second argument, pend, that was
1398 effectively useless. It is now officially useless but preserved for
1399 backwards compatibility. If the pend argument is not NULL, *pend is
1400 set to NULL.
1401
1402- PyObject_GetAttr() and PyObject_SetAttr() now accept Unicode objects
1403 for the attribute name. See note on getattr() above.
1404
1405- A few bug fixes to argument processing for Unicode.
1406 PyArg_ParseTupleAndKeywords() now accepts "es#" and "es".
1407 PyArg_Parse() special cases "s#" for Unicode objects; it returns a
1408 pointer to the default encoded string data instead of to the raw
Tim Petersa3a3a032000-11-30 05:22:44 +00001409 UTF-16.
Jeremy Hyltonfa2e2c12000-09-26 16:31:30 +00001410
1411- Py_BuildValue accepts B format (for bgen-generated code).
1412
Guido van Rossumf62ed9c2000-09-26 11:16:10 +00001413
Jeremy Hylton1b618592000-09-26 05:32:36 +00001414Internals
1415
1416- On Unix, fix code for finding Python installation directory so that
1417 it works when argv[0] is a relative path.
1418
Andrew M. Kuchlinga1099be2000-12-15 01:16:43 +00001419- Added a true unicode_internal_encode() function and fixed the
Guido van Rossumf62ed9c2000-09-26 11:16:10 +00001420 unicode_internal_decode function() to support Unicode objects directly
Jeremy Hylton1b618592000-09-26 05:32:36 +00001421 rather than by generating a copy of the object.
1422
Tim Peters482c0212000-09-26 06:33:09 +00001423- Several of the internal Unicode tables are much smaller now, and
1424 the source code should be much friendlier to weaker compilers.
Jeremy Hylton1b618592000-09-26 05:32:36 +00001425
Jeremy Hylton97693b02000-09-26 17:42:51 +00001426- In the garbage collector: Fixed bug in collection of tuples. Fixed
1427 bug that caused some instances to be removed from the container set
1428 while they were still live. Fixed parsing in gc.set_debug() for
1429 platforms where sizeof(long) > sizeof(int).
Jeremy Hyltonfa2e2c12000-09-26 16:31:30 +00001430
1431- Fixed refcount problem in instance deallocation that only occurred
1432 when Py_REF_DEBUG was defined and Py_TRACE_REFS was not.
1433
Jeremy Hyltonfa2e2c12000-09-26 16:31:30 +00001434- On Windows, getpythonregpath is now protected against null data in
1435 registry key.
1436
1437- On Unix, create .pyc/.pyo files with O_EXCL flag to avoid a race
Tim Petersa3a3a032000-11-30 05:22:44 +00001438 condition.
Jeremy Hyltonfa2e2c12000-09-26 16:31:30 +00001439
Guido van Rossumf62ed9c2000-09-26 11:16:10 +00001440
Jeremy Hylton1b618592000-09-26 05:32:36 +00001441Build and platform-specific issues
1442
1443- Better support of GNU Pth via --with-pth configure option.
1444
Jeremy Hyltonfa2e2c12000-09-26 16:31:30 +00001445- Python/C API now properly exposed to dynamically-loaded extension
1446 modules on Reliant UNIX.
Jeremy Hylton1b618592000-09-26 05:32:36 +00001447
1448- Changes for the benefit of SunOS 4.1.4 (really!). mmapmodule.c:
1449 Don't define MS_SYNC to be zero when it is undefined. Added missing
1450 prototypes in posixmodule.c.
1451
Jeremy Hyltonfa2e2c12000-09-26 16:31:30 +00001452- Improved support for HP-UX build. Threads should now be correctly
Guido van Rossumf62ed9c2000-09-26 11:16:10 +00001453 configured (on HP-UX 10.20 and 11.00).
Jeremy Hylton1b618592000-09-26 05:32:36 +00001454
Jeremy Hyltonfa2e2c12000-09-26 16:31:30 +00001455- Fix largefile support on older NetBSD systems and OpenBSD by adding
1456 define for TELL64.
1457
1458
1459Tools and other miscellany
1460
1461- ftpmirror: Call to main() is wrapped in if __name__ == "__main__".
1462
1463- freeze: The modulefinder now works with 2.0 opcodes.
1464
Tim Petersa3a3a032000-11-30 05:22:44 +00001465- IDLE:
Jeremy Hyltonfa2e2c12000-09-26 16:31:30 +00001466 Move hackery of sys.argv until after the Tk instance has been
1467 created, which allows the application-specific Tkinter
1468 initialization to be executed if present; also pass an explicit
1469 className parameter to the Tk() constructor.
Fred Drake64bb3802000-09-26 16:21:35 +00001470
Jeremy Hylton1b618592000-09-26 05:32:36 +00001471
1472What's new in 2.0 beta 1?
1473=========================
1474
Guido van Rossumf2ffce02000-09-05 04:38:34 +00001475Source Incompatibilities
1476------------------------
1477
1478None. Note that 1.6 introduced several incompatibilities with 1.5.2,
1479such as single-argument append(), connect() and bind(), and changes to
1480str(long) and repr(float).
1481
1482
1483Binary Incompatibilities
1484------------------------
1485
1486- Third party extensions built for Python 1.5.x or 1.6 cannot be used
1487with Python 2.0; these extensions will have to be rebuilt for Python
14882.0.
1489
1490- On Windows, attempting to import a third party extension built for
1491Python 1.5.x or 1.6 results in an immediate crash; there's not much we
1492can do about this. Check your PYTHONPATH environment variable!
1493
1494- Python bytecode files (*.pyc and *.pyo) are not compatible between
1495releases.
1496
1497
1498Overview of Changes Since 1.6
1499-----------------------------
1500
1501There are many new modules (including brand new XML support through
1502the xml package, and i18n support through the gettext module); a list
1503of all new modules is included below. Lots of bugs have been fixed.
1504
Jeremy Hylton24c3d602000-09-05 19:36:26 +00001505The process for making major new changes to the language has changed
1506since Python 1.6. Enhancements must now be documented by a Python
1507Enhancement Proposal (PEP) before they can be accepted.
1508
Guido van Rossumf2ffce02000-09-05 04:38:34 +00001509There are several important syntax enhancements, described in more
1510detail below:
1511
1512 - Augmented assignment, e.g. x += 1
1513
1514 - List comprehensions, e.g. [x**2 for x in range(10)]
1515
1516 - Extended import statement, e.g. import Module as Name
1517
1518 - Extended print statement, e.g. print >> file, "Hello"
1519
1520Other important changes:
1521
1522 - Optional collection of cyclical garbage
1523
Jeremy Hylton24c3d602000-09-05 19:36:26 +00001524Python Enhancement Proposal (PEP)
1525---------------------------------
1526
1527PEP stands for Python Enhancement Proposal. A PEP is a design
1528document providing information to the Python community, or describing
1529a new feature for Python. The PEP should provide a concise technical
1530specification of the feature and a rationale for the feature.
1531
1532We intend PEPs to be the primary mechanisms for proposing new
1533features, for collecting community input on an issue, and for
1534documenting the design decisions that have gone into Python. The PEP
1535author is responsible for building consensus within the community and
1536documenting dissenting opinions.
1537
1538The PEPs are available at http://python.sourceforge.net/peps/.
Guido van Rossumf2ffce02000-09-05 04:38:34 +00001539
1540Augmented Assignment
1541--------------------
1542
1543This must have been the most-requested feature of the past years!
1544Eleven new assignment operators were added:
1545
Guido van Rossume905e952000-09-05 12:42:46 +00001546 += -= *= /= %= **= <<= >>= &= ^= |=
Guido van Rossumf2ffce02000-09-05 04:38:34 +00001547
1548For example,
1549
1550 A += B
1551
1552is similar to
1553
1554 A = A + B
1555
1556except that A is evaluated only once (relevant when A is something
1557like dict[index].attr).
1558
1559However, if A is a mutable object, A may be modified in place. Thus,
1560if A is a number or a string, A += B has the same effect as A = A+B
1561(except A is only evaluated once); but if a is a list, A += B has the
1562same effect as A.extend(B)!
1563
1564Classes and built-in object types can override the new operators in
1565order to implement the in-place behavior; the not-in-place behavior is
1566used automatically as a fallback when an object doesn't implement the
1567in-place behavior. For classes, the method name is derived from the
1568method name for the corresponding not-in-place operator by inserting
1569an 'i' in front of the name, e.g. __iadd__ implements in-place
1570__add__.
1571
1572Augmented assignment was implemented by Thomas Wouters.
1573
1574
1575List Comprehensions
1576-------------------
1577
1578This is a flexible new notation for lists whose elements are computed
1579from another list (or lists). The simplest form is:
1580
1581 [<expression> for <variable> in <sequence>]
1582
Guido van Rossum56db0952000-09-06 23:34:25 +00001583For example, [i**2 for i in range(4)] yields the list [0, 1, 4, 9].
Guido van Rossumf62ed9c2000-09-26 11:16:10 +00001584This is more efficient than a for loop with a list.append() call.
Guido van Rossumf2ffce02000-09-05 04:38:34 +00001585
1586You can also add a condition:
1587
1588 [<expression> for <variable> in <sequence> if <condition>]
1589
1590For example, [w for w in words if w == w.lower()] would yield the list
1591of words that contain no uppercase characters. This is more efficient
Guido van Rossumf62ed9c2000-09-26 11:16:10 +00001592than a for loop with an if statement and a list.append() call.
Guido van Rossumf2ffce02000-09-05 04:38:34 +00001593
1594You can also have nested for loops and more than one 'if' clause. For
1595example, here's a function that flattens a sequence of sequences::
1596
1597 def flatten(seq):
1598 return [x for subseq in seq for x in subseq]
1599
1600 flatten([[0], [1,2,3], [4,5], [6,7,8,9], []])
1601
1602This prints
1603
1604 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
1605
1606List comprehensions originated as a patch set from Greg Ewing; Skip
Jeremy Hylton24c3d602000-09-05 19:36:26 +00001607Montanaro and Thomas Wouters also contributed. Described by PEP 202.
Guido van Rossumf2ffce02000-09-05 04:38:34 +00001608
1609
1610Extended Import Statement
1611-------------------------
1612
1613Many people have asked for a way to import a module under a different
1614name. This can be accomplished like this:
1615
1616 import foo
1617 bar = foo
1618 del foo
1619
1620but this common idiom gets old quickly. A simple extension of the
1621import statement now allows this to be written as follows:
1622
1623 import foo as bar
1624
1625There's also a variant for 'from ... import':
1626
1627 from foo import bar as spam
1628
1629This also works with packages; e.g. you can write this:
1630
1631 import test.regrtest as regrtest
1632
1633Note that 'as' is not a new keyword -- it is recognized only in this
1634context (this is only possible because the syntax for the import
1635statement doesn't involve expressions).
1636
Jeremy Hylton24c3d602000-09-05 19:36:26 +00001637Implemented by Thomas Wouters. Described by PEP 221.
Guido van Rossumf2ffce02000-09-05 04:38:34 +00001638
1639
1640Extended Print Statement
1641------------------------
1642
1643Easily the most controversial new feature, this extension to the print
1644statement adds an option to make the output go to a different file
1645than the default sys.stdout.
1646
1647For example, to write an error message to sys.stderr, you can now
1648write:
1649
1650 print >> sys.stderr, "Error: bad dog!"
1651
1652As a special feature, if the expression used to indicate the file
Fred Drake45888ff2000-09-29 17:09:11 +00001653evaluates to None, the current value of sys.stdout is used. Thus:
Guido van Rossumf2ffce02000-09-05 04:38:34 +00001654
1655 print >> None, "Hello world"
1656
1657is equivalent to
1658
1659 print "Hello world"
1660
Jeremy Hylton24c3d602000-09-05 19:36:26 +00001661Design and implementation by Barry Warsaw. Described by PEP 214.
Guido van Rossumf2ffce02000-09-05 04:38:34 +00001662
1663
1664Optional Collection of Cyclical Garbage
1665---------------------------------------
1666
1667Python is now equipped with a garbage collector that can hunt down
1668cyclical references between Python objects. It's no replacement for
1669reference counting; in fact, it depends on the reference counts being
1670correct, and decides that a set of objects belong to a cycle if all
1671their reference counts can be accounted for from their references to
1672each other. This devious scheme was first proposed by Eric Tiedemann,
1673and brought to implementation by Neil Schemenauer.
1674
1675There's a module "gc" that lets you control some parameters of the
1676garbage collection. There's also an option to the configure script
1677that lets you enable or disable the garbage collection. In 2.0b1,
1678it's on by default, so that we (hopefully) can collect decent user
1679experience with this new feature. There are some questions about its
Fred Drake9f11cf82000-09-29 17:54:40 +00001680performance. If it proves to be too much of a problem, we'll turn it
Guido van Rossumf2ffce02000-09-05 04:38:34 +00001681off by default in the final 2.0 release.
1682
1683
1684Smaller Changes
1685---------------
1686
1687A new function zip() was added. zip(seq1, seq2, ...) is equivalent to
1688map(None, seq1, seq2, ...) when the sequences have the same length;
1689i.e. zip([1,2,3], [10,20,30]) returns [(1,10), (2,20), (3,30)]. When
1690the lists are not all the same length, the shortest list wins:
Jeremy Hylton24c3d602000-09-05 19:36:26 +00001691zip([1,2,3], [10,20]) returns [(1,10), (2,20)]. See PEP 201.
Guido van Rossumf2ffce02000-09-05 04:38:34 +00001692
1693sys.version_info is a tuple (major, minor, micro, level, serial).
1694
1695Dictionaries have an odd new method, setdefault(key, default).
1696dict.setdefault(key, default) returns dict[key] if it exists; if not,
1697it sets dict[key] to default and returns that value. Thus:
1698
1699 dict.setdefault(key, []).append(item)
1700
1701does the same work as this common idiom:
1702
1703 if not dict.has_key(key):
1704 dict[key] = []
1705 dict[key].append(item)
1706
Jeremy Hylton24c3d602000-09-05 19:36:26 +00001707There are two new variants of SyntaxError that are raised for
1708indentation-related errors: IndentationError and TabError.
1709
1710Changed \x to consume exactly two hex digits; see PEP 223. Added \U
1711escape that consumes exactly eight hex digits.
Jeremy Hyltonbdebd542000-09-05 18:28:54 +00001712
1713The limits on the size of expressions and file in Python source code
1714have been raised from 2**16 to 2**32. Previous versions of Python
1715were limited because the maximum argument size the Python VM accepted
1716was 2**16. This limited the size of object constructor expressions,
1717e.g. [1,2,3] or {'a':1, 'b':2}, and the size of source files. This
1718limit was raised thanks to a patch by Charles Waldman that effectively
1719fixes the problem. It is now much more likely that you will be
1720limited by available memory than by an arbitrary limit in Python.
1721
1722The interpreter's maximum recursion depth can be modified by Python
1723programs using sys.getrecursionlimit and sys.setrecursionlimit. This
1724limit is the maximum number of recursive calls that can be made by
1725Python code. The limit exists to prevent infinite recursion from
1726overflowing the C stack and causing a core dump. The default value is
17271000. The maximum safe value for a particular platform can be found
1728by running Misc/find_recursionlimit.py.
Guido van Rossumf2ffce02000-09-05 04:38:34 +00001729
1730New Modules and Packages
1731------------------------
1732
1733atexit - for registering functions to be called when Python exits.
1734
1735imputil - Greg Stein's alternative API for writing custom import
1736hooks.
1737
1738pyexpat - an interface to the Expat XML parser, contributed by Paul
1739Prescod.
1740
1741xml - a new package with XML support code organized (so far) in three
1742subpackages: xml.dom, xml.sax, and xml.parsers. Describing these
1743would fill a volume. There's a special feature whereby a
1744user-installed package named _xmlplus overrides the standard
1745xmlpackage; this is intended to give the XML SIG a hook to distribute
1746backwards-compatible updates to the standard xml package.
1747
1748webbrowser - a platform-independent API to launch a web browser.
1749
1750
Guido van Rossume905e952000-09-05 12:42:46 +00001751Changed Modules
1752---------------
1753
Jeremy Hylton24c3d602000-09-05 19:36:26 +00001754array -- new methods for array objects: count, extend, index, pop, and
1755remove
1756
1757binascii -- new functions b2a_hex and a2b_hex that convert between
1758binary data and its hex representation
1759
Jeremy Hyltonbdebd542000-09-05 18:28:54 +00001760calendar -- Many new functions that support features including control
1761over which day of the week is the first day, returning strings instead
1762of printing them. Also new symbolic constants for days of week,
1763e.g. MONDAY, ..., SUNDAY.
1764
1765cgi -- FieldStorage objects have a getvalue method that works like a
1766dictionary's get method and returns the value attribute of the object.
1767
1768ConfigParser -- The parser object has new methods has_option,
1769remove_section, remove_option, set, and write. They allow the module
1770to be used for writing config files as well as reading them.
1771
1772ftplib -- ntransfercmd(), transfercmd(), and retrbinary() all now
Guido van Rossume905e952000-09-05 12:42:46 +00001773optionally support the RFC 959 REST command.
1774
Jeremy Hyltonbdebd542000-09-05 18:28:54 +00001775gzip -- readline and readlines now accept optional size arguments
Guido van Rossume905e952000-09-05 12:42:46 +00001776
Jeremy Hyltonbdebd542000-09-05 18:28:54 +00001777httplib -- New interfaces and support for HTTP/1.1 by Greg Stein. See
1778the module doc strings for details.
Guido van Rossum830ca2a2000-09-05 15:34:16 +00001779
Jeremy Hylton24c3d602000-09-05 19:36:26 +00001780locale -- implement getdefaultlocale for Win32 and Macintosh
1781
1782marshal -- no longer dumps core when marshaling deeply nested or
1783recursive data structures
1784
1785os -- new functions isatty, seteuid, setegid, setreuid, setregid
1786
Jeremy Hyltonbdebd542000-09-05 18:28:54 +00001787os/popen2 -- popen2/popen3/popen4 support under Windows. popen2/popen3
1788support under Unix.
1789
Jeremy Hylton24c3d602000-09-05 19:36:26 +00001790os/pty -- support for openpty and forkpty
Jeremy Hyltonbdebd542000-09-05 18:28:54 +00001791
1792os.path -- fix semantics of os.path.commonprefix
1793
1794smtplib -- support for sending very long messages
1795
1796socket -- new function getfqdn()
1797
1798readline -- new functions to read, write and truncate history files.
1799The readline section of the library reference manual contains an
1800example.
1801
Jeremy Hylton24c3d602000-09-05 19:36:26 +00001802select -- add interface to poll system call
1803
Jeremy Hyltonbdebd542000-09-05 18:28:54 +00001804shutil -- new copyfileobj function
1805
1806SimpleHTTPServer, CGIHTTPServer -- Fix problems with buffering in the
1807HTTP server.
1808
Jeremy Hylton24c3d602000-09-05 19:36:26 +00001809Tkinter -- optimization of function flatten
Jeremy Hyltonbdebd542000-09-05 18:28:54 +00001810
1811urllib -- scans environment variables for proxy configuration,
Tim Peters8b092332000-09-05 20:15:25 +00001812e.g. http_proxy.
Jeremy Hyltonbdebd542000-09-05 18:28:54 +00001813
1814whichdb -- recognizes dumbdbm format
Guido van Rossume905e952000-09-05 12:42:46 +00001815
1816
1817Obsolete Modules
1818----------------
1819
1820None. However note that 1.6 made a whole slew of modules obsolete:
1821stdwin, soundex, cml, cmpcache, dircache, dump, find, grep, packmail,
1822poly, zmod, strop, util, whatsound.
1823
1824
1825Changed, New, Obsolete Tools
1826----------------------------
1827
Tim Peters8b092332000-09-05 20:15:25 +00001828None.
Guido van Rossume905e952000-09-05 12:42:46 +00001829
1830
Guido van Rossumf2ffce02000-09-05 04:38:34 +00001831C-level Changes
1832---------------
1833
1834Several cleanup jobs were carried out throughout the source code.
1835
1836All C code was converted to ANSI C; we got rid of all uses of the
1837Py_PROTO() macro, which makes the header files a lot more readable.
1838
1839Most of the portability hacks were moved to a new header file,
1840pyport.h; several other new header files were added and some old
1841header files were removed, in an attempt to create a more rational set
1842of header files. (Few of these ever need to be included explicitly;
1843they are all included by Python.h.)
1844
Guido van Rossumf2ffce02000-09-05 04:38:34 +00001845Trent Mick ensured portability to 64-bit platforms, under both Linux
Jeremy Hylton24c3d602000-09-05 19:36:26 +00001846and Win64, especially for the new Intel Itanium processor. Mick also
1847added large file support for Linux64 and Win64.
Guido van Rossumf2ffce02000-09-05 04:38:34 +00001848
Jeremy Hyltonbdebd542000-09-05 18:28:54 +00001849The C APIs to return an object's size have been update to consistently
1850use the form PyXXX_Size, e.g. PySequence_Size and PyDict_Size. In
1851previous versions, the abstract interfaces used PyXXX_Length and the
1852concrete interfaces used PyXXX_Size. The old names,
1853e.g. PyObject_Length, are still available for backwards compatibility
1854at the API level, but are deprecated.
1855
Jeremy Hylton24c3d602000-09-05 19:36:26 +00001856The PyOS_CheckStack function has been implemented on Windows by
1857Fredrik Lundh. It prevents Python from failing with a stack overflow
1858on Windows.
Jeremy Hyltonbdebd542000-09-05 18:28:54 +00001859
1860The GC changes resulted in creation of two new slots on object,
1861tp_traverse and tp_clear. The augmented assignment changes result in
Guido van Rossum4338a282000-09-06 13:02:08 +00001862the creation of a new slot for each in-place operator.
Jeremy Hyltonbdebd542000-09-05 18:28:54 +00001863
1864The GC API creates new requirements for container types implemented in
Guido van Rossum4338a282000-09-06 13:02:08 +00001865C extension modules. See Include/objimpl.h for details.
Jeremy Hyltonbdebd542000-09-05 18:28:54 +00001866
Jeremy Hylton24c3d602000-09-05 19:36:26 +00001867PyErr_Format has been updated to automatically calculate the size of
1868the buffer needed to hold the formatted result string. This change
1869prevents crashes caused by programmer error.
Jeremy Hyltonbdebd542000-09-05 18:28:54 +00001870
Jeremy Hylton24c3d602000-09-05 19:36:26 +00001871New C API calls: PyObject_AsFileDescriptor, PyErr_WriteUnraisable.
Guido van Rossume905e952000-09-05 12:42:46 +00001872
Jeremy Hylton24c3d602000-09-05 19:36:26 +00001873PyRun_AnyFileEx, PyRun_SimpleFileEx, PyRun_FileEx -- New functions
1874that are the same as their non-Ex counterparts except they take an
1875extra flag argument that tells them to close the file when done.
1876
1877XXX There were other API changes that should be fleshed out here.
Guido van Rossumab9d6f01998-08-10 22:01:13 +00001878
Tim Peters8b092332000-09-05 20:15:25 +00001879
1880Windows Changes
1881---------------
1882
1883New popen2/popen3/peopen4 in os module (see Changed Modules above).
1884
1885os.popen is much more usable on Windows 95 and 98. See Microsoft
1886Knowledge Base article Q150956. The Win9x workaround described there
1887is implemented by the new w9xpopen.exe helper in the root of your
1888Python installation. Note that Python uses this internally; it is not
1889a standalone program.
1890
1891Administrator privileges are no longer required to install Python
1892on Windows NT or Windows 2000. If you have administrator privileges,
1893Python's registry info will be written under HKEY_LOCAL_MACHINE.
1894Otherwise the installer backs off to writing Python's registry info
Guido van Rossum4338a282000-09-06 13:02:08 +00001895under HKEY_CURRENT_USER. The latter is sufficient for all "normal"
Tim Peters8b092332000-09-05 20:15:25 +00001896uses of Python, but will prevent some advanced uses from working
1897(for example, running a Python script as an NT service, or possibly
1898from CGI).
1899
1900[This was new in 1.6] The installer no longer runs a separate Tcl/Tk
1901installer; instead, it installs the needed Tcl/Tk files directly in the
1902Python directory. If you already have a Tcl/Tk installation, this
1903wastes some disk space (about 4 Megs) but avoids problems with
1904conflicting Tcl/Tk installations, and makes it much easier for Python
1905to ensure that Tcl/Tk can find all its files.
1906
1907[This was new in 1.6] The Windows installer now installs by default in
1908\Python20\ on the default volume, instead of \Program Files\Python-2.0\.
1909
Guido van Rossumf62ed9c2000-09-26 11:16:10 +00001910
1911Updates to the changes between 1.5.2 and 1.6
1912--------------------------------------------
1913
1914The 1.6 NEWS file can't be changed after the release is done, so here
1915is some late-breaking news:
1916
1917New APIs in locale.py: normalize(), getdefaultlocale(), resetlocale(),
1918and changes to getlocale() and setlocale().
1919
1920The new module is now enabled per default.
1921
1922It is not true that the encodings codecs cannot be used for normal
1923strings: the string.encode() (which is also present on 8-bit strings
1924!) allows using them for 8-bit strings too, e.g. to convert files from
1925cp1252 (Windows) to latin-1 or vice-versa.
1926
1927Japanese codecs are available from Tamito KAJIYAMA:
1928http://pseudo.grad.sccs.chukyo-u.ac.jp/~kajiyama/python/
1929
1930
Guido van Rossumab9d6f01998-08-10 22:01:13 +00001931======================================================================