diff --git a/BUGS b/BUGS
index 7b28503..10ed20f 100644
--- a/BUGS
+++ b/BUGS
@@ -9,12 +9,11 @@
 Known BUGS in 1.1.1 and 1.2
 ---------------------------
 
-(-) C-level coerce() doesn't call __coerce__ when it should (and
-similar for __cmp__)
+(-) a file with unmatched triple quotes causes a loop in the scanner
 
 (-) tkinter seems to leave an exception around sometime which breaks
 unmarshalling code objects [hard to reproduce, have added a trap to
-catch it]
+marshal.c to catch it]
 
 (-) destroying all modules may destroy __builtin__ (or other modules)
 while destructors of other modules may still need it [hard to fix --
@@ -28,16 +27,14 @@
 modified.  Other files too.  [Only partially fixed -- listobject.c is
 still suspect.]
 
-(-) if __getattr__ prints something, calling repr(x) from cmd line
-forgets a newline
-
 (-) doneimport() should be called *before* the Py_AtExit code is
 called [problem: what if other threads are still active?]
 
-Environmental bugs
-------------------
+Known portability problems
+--------------------------
 
-(-) tkinter doesn't seem to see any declaration of malloc on sunos 4.1.3
+(-) tkinter doesn't seem to see any declaration of malloc on sunos
+4.1.3?
 
 (-) arraymodule doesn't compile under Ultrix (FPROTO macro)
 
@@ -49,8 +46,8 @@
 
 (-) regen calls h2py which isn't defined by default
 
-(-) make libinstall (or similar) references to machdep directory but
-doesn't create it
+(-) make sharedinstall references to machdep directory but doesn't
+create it
 
 (-) HP doesn't compile out of the box (needs LIBS=-ldld or
 LIBS=/usr/lib/libdld.sl) [hard to test without a HP machine handy]
@@ -59,6 +56,12 @@
 BUGS present in 1.1.1 and fixed in 1.2
 --------------------------------------
 
+(*) if __getattr__ or __repr__ prints something, calling repr(x) from
+cmd line forgets a newline
+
+(*) C-level coerce() doesn't call __coerce__ when it should (and
+similar for __cmp__)
+
 (*) struct module aligns doubles wrongly when compiled with -DDEBUG on
 sparc
 
diff --git a/ChangeLog b/ChangeLog
index 44d29d0..8fa2151 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,68 @@
+Thu Jan 12 12:27:23 1995  Guido van Rossum  <guido@voorn.cwi.nl>
+
+	* Python/ceval.c (eval_code/PRINT_EXPR): fix messed output when
+	x.__repr__() prints something and repr(x) is called at the prompt
+
+	* Python/pythonrun.c (initmain), Python/import.c
+	(exec_code_module): use getbuiltins(), not getbuiltindict() to
+	initialize new modules
+
+	* Python/ceval.c (getbuiltins): return getbuiltindict() instead of
+	NULL if no current frame
+
+	* Modules/cryptmodule.c: removed redundant include of modsupport.h
+
+	* Modules/signalmodule.c: remove unwanted trigraph from comment
+
+	* Modules/Setup.in: clarify status of dlmodule.c
+
+	* Objects/object.c (cmpobject): properly implement cmp() for class
+        instances
+
+Wed Jan 11 10:56:12 1995  Guido van Rossum  <guido@voorn.cwi.nl>
+
+	* README: removed references to --with-svr4; added docs for
+	--without-gcc
+
+	* Modules/mathmodule.c: rearrange declarations somewhat
+
 Tue Jan 10 11:34:23 1995  Guido van Rossum  <guido@voorn.cwi.nl>
 
