unofficial mirror of guile-devel@gnu.org 
 help / color / mirror / Atom feed
* GNU Guile 1.8.5 released
@ 2008-05-07 19:28 Ludovic Courtès
  2008-05-08 20:19 ` Ludovic Courtès
  0 siblings, 1 reply; 3+ messages in thread
From: Ludovic Courtès @ 2008-05-07 19:28 UTC (permalink / raw)
  To: guile-devel; +Cc: guile-user

We are pleased to announce GNU Guile release 1.8.5.  This is the next
maintenance release for the 1.8 stable series.  It provides a number of
portability improvements, bug fixes, as well as several new features.

You can find it here:

  ftp://ftp.gnu.org/gnu/guile/guile-1.8.5.tar.gz
  SHA1 hash: 3ef611cf5c4998a5bdfc7935765bb68730038614

A GPG detached signature of the package is available at:

  ftp://ftp.gnu.org/gnu/guile/guile-1.8.5.tar.gz.sig

The Guile web page is located at http://www.gnu.org/software/guile/, and
among other things, it contains a link to the Guile FAQ and pointers to
the mailing lists.

Guile is an interpreter for the Scheme programming language, with
support for many SRFIs, packaged for use in a wide variety of
environments.  In addition to implementing the R5RS Scheme standard,
Guile includes a module system, full access to POSIX system calls,
networking support, multiple threads, dynamic linking, a foreign
function call interface, and powerful string processing.

Guile can run interactively or as a script interpreter, and is also
packaged as a library so that applications can easily incorporate a
complete Scheme interpreter.  An application can use Guile as an
extension language, a clean and powerful configuration language, or as
multi-purpose "glue" to connect primitives provided by the application.
It is easy to call Scheme code from C code and vice versa.  Applications
can add new functions, data types, control structures, and even syntax
to Guile, to create a domain-specific language tailored to the task at
hand.

This is primarily a bugfix release.  Here are the highlights, taken from
the `NEWS' file:

  - Infrastructure changes

    - Guile repository switched from CVS to Git
    - Add support for `pkg-config'

  - New modules (see the manual for details)

    - `(srfi srfi-88)'

  - New features (see the manual for details)

    - New `postfix' read option, for SRFI-88 keyword syntax
    - Some I/O primitives have been inlined, which improves I/O performance
    - New object-based traps infrastructure
    - New support for working on Guile code from within Emacs

  - Bugs fixed

    - `scm_add_slot ()' no longer segfaults (fixes bug #22369)
    - Fixed `(ice-9 match)' for patterns like `((_ ...) ...)'
    - `(oop goops describe)' now properly provides the `describe' feature
    - Fixed `args-fold' from `(srfi srfi-37)'
    - `(srfi srfi-35)' is now visible through `cond-expand'
    - Fixed type-checking for the second argument of `eval'
    - Fixed type-checking for SRFI-1 `partition'
    - Fixed `struct-ref' and `struct-set!' on "light structs"
    - Honor struct field access rights in GOOPS
    - Changed the storage strategy of source properties, which fixes
      a deadlock
    - Allow compilation of Guile-using programs in C99 mode with GCC 4.3
      and later
    - Fixed build issue for GNU/Linux on IA64
    - Fixed build issues on NetBSD 1.6
    - Fixed build issue on Solaris 2.10 x86_64
    - Fixed build issue with DEC/Compaq/HP's compiler
    - Fixed `scm_from_complex_double' build issue on FreeBSD
    - Fixed `alloca' build issue on FreeBSD 6
    - Removed use of non-portable makefile constructs
    - Fixed shadowing of libc's <random.h> on Tru64, which broke compilation
    - Make sure all tests honor `$TMPDIR'

  - Changes to the distribution

    - New FAQ


Any bugs found in this release will be addressed by further bugfix
releases numbered 1.8.*.

You can follow Guile development in the Git repository and on the Guile
mailing lists.  Guile builds from the `master' branch of Git will have
version number 1.9.0.

Guile versions with an odd middle number, e.g., 1.9.*, are unstable
development versions.  Even middle numbers indicate stable versions.
This has been the case since the 1.3.* series.

Please report bugs through the Savannah bug tracker:

  https://savannah.gnu.org/bugs/?group=guile

Alternatively, bug reports can be sent to `bug-guile@gnu.org'.  We also
welcome reports of successful builds, which can be sent to the same
email address.


Ludovic Courtès, on behalf of the Guile team.





^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: GNU Guile 1.8.5 released
  2008-05-07 19:28 GNU Guile 1.8.5 released Ludovic Courtès
@ 2008-05-08 20:19 ` Ludovic Courtès
  2008-05-08 21:06   ` Neil Jerram
  0 siblings, 1 reply; 3+ messages in thread
From: Ludovic Courtès @ 2008-05-08 20:19 UTC (permalink / raw)
  To: guile-devel

Hello,

ludo@gnu.org (Ludovic Courtès) writes:

> Alternatively, bug reports can be sent to `bug-guile@gnu.org'.  We also
> welcome reports of successful builds, which can be sent to the same
> email address.

