From af5b83ec4afa74b3bd1b0750f14fc24bf111c059 Mon Sep 17 00:00:00 2001 From: Guido van Rossum Date: Wed, 4 Jan 1995 19:02:35 +0000 Subject: README: changed URL format to ; added section on Tk. Makefile.in: run config.status in "make recheck". configure.in: add test for hypot(). config.h.in, configure: since configure.in changed. rest: the usual boring stuff. --- BUGS | 82 +++++++++++++++++++++++++++++++++++------------------------- ChangeLog | 67 +++++++++++++++++++++++++++++++++++++++++++++++-- Makefile.in | 17 +++++++------ README | 68 ++++++++++++++++++++++++++++++++++++++----------- TODO | 33 +++++++++++------------- config.h.in | 3 +++ configure | 54 ++++++++++++++++++++++++++++++++++++++- configure.in | 6 +++++ 8 files changed, 252 insertions(+), 78 deletions(-) diff --git a/BUGS b/BUGS index d24517d..5ef848a 100644 --- a/BUGS +++ b/BUGS @@ -3,12 +3,44 @@ immediately upon receiving the first complaint I usually did not nother to make an entry in this file, unless it was a serious bug (core dump or infinite loop). -==> Status indicators: (-) not fixed; (*) fixed; (?) don't know what to do. +==> Status indicators: (-) not fixed; (*) fixed; (?) not sure. ====================================================================== Known BUGS in 1.1.1 and 1.2 --------------------------- +(-) C-level coerce() doesn't call __coerce__ when it should (and +similar for __cmp__) + +(-) tkinter seems to leave an exception around sometime which breaks +unmarshalling code objects [hard to reproduce, have added a trap to +catch it] + +(-) destroying all modules may destroy __builtin__ (or other modules) +while destructors of other modules may still need it [hard to fix -- +could maintain a list of all modules in order of importation so we can +destroy them in reverse order??? really hopeless -- would have to +destroy objects in a module in reverse order too...] + +(-) [X]DECREF can cause the interpreter to be called recursively (for +__del__ disciplines) -- so list and dict implementation calls doing +DECREF can cause recursive calls to methods of the object being +modified. Other files too. [Only partially fixed -- listobject.c is +still suspect.] + +(-) struct module aligns doubles wrongly when compiled with -DDEBUG on +sparc + +(-) if __getattr__ prints something, calling repr(x) from cmd line +forgets a newline + +(-) doneimport() should be called *before* the Py_AtExit code is called + +Environmental bugs +------------------ + +(-) tkinter doesn't seem to see any declaration of malloc on sunos 4.1.3 + (-) arraymodule doesn't compile under Ultrix (FPROTO macro) (-) Linux uses GNU getopt by default which is broken @@ -17,53 +49,35 @@ Known BUGS in 1.1.1 and 1.2 (-) "make depend" assumes mkdep exists -- not portable -(-) threadmodule.c leaks LOTS of memory at thread exit - -(-) tkinter seems to leave an exception around sometime which breaks -unmarshalling code objects - -(-) memory leak (namebuf) in initmodule2 - (-) regen calls h2py which isn't defined by default -(-) shared install in Modules still doesn't work for empty list - (-) make libinstall (or similar) references to machdep directory but doesn't create it -(-) destroying all modules may destroy __builtin__ while destructors -of other modules may still need it - -(-) hash() of float values returns suspect values - -(-) sockets aren't thread safe (address of static struct returned, -some calls aren't thread safe) +(-) HP doesn't compile out of the box (needs LIBS=-ldld or +LIBS=/usr/lib/libdld.sl) -(-) Everything else that uses err_get() should probably use err_get_tb() +====================================================================== +BUGS present in 1.1.1 and fixed in 1.2 +-------------------------------------- -(-) struct module aligns doubles wrongly when compiled with -DDEBUG on sparc +(*) memory leak (namebuf) in initmodule2 -(-) pow(int, int, long) (etc.) dumps core on Linux (and other Intel machines?) +(*) hash() of float values returns bogus values -(-) C-level coerce() doesn't call __coerce__ when it should (and -similar for __cmp__) +(*) pow(int, int, long) does wrong series of DECREF() calls. -(-) DECREF can cause the interpreter to be called recursively (for -__del__ disciplines) -- so list and dict implementation calls doing -DECREF can cause recursive calls to methods of the object being -modified. Other files too. (Only partially fixed.) +(*) flushline() may clear the exception condition so shouldn't be +called before print_error() -(-) HP doesn't compile out of the box (needs LIBS=-ldld or -LIBS=/usr/lib/libdld.sl) +(*) Everything else that uses err_get() should use err_fetch() -(-) something fishy with softspace and print_error (flushline clears -the error) +(*) sockets aren't thread safe (address of static struct returned, +some calls aren't thread safe) -(-) tkinter doesn't seem to see any declaration of malloc on sunos 4.1.3 +(*) threadmodule.c leaks LOTS of memory at thread exit -====================================================================== -BUGS present in 1.1.1 and fixed in 1.2 --------------------------------------- +(*) shared install in Modules still doesn't work for empty list (*) threadmodule.c leaks 'res' in t_bootstrap diff --git a/ChangeLog b/ChangeLog index ebe9c70..5321f4b 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,66 @@ +Wed Jan 4 18:23:09 1995 Guido van Rossum + + * Python/modsupport.c (initmodule2), Include/methodobject.h, + Objects/methodobject.c: introduced METH_FREENAME bit passed to + newmethodobject to indicate that if the object is freed the name + pointer must also be freed (this saves a long standing memory leak + in initmodule2) + + * Modules/structmodule.c (struct_pack, struct_unpack): use memcpy + instead of double precision assignment (since a string isn't + always double-aligned, e.g. when debug fields are present in the + object header) + + * Objects/floatobject.c (float_hash): changed a constant to avoid + float->long conversion overflow + + * Python/bltinmodule.c (builtin_pow): fix coerce() ref count + nightmare (core dumps on Linux) + + * Python/pythonrun.c: call flushline() in print_error(), after + fetching the exception info, since flushline() can mask an + exception; move flushline() calls around so they are not between + the detection and printing of the exception + +Tue Jan 3 12:55:28 1995 Guido van Rossum + + * Modules/config.c.in (getcopyright): Change copyright to include + 1995 + +Mon Jan 2 20:15:39 1995 Guido van Rossum + + * Objects/mappingobject.c (mappingremove): don't call + lookmapping() for empty dictionary + + * Doc/libsocket.tex (section{Built-in Module \sectcode{socket}}): + documented gethostbyaddr() + + * Modules/mpzmodule.c (mpz_power): made it ternary + + * Modules/mathmodule.c: only use hypot() if it exists + + * Modules/Makefile.pre.in (sharedinstall): fix bug (sh can't loop + over empty list) when $(SHAREDMODS) is empty + +sMon Jan 2 19:35:49 1995 Guido van Rossum + + * Python/errors.c: added hook for better mac error messages + + * Python/pythonrun.c (run_script): removed extraneous fclose() in + case of .pyc file argument + + * Include/{object.h,stringobject.h}: changed refcnt and sizes from + unsigned to int (i.e. signed) + + * Objects/fileobject.c (newfileobject): use HAVE_FOPENRF instead + of USE_FOPENRF + + * Lib/test/test_b1.py: test eval() and execfile() with globals, + locals arguments + + * Lib/mhlib.py: added movemessage(), copymessage(), added copy + fallback for refilemessages(), and updated the docs + Fri Dec 30 16:19:17 1994 Guido van Rossum * Parser/tokenizer.c (tok_nextc): zap tok->buf after freeing @@ -58,7 +121,7 @@ Tue Dec 13 11:46:03 1994 Guido Van Rossum instead of going through ceval.c:printtraceback() * Python/modsupport.c: fix vmkvalue() for systems where va_list is - an array; add support for creating lists and dcitionaries; added + an array; add support for creating lists and dictionaries; added convenience functions for calling functions/methods with format and argument list @@ -123,7 +186,7 @@ Tue Dec 13 11:46:03 1994 Guido Van Rossum (for QNX); use gethostbyname_r if it exists (since it is re-entrant); use h_error and hstrerror when they exist; other changes for re-entrancy; make printable representation more - useful; cosmetic changes in argument lists + useful; cosmetic changes in argument lists; add gethostbyaddr() * Modules/signalmodule.c: if NSIG undefined, use _SIGMAX + 1 diff --git a/Makefile.in b/Makefile.in index cb726df..e64345d 100644 --- a/Makefile.in +++ b/Makefile.in @@ -1,17 +1,17 @@ ######################################################################## -# Copyright 1991, 1992, 1993, 1994 by Stichting Mathematisch Centrum, -# Amsterdam, The Netherlands. -# +# Copyright 1991-1995 by Stichting Mathematisch Centrum, Amsterdam, +# The Netherlands. +# # All Rights Reserved -# -# Permission to use, copy, modify, and distribute this software and its -# documentation for any purpose and without fee is hereby granted, +# +# Permission to use, copy, modify, and distribute this software and its +# documentation for any purpose and without fee is hereby granted, # provided that the above copyright notice appear in all copies and that -# both that copyright notice and this permission notice appear in +# both that copyright notice and this permission notice appear in # supporting documentation, and that the names of Stichting Mathematisch # Centrum or CWI not be used in advertising or publicity pertaining to # distribution of the software without specific, written prior permission. -# +# # STICHTING MATHEMATISCH CENTRUM DISCLAIMS ALL WARRANTIES WITH REGARD TO # THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND # FITNESS, IN NO EVENT SHALL STICHTING MATHEMATISCH CENTRUM BE LIABLE @@ -183,6 +183,7 @@ config.status: $(srcdir)/configure # provided the config.status script exists recheck: $(SHELL) config.status --recheck + $(SHELL) config.status # Rebuild the configure script from configure.in; also rebuild config.h.in autoconf: diff --git a/README b/README index 67e1880..a4f97ff 100644 --- a/README +++ b/README @@ -159,12 +159,12 @@ calling python interactively. You need to configure build the GNU readline library before running the configure script. Its sources are not distributed with Python; you can ftp them from any GNU mirror site, or from its home site: -ftp://slc2.ins.cwru.edu/pub/dist/readline-2.0.tar.gz (or a higher -version number -- using version 1.x is not recommended). + (or a +higher version number -- using version 1.x is not recommended). A GPL-free version was posted to comp.sources.misc in volume 31 and is -widely available from FTP archive sites. One URL for it is: -ftp://gatekeeper.dec.com/.b/usenet/comp.sources.misc/volume31/editline/part01.Z +widely available from FTP archive sites, e.g. + Pass the Python configure script the option --with-readline=DIRECTORY where DIRECTORY is the absolute pathname of the directory where you've @@ -209,8 +209,8 @@ Setup.irix4 file to it). - On SGI IRIX 4, dynamic loading of extension modules is supported by the "dl" library by Jack Jansen, which is ftp'able from -ftp://ftp.cwi.nl/pub/dynload/dl-1.6.tar.Z. This is enabled (after -you've ftp'ed and compiled the dl library!) by passing +. This is enabled +(after you've ftp'ed and compiled the dl library!) by passing --with-sgi-dl=DIRECTORY where DIRECTORY is the absolute pathname of the dl library. (Don't bother on IRIX 5, it already has dynamic linking using SunOS style shared libraries.) Support for this feature @@ -219,9 +219,9 @@ is deprecated. - Dynamic loading of modules is rumoured to be supported on some other systems: VAX (Ultrix), Sun3 (SunOS 3.4), Sequent Symmetry (Dynix), and Atari ST. This is done using a combination of the GNU dynamic loading -package (ftp://ftp.cwi.nl/pub/dynload/dl-dld-1.1.tar.Z) and an +package () and an emulation of the SGI dl library mentioned above (the emulation can be -found at ftp://ftp.cwi.nl/pub/dynload/dld-3.2.3.tar.Z). To enable +found at ). To enable this, ftp and compile both libraries, then call the configure passing it the option --with-dl-dld=DL_DIRECTORY,DLD_DIRECTORY where DL_DIRECTORY is the absolute pathname of the dl emulation library and @@ -242,6 +242,44 @@ a separate tar file (currently extensions.tar.Z). See the README file there. +The Tk extension +---------------- + +Tk (the user interface component of John Ousterhout's Tcl language) is +also usable from Python. Since this requires that you first build and +install Tcl/Tk, the Tk interface is not enabled by default. It +requires Tcl 7.3 and Tk 3.6. For more info about Tk, including +pointers to the source, see John Ousterhout's home page at +. + +To enable the Python/Tk interface, once you've built and installed +Tcl/Tk, all you need to do is edit two lines in Modules/Setup; search +for the string "Tk". Un-comment one (normally the first) of the lines +beginning with "#tkinter" and un-comment the line beginning with +"#TKPATH". (If you have installed Tcl/Tk in unusual places you will +have to edit the first line as well to fix the -I and -L options.) +See the Build Instructions above for more details. + +There is little documentation. Begin with fetching the "Tk Lifesaver" +document, e.g. (a +gzipped tar file containing a PostScript file). There are demos in +the Demo/tkinter directory, in the subdirectories guido, matt and www. + +Note that there's a Python module called "Tkinter" (capital T) which +lives in Lib/tkinter/Tkinter.py, and a C module called "tkinter" +(lower case t) which lives in Modules/tkintermodule.c. Demos and +normal Tk applications only import the Python Tkinter module -- only +the latter uses the C tkinter module directly. In order to find the C +tkinter module, it must be compiled and linked into the Python +interpreter -- the tkinter line in the Setup file does this. In order +to find the Python Tkinter module, sys.path must be set correctly -- +the TKPATH assignment in the Setup file takes care of this, but only +if you install Python properly ("make install libinstall"). (You can +also use dynamic loading for the C tkinter module, in which case you +must manually fix up sys.path or set $PYTHONPATH for the Python +Tkinter module.) + + Building for multiple architectures (using the VPATH feature) ------------------------------------------------------------- @@ -351,11 +389,11 @@ Ftp access ---------- The latest Python source distribution can be ftp'ed from -ftp://ftp.cwi.nl/pub/python/python.tar.gz. You can also find -PostScript of the main Python documentation there, Macintosh and PC -binaries, and the latest STDWIN source distribution (in directory -/pub/stdwin). oFr mirror sites, see the list in the FAQ (Misc/FAQ -this directory). +. See the INDEX or index.html file +for more information. You can also find PostScript of the main Python +documentation there, Macintosh and PC binaries, and the latest STDWIN +source distribution (in directory /pub/stdwin). oFr mirror sites, see +the list in the FAQ (Misc/FAQ this directory). Mailing list and Newsgroup @@ -386,8 +424,8 @@ Copyright Notice The Python source is copyrighted, but you can freely use and copy it as long as you don't change or remove the copyright: -Copyright 1991, 1992, 1993, 1994 by Stichting Mathematisch Centrum, -Amsterdam, The Netherlands. +Copyright 1991-1995 by Stichting Mathematisch Centrum, Amsterdam, +The Netherlands. All Rights Reserved diff --git a/TODO b/TODO index a329df8..f147d3d8 100644 --- a/TODO +++ b/TODO @@ -1,24 +1,26 @@ +(-) interface to getdtablesize() in posix + (-) reentrancy with global variables vs. decref in ./Modules/cdmodule.c ./Modules/flmodule.c ./Objects/accessobject.c ./Objects/frameobject.c ./Python/traceback.c (-) speed up regsub.gsub -(-) change md5.md5() to md5.new() +(*) change md5.md5() to md5.new() (-) try posixenviron.c and merge back into posixmodule.c? -(-) document chown() +(*) document chown() (-) add and document chroot() ? -(-) use add gethostname_r and release thread lock when it exists +(*) use add gethostname_r and release thread lock when it exists (-) Add `@CFLAGS@', `@CPPFLAGS@', and `@LDFLAGS@' to `Makefile.in' (-) modules should be able to define a module destructor hook -(-) goaway() / cleanup() call AtExit funcs *after* donimport() +(-) goaway() / cleanup() should call AtExit funcs *after* doneimport() (-) destroy modules in reverse order of importation @@ -26,9 +28,7 @@ (-) makesetup should accept .o files without corresponding .c file -(-) use autoconf 2.0 - -(-) configure(.in ?) contains a line beginning with '+' +(*) use autoconf 2.0 ====================================================================== Release 1.1.1 (10 Nov 1994) @@ -36,7 +36,7 @@ Release 1.1.1 (10 Nov 1994) (-) try Boehm/Dehmers/Weiser conservative garbage collector -(-) implement new 'flatten' module +(*) implement new 'flatten' module (-) document new Python/C API @@ -47,7 +47,7 @@ where found, __version__ string? (-) pass dict of builtins to exec / execfile / eval ??? -(-) stack frame correspondence problem (Jim Roskind) +(?) stack frame correspondence problem (Jim Roskind) (probably solved by err_setval_tb) (-) make lots of places use newgetargs @@ -60,15 +60,12 @@ where found, __version__ string? like 'cd') (-) need to add truncate() and ftruncate() to posixmodule.c (Windows: -chsize(fd, size) +chsize(fd, size) (solution: added to file objects instead) ====================================================================== Release 1.1 (11 Oct 1994) ====================================================================== -(-) if __getattr__ prints something, calling repr(x) from cmd line -forgets a newline - (-) improve performance of list.append/insert etc. by keeping high/low watermark instead of realloc'ing each time? @@ -85,7 +82,7 @@ breaks dictlookup caching (-) whrandom doc needs update -(-) mpz power is still binary insterad of ternary +(*) mpz power is still binary insterad of ternary (*) design interface to call arbitrary asynchronous routines @@ -93,7 +90,7 @@ breaks dictlookup caching (*) Lance's latest curses additions -(-) Jack's new code: +(*) Jack's new code: (*) new xxmodule.c (*) mac has type for .pyc files (*) should run .pyc files when passed as command line argument @@ -104,7 +101,7 @@ breaks dictlookup caching (-) fix signalmodule.c to re-establish SIGC[H]LD handler -(-) try out Kees Blom's railroad diagram generator +(*) try out Kees Blom's railroad diagram generator (-) redesign error handling (cf. Donald's mail) @@ -173,11 +170,11 @@ instance -- also have separate __delattr__ (-) The Great Renaming! -(-) redo __xxx__ operators for class instances +(*) redo __xxx__ operators for class instances (-) document __getattr__, __setattr__ -(-) add __delattr__ to class instances +(*) add __delattr__ to class instances (-) many things that take strings should also take arrays of chars diff --git a/config.h.in b/config.h.in index 012863a..83f0c65 100644 --- a/config.h.in +++ b/config.h.in @@ -164,6 +164,9 @@ /* Define if you have the getwd function. */ #undef HAVE_GETWD +/* Define if you have the hypot function. */ +#undef HAVE_HYPOT + /* Define if you have the link function. */ #undef HAVE_LINK diff --git a/configure b/configure index a64f1a1..7b74350 100755 --- a/configure +++ b/configure @@ -1,6 +1,6 @@ #!/bin/sh -# From configure.in Revision: 1.9 +# From configure.in Revision: 1.12 # Guess values for system-dependent variables and create Makefiles. # Generated automatically using autoconf version 2.0 @@ -2536,6 +2536,58 @@ fi fi +# check for hypot() in math library +LIBS_SAVE=$LIBS +LIBS="$LIBS $LIBM" +for ac_func in hypot +do +echo $ac_n "checking for $ac_func""... $ac_c" 1>&4 +if eval "test \"`echo '${'ac_cv_func_$ac_func'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&4 +else + cat > conftest.$ac_ext < /* Arbitrary system header to define __stub macros. */ +int main() { return 0; } +int t() { + +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_$ac_func) || defined (__stub___$ac_func) +choke me +#else +/* Override any gcc2 internal prototype to avoid an error. */ +char $ac_func(); $ac_func(); +#endif + +; return 0; } +EOF +if eval $ac_link; then + rm -rf conftest* + eval "ac_cv_func_$ac_func=yes" +else + rm -rf conftest* + eval "ac_cv_func_$ac_func=no" +fi +rm -f conftest* + +fi +if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then + echo "$ac_t""yes" 1>&4 + ac_tr_func=HAVE_`echo $ac_func | tr '[a-z]' '[A-Z]'` + cat >> confdefs.h <&4 +fi +done + +LIBS=$LIBS_SAVE + # generate output files trap '' 1 2 15 if test -w $cache_file; then diff --git a/configure.in b/configure.in index ae7431d..34af46f 100644 --- a/configure.in +++ b/configure.in @@ -295,5 +295,11 @@ then LIBC=$withval else AC_ERROR(proper usage is --with-libc=STRING) fi]) +# check for hypot() in math library +LIBS_SAVE=$LIBS +LIBS="$LIBS $LIBM" +AC_CHECK_FUNCS(hypot) +LIBS=$LIBS_SAVE + # generate output files AC_OUTPUT(Makefile Objects/Makefile Parser/Makefile Python/Makefile Modules/Makefile.pre) -- cgit v0.12