0.8.2.37
authorDaniel Barlow <dan@telent.net>
Sun, 17 Aug 2003 15:29:34 +0000 (15:29 +0000)
committerDaniel Barlow <dan@telent.net>
Sun, 17 Aug 2003 15:29:34 +0000 (15:29 +0000)
Rename return_to_lisp_function to arrange_return_to_lisp_function,
as threatened

SIG_INTERRUPT_THREAD presently only exists on Linux: add
#ifdef to avoid breaking other x86en

Darwin complains "union has no member named `sival_int'" in
handle_rt_signal.  But we're only using that in thread builds
anyway, so #ifdef it

Bug 75 (:ELEMENT-TYPE for WITH-OUTPUT-TO-STRING) was fixed in
some previous version: remove from BUGS file

Shameless autopuffery, plus some amount of transpuffery, in
CREDITS file.

Update NEWS file

tests/.cvsignore: don't tell me about threads-foreign-code.*

BUGS
CREDITS
NEWS
src/runtime/interrupt.c
tests/.cvsignore [new file with mode: 0644]
version.lisp-expr

diff --git a/BUGS b/BUGS
index 98ea647..d964818 100644 (file)
--- a/BUGS
+++ b/BUGS
@@ -223,12 +223,6 @@ WORKAROUND:
   crashes SBCL. In general tracing anything which is used in the 
   implementation of TRACE is likely to have the same problem.
 
-75:
-  As reported by Martin Atzmueller on sbcl-devel 26 Dec 2000,
-  ANSI says that WITH-OUTPUT-TO-STRING should have a keyword
-  :ELEMENT-TYPE, but in sbcl-0.6.9 this is not defined for
-  WITH-OUTPUT-TO-STRING.
-
 78:
   ANSI says in one place that type declarations can be abbreviated even
   when the type name is not a symbol, e.g.
@@ -1077,6 +1071,11 @@ WORKAROUND:
   Cross-compiler cannot perform constant folding of some internal
   functions, such as %NEGATE.
 
+272:
+  All forms of GC hooks (including notifiers and finalisers) are currently
+  (since 0.8.0) broken for gencgc (i.e. x86) users 
+
+
 DEFUNCT CATEGORIES OF BUGS
   IR1-#:
     These labels were used for bugs related to the old IR1 interpreter.
diff --git a/CREDITS b/CREDITS
index ebaec7f..4941a70 100644 (file)
--- a/CREDITS
+++ b/CREDITS
@@ -283,7 +283,7 @@ by Bill Chiles to add encapsulation, and modified more by William Lott
 to add FDEFN objects.
 
 The CMU CL condition system (code/error.lisp) was based on
-some prototyping code written by Ken Pitman at Symbolics.
+some prototyping code written by Kent Pitman at Symbolics.
 
 The CMU CL HASH-TABLE system was originally written by Skef Wholey
 for Spice Lisp, then rewritten by William Lott, then rewritten
@@ -452,8 +452,9 @@ Aronson, and Steve Handerson.
 
 Douglas Crosher wrote code to support Gray streams, added X86 support
 for the debugger and relocatable code, wrote a conservative