Following a suggestion read on `gnu-prog-discuss', I got myself an
account on HP's Test Drive [0].  This allowed me to build Guile on HP-UX
(PA-RISC) with HP's cc and FreeBSD 6.2 (x86) with GCC 3.

On FreeBSD, a few regexp-related tests fail [1], but I haven't dig
further yet.

On HP-UX, the test-suite doesn't run because a stack overflow is hit by
the time `elisp.test' is reached, or at some later point if we remove
it; using "(debug-set! stack 50000)" didn't seem to help much either.
Also needs further investigation, but I'm not sure it's worth being too
proactive on this platform.

Thanks,
Ludovic.

[0] http://www.testdrive.hp.com/
[1] https://savannah.gnu.org/bugs/?23197





^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: GNU Guile 1.8.5 released
  2008-05-08 20:19 ` Ludovic Courtès
@ 2008-05-08 21:06   ` Neil Jerram
  0 siblings, 0 replies; 3+ messages in thread
From: Neil Jerram @ 2008-05-08 21:06 UTC (permalink / raw)
  To: Ludovic Courtès; +Cc: guile-devel

[-- Attachment #1: Type: text/plain, Size: 910 bytes --]

ludo@gnu.org (Ludovic Courtès) writes:

> Following a suggestion read on `gnu-prog-discuss', I got myself an
> account on HP's Test Drive [0].  This allowed me to build Guile on HP-UX
> (PA-RISC) with HP's cc and FreeBSD 6.2 (x86) with GCC 3.

Sounds useful.  On similar (but not so diverse) lines, I was thinking
of registering Guile with SUSE's build service
(http://en.opensuse.org/Build_Service) - but haven't actually done so yet.

> On HP-UX, the test-suite doesn't run because a stack overflow is hit by
> the time `elisp.test' is reached, or at some later point if we remove
> it; using "(debug-set! stack 50000)" didn't seem to help much either.
> Also needs further investigation, but I'm not sure it's worth being too
> proactive on this platform.

You may like to try the patch that I posted before for stack
overflows; I've attached it here again for convenience.

     Neil


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: new-stack-overflow.patch --]
[-- Type: text/x-diff, Size: 5003 bytes --]

Index: ice-9/boot-9.scm
===================================================================
RCS file: /cvsroot/guile/guile/guile-core/ice-9/boot-9.scm,v
retrieving revision 1.356.2.10
diff -u -r1.356.2.10 boot-9.scm
--- ice-9/boot-9.scm	1 Sep 2007 17:11:00 -0000	1.356.2.10
+++ ice-9/boot-9.scm	25 Feb 2008 21:45:44 -0000
@@ -2289,6 +2289,14 @@
    (print-options print-enable print-disable)
    (print-set!)))
 
+;;; Stack depth calibration, for the 'stack debug option.
+
+(let ((x (%get-stack-depth)))
+  (let loop ((count 10))
+    (if (zero? count)
+	(%calibrate-stack-depth x (%get-stack-depth) 'report)
+	(cons count (loop (- count 1))))))
+
 \f
 
 ;;; {Running Repls}
Index: libguile/debug.h
===================================================================
RCS file: /cvsroot/guile/guile/guile-core/libguile/debug.h,v
retrieving revision 1.58
diff -u -r1.58 debug.h
--- libguile/debug.h	4 Nov 2005 21:20:24 -0000	1.58
+++ libguile/debug.h	25 Feb 2008 21:45:44 -0000
@@ -75,6 +75,7 @@
     && scm_is_true (SCM_EXIT_FRAME_HDLR);\
   scm_debug_mode_p = SCM_DEVAL_P\
     || scm_check_entry_p || scm_check_apply_p || scm_check_exit_p;\
+  scm_calculate_stack_limit ();\
 } while (0)
 
 /* {Evaluator}
Index: libguile/stackchk.c
===================================================================
RCS file: /cvsroot/guile/guile/guile-core/libguile/stackchk.c,v
retrieving revision 1.28.2.1
diff -u -r1.28.2.1 stackchk.c
--- libguile/stackchk.c	12 Feb 2006 13:42:51 -0000	1.28.2.1
+++ libguile/stackchk.c	25 Feb 2008 21:45:44 -0000
@@ -30,6 +30,13 @@
 
 #ifdef STACK_CHECKING
 int scm_stack_checking_enabled_p;
+int scm_stack_limit;
+
+/* As in y = mx + c.  These numbers define a linear transformation
+   from the stack depth specified as the 'stack debug option, to the
+   actual max stack depth that we allow. */
+static double calibrated_m = 1;
+static double calibrated_c = 0;
 
 SCM_SYMBOL (scm_stack_overflow_key, "stack-overflow");
 
