* 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).