summaryrefslogtreecommitdiffstats
path: root/Misc
diff options
context:
space:
mode:
Diffstat (limited to 'Misc')
-rw-r--r--Misc/NEWS282
1 files changed, 273 insertions, 9 deletions
diff --git a/Misc/NEWS b/Misc/NEWS
index 4c1b551..3718fbe 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -3,8 +3,7 @@ What's new in this release?
Below is a list of all relevant changes since the release 1.4, up till
the release of 1.5a3. At the end is a list of changes made since
-1.5a3 that will be in 1.5a4; this list is not yet complete and will be
-merged with the main list later.
+1.5a3 up to the release of 1.5a4.
A note on attributions: while I have sprinkled some names throughout
here, I'm grateful to many more people who remain anonymous. You may
@@ -343,9 +342,10 @@ on platforms where this is not the native format. It uses uppercase
format codes for unsigned integers of various sizes (always using
Python long ints for 'I' and 'L'), 's' with a size prefix for strings,
and 'p' for "Pascal strings" (with a leading length byte, included in
-the size; blame Hannu Krosing). A prefix '>' forces big-endian data
-and '<' forces little-endian data; these also select standard data
-sizes and disable automatic alignment (use pad bytes as needed).
+the size; blame Hannu Krosing; new in 1.5a4). A prefix '>' forces
+big-endian data and '<' forces little-endian data; these also select
+standard data sizes and disable automatic alignment (use pad bytes as
+needed).
- The array module supports uppercase format codes for unsigned data
formats (like the struct module).
@@ -971,12 +971,16 @@ make a separate announcement for the Mac specific source code and the
binary distribution(s) when these are ready.
+======================================================================
+
+
Fixed after 1.5a3 was released
------------------------------
The following changes have been made to the source base after the
-release of 1.5a3. These need to be merged into their respective
-categories for the next release.
+release of 1.5a3. They still need to be sorted. They also need to be
+merged into their respective categories for the final release, but
+it's useful to have them separately during the alpha test cycle.
- faqwiz.py: version 0.8; Recognize https:// as URL; <html>...</html>
feature; better install instructions; removed faqmain.py (which was an
@@ -991,6 +995,15 @@ function.
- urllib.py: close the socket and temp file in URLopener.retrieve() so
that multiple retrievals using the same connection work.
+- All standard exceptions are now classes by default; use -X to make
+them strings (for backward compatibility only).
+
+- There's a new standard exception hierarchy, defined in the standard
+library module exceptions.py (which you never need to import
+explicitly). See
+http://grail.cnri.reston.va.us/python/essays/stdexceptions.html for
+more info.
+
- Three new C API functions:
- int PyErr_GivenExceptionMatches(obj1, obj2)
@@ -1017,8 +1030,9 @@ that multiple retrievals using the same connection work.
argument. If value is None, it uses an empty arg tuple, and if
the value is a tuple, it uses just that.
-- Demo/metaclasses: new demo subdir explains metaclasses (read
-index.html in a browser).
+- Another new C API function: PyErr_NewException() creates a new
+exception class derived from Exception; when -X is given, it creates a
+new string exception.
- core interpreter: remove the distinction between tuple and list
unpacking; allow an arbitrary sequence on the right hand side of any
@@ -1153,3 +1167,253 @@ if it doesn't. The default defaults to None. This is quicker for
some applications than using either has_key() or try:...except
KeyError:....
+- Tools/webchecker/: some small changes to webchecker.py; added
+websucker.py (a simple web site mirroring script).
+
+- Dictionary objects now have a get() method (also in UserDict.py).
+dict.get(key, default) returns dict[key] if it exists and default
+otherwise; default defaults to None.
+
+- Tools/scripts/logmerge.py: print the author, too.
+
+- Changes to import: support for "import a.b.c" is now built in. See
+http://grail.cnri.reston.va.us/python/essays/packages.html
+for more info. Most important deviations from "ni.py": __init__.py is
+executed in the package's namespace instead of as a submodule; and
+there's no support for "__" or "__domain__". Note that "ni.py" is not
+changed to match this -- it is simply declared obsolete (while at the
+same time, it is documented...:-( ).
+Unfortunately, "ihooks.py" has not been upgraded (but see "knee.py"
+for an example implementation of hierarchical module import written in
+Python).
+
+- More changes to import: the site.py module is now imported by
+default when Python is initialized; use -S to disable it. The site.py
+module extends the path with several more directories: site-packages
+inside the lib/python1.5/ directory, site-python in the lib/
+directory, and pathnames mentioned in *.pth files found in either of
+those directories. See
+http://grail.cnri.reston.va.us/python/essays/packages.html
+for more info.
+
+- Changes to standard library subdirectory names: those subdirectories
+that are not packages have been renamed with a hypen in their name,
+e.g. lib-tk, lib-stdwin, plat-win, plat-linux2, plat-sunos5, dos-8x3.
+The test suite is now a package -- to run a test, you must now use
+"import test.test_foo".
+
+- A completely new re.py module is provided (thanks to Andrew
+Kuchling) which uses Philip Hazel's "pcre" re compiler and engine.
+For a while, the "old" re.py (which was new in 1.5a3!) will be kept
+around as re1.py. The "old" regex module and underlying parser and
+engine are still present -- while regex is now officially obsolete, it
+will probably take several major release cycles before it can be
+removed.
+
+- The posix module now has a strerror() function which translates an
+error code to a string.
+
+- The emacs.py module (which was long obsolete) has been removed.
+
+- The universal makefile Misc/Makefile.pre.in now features an
+"install" target. By default, installed shared libraries go into
+$exec_prefix/lib/python$VERSION/site-packages/.
+
+- The install-sh script is installed with the other configuration
+specific files (in the config/ subdirectory).
+
+- It turns out whatsound.py and sndhdr.py were identical modules.
+Since there's also an imghdr.py file, I propose to make sndhdr.py the
+official one. For compatibility, whatsound.py imports * from
+sndhdr.py.
+
+- Class objects have a new attribute, __module__, giving the name of
+the module in which they were declared. This is useful for pickle and
+for printing the full name of a class exception.
+
+- Many extension modules no longer issue a fatal error when their
+initialization fails; the importing code now checks whether an error
+occurred during module initialization, and correctly propagates the
+exception to the import statement.
+
+- Most extension modules now raise class-based exceptions (except when
+-X is used).
+
+- Subtle changes to PyEval_{Save,Restore}Thread(): always swap the
+thread state -- just don't manipulate the lock if it isn't there.
+
+- Fixed a bug in Python/getopt.c that made it do the wrong thing when
+an option was a single '-'. Thanks to Andrew Kuchling.
+
+- New module mimetypes.py will guess a MIME type from a filename's
+extension.
+
+- Windows: the DLL version is now settable via a resource rather than
+being hardcoded. This can be used for "branding" a binary Python
+distribution.
+
+- urllib.py is now threadsafe -- it now uses re instead of regex, and
+sys.exc_info() instead of sys.exc_{type,value}.
+
+- Many other library modules that used to use
+sys.exc_{type,value,traceback} are now more thread-safe by virtue of
+using sys.exc_info().
+
+- The functions in popen2 have an optional buffer size parameter.
+Also, the command argument can now be either a string (passed to the
+shell) or a list of arguments (passed directly to execv).
+
+- The thread support for _tkinter.c now works. The bad news is that
+it requires a modified version of a file in the standard Tcl
+distribution, which you must compile with a -I option pointing to the
+standard Tcl source tree. For this reason, the thread support is
+disabled by default.
+
+- The errno extension module adds two tables: errorcode maps errno
+numbers to errno names (e.g. EINTR), and errorcode maps them to
+message strings. (The latter is redundant because the new call
+posix.strerror() now does the same, but alla...) (Marc-Andre Lemburg)
+
+- The readline extension module now provides some interfaces to
+internal readline routines that make it possible to write a completer
+in Python. An example completer, rlcompleter.py, is provided.
+
+ When completing a simple identifier, it completes keywords,
+ built-ins and globals in __main__; when completing
+ NAME.NAME..., it evaluates (!) the expression up to the last
+ dot and completes its attributes.
+
+ It's very cool to do "import string" type "string.", hit the
+ completion key (twice), and see the list of names defined by
+ the string module!
+
+ Tip: to use the tab key as the completion key, call
+
+ readline.parse_and_bind("tab: complete")
+
+- The traceback.py module has a new function tb_lineno() by Marc-Andre
+Lemburg which extracts the line number from the linenumber table in
+the code object. Apparently the traceback object doesn't contains the
+right linenumber when -O is used. Rather than guessing whether -O is
+on or off, the module itself uses tb_lineno() unconditionally.
+
+- Fixed Demo/tkinter/matt/canvas-moving-or-creating.py: change bind()
+to tag_bind() so it works again.
+
+- The pystone script is now a standard library module. Example use:
+"import test.pystone; test.pystone.main()".
+
+- The import of the readline module in interactive mode is now also
+attempted when -i is specified. (Yes, I know, giving in to Marc-Andre
+Lemburg, who asked for this. :-)
+
+- rfc822.py: Entirely rewritten parseaddr() function by Sjoerd
+Mullender, to be closer to the standard. This fixes the getaddr()
+method. Unfortunately, getaddrlist() is as broken as ever, since it
+splits on commas without regard for RFC 822 quoting conventions.
+
+- pprint.py: correctly emit trailing "," in singleton tuples.
+
+- _tkinter.c: export names for its type objects, TkappType and
+TkttType.
+
+- pickle.py: use __module__ when defined; fix a particularly hard to
+reproduce bug that confuses the memo when temporary objects are
+returned by custom pickling interfaces; and a semantic change: when
+unpickling the instance variables of an instance, use
+inst.__dict__.update(value) instead of a for loop with setattr() over
+the value.keys(). This is more consistent (the pickling doesn't use
+getattr() either but pickles inst.__dict__) and avoids problems with
+instances that have a __setattr__ hook. But it *is* a semantic change
+(because the setattr hook is no longer used). So beware!
+
+- config.h is now installed (at last) in
+$exec_prefix/include/python1.5/. For most sites, this means that it
+is actually in $prefix/include/python1.5/, with all the other Python
+include files, since $prefix and $exec_prefix are the same by
+default.
+
+- The imp module now supports parts of the functionality to implement
+import of hierarchical module names. It now supports find_module()
+and load_module() for all types of modules. Docstrings have been
+added for those functions in the built-in impo module that are still
+relevant (some old interfaces are obsolete). For a sample
+implementation of hierarchical module import in Python, see the new
+library module knee.py.
+
+- The % operator on string objects now allows arbitrary nested parens
+in a %(...)X style format. (Brad Howes)
+
+- Reverse the order in which Setup and Setup.local are passed to the
+makesetup script. This allows variable definitions in Setup.local to
+override definitions in Setup. (But you'll still have to edit Setup
+if you want to disable modules that are enabled by default, or if such
+modules need non-standard options.)
+
+- Added PyImport_ImportModuleEx(name, globals, locals, fromlist); this
+is like PyImport_ImporModule(name) but receives the globals and locals
+dict and the fromlist arguments as well. (The name is a char*; the
+others are PyObject*s).
+
+- The 'p' format in the struct extension module alloded to above is
+new in 1.5a4.
+
+- The xlib extension module has been debugged and improved.
+
+- The types.py module now uses try-except in a few places to make it
+more likely that it can be imported in restricted mode. Some type
+names are undefined in that case, e.g. CodeType (inaccessible),
+FileType (not always accessible), and TracebackType and FrameType
+(inaccessible).
+
+- In urllib.py: added separate administration of temporary files
+created y URLopener.retrieve() so cleanup() can properly remove them.
+The old code removed everything in tempcache which was a bad idea if
+the user had passed a non-temp file into it. Also, in basejoin(),
+interpret relative paths starting in "../". This is necessary if the
+server uses symbolic links.
+
+- The Windows build procedure and project files are now based on
+Microsoft Visual C++ 5.x. The build now takes place in the PCbuild
+directory. It is much more robust, and properly builds separate Debug
+and Release versions. (The installer will be added shortly.)
+
+- Added casts and changed some return types in regexpr.c to avoid
+compiler warnings or errors on some platforms.
+
+- The AIX build tools for shared libraries now supports VPATH. (Donn
+Cave)
+
+- By default, disable the "portable" multimedia modules audioop,
+imageop, and rgbimg, since they don't work on 64-bit platforms.
+
+- Fixed a nasty bug in cStringIO.c when code was actually using the
+close() method (the destructors would try to free certain fields a
+second time).
+
+- For those who think they need it, there's a "user.py" module. This
+is *not* imported by default, but can be imported to run user-specific
+setup commands, ~/.pythonrc.py.
+
+- Various speedups suggested by Fredrik Lundh, Marc-Andre Lemburg,
+Vladimir Marangozov, and others.
+
+- Added os.altsep; this is '/' on DOS/Windows, and None on systems
+with a sane filename syntax.
+
+- os.py: Write out the dynamic OS choice, to avoid exec statements.
+Adding support for a new OS is now a bit more work, but I bet that
+'dos' or 'nt' will cover most situations...
+
+- The obsolete exception AccessError is now really gone.
+
+- Tools/faqwiz/: New installation instructions show how to maintain
+multiple FAQs. Removed bootstrap script from end of faqwiz.py module.
+Added instructions to bootstrap script, too. Version bumped to 0.8.
+Added <html>...</html> feature suggested by Skip Montanaro. Added
+leading text for Roulette, default to 'Hit Reload ...'. Fix typo in
+default SRCDIR.
+
+- Documentation for the relatively new modules "keyword" and "symbol"
+has been added (to the end of the section on the parser extension
+module).