@@ -44,6 +51,58 @@
 	     SCM_BOOL_F);
 }
 
+/* Stack depth calibration. */
+
+SCM_DEFINE (scm_sys_get_stack_depth, "%get-stack-depth", 0, 0, 0,
+	    (),
+	    "Return current stack depth.")
+#define FUNC_NAME s_scm_sys_get_stack_depth
+{
+  SCM_STACKITEM stack;
+  return scm_from_int (SCM_STACK_DEPTH (&stack));
+}
+#undef FUNC_NAME
+
+SCM_DEFINE (scm_sys_calibrate_stack_depth, "%calibrate-stack-depth", 2, 1, 0,
+	    (SCM d1, SCM d2, SCM debugp),
+	    "Calibrate linear transformation for stack depth limit checking.")
+#define FUNC_NAME s_scm_sys_calibrate_stack_depth
+{
+  /* x1 and x2 are the stack depth values that we get on a Debian
+     GNU/Linux ia32 system - which we take as our canonical system.
+     y1 and y2 are the values measured on the system where Guile is
+     currently running. */
+  int x1 = 170, x2 = 690, y1, y2;
+
+  SCM_VALIDATE_INT_COPY (1, d1, y1);
+  SCM_VALIDATE_INT_COPY (2, d2, y2);
+
+  calibrated_m = ((double) (y2 - y1)) / (x2 - x1);
+  calibrated_c = ((double) y2) - calibrated_m * x2;
+
+  if (scm_is_true (debugp) && !SCM_UNBNDP (debugp))
+    {
+      scm_puts (";; Stack calibration: (x1 x2 y1 y2 m c) = ",
+		scm_current_output_port ());
+      scm_write (scm_list_n (scm_from_int (x1), scm_from_int (x2),
+			     d1, d2,
+			     scm_from_double (calibrated_m),
+			     scm_from_double (calibrated_c),
+			     SCM_UNDEFINED),
+		 SCM_UNDEFINED);
+      scm_newline (SCM_UNDEFINED);
+    }
+
+  return SCM_UNSPECIFIED;
+}
+#undef FUNC_NAME
+
+void
+scm_calculate_stack_limit ()
+{
+  scm_stack_limit = (int) (calibrated_m * SCM_STACK_LIMIT + calibrated_c);
+}
+
 #endif
 
 long
Index: libguile/stackchk.h
===================================================================
RCS file: /cvsroot/guile/guile/guile-core/libguile/stackchk.h,v
retrieving revision 1.20.2.1
diff -u -r1.20.2.1 stackchk.h
--- libguile/stackchk.h	12 Feb 2006 13:42:51 -0000	1.20.2.1
+++ libguile/stackchk.h	25 Feb 2008 21:45:44 -0000
@@ -35,14 +35,11 @@
 
 #ifdef STACK_CHECKING
 # if SCM_STACK_GROWS_UP
-#  define SCM_STACK_OVERFLOW_P(s)\
-   (SCM_STACK_PTR (s) \
-    > (SCM_I_CURRENT_THREAD->base + SCM_STACK_LIMIT))
+#  define SCM_STACK_DEPTH(s) (SCM_STACK_PTR (s) - SCM_I_CURRENT_THREAD->base)
 # else
-#  define SCM_STACK_OVERFLOW_P(s)\
-   (SCM_STACK_PTR (s) \
-    < (SCM_I_CURRENT_THREAD->base - SCM_STACK_LIMIT))
+#  define SCM_STACK_DEPTH(s) (SCM_I_CURRENT_THREAD->base - SCM_STACK_PTR (s))
 # endif
+# define SCM_STACK_OVERFLOW_P(s) (SCM_STACK_DEPTH (s) > scm_stack_limit)
 # define SCM_CHECK_STACK\
     {\
        SCM_STACKITEM stack;\
@@ -54,10 +51,14 @@
 #endif /* STACK_CHECKING */
 
 SCM_API int scm_stack_checking_enabled_p;
+SCM_API int scm_stack_limit;
 
 \f
 
 SCM_API void scm_report_stack_overflow (void);
+SCM_API SCM scm_sys_get_stack_depth (void);
+SCM_API SCM scm_sys_calibrate_stack_depth (SCM d1, SCM d2, SCM debugp);
+SCM_API void scm_calculate_stack_limit (void);
 SCM_API long scm_stack_size (SCM_STACKITEM *start);
 SCM_API void scm_stack_report (void);
 SCM_API void scm_init_stackchk (void);

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2008-05-08 21:06 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-05-07 19:28 GNU Guile 1.8.5 released Ludovic Courtès
2008-05-08 20:19 ` Ludovic Courtès
2008-05-08 21:06   ` Neil Jerram

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).