-generational GC for the X86 port, and added X86-specific extensions to
-support stack groups and multiprocessing.
+generational GC for the X86 port.  He also added X86-specific
+extensions to support stack groups and multiprocessing, but these are
+not present in SBCL
 
 The CMU CL user manual credits Robert MacLachlan as editor. A chapter
 on the CMU CL interprocess communication extensions (not supported in
@@ -506,15 +507,15 @@ Martin Atzmueller:
   I've lost count. See the CVS logs.)
 
 Daniel Barlow:
-  He made SBCL play nicely with ILISP. He figured out how to get the
-  CMU CL dynamic object file loading code to work under SBCL. He
-  ported CMU CL's support for Alpha and PPC CPUs to SBCL, and then
-  continued to improve the ports. He wrote code (e.g. grovel_headers.c
-  and stat_wrapper stuff) to handle machine-dependence and
-  OS-dependence automatically, reducing the amount of hand-tweaking
-  required to keep ports synchronized. He's also provided support
-  for SBCL (as well as for free Common Lisp in general) through
-  his CLiki website.
+  His contributions have included support for shared object loading
+  (from CMUCL), the Cheney GC for non-x86 ports (from CMUCL), Alpha
+  and PPC ports (from CMUCL), control stack exhaustion checking (new)
+  and native threads support for x86 Linux (new).  He also refactored
+  the garbage collectors for understandability, wrote code
+  (e.g. grovel_headers.c and stat_wrapper stuff) to find
+  machine-dependent and OS-dependent constants automatically, and was
+  original author of the asdf, asdf-install, sb-bsd-sockets,
+  sb-executable, sb-grovel and sb-posix contrib packages.
 
 Robert E. Brown:
   He has reported various bugs and submitted several patches, 
@@ -547,6 +548,10 @@ Paul Dietz
   halfway stage, it has caught many tens of bugs in SBCL, and provided
   simple test cases for them.
 
+Miles Egan
+  He creates binary packages of SBCL releases for Red Hat and other
+  (which?) platforms
+
 Nathan Froyd:
   He has fixed various bugs, and also done a lot of internal
   cleanup, not visible at the user level but important for
@@ -583,7 +588,9 @@ Pierre Mai:
 
 Eric Marsden:
   Some of his fixes to CMU CL since the SBCL fork have been ported
-  to SBCL.
+  to SBCL.  He also maintains the cl-benchmark package, which gives
+  us some idea of how our performance changes compared to earlier
+  releases and to other implementations.
 
 Antonio Martinez-Shotton:
   He has contributed a number of bug fixes and bug reports to SBCL.
@@ -615,8 +622,9 @@ Patrik Nordebo:
   ABI and assembly syntax differences between Darwin and Linux.
 
 Kevin M. Rosenberg:
-  He provided the ACL-style toplevel, and a number of MOP-related bug
-  reports.
+  He provided the ACL-style toplevel (sb-aclrepl contrib module), and
+  a number of MOP-related bug reports.  He also creates the official
+  Debian packages of SBCL.
 
 Christophe Rhodes:
   He ported SBCL to SPARC, made various port-related and SPARC-related
@@ -664,7 +672,7 @@ Raymond Wiker:
 INITIALS GLOSSARY (helpful when reading comments, CVS commit logs, etc.)
 
 MNA  Martin Atzmueller
-DB   Daniel Barlow
+DB   Daniel Barlow (also "dan")
 DTC  Douglas Crosher
 APD  Alexey Dejneka
 NJF  Nathan Froyd
diff --git a/NEWS b/NEWS
index b9817ef..73e06ed 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -1947,9 +1947,15 @@ changes in sbcl-0.8.3 relative to sbcl-0.8.2:
   * The compiler now performs limited argument count validation of
     constant format strings in FORMAT, and where appropriate in ERROR, 
     CERROR and WARN.  (thanks to Gerd Moellmann)
-  * bug fix: WITH-OUTPUT-TO-STRING (and MAKE-STRING-OUTPUT-STREAM) now
+  * New ASDF-INSTALL contrib can be used for automatic download and 
+    installation of third-party Lisp code from CCLAN or other sites
+    via CLiki
+  * Threaded builds (:SB-THREAD) now support SB-THREAD:INTERRUPT-THREAD,
+    which forces another thread to execute a function supplied by the
+    caller
+  * bug 75 fix: WITH-OUTPUT-TO-STRING (and MAKE-STRING-OUTPUT-STREAM) now
     accept and act upon their :ELEMENT-TYPE keyword argument.
-    (reported by Edi Weitz)
+    (reported by Martin Atzmueller, Edi Weitz)
   * bug fix: FILE-POSITION now accepts position designators up to
     ARRAY-DIMENSION-LIMIT or the extreme of the off_t range, whichever
     is the greater.  (thanks to Patrik Nordebo)
@@ -1959,6 +1965,7 @@ changes in sbcl-0.8.3 relative to sbcl-0.8.2:
     printable.  (reported by Eric Marsden)
   * bug fix in sb-posix: mmap() now works on systems with a 64-bit
     off_t, including Darwin and FreeBSD.  (thanks to Andreas Fuchs)
+  * x86 bug fix in control stack exhaustion checking: now shows backtrace
   * bug fix in WITH-TIMEOUT: now the body can have more than one form.
     (thanks to Stig Sandoe)
   * fixed some bugs revealed by Paul Dietz' test suite:
index 6907777..83ba373 100644 (file)
@@ -68,7 +68,7 @@ struct interrupt_data * global_interrupt_data;
  *
  * In the case of most signals, when Lisp asks us to handle the
  * signal, the outermost handler (the one actually passed to UNIX) is
- * either interrupt_handle_now(..) or interrupt_handle_later(..).
+ * either interrupt_handle_now(..) or maybe_now_maybe_later(..).
  * In that case, the Lisp-level handler is stored in interrupt_handlers[..]
  * and interrupt_low_level_handlers[..] is cleared.
  *
@@ -512,7 +512,7 @@ gc_trigger_hit(int signal, siginfo_t *info, os_context_t *context)
 
 extern lispobj call_into_lisp(lispobj fun, lispobj *args, int nargs);
 extern void post_signal_tramp(void);
-void return_to_lisp_function(os_context_t *context, lispobj function)
+void arrange_return_to_lisp_function(os_context_t *context, lispobj function)
 {
     void * fun=native_pointer(function);
     char *code = &(((struct simple_fun *) fun)->code);
@@ -526,7 +526,6 @@ void return_to_lisp_function(os_context_t *context, lispobj function)
      * would see, then arrange to have it called directly.  post_signal_tramp
      * is the second half of this function
      */
-    
     u32 *sp=(u32 *)*os_context_register_addr(context,reg_ESP);
 
     *(sp-14) = post_signal_tramp; /* return address for call_into_lisp */
@@ -573,20 +572,16 @@ void return_to_lisp_function(os_context_t *context, lispobj function)
     *os_context_register_addr(context,reg_CODE) = 
        fun + FUN_POINTER_LOWTAG;
 #endif
-#ifdef LISP_FEATURE_LINUX
-    /* Under Linux on some architectures it seems we have to restore
-       the FPU control word from the context, as after the signal is
-       delivered we have a null FPU control word. */
-    os_restore_fp_control(context);
-#endif 
 }
 
+#ifdef LISP_FEATURE_SB_THREAD
 boolean handle_rt_signal(int num, siginfo_t *info, void *v_context)
 {
     struct 
        os_context_t *context = (os_context_t*)arch_os_get_context(&v_context);
-    return_to_lisp_function(context,info->si_value.sival_int);
+    arrange_return_to_lisp_function(context,info->si_value.sival_int);
 }
+#endif
 
 boolean handle_control_stack_guard_triggered(os_context_t *context,void *addr)
 {
@@ -599,7 +594,7 @@ boolean handle_control_stack_guard_triggered(os_context_t *context,void *addr)
         * temporarily so the error handler has some headroom */
        protect_control_stack_guard_page(th->pid,0L);
        
-       return_to_lisp_function
+       arrange_return_to_lisp_function
            (context, SymbolFunction(CONTROL_STACK_EXHAUSTED_ERROR));
        return 1;
     }
@@ -704,8 +699,11 @@ undoably_install_low_level_interrupt_handler (int signal,
     sigaddset_blockable(&sa.sa_mask);
     sa.sa_flags = SA_SIGINFO | SA_RESTART;
 #ifdef LISP_FEATURE_C_STACK_IS_CONTROL_STACK
-    if((signal==SIG_MEMORY_FAULT) ||
-       (signal==SIG_INTERRUPT_THREAD))
+    if((signal==SIG_MEMORY_FAULT) 
+#ifdef SIG_INTERRUPT_THREAD
+       || (signal==SIG_INTERRUPT_THREAD)
+#endif
+       )
        sa.sa_flags|= SA_ONSTACK;
 #endif
     
diff --git a/tests/.cvsignore b/tests/.cvsignore
new file mode 100644 (file)
index 0000000..441d85c
--- /dev/null
@@ -0,0 +1 @@
+threads-foreign-code.c
index ec2a4a5..3ee9825 100644 (file)
@@ -17,4 +17,4 @@
 ;;; checkins which aren't released. (And occasionally for internal
 ;;; versions, especially for internal versions off the main CVS
 ;;; branch, it gets hairier, e.g. "0.pre7.14.flaky4.13".)
-"0.8.2.36"
+"0.8.2.37"