Re: GNU Guile 1.9.0 released (alpha)

2009-06-23 Thread Changying Li
thanks very much!

BTW, when will guile support unicode ?

l...@gnu.org (Ludovic Court鑣) writes:

 We are pleased to announce GNU Guile release 1.9.0.  This is the first
 pre-release of what will eventually become the 2.0 release series.  It
 provides many new noteworthy features, most notably the addition of a
 compiler and virtual machine.  We encourage you to test them and provide
 feedback to `guile-de...@gnu.org'.

 The Guile web page is located at http://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, compiler, and virtual machine 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, as a script interpreter, and as a Scheme
 compiler to VM bytecode.  It is also packaged as a library so that
 applications can easily incorporate a complete Scheme interpreter/VM.
 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.


 Here are the compressed sources:
   ftp://alpha.gnu.org/gnu/guile/guile-1.9.0.tar.gz   (4.6MB)

 Here are the GPG detached signatures[*]:
   ftp://alpha.gnu.org/gnu/guile/guile-1.9.0.tar.gz.sig

 Here are the MD5 and SHA1 checksums:

 71c3fa0ed22c91b30e9573478fdee4dc  guile-1.9.0.tar.gz
 836cffc2d05cd0de938bf24bc91e9debe8fea060  guile-1.9.0.tar.gz

 [*] You can use either of the above signature files to verify that
 the corresponding file (without the .sig suffix) is intact.  First,
 be sure to download both the .sig file and the corresponding tarball.
 Then, run a command like this:

   gpg --verify guile-1.9.0.tar.gz.sig

 If that command fails because you don't have the required public key,
 then run this command to import it:

   gpg --keyserver keys.gnupg.net --recv-keys EA52ECF4

 and rerun the `gpg --verify' command.

 This release was bootstrapped with the following tools:
   Autoconf 2.63
   Automake 1.10.2
   Libtool 2.2.6


 This is a new release series with many new features and differences
 compared to 1.8.  Excerpt from the `NEWS' file:

   * New modules (see the manual for details)

   ** `(srfi srfi-18)', more sophisticated multithreading support
   ** `(ice-9 i18n)', internationalization support
   ** `(rnrs bytevector)', the R6RS bytevector API
   ** `(rnrs io ports)', a subset of the R6RS I/O port API
   ** `(system xref)', a cross-referencing facility (FIXME undocumented)

   * Changes to the stand-alone interpreter

   ** Guile now can compile Scheme to bytecode for a custom virtual machine.
   ** The stack limit is now initialized from the environment.
   ** New environment variables: GUILE_LOAD_COMPILED_PATH,
  GUILE_SYSTEM_LOAD_COMPILED_PATH
   ** New read-eval-print loop (REPL) implementation
   ** New `guile-tools' commands: `compile', `disassemble'

   * Changes to Scheme functions and syntax

   ** Procedure removed: `the-environment'
   ** Files loaded with `primitive-load-path' will now be compiled
  automatically.
   ** New POSIX procedures: `getrlimit' and `setrlimit'
   ** New procedure in `(oops goops)': `method-formals'
   ** BUG: (procedure-property func 'arity) does not work on compiled
  procedures
   ** New procedures in (ice-9 session): `add-value-help-handler!',
  `remove-value-help-handler!', `add-name-help-handler!'
  `remove-name-help-handler!', `procedure-arguments',
   ** Deprecated: `procedure-memoizing-macro', `procedure-syntax'
   ** New language: ECMAScript
   ** Defmacros may now have docstrings.
   ** The psyntax expander now knows how to interpret the @ and @@ special
  forms.
   ** The psyntax expander is now hygienic with respect to modules.
   ** New function, `procedure-module'
   ** `eval-case' has been deprecated, and replaced by `eval-when'.
   ** Guile is now more strict about prohibiting definitions in expression
  contexts.
   ** Defmacros must now produce valid Scheme expressions.
   ** Guile's psyntax now supports docstrings and internal definitions.
   ** Macros need to be defined before their first use.
   ** Functions needed by macros at expand-time need to be present at
  expand-time.
   ** New variable, %pre-modules-transformer
   ** Temporarily removed functions: `macroexpand', `macroexpand-1'
   ** New reader macros: #' #` #, #,@
   ** Incompatible change to #'
   ** Scheme expresssions may be commented 

Re: GNU Guile 1.9.0 released (alpha)

2009-06-23 Thread Mike Gran

 From: Changying Li lchangy...@gmail.com
 
 thanks very much!
 
 BTW, when will guile support unicode ?
 

Hopefully, we will have Unicode functionality in
the second alpha version 1.9.1.  There are still
a couple of issues before it can be merged
into the main tree.  This should happen in a
month or so.





Re: GNU Guile 1.9.0 released (alpha)

2009-06-21 Thread Andy Wingo
Hi Mike,

On Sun 21 Jun 2009 08:31, Mike Gran spk...@yahoo.com writes:

 Not really in a position to help, since I'm still AFK, but, 
 somewhere along the line I pushed this patch to r6rs vectors
 in the String_abstraction2 tree.

Took me a little while to understand it, but it seems the patch is
right. I committed and pushed it to master. Linas, can you try again?

Thanks much!

Andy
-- 
http://wingolog.org/




Re: GNU Guile 1.9.0 released (alpha)

2009-06-21 Thread Neil Jerram
Andy Wingo wi...@pobox.com writes:

 Hi Mike,

 On Sun 21 Jun 2009 08:31, Mike Gran spk...@yahoo.com writes:

 Not really in a position to help, since I'm still AFK, but, 
 somewhere along the line I pushed this patch to r6rs vectors
 in the String_abstraction2 tree.

 Took me a little while to understand it, but it seems the patch is
 right. I committed and pushed it to master. Linas, can you try again?

 Thanks much!

I've pushed a deterministic test for this (also below).  (In general,
when fixing something that isn't already reliably reproduced by the
build, please write a regression test if feasible.)

  Neil