+	* Include/*.h, Python/getmtime.c, Modules/<several>.c: THE GREAT
+        RENAMING (inspired by Jun Hamano).  One now either includes
+	"Python.h" and then uses new names only, or one includes
+	"allobjects.h" and uses old names.  "rename1.h" no longer exists;
+	instead, "rename2.h" performs the reverse mapping.
+
+	* Python/bltinmodule.c (builtin_filter): fix subtle refcount big
+	in filter() (Tim MacKenzie)
+
+	* Include/mymalloc.h, Modules/{Makefile.pre.in,config.c.in}:
+	change to make things palatable for C++ (Tim MacKenzie)
+
+	* Modules/socketmodule.c: only call hstrerror() if it exists
+
+	* Modules/tkintermodule.c: added interface to Tk_DoOneEvent() (R
+	Lindsay Todd)
+
+	* Objects/longobject.c (long_pow): some defensive programming
+	(Eric Siegerman)
+
+	* Objects/intobject.c (int_pow): fix memory leak in ternary pow()
+	(Eric Siegerman)
+
+	* Modules/posixmodule.c (posix_fdopen, posix_popen): add optional
+	argument to specify buffer size as for __builtin__.open(); also
+	make mode argument optional (default "r")
+
+	* Objects/classobject.c (instance_coerce): implement coercions
+	involving instances properly
+
+	* Objects/object.c, Python/bltinmodule.c: moved coerce() to
+	objects.c, where it belongs
+
+	* Doc/libfuncs.tex: added execfile(); reformulated eval() somewhat
+
 	* Python/bltinmodule.c (builtin_{execfile,eval}): fix
 	globals/locals defaults to match the manual again; also allow None
 	to mean the same as the default
diff --git a/TODO b/TODO
index 3b3bd81..721d80c 100644
--- a/TODO
+++ b/TODO
@@ -1,9 +1,15 @@
+(*) add buffering parameter to fdopen() and popen()
+
+(-) "f()=0" generates syntax error msg without line number
+
 (-) 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
 
+(-) check reentrancy in list updates?
+
 (-) speed up regsub.gsub
 
 (*) change md5.md5() to md5.new()
@@ -20,7 +26,7 @@
 
 (-) modules should be able to define a module destructor hook
 
-(-) destroy modules in reverse order of importation
+(-) destroy modules in reverse order of importation?
 
 (-) make array a standard built-in object
 
@@ -46,11 +52,11 @@
 (-) pass dict of builtins to exec / execfile / eval ???
 
 (?) stack frame correspondence problem (Jim Roskind)
-(probably solved by err_setval_tb)
+(probably solved by err_fetch / err_restore)
 
 (-) make lots of places use newgetargs
 
-(-) no tp_str member in typeobject
+(*) no tp_str member in typeobject
 
 (-) readline 2.0 on sequent has ^C problem (works only first time)
 
diff --git a/configure b/configure
index 7b74350..74b6b77 100755
--- a/configure
+++ b/configure
@@ -1,6 +1,6 @@
 #!/bin/sh
 
-# From configure.in Revision: 1.12 
+# From configure.in Revision: 1.14 
 
 # Guess values for system-dependent variables and create Makefiles.
 # Generated automatically using autoconf version 2.0 
@@ -1403,14 +1403,80 @@
   echo "$ac_t""no" 1>&4
 fi
 	# NIS (== YP) interface for IRIX 4
+echo $ac_n "checking for -lnsl""... $ac_c" 1>&4
+if eval "test \"`echo '${'ac_cv_lib_nsl'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&4
+else
+  ac_save_LIBS="$LIBS"
+LIBS="$LIBS -lnsl "
+cat > conftest.$ac_ext <<EOF
+#line 1414 "configure"
+#include "confdefs.h"
+
+int main() { return 0; }
+int t() {
+gethostbyname()
+; return 0; }
+EOF
+if eval $ac_link; then
+  rm -rf conftest*
+  eval "ac_cv_lib_nsl=yes"
+else
+  rm -rf conftest*
+  eval "ac_cv_lib_nsl=no"
+fi
+rm -f conftest*
+LIBS="$ac_save_LIBS"
+
+fi
+if eval "test \"`echo '$ac_cv_lib_'nsl`\" = yes"; then
+  echo "$ac_t""yes" 1>&4
+  LIBS="-lnsl $LIBS"
+else
+  echo "$ac_t""no" 1>&4
+fi
+ # hosts db interface
+echo $ac_n "checking for -linet""... $ac_c" 1>&4
+if eval "test \"`echo '${'ac_cv_lib_inet'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&4
+else
+  ac_save_LIBS="$LIBS"
+LIBS="$LIBS -linet "
+cat > conftest.$ac_ext <<EOF
+#line 1447 "configure"
+#include "confdefs.h"
+
+int main() { return 0; }
+int t() {
+???()
+; return 0; }
+EOF
+if eval $ac_link; then
+  rm -rf conftest*
+  eval "ac_cv_lib_inet=yes"
+else
+  rm -rf conftest*
+  eval "ac_cv_lib_inet=no"
+fi
+rm -f conftest*
+LIBS="$ac_save_LIBS"
+
+fi
+if eval "test \"`echo '$ac_cv_lib_'inet`\" = yes"; then
+  echo "$ac_t""yes" 1>&4
+  LIBS="-linet $LIBS"
+else
+  echo "$ac_t""no" 1>&4
+fi
+ # SVR4 internet???
 echo $ac_n "checking for -lsocket""... $ac_c" 1>&4
 if eval "test \"`echo '${'ac_cv_lib_socket'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&4
 else
   ac_save_LIBS="$LIBS"
-LIBS="$LIBS -lsocket -linet -lnsl"
+LIBS="$LIBS -lsocket "
 cat > conftest.$ac_ext <<EOF
-#line 1414 "configure"
+#line 1480 "configure"
 #include "confdefs.h"
 
 int main() { return 0; }
@@ -1431,11 +1497,11 @@
 fi
 if eval "test \"`echo '$ac_cv_lib_'socket`\" = yes"; then
   echo "$ac_t""yes" 1>&4
-  LIBS=-lsocket -linet -lnsl
+  LIBS="-lsocket $LIBS"
 else
   echo "$ac_t""no" 1>&4
 fi
-
+ # SVR4 sockets
 
 echo "checking for --with-readline" 1>&4
 # Check whether --with-readline or --without-readline was given.
@@ -1457,7 +1523,7 @@
   ac_save_LIBS="$LIBS"
 LIBS="$LIBS -ltermcap "
 cat > conftest.$ac_ext <<EOF
-#line 1461 "configure"
+#line 1527 "configure"
 #include "confdefs.h"
 
 int main() { return 0; }
@@ -1489,7 +1555,7 @@
   ac_save_LIBS="$LIBS"
 LIBS="$LIBS -ltermlib "
 cat > conftest.$ac_ext <<EOF
-#line 1493 "configure"
+#line 1559 "configure"
 #include "confdefs.h"
 
 int main() { return 0; }
@@ -1545,7 +1611,7 @@
   ac_save_LIBS="$LIBS"
 LIBS="$LIBS -lpthreads "
 cat > conftest.$ac_ext <<EOF
-#line 1549 "configure"
+#line 1615 "configure"
 #include "confdefs.h"
 
 int main() { return 0; }
@@ -1587,7 +1653,7 @@
   ac_save_LIBS="$LIBS"
 LIBS="$LIBS -lmpc "
 cat > conftest.$ac_ext <<EOF
-#line 1591 "configure"
+#line 1657 "configure"
 #include "confdefs.h"
 
 int main() { return 0; }
@@ -1625,7 +1691,7 @@
   ac_save_LIBS="$LIBS"
 LIBS="$LIBS -lthread "
 cat > conftest.$ac_ext <<EOF
-#line 1629 "configure"
+#line 1695 "configure"
 #include "confdefs.h"
 
 int main() { return 0; }
@@ -1711,7 +1777,7 @@
   echo $ac_n "(cached) $ac_c" 1>&4
 else
   cat > conftest.$ac_ext <<EOF
-#line 1715 "configure"
+#line 1781 "configure"
 #include "confdefs.h"
 #include <ctype.h> /* Arbitrary system header to define __stub macros. */
 int main() { return 0; }
