transcribed changes from tut.tex

This commit is contained in:
Guido van Rossum 1995-10-11 18:03:13 +00:00
parent c102a13f61
commit 5e639d446c
1 changed files with 119 additions and 110 deletions

229
Misc/NEWS
View File

@ -1,142 +1,151 @@
===================================
==> Release 1.2 <==
===================================
=====================================
==> Release 1.3 (13 October 1995) <==
=====================================
- Changes to Misc/python-mode.el:
- Wrapping and indentation within triple quote strings should work
properly now.
- `Standard' bug reporting mechanism (use C-c C-b)
- py-mark-block was moved to C-c C-m
- C-c C-v shows you the python-mode version
- a basic python-font-lock-keywords has been added for Emacs 19
font-lock colorizations.
- proper interaction with pending-del and del-sel modes.
- New py-electric-colon (:) command for improved outdenting. Also
py-indent-line (TAB) should handle outdented lines better.
- New commands py-outdent-left (C-c C-l) and py-indent-right (C-c C-r)
Major change
============
- The Library Reference has been restructured, and many new and
existing modules are now documented, in particular the debugger and
the profiler, as well as the persistency and the WWW/Internet support
modules.
Two words: Keyword Arguments. See the first section of Chapter 12 of
the Tutorial.
- All known bugs have been fixed. For example the pow(2,2,3L) bug on
Linux has been fixed. Also the re-entrancy problems with __del__ have
been fixed.
(The rest of this file is textually the same as the remaining sections
of that chapter.)
- All known memory leaks have been fixed.
- Phase 2 of the Great Renaming has been executed. The header files
now use the new names (PyObject instead of object, etc.). The linker
also sees the new names. Most source files still use the old names,
by virtue of the rename2.h header file. If you include Python.h, you
only see the new names. Dynamically linked modules have to be
recompiled. (Phase 3, fixing the rest of the sources, will be
executed gradually with the release later versions.)
Changes to the WWW and Internet tools
=====================================
- The hooks for implementing "safe-python" (better called "restricted
execution") are in place. Specifically, the import statement is
implemented by calling the built-in function __import__, and the
built-in names used in a particular scope are taken from the
dictionary __builtins__ in that scope's global dictionary. See also
the new (unsupported, undocumented) module rexec.py.
The "htmllib" module has been rewritten in an incompatible fashion.
The new version is considerably more complete (HTML 2.0 except forms,
but including all ISO-8859-1 entity definitions), and easy to use.
Small changes to "sgmllib" have also been made, to better match the
tokenization of HTML as recognized by other web tools.
- The import statement now supports the syntax "import a.b.c" and
"from a.b.c import name". No officially supported implementation
exists, but one can be prototyped by replacing the built-in __import__
function. A proposal by Ken Manheimer is provided as newimp.py.
A new module "formatter" has been added, for use with the new
"htmllib" module.
- All machinery used by the import statement (or the built-in
__import__ function) is now exposed through the new built-in module
"imp" (see the library reference manual). All dynamic loading
machinery is moved to the new file importdl.c.
The "urllib"and "httplib" modules have been changed somewhat to allow
overriding unknown URL types and to support authentication. They now
use "mimetools.Message" instead of "rfc822.Message" to parse headers.
The "endrequest()" method has been removed from the HTTP class since
it breaks the interaction with some servers.
- Persistent storage is supported through the use of the modules
"pickle" and "shelve" (implemented in Python). There's also a "copy"
module implementing deepcopy and normal (shallow) copy operations.
See the library reference manual.
The "rfc822.Message" class has been changed to allow a flag to be
passed in that says that the file is unseekable.
- Documentation strings for many objects types are accessible through
the __doc__ attribute. Modules, classes and functions support special
syntax to initialize the __doc__ attribute: if the first statement
consists of just a string literal, that string literal becomes the
value of the __doc__ attribute. The default __doc__ attribute is
None. Documentation strings are also supported for built-in
functions, types and modules; however this feature hasn't been widely
used yet. See the 'new' module for an example. (Basically, the type
object's tp_doc field contains the doc string for the type, and the
4th member of the methodlist structure contains the doc string for the
method.)
The "ftplib" module has been fixed to be (hopefully) more robust on
Linux.
- The __coerce__ and __cmp__ methods for user-defined classes once
again work as expected. As an example, there's a new standard class
Complex in the library.
Several new operations that are optionally supported by servers have
been added to "nntplib": "xover", "xgtitle", "xpath" and "date".
- The functions posix.popen() and posix.fdopen() now have an optional
third argument to specify the buffer size, and default their second
(mode) argument to 'r' -- in analogy to the builtin open() function.
The same applies to posixfile.open() and the socket method makefile().
Other Language Changes
======================
- The thread.exit_thread() function now raises SystemExit so that
'finally' clauses are honored and a memory leak is plugged.
The "raise" statement now takes an optional argument which specifies
the traceback to be used when printing the exception's stack trace.
This must be a traceback object, such as found in "sys.exc_traceback".
When omitted or given as "None", the old behavior (to generate a stack
trace entry for the current stack frame) is used.
- Improved X11 and Motif support, by Sjoerd Mullender. This extension
is being maintained and distributed separately.
The tokenizer is now more tolerant of alien whitespace. Control-L in
the leading whitespace of a line resets the column number to zero,
while Control-R just before the end of the line is ignored.
- Improved support for the Apple Macintosh, in part by Jack Jansen,
e.g. interfaces to (a few) resource mananger functions, get/set file
type and creator, gestalt, sound manager, speech manager, MacTCP, comm
toolbox, and the think C console library. This is being maintained
and distributed separately.
Changes to Built-in Operations
==============================
- Improved version for Windows NT, by Mark Hammond. This is being
maintained and distributed separately.
For file objects, "f.read(0)" and "f.readline(0)" now return an empty
string rather than reading an unlimited number of bytes. For the
latter, omit the argument altogether or pass a negative value.
- Used autoconf 2.0 to generate the configure script. Adapted
configure.in to use the new features in autoconf 2.0.
A new system variable, "sys.platform", has been added. It specifies
the current platform, e.g. "sunos5" or "linux1".
- It now builds on the NeXT without intervention, even on the 3.3
Sparc pre-release.
The built-in functions "input()" and "raw_input()" now use the GNU
readline library when it has been configured (formerly, only
interactive input to the interpreter itself was read using GNU
readline). The GNU readline library provides elaborate line editing
and history. The Python debugger ("pdb") is the first beneficiary of
this change.
- Characters passed to isspace() and friends are masked to nonnegative
values.
Two new built-in functions, "globals()" and "locals()", provide access
to dictionaries containming current global and local variables,
respectively. (These augment rather than replace "vars()", which
returns the current local variables when called without an argument,
and a module's global variables when called with an argument of type
module.)
- Correctly compute pow(-3.0, 3).
The built-in function "compile()" now takes a third possible value for
the kind of code to be compiled: specifying "'single'" generates code
for a single interactive statement, which prints the output of
expression statements that evaluate to something else than "None".
- Fix portability problems with getopt (configure now checks for a
non-GNU getopt).
Library Changes
===============
- Don't add frozenmain.o to libPython.a.
There are new module "ni" and "ihooks" that support importing modules
with hierarchical names such as "A.B.C". This is enabled by writing
"import ni; ni.ni()" at the very top of the main program. These
modules are amply documented in the Python source.
- Exceptions can now be classes. ALl built-in exceptions are still
string objects, but this will change in the future.
The module "rexec" has been rewritten (incompatibly) to define a class
and to use "ihooks".
- The socket module exports a long list of socket related symbols.
(More built-in modules will export their symbolic constants instead of
relying on a separately generated Python module.)
The "string.split()" and "string.splitfields()" functions are now the
same function (the presence or absence of the second argument
determines which operation is invoked); similar for "string.join()"
and "string.joinfields()".
- When a module object is deleted, it clears out its own dictionary.
This fixes a circularity in the references between functions and
their global dictionary.
The "Tkinter" module and its helper "Dialog" have been revamped to use
keyword arguments. Tk 4.0 is now the standard. A new module
"FileDialog" has been added which implements standard file selection
dialogs.
- Changed the error handling by [new]getargs() e.g. for "O&".
The optional built-in modules "dbm" and "gdbm" are more coordinated
--- their "open()" functions now take the same values for their "flag"
argument, and the "flag" and "mode" argument have default values (to
open the database for reading only, and to create the database with
mode "0666" minuse the umask, respectively). The memory leaks have
finally been fixed.
- Dynamic loading of modules using shared libraries is supported for
several new platforms.
A new dbm-like module, "bsddb", has been added, which uses the BSD DB
package's hash method.
- Support "O&", "[...]" and "{...}" in mkvalue().
A portable (though slow) dbm-clone, implemented in Python, has been
added for systems where none of the above is provided. It is aptly
dubbed "dumbdbm".
- Extension to findmethod(): findmethodinchain() (where a chain is a
linked list of methodlist arrays). The calling interface for
findmethod() has changed: it now gets a pointer to the (static!)
methodlist structure rather than just to the function name -- this
saves copying flags etc. into the (short-lived) method object.
The module "anydbm" provides a unified interface to "bsddb", "gdbm",
"dbm", and "dumbdbm", choosing the first one available.
- The callable() function is now public.
A new extension module, "binascii", provides a variety of operations
for conversion of text-encoded binary data.
- Object types can define a few new operations by setting function
pointers in the type object structure: tp_call defines how an object
is called, and tp_str defines how an object's str() is computed.
There are three new or rewritten companion modules implemented in
Python that can encode and decode the most common such formats: "uu"
(uuencode), "base64" and "binhex".
--Guido van Rossum, CWI, Amsterdam <mailto:guido@cwi.nl>
<http://www.cwi.nl/~guido/>
A module to handle the MIME encoding quoted-printable has also been
added: "quopri".
The parser module (which provides an interface to the Python parser's
abstract syntax trees) has been rewritten (incompatibly) by Fred
Drake. It now lets you change the parse tree and compile the result!
Other Changes
=============
The dynamic module loader recognizes the fact that different filenames
point to the same shared library and loads the library only once, so
you can have a single shared library that defines multiple modules.
(SunOS / SVR4 style shared libraries only.)
Jim Fulton's ``abstract object interface'' has been incorporated into
the run-time API. For more detailes, read the files
"Include/abstract.h" and "Objects/abstract.c".
The Macintosh version is much more robust now.
Numerous things I have forgotten or that are so obscure no-one will
notice them anyway :-)