From 4574ec212aad4df9571463ee4d45beb2607e51ad Mon Sep 17 00:00:00 2001
From: Neil Jerram n...@ossau.uklinux.net
Date: Sun, 21 Jun 2009 13:31:20 +0100
Subject: [PATCH] Deterministic test for the r6rs-ports.test segmentation fault

* test-suite/tests/r6rs-ports.test (7.2.7 Input Ports): Add (gc), to
  test the (ex-)bug in cbp_mark () when marking a closed port.
---
 test-suite/tests/r6rs-ports.test |1 +
 1 files changed, 1 insertions(+), 0 deletions(-)

diff --git a/test-suite/tests/r6rs-ports.test b/test-suite/tests/r6rs-ports.test
index 829258f..df12e5c 100644
--- a/test-suite/tests/r6rs-ports.test
+++ b/test-suite/tests/r6rs-ports.test
@@ -342,6 +342,7 @@
 close!)))
 
   (close-port port)
+  (gc) ; Test for marking a closed port.
   closed?)))
 
 
-- 
1.5.6.5



Re: GNU Guile 1.9.0 released (alpha)

2009-06-21 Thread Ludovic Courtès
Hello,

Mike Gran spk...@yahoo.com writes:

 --- a/libguile/r6rs-ports.c
 +++ b/libguile/r6rs-ports.c
 @@ -210,7 +210,10 @@ static SCM
  cbp_mark (SCM port)
  {
/* Mark the underlying method and object vector.  */
 -  return SCM_PACK (SCM_STREAM (port));
 +  if (SCM_PTAB_ENTRY (port) != NULL)
 +return SCM_PACK (SCM_STREAM (port));
 +  else
 +return SCM_BOOL_F;
  }

Hmm, how can we have SCM_PTAB_ENTRY (port) == NULL at this point?