@@ -1758,7 +1824,7 @@
   echo $ac_n "(cached) $ac_c" 1>&4
 else
   cat > conftest.$ac_ext <<EOF
-#line 1762 "configure"
+#line 1828 "configure"
 #include "confdefs.h"
 #include <ctype.h> /* Arbitrary system header to define __stub macros. */
 int main() { return 0; }
@@ -1801,7 +1867,7 @@
   echo $ac_n "(cached) $ac_c" 1>&4
 else
   cat > conftest.$ac_ext <<EOF
-#line 1805 "configure"
+#line 1871 "configure"
 #include "confdefs.h"
 #include <ctype.h> /* Arbitrary system header to define __stub macros. */
 int main() { return 0; }
@@ -1832,7 +1898,7 @@
 if eval "test \"`echo '$ac_cv_func_'getpgrp`\" = yes"; then
   echo "$ac_t""yes" 1>&4
   cat > conftest.$ac_ext <<EOF
-#line 1836 "configure"
+#line 1902 "configure"
 #include "confdefs.h"
 #include <unistd.h>
 int main() { return 0; }
@@ -1858,7 +1924,7 @@
   echo $ac_n "(cached) $ac_c" 1>&4
 else
   cat > conftest.$ac_ext <<EOF
-#line 1862 "configure"
+#line 1928 "configure"
 #include "confdefs.h"
 #include <ctype.h> /* Arbitrary system header to define __stub macros. */
 int main() { return 0; }
