blob: 14ba867ee28a1a1c6269a37fe70049ced1cfada7 [file] [log] [blame]
Tim Petersa3a3a032000-11-30 05:22:44 +00001What's New in Python 2.1 alpha 1?
2=================================
3
4Core language, builtins, and interpreter
5
6- %[duxXo] formats of negative Python longs now produce a sign
7 character. In 1.6 and earlier, they never produced a sign,
8 and raised an error if the value of the long was too large
9 to fit in a Python int. In 2.0, they produced a sign if and
10 only if too large to fit in an int. This was inconsistent
11 across platforms (because the size of an int varies across
12 platforms), and inconsistent with hex() and oct(). Example:
13
14 >>> "%x" % -0x42L
15 '-42' # in 2.1
16 'ffffffbe' # in 2.0 and before, on 32-bit machines
17 >>> hex(-0x42L)
18 '-0x42L' # in all versions of Python
19
20
Jeremy Hyltond6e20232000-10-16 20:08:38 +000021What's New in Python 2.0?
Fred Drake1a640502000-10-16 20:27:25 +000022=========================
Guido van Rossum61000331997-08-15 04:39:58 +000023
Guido van Rossum8ed602b2000-09-01 22:34:33 +000024Below is a list of all relevant changes since release 1.6. Older
Guido van Rossumf2ffce02000-09-05 04:38:34 +000025changes are in the file HISTORY. If you are making the jump directly
26from Python 1.5.2 to 2.0, make sure to read the section for 1.6 in the
27HISTORY file! Many important changes listed there.
Guido van Rossum61000331997-08-15 04:39:58 +000028
Guido van Rossumf2ffce02000-09-05 04:38:34 +000029Alternatively, a good overview of the changes between 1.5.2 and 2.0 is
30the document "What's New in Python 2.0" by Kuchling and Moshe Zadka:
31http://starship.python.net/crew/amk/python/writing/new-python/.
Guido van Rossum1f83cce1997-10-06 21:04:35 +000032
Guido van Rossumf2ffce02000-09-05 04:38:34 +000033--Guido van Rossum (home page: http://www.pythonlabs.com/~guido/)
Guido van Rossum437cfe81999-04-08 20:17:57 +000034
35======================================================================
36
Jeremy Hyltond6e20232000-10-16 20:08:38 +000037What's new in 2.0 (since release candidate 1)?
38==============================================
39
40Standard library
41
42- The copy_reg module was modified to clarify its intended use: to
43 register pickle support for extension types, not for classes.
44 pickle() will raise a TypeError if it is passed a class.
45
46- Fixed a bug in gettext's "normalize and expand" code that prevented
47 it from finding an existing .mo file.
48
49- Restored support for HTTP/0.9 servers in httplib.
50
Tim Peters989b7b92000-10-16 20:24:53 +000051- The math module was changed to stop raising OverflowError in case of
52 underflow, and return 0 instead in underflow cases. Whether Python
53 used to raise OverflowError in case of underflow was platform-
54 dependent (it did when the platform math library set errno to ERANGE
55 on underflow).
Jeremy Hyltond6e20232000-10-16 20:08:38 +000056
57- Fixed a bug in StringIO that occurred when the file position was not
58 at the end of the file and write() was called with enough data to
59 extend past the end of the file.
60
61- Fixed a bug that caused Tkinter error messages to get lost on
62 Windows. The bug was fixed by replacing direct use of
63 interp->result with Tcl_GetStringResult(interp).
64
65- Fixed bug in urllib2 that caused it to fail when it received an HTTP
66 redirect response.
67
68- Several changes were made to distutils: Some debugging code was
69 removed from util. Fixed the installer used when an external zip
70 program (like WinZip) is not found; the source code for this
71 installer is in Misc/distutils. check_lib() was modified to behave
72 more like AC_CHECK_LIB by add other_libraries() as a parameter. The
73 test for whether installed modules are on sys.path was changed to
74 use both normcase() and normpath().
75
Jeremy Hyltond867a2c2000-10-16 20:41:38 +000076- Several minor bugs were fixed in the xml package (the minidom,
77 pulldom, expatreader, and saxutils modules).
Jeremy Hyltond6e20232000-10-16 20:08:38 +000078
79- The regression test driver (regrtest.py) behavior when invoked with
80 -l changed: It now reports a count of objects that are recognized as
81 garbage but not freed by the garbage collector.
82
Tim Peters989b7b92000-10-16 20:24:53 +000083- The regression test for the math module was changed to test
84 exceptional behavior when the test is run in verbose mode. Python
85 cannot yet guarantee consistent exception behavior across platforms,
86 so the exception part of test_math is run only in verbose mode, and
87 may fail on your platform.
Jeremy Hyltond6e20232000-10-16 20:08:38 +000088
89Internals
90
91- PyOS_CheckStack() has been disabled on Win64, where it caused
92 test_sre to fail.
93
94Build issues
95
96- Changed compiler flags, so that gcc is always invoked with -Wall and
97 -Wstrict-prototypes. Users compiling Python with GCC should see
98 exactly one warning, except if they have passed configure the
Tim Peters989b7b92000-10-16 20:24:53 +000099 --with-pydebug flag. The expected warning is for getopt() in
Tim Petersadfb94f2000-10-16 20:51:33 +0000100 Modules/main.c. This warning will be fixed for Python 2.1.
Jeremy Hyltond6e20232000-10-16 20:08:38 +0000101
Tim Petersa3a3a032000-11-30 05:22:44 +0000102- Fixed configure to add -threads argument during linking on OSF1.
Jeremy Hyltond6e20232000-10-16 20:08:38 +0000103
104Tools and other miscellany
105
106- The compiler in Tools/compiler was updated to support the new
107 language features introduced in 2.0: extended print statement, list
108 comprehensions, and augmented assignments. The new compiler should
109 also be backwards compatible with Python 1.5.2; the compiler will
110 always generate code for the version of the interpreter it runs
Tim Petersa3a3a032000-11-30 05:22:44 +0000111 under.
Jeremy Hyltond6e20232000-10-16 20:08:38 +0000112
Jeremy Hyltoned9e6442000-10-09 18:26:42 +0000113What's new in 2.0 release candidate 1 (since beta 2)?
114=====================================================
115
Jeremy Hylton6040aaa2000-10-09 21:27:22 +0000116What is release candidate 1?
117
118We believe that release candidate 1 will fix all known bugs that we
119intend to fix for the 2.0 final release. This release should be a bit
120more stable than the previous betas. We would like to see even more
121widespread testing before the final release, so we are producing this
122release candidate. The final release will be exactly the same unless
123any show-stopping (or brown bag) bugs are found by testers of the
124release candidate.
125
Jeremy Hyltoned9e6442000-10-09 18:26:42 +0000126All the changes since the last beta release are bug fixes or changes
Jeremy Hyltond6e20232000-10-16 20:08:38 +0000127to support building Python for specific platforms.
Jeremy Hyltoned9e6442000-10-09 18:26:42 +0000128
129Core language, builtins, and interpreter
130
131- A bug that caused crashes when __coerce__ was used with augmented
132 assignment, e.g. +=, was fixed.
133
134- Raise ZeroDivisionError when raising zero to a negative number,
135 e.g. 0.0 ** -2.0. Note that math.pow is unrelated to the builtin
136 power operator and the result of math.pow(0.0, -2.0) will vary by
137 platform. On Linux, it raises a ValueError.
138
139- A bug in Unicode string interpolation was fixed that occasionally
140 caused errors with formats including "%%". For example, the
141 following expression "%% %s" % u"abc" no longer raises a TypeError.
142
143- Compilation of deeply nested expressions raises MemoryError instead
144 of SyntaxError, e.g. eval("[" * 50 + "]" * 50).
145
146- In 2.0b2 on Windows, the interpreter wrote .pyc files in text mode,
147 rendering them useless. They are now written in binary mode again.
148
149Standard library
150
151- Keyword arguments are now accepted for most pattern and match object
152 methods in SRE, the standard regular expression engine.
153
Jeremy Hyltond6e20232000-10-16 20:08:38 +0000154- In SRE, fixed error with negative lookahead and lookbehind that
Jeremy Hylton32e20ff2000-10-09 19:48:11 +0000155 manifested itself as a runtime error in patterns like "(?<!abc)(def)".
Jeremy Hyltoned9e6442000-10-09 18:26:42 +0000156
Jeremy Hyltond6e20232000-10-16 20:08:38 +0000157- Several bugs in the Unicode handling and error handling in _tkinter
158 were fixed.
Jeremy Hyltoned9e6442000-10-09 18:26:42 +0000159
160- Fix memory management errors in Merge() and Tkapp_Call() routines.
161
162- Several changes were made to cStringIO to make it compatible with
163 the file-like object interface and with StringIO. If operations are
164 performed on a closed object, an exception is raised. The truncate
165 method now accepts a position argument and readline accepts a size
Tim Petersa3a3a032000-11-30 05:22:44 +0000166 argument.
Jeremy Hyltoned9e6442000-10-09 18:26:42 +0000167
168- There were many changes made to the linuxaudiodev module and its
169 test suite; as a result, a short, unexpected audio sample should now
Tim Petersa3a3a032000-11-30 05:22:44 +0000170 play when the regression test is run.
Jeremy Hyltoned9e6442000-10-09 18:26:42 +0000171
172 Note that this module is named poorly, because it should work
173 correctly on any platform that supports the Open Sound System
Tim Petersa3a3a032000-11-30 05:22:44 +0000174 (OSS).
Jeremy Hyltoned9e6442000-10-09 18:26:42 +0000175
176 The module now raises exceptions when errors occur instead of
177 crashing. It also defines the AFMT_A_LAW format (logarithmic A-law
178 audio) and defines a getptr() method that calls the
179 SNDCTL_DSP_GETxPTR ioctl defined in the OSS Programmer's Guide.
180
181- The library_version attribute, introduced in an earlier beta, was
182 removed because it can not be supported with early versions of the C
183 readline library, which provides no way to determine the version at
184 compile-time.
185
186- The binascii module is now enabled on Win64.
187
Tim Peters46446d62000-10-09 21:19:31 +0000188- tokenize.py no longer suffers "recursion depth" errors when parsing
189 programs with very long string literals.
190
Jeremy Hyltoned9e6442000-10-09 18:26:42 +0000191Internals
192
Jeremy Hyltond6e20232000-10-16 20:08:38 +0000193- Fixed several buffer overflow vulnerabilities in calculate_path(),
Jeremy Hyltoned9e6442000-10-09 18:26:42 +0000194 which is called when the interpreter starts up to determine where
195 the standard library is installed. These vulnerabilities affect all
196 previous versions of Python and can be exploited by setting very
197 long values for PYTHONHOME or argv[0]. The risk is greatest for a
198 setuid Python script, although use of the wrapper in
199 Misc/setuid-prog.c will eliminate the vulnerability.
200
201- Fixed garbage collection bugs in instance creation that were
202 triggered when errors occurred during initialization. The solution,
203 applied in cPickle and in PyInstance_New(), is to call
204 PyObject_GC_Init() after the initialization of the object's
205 container attributes is complete.
206
207- pyexpat adds definitions of PyModule_AddStringConstant and
208 PyModule_AddObject if the Python version is less than 2.0, which
209 provides compatibility with PyXML on Python 1.5.2.
210
211- If the platform has a bogus definition for LONG_BIT (the number of
212 bits in a long), an error will be reported at compile time.
213
214- Fix bugs in _PyTuple_Resize() which caused hard-to-interpret garbage
215 collection crashes and possibly other, unreported crashes.
216
217- Fixed a memory leak in _PyUnicode_Fini().
218
219Build issues
220
221- configure now accepts a --with-suffix option that specifies the
Jeremy Hyltond6e20232000-10-16 20:08:38 +0000222 executable suffix. This is useful for builds on Cygwin and Mac OS
Tim Petersa3a3a032000-11-30 05:22:44 +0000223 X, for example.
Jeremy Hyltoned9e6442000-10-09 18:26:42 +0000224
225- The mmap.PAGESIZE constant is now initialized using sysconf when
226 possible, which eliminates a dependency on -lucb for Reliant UNIX.
227
228- The md5 file should now compile on all platforms.
229
230- The select module now compiles on platforms that do not define
231 POLLRDNORM and related constants.
232
233- Darwin (Mac OS X): Initial support for static builds on this
Tim Petersa3a3a032000-11-30 05:22:44 +0000234 platform.
Jeremy Hyltoned9e6442000-10-09 18:26:42 +0000235
Jeremy Hylton10921202000-10-09 18:34:12 +0000236- BeOS: A number of changes were made to the build and installation
237 process. ar-fake now operates on a directory of object files.
238 dl_export.h is gone, and its macros now appear on the mwcc command
239 line during build on PPC BeOS.
240
Jeremy Hyltond6e20232000-10-16 20:08:38 +0000241- Platform directory in lib/python2.0 is "plat-beos5" (or
Jeremy Hylton10921202000-10-09 18:34:12 +0000242 "plat-beos4", if building on BeOS 4.5), rather than "plat-beos".
Jeremy Hyltoned9e6442000-10-09 18:26:42 +0000243
244- Cygwin: Support for shared libraries, Tkinter, and sockets.
245
246- SunOS 4.1.4_JL: Fix test for directory existence in configure.
247
248Tools and other miscellany
249
250- Removed debugging prints from main used with freeze.
251
Tim Peters46446d62000-10-09 21:19:31 +0000252- IDLE auto-indent no longer crashes when it encounters Unicode
253 characters.
Jeremy Hylton1b618592000-09-26 05:32:36 +0000254
255What's new in 2.0 beta 2 (since beta 1)?
256========================================
257
258Core language, builtins, and interpreter
259
Tim Peters482c0212000-09-26 06:33:09 +0000260- Add support for unbounded ints in %d,i,u,x,X,o formats; for example
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000261 "%d" % 2L**64 == "18446744073709551616".
Jeremy Hylton1b618592000-09-26 05:32:36 +0000262
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000263- Add -h and -V command line options to print the usage message and
264 Python version number and exit immediately.
265
Jeremy Hyltonfa2e2c12000-09-26 16:31:30 +0000266- eval() and exec accept Unicode objects as code parameters.
267
268- getattr() and setattr() now also accept Unicode objects for the
269 attribute name, which are converted to strings using the default
270 encoding before lookup.
271
272- Multiplication on string and Unicode now does proper bounds
273 checking; e.g. 'a' * 65536 * 65536 will raise ValueError, "repeated
274 string is too long."
275
276- Better error message when continue is found in try statement in a
Tim Petersa3a3a032000-11-30 05:22:44 +0000277 loop.
Jeremy Hyltonfa2e2c12000-09-26 16:31:30 +0000278
Jeremy Hylton1b618592000-09-26 05:32:36 +0000279
280Standard library and extensions
281
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000282- array: reverse() method of array now works. buffer_info() now does
Jeremy Hylton1b618592000-09-26 05:32:36 +0000283 argument checking; it still takes no arguments.
284
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000285- asyncore/asynchat: Included most recent version from Sam Rushing.
Jeremy Hylton1b618592000-09-26 05:32:36 +0000286
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000287- cgi: Accept '&' or ';' as separator characters when parsing form data.
Jeremy Hylton1b618592000-09-26 05:32:36 +0000288
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000289- CGIHTTPServer: Now works on Windows (and perhaps even Mac).
Jeremy Hylton1b618592000-09-26 05:32:36 +0000290
291- ConfigParser: When reading the file, options spelled in upper case
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000292 letters are now correctly converted to lowercase.
Jeremy Hylton1b618592000-09-26 05:32:36 +0000293
294- copy: Copy Unicode objects atomically.
295
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000296- cPickle: Fail gracefully when copy_reg can't be imported.
Jeremy Hylton1b618592000-09-26 05:32:36 +0000297
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000298- cStringIO: Implemented readlines() method.
Jeremy Hylton1b618592000-09-26 05:32:36 +0000299
Fred Drake67233bc2000-09-26 16:40:27 +0000300- dbm: Add get() and setdefault() methods to dbm object. Add constant
301 `library' to module that names the library used. Added doc strings
302 and method names to error messages. Uses configure to determine
303 which ndbm.h file to include; Berkeley DB's nbdm and GDBM's ndbm is
304 now available options.
Jeremy Hylton1b618592000-09-26 05:32:36 +0000305
306- distutils: Update to version 0.9.3.
307
308- dl: Add several dl.RTLD_ constants.
309
310- fpectl: Now supported on FreeBSD.
311
312- gc: Add DEBUG_SAVEALL option. When enabled all garbage objects
313 found by the collector will be saved in gc.garbage. This is useful
314 for debugging a program that creates reference cycles.
315
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000316- httplib: Three changes: Restore support for set_debuglevel feature
Jeremy Hylton1b618592000-09-26 05:32:36 +0000317 of HTTP class. Do not close socket on zero-length response. Do not
318 crash when server sends invalid content-length header.
319
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000320- mailbox: Mailbox class conforms better to qmail specifications.
Jeremy Hylton1b618592000-09-26 05:32:36 +0000321
Jeremy Hyltonfa2e2c12000-09-26 16:31:30 +0000322- marshal: When reading a short, sign-extend on platforms where shorts
323 are bigger than 16 bits. When reading a long, repair the unportable
324 sign extension that was being done for 64-bit machines. (It assumed
325 that signed right shift sign-extends.)
326
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000327- operator: Add contains(), invert(), __invert__() as aliases for
328 __contains__(), inv(), and __inv__() respectively.
Jeremy Hylton1b618592000-09-26 05:32:36 +0000329
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000330- os: Add support for popen2() and popen3() on all platforms where
331 fork() exists. (popen4() is still in the works.)
Jeremy Hylton1b618592000-09-26 05:32:36 +0000332
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000333- os: (Windows only:) Add startfile() function that acts like double-
Tim Peters482c0212000-09-26 06:33:09 +0000334 clicking on a file in Explorer (or passing the file name to the
335 DOS "start" command).
Jeremy Hylton1b618592000-09-26 05:32:36 +0000336
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000337- os.path: (Windows, DOS:) Treat trailing colon correctly in
Tim Peters482c0212000-09-26 06:33:09 +0000338 os.path.join. os.path.join("a:", "b") yields "a:b".
Jeremy Hylton1b618592000-09-26 05:32:36 +0000339
340- pickle: Now raises ValueError when an invalid pickle that contains
341 a non-string repr where a string repr was expected. This behavior
342 matches cPickle.
343
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000344- posixfile: Remove broken __del__() method.
Jeremy Hylton1b618592000-09-26 05:32:36 +0000345
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000346- py_compile: support CR+LF line terminators in source file.
Jeremy Hylton1b618592000-09-26 05:32:36 +0000347
348- readline: Does not immediately exit when ^C is hit when readline and
Jeremy Hyltonfa2e2c12000-09-26 16:31:30 +0000349 threads are configured. Adds definition of rl_library_version. (The
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000350 latter addition requires GNU readline 2.2 or later.)
Jeremy Hylton1b618592000-09-26 05:32:36 +0000351
352- rfc822: Domain literals returned by AddrlistClass method
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000353 getdomainliteral() are now properly wrapped in brackets.
Jeremy Hylton1b618592000-09-26 05:32:36 +0000354
355- site: sys.setdefaultencoding() should only be called in case the
Tim Peters482c0212000-09-26 06:33:09 +0000356 standard default encoding ("ascii") is changed. This saves quite a
Jeremy Hylton1b618592000-09-26 05:32:36 +0000357 few cycles during startup since the first call to
358 setdefaultencoding() will initialize the codec registry and the
359 encodings package.
360
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000361- socket: Support for size hint in readlines() method of object returned
362 by makefile().
Jeremy Hylton1b618592000-09-26 05:32:36 +0000363
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000364- sre: Added experimental expand() method to match objects. Does not
Jeremy Hylton625915e2000-10-02 13:43:33 +0000365 use buffer interface on Unicode strings. Does not hang if group id
Jeremy Hylton1b618592000-09-26 05:32:36 +0000366 is followed by whitespace.
367
Tim Petersa3a3a032000-11-30 05:22:44 +0000368- StringIO: Size hint in readlines() is now supported as documented.
Jeremy Hylton1b618592000-09-26 05:32:36 +0000369
370- struct: Check ranges for bytes and shorts.
371
372- urllib: Improved handling of win32 proxy settings. Fixed quote and
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000373 quote_plus functions so that the always encode a comma.
Jeremy Hylton1b618592000-09-26 05:32:36 +0000374
375- Tkinter: Image objects are now guaranteed to have unique ids. Set
376 event.delta to zero if Tk version doesn't support mousewheel.
377 Removed some debugging prints.
378
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000379- UserList: now implements __contains__().
Jeremy Hylton1b618592000-09-26 05:32:36 +0000380
Fred Drake67233bc2000-09-26 16:40:27 +0000381- webbrowser: On Windows, use os.startfile() instead of os.popen(),
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000382 which works around a bug in Norton AntiVirus 2000 that leads directly
383 to a Blue Screen freeze.
Jeremy Hylton1b618592000-09-26 05:32:36 +0000384
385- xml: New version detection code allows PyXML to override standard
386 XML package if PyXML version is greater than 0.6.1.
387
Fred Drake64bb3802000-09-26 16:21:35 +0000388- xml.dom: DOM level 1 support for basic XML. Includes xml.dom.minidom
389 (conventional DOM), and xml.dom.pulldom, which allows building the DOM
390 tree only for nodes which are sufficiently interesting to a specific
391 application. Does not provide the HTML-specific extensions. Still
392 undocumented.
Jeremy Hylton1b618592000-09-26 05:32:36 +0000393
Fred Drake64bb3802000-09-26 16:21:35 +0000394- xml.sax: SAX 2 support for Python, including all the handler
395 interfaces needed to process XML 1.0 compliant XML. Some
396 documentation is already available.
Jeremy Hylton1b618592000-09-26 05:32:36 +0000397
Fred Drake64bb3802000-09-26 16:21:35 +0000398- pyexpat: Renamed to xml.parsers.expat since this is part of the new,
399 packagized XML support.
Jeremy Hylton1b618592000-09-26 05:32:36 +0000400
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000401
Jeremy Hylton1b618592000-09-26 05:32:36 +0000402C API
403
404- Add three new convenience functions for module initialization --
405 PyModule_AddObject(), PyModule_AddIntConstant(), and
406 PyModule_AddStringConstant().
407
Jeremy Hyltonfa2e2c12000-09-26 16:31:30 +0000408- Cleaned up definition of NULL in C source code; all definitions were
Jeremy Hylton1b618592000-09-26 05:32:36 +0000409 removed and add #error to Python.h if NULL isn't defined after
410 #include of stdio.h.
411
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000412- Py_PROTO() macros that were removed in 2.0b1 have been restored for
Jeremy Hylton1b618592000-09-26 05:32:36 +0000413 backwards compatibility (at the source level) with old extensions.
414
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000415- A wrapper API was added for signal() and sigaction(). Instead of
416 either function, always use PyOS_getsig() to get a signal handler
417 and PyOS_setsig() to set one. A new convenience typedef
418 PyOS_sighandler_t is defined for the type of signal handlers.
Jeremy Hylton1b618592000-09-26 05:32:36 +0000419
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000420- Add PyString_AsStringAndSize() function that provides access to the
Jeremy Hylton1b618592000-09-26 05:32:36 +0000421 internal data buffer and size of a string object -- or the default
422 encoded version of a Unicode object.
423
Jeremy Hyltonfa2e2c12000-09-26 16:31:30 +0000424- PyString_Size() and PyString_AsString() accept Unicode objects.
425
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000426- The standard header <limits.h> is now included by Python.h (if it
Fred Drake64bb3802000-09-26 16:21:35 +0000427 exists). INT_MAX and LONG_MAX will always be defined, even if
428 <limits.h> is not available.
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000429
Jeremy Hyltonfa2e2c12000-09-26 16:31:30 +0000430- PyFloat_FromString takes a second argument, pend, that was
431 effectively useless. It is now officially useless but preserved for
432 backwards compatibility. If the pend argument is not NULL, *pend is
433 set to NULL.
434
435- PyObject_GetAttr() and PyObject_SetAttr() now accept Unicode objects
436 for the attribute name. See note on getattr() above.
437
438- A few bug fixes to argument processing for Unicode.
439 PyArg_ParseTupleAndKeywords() now accepts "es#" and "es".
440 PyArg_Parse() special cases "s#" for Unicode objects; it returns a
441 pointer to the default encoded string data instead of to the raw
Tim Petersa3a3a032000-11-30 05:22:44 +0000442 UTF-16.
Jeremy Hyltonfa2e2c12000-09-26 16:31:30 +0000443
444- Py_BuildValue accepts B format (for bgen-generated code).
445
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000446
Jeremy Hylton1b618592000-09-26 05:32:36 +0000447Internals
448
449- On Unix, fix code for finding Python installation directory so that
450 it works when argv[0] is a relative path.
451
Jeremy Hyltonfa2e2c12000-09-26 16:31:30 +0000452- Added a true tnicode_internal_encode() function and fixed the
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000453 unicode_internal_decode function() to support Unicode objects directly
Jeremy Hylton1b618592000-09-26 05:32:36 +0000454 rather than by generating a copy of the object.
455
Tim Peters482c0212000-09-26 06:33:09 +0000456- Several of the internal Unicode tables are much smaller now, and
457 the source code should be much friendlier to weaker compilers.
Jeremy Hylton1b618592000-09-26 05:32:36 +0000458
Jeremy Hylton97693b02000-09-26 17:42:51 +0000459- In the garbage collector: Fixed bug in collection of tuples. Fixed
460 bug that caused some instances to be removed from the container set
461 while they were still live. Fixed parsing in gc.set_debug() for
462 platforms where sizeof(long) > sizeof(int).
Jeremy Hyltonfa2e2c12000-09-26 16:31:30 +0000463
464- Fixed refcount problem in instance deallocation that only occurred
465 when Py_REF_DEBUG was defined and Py_TRACE_REFS was not.
466
Jeremy Hyltonfa2e2c12000-09-26 16:31:30 +0000467- On Windows, getpythonregpath is now protected against null data in
468 registry key.
469
470- On Unix, create .pyc/.pyo files with O_EXCL flag to avoid a race
Tim Petersa3a3a032000-11-30 05:22:44 +0000471 condition.
Jeremy Hyltonfa2e2c12000-09-26 16:31:30 +0000472
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000473
Jeremy Hylton1b618592000-09-26 05:32:36 +0000474Build and platform-specific issues
475
476- Better support of GNU Pth via --with-pth configure option.
477
Jeremy Hyltonfa2e2c12000-09-26 16:31:30 +0000478- Python/C API now properly exposed to dynamically-loaded extension
479 modules on Reliant UNIX.
Jeremy Hylton1b618592000-09-26 05:32:36 +0000480
481- Changes for the benefit of SunOS 4.1.4 (really!). mmapmodule.c:
482 Don't define MS_SYNC to be zero when it is undefined. Added missing
483 prototypes in posixmodule.c.
484
Jeremy Hyltonfa2e2c12000-09-26 16:31:30 +0000485- Improved support for HP-UX build. Threads should now be correctly
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000486 configured (on HP-UX 10.20 and 11.00).
Jeremy Hylton1b618592000-09-26 05:32:36 +0000487
Jeremy Hyltonfa2e2c12000-09-26 16:31:30 +0000488- Fix largefile support on older NetBSD systems and OpenBSD by adding
489 define for TELL64.
490
491
492Tools and other miscellany
493
494- ftpmirror: Call to main() is wrapped in if __name__ == "__main__".
495
496- freeze: The modulefinder now works with 2.0 opcodes.
497
Tim Petersa3a3a032000-11-30 05:22:44 +0000498- IDLE:
Jeremy Hyltonfa2e2c12000-09-26 16:31:30 +0000499 Move hackery of sys.argv until after the Tk instance has been
500 created, which allows the application-specific Tkinter
501 initialization to be executed if present; also pass an explicit
502 className parameter to the Tk() constructor.
Fred Drake64bb3802000-09-26 16:21:35 +0000503
Jeremy Hylton1b618592000-09-26 05:32:36 +0000504
505What's new in 2.0 beta 1?
506=========================
507
Guido van Rossumf2ffce02000-09-05 04:38:34 +0000508Source Incompatibilities
509------------------------
510
511None. Note that 1.6 introduced several incompatibilities with 1.5.2,
512such as single-argument append(), connect() and bind(), and changes to
513str(long) and repr(float).
514
515
516Binary Incompatibilities
517------------------------
518
519- Third party extensions built for Python 1.5.x or 1.6 cannot be used
520with Python 2.0; these extensions will have to be rebuilt for Python
5212.0.
522
523- On Windows, attempting to import a third party extension built for
524Python 1.5.x or 1.6 results in an immediate crash; there's not much we
525can do about this. Check your PYTHONPATH environment variable!
526
527- Python bytecode files (*.pyc and *.pyo) are not compatible between
528releases.
529
530
531Overview of Changes Since 1.6
532-----------------------------
533
534There are many new modules (including brand new XML support through
535the xml package, and i18n support through the gettext module); a list
536of all new modules is included below. Lots of bugs have been fixed.
537
Jeremy Hylton24c3d602000-09-05 19:36:26 +0000538The process for making major new changes to the language has changed
539since Python 1.6. Enhancements must now be documented by a Python
540Enhancement Proposal (PEP) before they can be accepted.
541
Guido van Rossumf2ffce02000-09-05 04:38:34 +0000542There are several important syntax enhancements, described in more
543detail below:
544
545 - Augmented assignment, e.g. x += 1
546
547 - List comprehensions, e.g. [x**2 for x in range(10)]
548
549 - Extended import statement, e.g. import Module as Name
550
551 - Extended print statement, e.g. print >> file, "Hello"
552
553Other important changes:
554
555 - Optional collection of cyclical garbage
556
Jeremy Hylton24c3d602000-09-05 19:36:26 +0000557Python Enhancement Proposal (PEP)
558---------------------------------
559
560PEP stands for Python Enhancement Proposal. A PEP is a design
561document providing information to the Python community, or describing
562a new feature for Python. The PEP should provide a concise technical
563specification of the feature and a rationale for the feature.
564
565We intend PEPs to be the primary mechanisms for proposing new
566features, for collecting community input on an issue, and for
567documenting the design decisions that have gone into Python. The PEP
568author is responsible for building consensus within the community and
569documenting dissenting opinions.
570
571The PEPs are available at http://python.sourceforge.net/peps/.
Guido van Rossumf2ffce02000-09-05 04:38:34 +0000572
573Augmented Assignment
574--------------------
575
576This must have been the most-requested feature of the past years!
577Eleven new assignment operators were added:
578
Guido van Rossume905e952000-09-05 12:42:46 +0000579 += -= *= /= %= **= <<= >>= &= ^= |=
Guido van Rossumf2ffce02000-09-05 04:38:34 +0000580
581For example,
582
583 A += B
584
585is similar to
586
587 A = A + B
588
589except that A is evaluated only once (relevant when A is something
590like dict[index].attr).
591
592However, if A is a mutable object, A may be modified in place. Thus,
593if A is a number or a string, A += B has the same effect as A = A+B
594(except A is only evaluated once); but if a is a list, A += B has the
595same effect as A.extend(B)!
596
597Classes and built-in object types can override the new operators in
598order to implement the in-place behavior; the not-in-place behavior is
599used automatically as a fallback when an object doesn't implement the
600in-place behavior. For classes, the method name is derived from the
601method name for the corresponding not-in-place operator by inserting
602an 'i' in front of the name, e.g. __iadd__ implements in-place
603__add__.
604
605Augmented assignment was implemented by Thomas Wouters.
606
607
608List Comprehensions
609-------------------
610
611This is a flexible new notation for lists whose elements are computed
612from another list (or lists). The simplest form is:
613
614 [<expression> for <variable> in <sequence>]
615
Guido van Rossum56db0952000-09-06 23:34:25 +0000616For example, [i**2 for i in range(4)] yields the list [0, 1, 4, 9].
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000617This is more efficient than a for loop with a list.append() call.
Guido van Rossumf2ffce02000-09-05 04:38:34 +0000618
619You can also add a condition:
620
621 [<expression> for <variable> in <sequence> if <condition>]
622
623For example, [w for w in words if w == w.lower()] would yield the list
624of words that contain no uppercase characters. This is more efficient
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000625than a for loop with an if statement and a list.append() call.
Guido van Rossumf2ffce02000-09-05 04:38:34 +0000626
627You can also have nested for loops and more than one 'if' clause. For
628example, here's a function that flattens a sequence of sequences::
629
630 def flatten(seq):
631 return [x for subseq in seq for x in subseq]
632
633 flatten([[0], [1,2,3], [4,5], [6,7,8,9], []])
634
635This prints
636
637 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
638
639List comprehensions originated as a patch set from Greg Ewing; Skip
Jeremy Hylton24c3d602000-09-05 19:36:26 +0000640Montanaro and Thomas Wouters also contributed. Described by PEP 202.
Guido van Rossumf2ffce02000-09-05 04:38:34 +0000641
642
643Extended Import Statement
644-------------------------
645
646Many people have asked for a way to import a module under a different
647name. This can be accomplished like this:
648
649 import foo
650 bar = foo
651 del foo
652
653but this common idiom gets old quickly. A simple extension of the
654import statement now allows this to be written as follows:
655
656 import foo as bar
657
658There's also a variant for 'from ... import':
659
660 from foo import bar as spam
661
662This also works with packages; e.g. you can write this:
663
664 import test.regrtest as regrtest
665
666Note that 'as' is not a new keyword -- it is recognized only in this
667context (this is only possible because the syntax for the import
668statement doesn't involve expressions).
669
Jeremy Hylton24c3d602000-09-05 19:36:26 +0000670Implemented by Thomas Wouters. Described by PEP 221.
Guido van Rossumf2ffce02000-09-05 04:38:34 +0000671
672
673Extended Print Statement
674------------------------
675
676Easily the most controversial new feature, this extension to the print
677statement adds an option to make the output go to a different file
678than the default sys.stdout.
679
680For example, to write an error message to sys.stderr, you can now
681write:
682
683 print >> sys.stderr, "Error: bad dog!"
684
685As a special feature, if the expression used to indicate the file
Fred Drake45888ff2000-09-29 17:09:11 +0000686evaluates to None, the current value of sys.stdout is used. Thus:
Guido van Rossumf2ffce02000-09-05 04:38:34 +0000687
688 print >> None, "Hello world"
689
690is equivalent to
691
692 print "Hello world"
693
Jeremy Hylton24c3d602000-09-05 19:36:26 +0000694Design and implementation by Barry Warsaw. Described by PEP 214.
Guido van Rossumf2ffce02000-09-05 04:38:34 +0000695
696
697Optional Collection of Cyclical Garbage
698---------------------------------------
699
700Python is now equipped with a garbage collector that can hunt down
701cyclical references between Python objects. It's no replacement for
702reference counting; in fact, it depends on the reference counts being
703correct, and decides that a set of objects belong to a cycle if all
704their reference counts can be accounted for from their references to
705each other. This devious scheme was first proposed by Eric Tiedemann,
706and brought to implementation by Neil Schemenauer.
707
708There's a module "gc" that lets you control some parameters of the
709garbage collection. There's also an option to the configure script
710that lets you enable or disable the garbage collection. In 2.0b1,
711it's on by default, so that we (hopefully) can collect decent user
712experience with this new feature. There are some questions about its
Fred Drake9f11cf82000-09-29 17:54:40 +0000713performance. If it proves to be too much of a problem, we'll turn it
Guido van Rossumf2ffce02000-09-05 04:38:34 +0000714off by default in the final 2.0 release.
715
716
717Smaller Changes
718---------------
719
720A new function zip() was added. zip(seq1, seq2, ...) is equivalent to
721map(None, seq1, seq2, ...) when the sequences have the same length;
722i.e. zip([1,2,3], [10,20,30]) returns [(1,10), (2,20), (3,30)]. When
723the lists are not all the same length, the shortest list wins:
Jeremy Hylton24c3d602000-09-05 19:36:26 +0000724zip([1,2,3], [10,20]) returns [(1,10), (2,20)]. See PEP 201.
Guido van Rossumf2ffce02000-09-05 04:38:34 +0000725
726sys.version_info is a tuple (major, minor, micro, level, serial).
727
728Dictionaries have an odd new method, setdefault(key, default).
729dict.setdefault(key, default) returns dict[key] if it exists; if not,
730it sets dict[key] to default and returns that value. Thus:
731
732 dict.setdefault(key, []).append(item)
733
734does the same work as this common idiom:
735
736 if not dict.has_key(key):
737 dict[key] = []
738 dict[key].append(item)
739
Jeremy Hylton24c3d602000-09-05 19:36:26 +0000740There are two new variants of SyntaxError that are raised for
741indentation-related errors: IndentationError and TabError.
742
743Changed \x to consume exactly two hex digits; see PEP 223. Added \U
744escape that consumes exactly eight hex digits.
Jeremy Hyltonbdebd542000-09-05 18:28:54 +0000745
746The limits on the size of expressions and file in Python source code
747have been raised from 2**16 to 2**32. Previous versions of Python
748were limited because the maximum argument size the Python VM accepted
749was 2**16. This limited the size of object constructor expressions,
750e.g. [1,2,3] or {'a':1, 'b':2}, and the size of source files. This
751limit was raised thanks to a patch by Charles Waldman that effectively
752fixes the problem. It is now much more likely that you will be
753limited by available memory than by an arbitrary limit in Python.
754
755The interpreter's maximum recursion depth can be modified by Python
756programs using sys.getrecursionlimit and sys.setrecursionlimit. This
757limit is the maximum number of recursive calls that can be made by
758Python code. The limit exists to prevent infinite recursion from
759overflowing the C stack and causing a core dump. The default value is
7601000. The maximum safe value for a particular platform can be found
761by running Misc/find_recursionlimit.py.
Guido van Rossumf2ffce02000-09-05 04:38:34 +0000762
763New Modules and Packages
764------------------------
765
766atexit - for registering functions to be called when Python exits.
767
768imputil - Greg Stein's alternative API for writing custom import
769hooks.
770
771pyexpat - an interface to the Expat XML parser, contributed by Paul
772Prescod.
773
774xml - a new package with XML support code organized (so far) in three
775subpackages: xml.dom, xml.sax, and xml.parsers. Describing these
776would fill a volume. There's a special feature whereby a
777user-installed package named _xmlplus overrides the standard
778xmlpackage; this is intended to give the XML SIG a hook to distribute
779backwards-compatible updates to the standard xml package.
780
781webbrowser - a platform-independent API to launch a web browser.
782
783
Guido van Rossume905e952000-09-05 12:42:46 +0000784Changed Modules
785---------------
786
Jeremy Hylton24c3d602000-09-05 19:36:26 +0000787array -- new methods for array objects: count, extend, index, pop, and
788remove
789
790binascii -- new functions b2a_hex and a2b_hex that convert between
791binary data and its hex representation
792
Jeremy Hyltonbdebd542000-09-05 18:28:54 +0000793calendar -- Many new functions that support features including control
794over which day of the week is the first day, returning strings instead
795of printing them. Also new symbolic constants for days of week,
796e.g. MONDAY, ..., SUNDAY.
797
798cgi -- FieldStorage objects have a getvalue method that works like a
799dictionary's get method and returns the value attribute of the object.
800
801ConfigParser -- The parser object has new methods has_option,
802remove_section, remove_option, set, and write. They allow the module
803to be used for writing config files as well as reading them.
804
805ftplib -- ntransfercmd(), transfercmd(), and retrbinary() all now
Guido van Rossume905e952000-09-05 12:42:46 +0000806optionally support the RFC 959 REST command.
807
Jeremy Hyltonbdebd542000-09-05 18:28:54 +0000808gzip -- readline and readlines now accept optional size arguments
Guido van Rossume905e952000-09-05 12:42:46 +0000809
Jeremy Hyltonbdebd542000-09-05 18:28:54 +0000810httplib -- New interfaces and support for HTTP/1.1 by Greg Stein. See
811the module doc strings for details.
Guido van Rossum830ca2a2000-09-05 15:34:16 +0000812
Jeremy Hylton24c3d602000-09-05 19:36:26 +0000813locale -- implement getdefaultlocale for Win32 and Macintosh
814
815marshal -- no longer dumps core when marshaling deeply nested or
816recursive data structures
817
818os -- new functions isatty, seteuid, setegid, setreuid, setregid
819
Jeremy Hyltonbdebd542000-09-05 18:28:54 +0000820os/popen2 -- popen2/popen3/popen4 support under Windows. popen2/popen3
821support under Unix.
822
Jeremy Hylton24c3d602000-09-05 19:36:26 +0000823os/pty -- support for openpty and forkpty
Jeremy Hyltonbdebd542000-09-05 18:28:54 +0000824
825os.path -- fix semantics of os.path.commonprefix
826
827smtplib -- support for sending very long messages
828
829socket -- new function getfqdn()
830
831readline -- new functions to read, write and truncate history files.
832The readline section of the library reference manual contains an
833example.
834
Jeremy Hylton24c3d602000-09-05 19:36:26 +0000835select -- add interface to poll system call
836
Jeremy Hyltonbdebd542000-09-05 18:28:54 +0000837shutil -- new copyfileobj function
838
839SimpleHTTPServer, CGIHTTPServer -- Fix problems with buffering in the
840HTTP server.
841
Jeremy Hylton24c3d602000-09-05 19:36:26 +0000842Tkinter -- optimization of function flatten
Jeremy Hyltonbdebd542000-09-05 18:28:54 +0000843
844urllib -- scans environment variables for proxy configuration,
Tim Peters8b092332000-09-05 20:15:25 +0000845e.g. http_proxy.
Jeremy Hyltonbdebd542000-09-05 18:28:54 +0000846
847whichdb -- recognizes dumbdbm format
Guido van Rossume905e952000-09-05 12:42:46 +0000848
849
850Obsolete Modules
851----------------
852
853None. However note that 1.6 made a whole slew of modules obsolete:
854stdwin, soundex, cml, cmpcache, dircache, dump, find, grep, packmail,
855poly, zmod, strop, util, whatsound.
856
857
858Changed, New, Obsolete Tools
859----------------------------
860
Tim Peters8b092332000-09-05 20:15:25 +0000861None.
Guido van Rossume905e952000-09-05 12:42:46 +0000862
863
Guido van Rossumf2ffce02000-09-05 04:38:34 +0000864C-level Changes
865---------------
866
867Several cleanup jobs were carried out throughout the source code.
868
869All C code was converted to ANSI C; we got rid of all uses of the
870Py_PROTO() macro, which makes the header files a lot more readable.
871
872Most of the portability hacks were moved to a new header file,
873pyport.h; several other new header files were added and some old
874header files were removed, in an attempt to create a more rational set
875of header files. (Few of these ever need to be included explicitly;
876they are all included by Python.h.)
877
Guido van Rossumf2ffce02000-09-05 04:38:34 +0000878Trent Mick ensured portability to 64-bit platforms, under both Linux
Jeremy Hylton24c3d602000-09-05 19:36:26 +0000879and Win64, especially for the new Intel Itanium processor. Mick also
880added large file support for Linux64 and Win64.
Guido van Rossumf2ffce02000-09-05 04:38:34 +0000881
Jeremy Hyltonbdebd542000-09-05 18:28:54 +0000882The C APIs to return an object's size have been update to consistently
883use the form PyXXX_Size, e.g. PySequence_Size and PyDict_Size. In
884previous versions, the abstract interfaces used PyXXX_Length and the
885concrete interfaces used PyXXX_Size. The old names,
886e.g. PyObject_Length, are still available for backwards compatibility
887at the API level, but are deprecated.
888
Jeremy Hylton24c3d602000-09-05 19:36:26 +0000889The PyOS_CheckStack function has been implemented on Windows by
890Fredrik Lundh. It prevents Python from failing with a stack overflow
891on Windows.
Jeremy Hyltonbdebd542000-09-05 18:28:54 +0000892
893The GC changes resulted in creation of two new slots on object,
894tp_traverse and tp_clear. The augmented assignment changes result in
Guido van Rossum4338a282000-09-06 13:02:08 +0000895the creation of a new slot for each in-place operator.
Jeremy Hyltonbdebd542000-09-05 18:28:54 +0000896
897The GC API creates new requirements for container types implemented in
Guido van Rossum4338a282000-09-06 13:02:08 +0000898C extension modules. See Include/objimpl.h for details.
Jeremy Hyltonbdebd542000-09-05 18:28:54 +0000899
Jeremy Hylton24c3d602000-09-05 19:36:26 +0000900PyErr_Format has been updated to automatically calculate the size of
901the buffer needed to hold the formatted result string. This change
902prevents crashes caused by programmer error.
Jeremy Hyltonbdebd542000-09-05 18:28:54 +0000903
Jeremy Hylton24c3d602000-09-05 19:36:26 +0000904New C API calls: PyObject_AsFileDescriptor, PyErr_WriteUnraisable.
Guido van Rossume905e952000-09-05 12:42:46 +0000905
Jeremy Hylton24c3d602000-09-05 19:36:26 +0000906PyRun_AnyFileEx, PyRun_SimpleFileEx, PyRun_FileEx -- New functions
907that are the same as their non-Ex counterparts except they take an
908extra flag argument that tells them to close the file when done.
909
910XXX There were other API changes that should be fleshed out here.
Guido van Rossumab9d6f01998-08-10 22:01:13 +0000911
Tim Peters8b092332000-09-05 20:15:25 +0000912
913Windows Changes
914---------------
915
916New popen2/popen3/peopen4 in os module (see Changed Modules above).
917
918os.popen is much more usable on Windows 95 and 98. See Microsoft
919Knowledge Base article Q150956. The Win9x workaround described there
920is implemented by the new w9xpopen.exe helper in the root of your
921Python installation. Note that Python uses this internally; it is not
922a standalone program.
923
924Administrator privileges are no longer required to install Python
925on Windows NT or Windows 2000. If you have administrator privileges,
926Python's registry info will be written under HKEY_LOCAL_MACHINE.
927Otherwise the installer backs off to writing Python's registry info
Guido van Rossum4338a282000-09-06 13:02:08 +0000928under HKEY_CURRENT_USER. The latter is sufficient for all "normal"
Tim Peters8b092332000-09-05 20:15:25 +0000929uses of Python, but will prevent some advanced uses from working
930(for example, running a Python script as an NT service, or possibly
931from CGI).
932
933[This was new in 1.6] The installer no longer runs a separate Tcl/Tk
934installer; instead, it installs the needed Tcl/Tk files directly in the
935Python directory. If you already have a Tcl/Tk installation, this
936wastes some disk space (about 4 Megs) but avoids problems with
937conflicting Tcl/Tk installations, and makes it much easier for Python
938to ensure that Tcl/Tk can find all its files.
939
940[This was new in 1.6] The Windows installer now installs by default in
941\Python20\ on the default volume, instead of \Program Files\Python-2.0\.
942
Guido van Rossumf62ed9c2000-09-26 11:16:10 +0000943
944Updates to the changes between 1.5.2 and 1.6
945--------------------------------------------
946
947The 1.6 NEWS file can't be changed after the release is done, so here
948is some late-breaking news:
949
950New APIs in locale.py: normalize(), getdefaultlocale(), resetlocale(),
951and changes to getlocale() and setlocale().
952
953The new module is now enabled per default.
954
955It is not true that the encodings codecs cannot be used for normal
956strings: the string.encode() (which is also present on 8-bit strings
957!) allows using them for 8-bit strings too, e.g. to convert files from
958cp1252 (Windows) to latin-1 or vice-versa.
959
960Japanese codecs are available from Tamito KAJIYAMA:
961http://pseudo.grad.sccs.chukyo-u.ac.jp/~kajiyama/python/
962
963
Guido van Rossumab9d6f01998-08-10 22:01:13 +0000964======================================================================