GC is also unlikely to occur before SCM_STREAM (port) is initialized
since SCM_SETSTREAM () is called right after
`scm_new_port_table_entry ()'.

Thanks in advance,
Ludo'.





Re: GNU Guile 1.9.0 released (alpha)

2009-06-21 Thread Ludovic Courtès
l...@gnu.org (Ludovic Courtès) writes:

 Mike Gran spk...@yahoo.com writes:

 --- a/libguile/r6rs-ports.c
 +++ b/libguile/r6rs-ports.c
 @@ -210,7 +210,10 @@ static SCM
  cbp_mark (SCM port)
  {
/* Mark the underlying method and object vector.  */
 -  return SCM_PACK (SCM_STREAM (port));
 +  if (SCM_PTAB_ENTRY (port) != NULL)
 +return SCM_PACK (SCM_STREAM (port));
 +  else
 +return SCM_BOOL_F;
  }

 Hmm, how can we have SCM_PTAB_ENTRY (port) == NULL at this point?

Of course I read Neil's commit right after: the answer is if PORT is
closed.

Thanks for finding it out!

Ludo'.





Re: GNU Guile 1.9.0 released (alpha)

2009-06-21 Thread Linas Vepstas
2009/6/21 Andy Wingo wi...@pobox.com:

 Took me a little while to understand it, but it seems the patch is
 right. I committed and pushed it to master. Linas, can you try again?

Yes, that fixes it for me.

--linas




Re: GNU Guile 1.9.0 released (alpha)

2009-06-20 Thread Andy Wingo
Hi,

On Sat 20 Jun 2009 00:05, l...@gnu.org (Ludovic Courtès) writes:

 We are pleased to announce GNU Guile release 1.9.0.

Thank you for doing the release!

 Guile is an interpreter, compiler, and virtual machine for the Scheme
 programming language

Perhaps in the future we can just say implementation of the Scheme
programming language, and then make it obvious later that we indeed
have a compiler. Strictly speaking, the VM could be said to be an
interpreter :)

Cheers,

Andy
-- 
http://wingolog.org/




Re: GNU Guile 1.9.0 released (alpha)

2009-06-20 Thread Andy Wingo
On Sat 20 Jun 2009 05:00, Linas Vepstas linasveps...@gmail.com writes:

 Running r6rs-ports.test
 /bin/sh: line 4:  7268 Segmentation fault  ${dir}$tst
 FAIL: check-guile

A few more things you could try, in addition to what Neil and Ludovic
said:

./check-guile r6rs-ports.test

Does this segfault for you? If so:

./check-guile -i meta/gdb-uninstalled-guile r6rs-ports.test

Then run, and post the backtrace please.

Thanks!

Andy
-- 
http://wingolog.org/




Re: GNU Guile 1.9.0 released (alpha)

2009-06-20 Thread Ludovic Courtès
Hello!

Andy Wingo wi...@pobox.com writes:

 On Sat 20 Jun 2009 00:05, l...@gnu.org (Ludovic Courtès) writes:

 We are pleased to announce GNU Guile release 1.9.0.

 Thank you for doing the release!

Thank *you* for doing most of the work!

 Guile is an interpreter, compiler, and virtual machine for the Scheme
 programming language

 Perhaps in the future we can just say implementation of the Scheme
 programming language, and then make it obvious later that we indeed
 have a compiler. Strictly speaking, the VM could be said to be an
 interpreter :)

Yes, I thought about this as well and wasn't satisfied with the
wording.  You're probably right that implementation of the Scheme
language is better.

Thanks!

Ludo'.





Re: GNU Guile 1.9.0 released (alpha)

2009-06-20 Thread Linas Vepstas
2009/6/20 Andy Wingo wi...@pobox.com:
 On Sat 20 Jun 2009 05:00, Linas Vepstas linasveps...@gmail.com writes:

 Running r6rs-ports.test
 /bin/sh: line 4:  7268 Segmentation fault      ${dir}$tst
 FAIL: check-guile

 A few more things you could try, in addition to what Neil and Ludovic
 said:

 ./check-guile r6rs-ports.test

 Does this segfault for you?

No  err yes .. it passed 3 times, failed the fourth time.
I guess there's a race condition,looks to be in the gc.

  If so:

 ./check-guile -i meta/gdb-uninstalled-guile r6rs-ports.test

It seems to crash once out of every 5-10 times.

Here's a crash:

$ ./check-guile -i meta/gdb-uninstalled-guile r6rs-ports.test
Testing meta/gdb-uninstalled-guile ... r6rs-ports.test
with GUILE_LOAD_PATH=/home/linas/src/novamente/src/guile-1.9.0/test-suite
GNU gdb 6.8-debian
Copyright (C) 2008 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later http://gnu.org/licenses/gpl.html
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type show copying
and show warranty for details.
This GDB was configured as i486-linux-gnu...
(gdb) r
Starting program:
/home/linas/src/novamente/src/guile-1.9.0/libguile/.libs/lt-guile -e
main -s /home/linas/src/novamente/src/guile-1.9.0/test-suite/guile-test
--test-suite /home/linas/src/novamente/src/guile-1.9.0/test-suite/tests
--log-file check-guile.log r6rs-ports.test
[Thread debugging using libthread_db enabled]
Running r6rs-ports.test
[New Thread 0xf7b8c6b0 (LWP 31850)]

Totals for this test run:
passes: 31
failures:   0
unexpected passes:  0
expected failures:  0
unresolved test cases:  0
untested test cases:0
unsupported test cases: 0
errors: 0


Program exited normally.
(gdb) r
Starting program:
/home/linas/src/novamente/src/guile-1.9.0/libguile/.libs/lt-guile -e
main -s /home/linas/src/novamente/src/guile-1.9.0/test-suite/guile-test
--test-suite /home/linas/src/novamente/src/guile-1.9.0/test-suite/tests
--log-file check-guile.log r6rs-ports.test
[Thread debugging using libthread_db enabled]
Running r6rs-ports.test
[New Thread 0xf7b2d6b0 (LWP 31855)]

Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0xf7b2d6b0 (LWP 31855)]
0xf7ef12fa in cbp_mark (port=0x9006320) at r6rs-ports.c:212
212 {
(gdb) bt
#0  0xf7ef12fa in cbp_mark (port=0x9006320) at r6rs-ports.c:212
#1  0xf7ec56f2 in scm_gc_mark (ptr=0x9006320) at gc-mark.c:177
#2  0xf7ec57ca in scm_mark_locations (x=0xfff8b610, n=8287) at gc-mark.c:439
#3  0xf7f1f5f2 in scm_threads_mark_stacks () at threads.c:1760
#4  0xf7ec586e in scm_mark_all () at gc-mark.c:86
#5  0xf7ec4579 in scm_i_gc (what=0xfff8b6cc 1-cells) at gc.c:626
#6  0xf7ec496f in scm_gc_for_newcell (freelist=0xf7f73a48,
free_cells=0x8f0f0a8) at gc.c:500
#7  0xf7f3f891 in vm_debug_engine (vp=0x8f3c0c8, program=0x8f905f0,
argv=0xfff8bd28, nargs=7) at ../libguile/inline.h:116
#8  0xf7f325fa in scm_c_vm_run (vm=0xf7afe650, program=0x8f90600,
argv=0xfff8bd24, nargs=1) at vm.c:403
#9  0xf7f31b95 in program_apply_1 (program=0x8f90600, a=0x7986)
at programs.c:88
#10 0xf7ebe00f in scm_map (proc=0x8f90600, arg1=0xf7b2a8d0, args=0x404)
at eval.c:3643
#11 0xf7ebd6e2 in scm_apply (proc=0x8f274e0, arg1=0x8f90600, args=0xf7b2a8a8)
at eval.i.c:1790
#12 0xf7f3ecaa in vm_debug_engine (vp=0x8f3c0c8, program=0x8f90790,
argv=0xfff8c408, nargs=2) at vm-i-system.c:533
#13 0xf7f325fa in scm_c_vm_run (vm=0xf7afe650, program=0x8f90790,
argv=0xfff8c404, nargs=1) at vm.c:403
#14 0xf7f31b95 in program_apply_1 (program=0x8f90790, a=0x9006050)
---Type return to continue, or q return to quit---
at programs.c:88
#15 0xf7ebe00f in scm_map (proc=0x8f90790, arg1=0xf7b29140, args=0x404)
at eval.c:3643
#16 0xf7ebd6e2 in scm_apply (proc=0x8f274e0, arg1=0x8f90790, args=0xf7b28788)
at eval.i.c:1790
#17 0xf7f3ecaa in vm_debug_engine (vp=0x8f3c0c8, program=0x8f90a00,
argv=0xfff8cae8, nargs=2) at vm-i-system.c:533
#18 0xf7f325fa in scm_c_vm_run (vm=0xf7afe650, program=0x8f90a00,
argv=0xfff8cae4, nargs=1) at vm.c:403
#19 0xf7f31b95 in program_apply_1 (program=0x8f90a00, a=0xf7b2a0a0)
at programs.c:88
#20 0xf7ebe00f in scm_map (proc=0x8f90a00, arg1=0xf7b2a098, args=0x404)
at eval.c:3643
#21 0xf7ebd6e2 in scm_apply (proc=0x8f274e0, arg1=0x8f90a00, args=0xf7b2a090)
at eval.i.c:1790
#22 0xf7f3ecaa in vm_debug_engine (vp=0x8f3c0c8, program=0x8f90f30,
argv=0xfff8d1c8, nargs=2) at vm-i-system.c:533
#23 0xf7f325fa in scm_c_vm_run (vm=0xf7afe650, program=0x8f90f30,
argv=0xfff8d1c4, nargs=1) at vm.c:403
#24 0xf7f31b95 in program_apply_1 (program=0x8f90f30, a=0xf7b24988)
at programs.c:88
#25 0xf7ebe00f in scm_map (proc=0x8f90f30, arg1=0xf7b24980, args=0x404)
at eval.c:3643
---Type return to continue, or q return to quit---
#26 0xf7ebd6e2 in scm_apply (proc=0x8f274e0, arg1=0x8f90f30, args=0xf7b24978)
at eval.i.c:1790
#27 

Re: GNU Guile 1.9.0 released (alpha)

2009-06-19 Thread Linas Vepstas
2009/6/19 Ludovic Courtès l...@gnu.org:
 We are pleased to announce GNU Guile release 1.9.0.
...
  provide
 feedback to `guile-de...@gnu.org'.