@@ -1889,7 +1955,7 @@
 if eval "test \"`echo '$ac_cv_func_'setpgrp`\" = yes"; then
   echo "$ac_t""yes" 1>&4
   cat > conftest.$ac_ext <<EOF
-#line 1893 "configure"
+#line 1959 "configure"
 #include "confdefs.h"
 #include <unistd.h>
 int main() { return 0; }
@@ -1915,7 +1981,7 @@
   echo $ac_n "(cached) $ac_c" 1>&4
 else
   cat > conftest.$ac_ext <<EOF
-#line 1919 "configure"
+#line 1985 "configure"
 #include "confdefs.h"
 #include <ctype.h> /* Arbitrary system header to define __stub macros. */
 int main() { return 0; }
@@ -1946,7 +2012,7 @@
 if eval "test \"`echo '$ac_cv_func_'gettimeofday`\" = yes"; then
   echo "$ac_t""yes" 1>&4
   cat > conftest.$ac_ext <<EOF
-#line 1950 "configure"
+#line 2016 "configure"
 #include "confdefs.h"
 #include <sys/time.h>
 int main() { return 0; }
@@ -1976,7 +2042,7 @@
   echo $ac_n "(cached) $ac_c" 1>&4
 else
   cat > conftest.$ac_ext <<EOF
-#line 1980 "configure"
+#line 2046 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <sys/time.h>
@@ -2009,7 +2075,7 @@
   echo $ac_n "(cached) $ac_c" 1>&4
 else
   cat > conftest.$ac_ext <<EOF
-#line 2013 "configure"
+#line 2079 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <time.h>
@@ -2041,7 +2107,7 @@
   echo $ac_n "(cached) $ac_c" 1>&4
 else
   cat > conftest.$ac_ext <<EOF
-#line 2045 "configure"
+#line 2111 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <$ac_cv_struct_tm>
@@ -2072,7 +2138,7 @@
   echo $ac_n "(cached) $ac_c" 1>&4
 else
   cat > conftest.$ac_ext <<EOF
-#line 2076 "configure"
+#line 2142 "configure"
 #include "confdefs.h"
 #include <time.h>
 #ifndef tzname /* For SGI.  */
@@ -2108,7 +2174,7 @@
   echo $ac_n "(cached) $ac_c" 1>&4
 else
   cat > conftest.$ac_ext <<EOF
-#line 2112 "configure"
+#line 2178 "configure"
 #include "confdefs.h"
 #include <time.h>
 int main() { return 0; }