Hmm. 'libunistring' is so new that not even debian
has a package for it. Its also labelled as 'alpha'.
You sure you want to/need to have a dependency on this?

--linas




Re: GNU Guile 1.9.0 released (alpha)

2009-06-19 Thread Linas Vepstas
2009/6/19 Ludovic Courtès l...@gnu.org:
 We are pleased to announce GNU Guile release 1.9.0.

FYI,

'make check' fails for me, with the blow. Should I ignore
this, or dig into it?

--linas

Everything before the below seems to have passed.
Then...

Running alist.test
Running and-let-star.test
Running arbiters.test
Running asm-to-bytecode.test
Running bit-operations.test
Running bytevectors.test
UNRESOLVED: bytevectors.test: 2.9 Operations on Strings: string-utf8 [latin-1]
UNRESOLVED: bytevectors.test: 2.9 Operations on Strings: utf8-string [latin-1]
Running c-api.test
Running chars.test
Running common-list.test
Running continuations.test
Running elisp.test
Running environments.test
Running eval.test
Running exceptions.test
Running filesys.test
Running format.test
Running fractions.test
Running ftw.test
Running gc.test
Running getopt-long.test
Running goops.test
Running guardians.test
UNRESOLVED: guardians.test: standard guardian functionality: guarding
weakly referenced objects: guarded weak vector element gets returned
from guardian
UNRESOLVED: guardians.test: standard guardian functionality: guarding
weakly referenced objects: guarded element of weak vector gets
eventually removed from weak vector
Running hash.test
Running hooks.test
Running i18n.test
UNRESOLVED: i18n.test: text collation (French): string-locale?
UNRESOLVED: i18n.test: text collation (French): char-locale?
UNRESOLVED: i18n.test: text collation (French): string-locale-ci=?
UNRESOLVED: i18n.test: text collation (French): string-locale-ci?
UNRESOLVED: i18n.test: text collation (French): char-locale-ci?
UNRESOLVED: i18n.test: number parsing: locale-string-inexact (French)
UNRESOLVED: i18n.test: nl-langinfo et al.: locale-day (French)
UNRESOLVED: i18n.test: nl-langinfo et al.: locale-day (French, using
`%global-locale')
UNRESOLVED: i18n.test: nl-langinfo et al.: default locale
Running import.test
Running interp.test
Running list.test
Running load.test
Running modules.test
Running numbers.test
Running optargs.test
Running options.test
Running poe.test
Running popen.test
Running ports.test
Running posix.test
Running procprop.test
UNRESOLVED: procprop.test: procedure-arity: apply
Running q.test
Running r4rs.test
Running r5rs_pitfall.test
Running r6rs-ports.test
/bin/sh: line 4:  7268 Segmentation fault  ${dir}$tst
FAIL: check-guile
==
1 of 1 test failed
Please report to bug-gu...@gnu.org
==
make[2]: *** [check-TESTS] Error 1
make[2]: Leaving directory `/home/linas/src/novamente/src/guile-1.9.0'
make[1]: *** [check-am] Error 2
make[1]: Leaving directory `/home/linas/src/novamente/src/guile-1.9.0'
make: *** [check-recursive] Error 1