@@ -2137,7 +2203,7 @@
 
 echo "checking whether sys/select.h and sys/time.h may both be included" 1>&4
 cat > conftest.$ac_ext <<EOF
-#line 2141 "configure"
+#line 2207 "configure"
 #include "confdefs.h"
 
 #include <sys/types.h>
@@ -2168,7 +2234,7 @@
   if test "$GCC" = yes; then
   # GCC predefines this symbol on systems where it applies.
 cat > conftest.$ac_ext <<EOF
-#line 2172 "configure"
+#line 2238 "configure"
 #include "confdefs.h"
 #ifdef __CHAR_UNSIGNED__
   yes
@@ -2190,7 +2256,7 @@
     { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
 else
 cat > conftest.$ac_ext <<EOF
-#line 2194 "configure"
+#line 2260 "configure"
 #include "confdefs.h"
 /* volatile prevents gcc2 from optimizing the test away on sparcs.  */
 #if !defined(__STDC__) || __STDC__ != 1
@@ -2224,7 +2290,7 @@
   echo $ac_n "(cached) $ac_c" 1>&4
 else
   cat > conftest.$ac_ext <<EOF
-#line 2228 "configure"
+#line 2294 "configure"
 #include "confdefs.h"
 
 int main() { return 0; }
@@ -2295,7 +2361,7 @@
 
 echo "checking for working volatile" 1>&4
 cat > conftest.$ac_ext <<EOF
-#line 2299 "configure"
+#line 2365 "configure"
 #include "confdefs.h"
 
 int main() { return 0; }
@@ -2317,7 +2383,7 @@
 
 echo "checking for working signed char" 1>&4
 cat > conftest.$ac_ext <<EOF
-#line 2321 "configure"
+#line 2387 "configure"
 #include "confdefs.h"
 
 int main() { return 0; }
@@ -2339,7 +2405,7 @@
 
 echo "checking for prototypes" 1>&4
 cat > conftest.$ac_ext <<EOF
-#line 2343 "configure"
+#line 2409 "configure"
 #include "confdefs.h"
 int foo(int x) { return 0; }
 int main() { return 0; }
@@ -2359,7 +2425,7 @@
 
 echo "checking for variable length prototypes and stdarg.h" 1>&4
 cat > conftest.$ac_ext <<EOF
-#line 2363 "configure"
+#line 2429 "configure"
 #include "confdefs.h"
 
 #include <stdarg.h>
@@ -2383,7 +2449,7 @@
 if test "$have_prototypes"; then
 echo "checking for bad exec* prototypes" 1>&4
 cat > conftest.$ac_ext <<EOF
-#line 2387 "configure"
+#line 2453 "configure"
 #include "confdefs.h"
 #include <unistd.h>
 int main() { return 0; }
@@ -2409,7 +2475,7 @@
     { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
 else
 cat > conftest.$ac_ext <<EOF
-#line 2413 "configure"
+#line 2479 "configure"
 #include "confdefs.h"
 
 struct s { int a; int b; };
@@ -2439,7 +2505,7 @@
 
 echo "checking whether va_list is an array" 1>&4
 cat > conftest.$ac_ext <<EOF
-#line 2443 "configure"
+#line 2509 "configure"
 #include "confdefs.h"
 
 #ifdef HAVE_STDARG_PROTOTYPES
@@ -2476,7 +2542,7 @@
   ac_save_LIBS="$LIBS"
 LIBS="$LIBS -lieee "
 cat > conftest.$ac_ext <<EOF
-#line 2480 "configure"
+#line 2546 "configure"
 #include "confdefs.h"
 
 int main() { return 0; }
@@ -2546,7 +2612,7 @@
   echo $ac_n "(cached) $ac_c" 1>&4
 else
   cat > conftest.$ac_ext <<EOF
-#line 2550 "configure"
+#line 2616 "configure"
 #include "confdefs.h"
 #include <ctype.h> /* Arbitrary system header to define __stub macros. */
 int main() { return 0; }
