[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Guile-commits] GNU Guile branch, stable-2.0, updated. v2.0.0-183-g7c81e

From: Andy Wingo
Subject: [Guile-commits] GNU Guile branch, stable-2.0, updated. v2.0.0-183-g7c81eba
Date: Wed, 13 Apr 2011 12:07:35 +0000

This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "GNU Guile".

The branch, stable-2.0 has been updated
       via  7c81eba25b0ec03b2b6ab2f22d1f1b74d20691ce (commit)
       via  9d6a151fbd54c813194f4907220f9f2f04ff4f1c (commit)
       via  37325c9bd2c70d19a663541a4e23f7bf6f86d478 (commit)
       via  8e76ce94a28c02324aa13de835b1e55282b8b760 (commit)
      from  c89b45299329d034875429804f18768c1ea96713 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
commit 7c81eba25b0ec03b2b6ab2f22d1f1b74d20691ce
Author: Andy Wingo <address@hidden>
Date:   Wed Apr 13 14:07:22 2011 +0200

    update NEWS
    * NEWS: Update for 2.0.1.

commit 9d6a151fbd54c813194f4907220f9f2f04ff4f1c
Author: Andy Wingo <address@hidden>
Date:   Wed Apr 13 12:50:16 2011 +0200

    (rnrs arithmetic fixnums) fixnum? export a procedure again
    * module/rnrs/arithmetic/fixnums.scm (fixnum?): Restore this export to
      be a procedure, not syntax.
      (inline-fixnum?): This is what fixnum? was.  Use it internally.

commit 37325c9bd2c70d19a663541a4e23f7bf6f86d478
Author: Andy Wingo <address@hidden>
Date:   Wed Apr 13 12:16:00 2011 +0200

    revert 4a2ac0623c3dabb2c8b9d38c27b837dcb2c7fe4e
    * module/ice-9/popen.scm (open-pipe*): No need to pump the pipes
      guardian here, now that hooks are working again.

commit 8e76ce94a28c02324aa13de835b1e55282b8b760
Author: Andy Wingo <address@hidden>
Date:   Wed Apr 13 12:03:50 2011 +0200

    --disable-threads fix
    * libguile/threads.c (do_thread_exit_trampoline, on_thread_exit):
      (scm_i_init_thread_for_guile): Only register and unregister threads
      with bdw-gc when we are building with threads support.  Thanks to
      Marijn for the report.


Summary of changes:
 NEWS                               |  188 ++++++++++++++++++++++++++++++++++-
 libguile/threads.c                 |    8 +-
 module/ice-9/popen.scm             |    4 -
 module/rnrs/arithmetic/fixnums.scm |   19 +++--
 4 files changed, 200 insertions(+), 19 deletions(-)

diff --git a/NEWS b/NEWS
index 206153a..cd12f60 100644
--- a/NEWS
+++ b/NEWS
@@ -7,17 +7,193 @@ Please send Guile bug reports to address@hidden
 Changes in 2.0.1 (since 2.0.0):
-* New procedures (see the manual for details)
+* Notable changes
+** guile.m4 supports linking with rpath
+The GUILE_FLAGS macro now sets GUILE_LIBS and GUILE_LTLIBS, which
+include appropriate directives to the linker to include
+in the runtime library lookup path.
+** `begin' expands macros in its body before other expressions
+This enables support for programs like the following:
+    (begin
+      (define even?
+        (lambda (x)
+          (or (= x 0) (odd? (- x 1)))))
+      (define-syntax odd?
+        (syntax-rules ()
+          ((odd? x) (not (even? x)))))
+      (even? 10))
+** REPL reader usability enhancements
+The REPL now flushes input after a read error, which should prevent one
+error from causing other errors.  The REPL also now interprets comments
+as whitespace.
+** REPL output has configurable width
+The REPL now defaults to output with the current terminal's width, in
+columns.  See "Debug Commands" in the manual for more information on
+the ,width command.
+** Better C access to the module system
+Guile now has convenient C accessors to look up variables or values in
+modules and their public interfaces.  See `scm_c_public_ref' and friends
+in "Accessing Modules from C" in the manual.
+** Added `scm_call_5', `scm_call_6'
+See "Fly Evaluation" in the manual.
+** Added `scm_from_latin1_keyword', `scm_from_utf8_keyword'
+See "Keyword Procedures" in the manual, for more.  Note that
+`scm_from_locale_keyword' should not be used when the name is a C string
+** R6RS unicode and string I/O work
+Added efficient implementations of `get-string-n' and `get-string-n!'
+for binary ports.  Exported `current-input-port', `current-output-port'
+and `current-error-port' from `(rnrs io ports)', and enhanced support
+for transcoders.
+** Added `pointer->scm', `scm->pointer' to `(system foreign)'
+These procedure are useful if one needs to pass and receive SCM values
+to and from foreign functions.  See "Foreign Variables" in the manual,
+for more.
+** Added `heap-allocated-since-gc' to `(gc-stats)'
+Also fixed the long-standing bug in the REPL `,stat' command.
+** Add `on-error' REPL option
+This option controls what happens when an error occurs at the REPL, and
+defaults to `debug', indicating that Guile should enter the debugger.
+Other values include `report', which will simply print a backtrace
+without entering the debugger.  See "System Commands" in the manual.
+** Enforce immutability of string literals
+Attempting to mutate a string literal now causes a runtime error.
+** Fix pthread redirection
+Guile 2.0.0 shipped with headers that, if configured with pthread
+support, would re-define `pthread_create', `pthread_join', and other API
+to redirect to the BDW-GC wrappers, `GC_pthread_create', etc.  This was
+unintended, and not necessary: because threads must enter Guile with
+scm_with_guile, Guile can handle thread registration itself, without
+needing to make the GC aware of all threads.  This oversight has been
+** `with-continuation-barrier' now unwinds on `quit'
+A throw to `quit' in a continuation barrier will cause Guile to exit.
+Before, it would do so before unwinding to the barrier, which would
+prevent cleanup handlers from running.  This has been fixed so that it
+exits only after unwinding.
+** `string->pointer' and `pointer->string' have optional encoding arg
+This allows users of the FFI to more easily deal in strings with
+particular (non-locale) encodings, like "utf-8".  See "Void Pointers and
+Byte Access" in the manual, for more.
+** R6RS fixnum arithmetic optimizations
+R6RS fixnum operations are are still slower than generic arithmetic,
+** New procedure: `define-inlinable'
+See "Inlinable Procedures" in the manual, for more.
-** exact-integer-sqrt, imported into core from (rnrs base)
+** New procedure: `exact-integer-sqrt'
+See "Integer Operations" in the manual, for more.
+** "Extended read syntax" for symbols parses better
+In #{foo}# symbols, backslashes are now treated as escapes, as the
+symbol-printing code intended.  Additionally, "\x" within #{foo}# is now
+interpreted as starting an R6RS hex escape.  This is backward compatible
+because the symbol printer would never produce a "\x" before.  The
+printer also works better too.
+* Manual updates
+** GOOPS documentation updates
+** New man page
+Thanks to Mark Harig for improvements to guile.1.
+** SRFI-23 documented
+The humble `error' SRFI now has an entry in the manual.
+* New modules
+** `(ice-9 binary-ports)': XXX, in the manual
+** `(ice-9 eval-string)': "Fly Evaluation", in the manual
 * Bugs fixed
-** exact-integer-sqrt now handles large integers correctly
+** Fixed iconv_t memory leak on close-port
+** Fixed some leaks with weak hash tables
+** Export `vhash-delq' and `vhash-delv' from `(ice-9 vlist)'
+** `after-gc-hook' works again
+** `define-record-type' now allowed in nested contexts
+** `exact-integer-sqrt' now handles large integers correctly
+** Fixed C extension examples in manual
+** `vhash-delete' honors HASH argument
+** Make `locale-digit-grouping' more robust
+** Default exception printer robustness fixes
+** Fix presence of non-I CPPFLAGS in `guile-2.0.pc'
+** `read' updates line/column numbers when reading SCSH block comments
+** Fix imports of multiple custom interfaces of same module
+** Fix encoding scanning for non-seekable ports
+** Fix `setter' when called with a non-setter generic
+** Fix f32 and f64 bytevectors to not accept rationals
+** Fix description of the R6RS `finite?' in manual
+** Quotient, remainder and modulo accept inexact integers again
+** Fix `continue' within `while' to take zero arguments
+** Fix alignment for structures in FFI
+** Fix port-filename of stdin, stdout, stderr to match the docs
+** Fix weak hash table-related bug in `define-wrapped-pointer-type'
+** Fix partial continuation application with pending procedure calls
+** scm_{to,from}_locale_string use current locale, not current ports
+** Fix thread cleanup, by using a pthread_key destructor
+** Fix `quit' at the REPL
+** Fix a failure to sync regs in vm bytevector ops
+** Fix (texinfo reflection) to handle nested structures like syntax patterns
+** Fix stexi->html double translation
+** Fix tree-il->scheme fix for <prompt>
+** Fix compilation of <prompt> in <fix> in single-value context
+** Fix race condition in ensure-writable-dir
+** Fix error message on ,disassemble "non-procedure"
+** Fix prompt and abort with the boot evaluator
+** Fix `procedure->pointer' for functions returning `void'
+** Fix error reporting in dynamic-pointer
+** Fix problems detecting coding: in block comments
+** Fix duplicate load-path and load-compiled-path in compilation environment
+** Add fallback read(2) suppport for .go files if mmap(2) unavailable
+** Fix c32vector-set!, c64vector-set!
+** Fix mistakenly deprecated read syntax for uniform complex vectors
+** Fix parsing of exact numbers with negative exponents
+** Ignore SIGPIPE in (system repl server)
+** Fix optional second arg to R6RS log function
+** Fix R6RS `assert' to return true value.
+** Fix fencepost error when seeking in bytevector input ports
-exact-integer-sqrt now works correctly when applied to very large
-integers (too large to be precisely represented by a C double).
-It has also been imported into core from (rnrs base).
 Changes in 2.0.0 (changes since the 1.8.x series):
diff --git a/libguile/threads.c b/libguile/threads.c
index 14bda1d..66869e7 100644
--- a/libguile/threads.c
+++ b/libguile/threads.c
@@ -661,7 +661,9 @@ static void *
 do_thread_exit_trampoline (struct GC_stack_base *sb, void *v)
   /* Won't hurt if we are already registered.  */
   GC_register_my_thread (sb);
   return scm_with_guile (do_thread_exit, v);
@@ -720,7 +722,7 @@ on_thread_exit (void *v)
   scm_i_pthread_setspecific (scm_i_thread_key, NULL);
   GC_unregister_my_thread ();
@@ -774,7 +776,7 @@ scm_i_init_thread_for_guile (struct GC_stack_base *base, 
SCM parent)
          scm_i_init_guile (base);
           /* Allow other threads to come in later.  */
           GC_allow_register_threads ();
@@ -789,7 +791,9 @@ scm_i_init_thread_for_guile (struct GC_stack_base *base, 
SCM parent)
          scm_i_pthread_mutex_unlock (&scm_i_init_mutex);
           /* Register this thread with libgc.  */
           GC_register_my_thread (base);
          guilify_self_1 (base);
          guilify_self_2 (parent);
diff --git a/module/ice-9/popen.scm b/module/ice-9/popen.scm
index 5445ecb..b3def4a 100644
--- a/module/ice-9/popen.scm
+++ b/module/ice-9/popen.scm
@@ -139,10 +139,6 @@ A port to the process (based on pipes) is created and 
 @var{modes} specifies whether an input, an output or an input-output
 port to the process is created: it should be the value of
 @code{OPEN_READ}, @code{OPEN_WRITE} or @code{OPEN_BOTH}."
-  ;; Until we get GC hooks working again, pump the guardian here.
-  (reap-pipes)
   (let* ((port/pid (apply open-process mode command args))
         (port (car port/pid)))
     (pipe-guardian port)
diff --git a/module/rnrs/arithmetic/fixnums.scm 
index 0ce2458..e626199 100644
--- a/module/rnrs/arithmetic/fixnums.scm
+++ b/module/rnrs/arithmetic/fixnums.scm
@@ -102,17 +102,20 @@
   (define (greatest-fixnum) most-positive-fixnum)
   (define (least-fixnum) most-negative-fixnum)
-  (define-inlinable (fixnum? obj)
+  (define (fixnum? obj)
+    (not (= 0 (logand 2 (object-address obj)))))
+  (define-inlinable (inline-fixnum? obj)
     (not (= 0 (logand 2 (object-address obj)))))
   (define-syntax assert-fixnum
     (syntax-rules ()
       ((_ arg ...)
-       (or (and (fixnum? arg) ...)
+       (or (and (inline-fixnum? arg) ...)
           (raise (make-assertion-violation))))))
   (define (assert-fixnums args)
-    (or (for-all fixnum? args) (raise (make-assertion-violation))))
+    (or (for-all inline-fixnum? args) (raise (make-assertion-violation))))
   (define-syntax define-fxop*
     (syntax-rules ()
@@ -147,13 +150,15 @@
   (define (fx+ fx1 fx2)
     (assert-fixnum fx1 fx2) 
     (let ((r (+ fx1 fx2))) 
-      (or (fixnum? r) (raise (make-implementation-restriction-violation)))
+      (or (inline-fixnum? r)
+          (raise (make-implementation-restriction-violation)))
   (define (fx* fx1 fx2)
     (assert-fixnum fx1 fx2) 
     (let ((r (* fx1 fx2))) 
-      (or (fixnum? r) (raise (make-implementation-restriction-violation)))
+      (or (inline-fixnum? r)
+          (raise (make-implementation-restriction-violation)))
   (define* (fx- fx1 #:optional fx2)
@@ -162,10 +167,10 @@
          (assert-fixnum fx2) 
          (let ((r (- fx1 fx2))) 
-           (or (fixnum? r) (raise (make-assertion-violation)))
+           (or (inline-fixnum? r) (raise (make-assertion-violation)))
        (let ((r (- fx1))) 
-         (or (fixnum? r) (raise (make-assertion-violation)))
+         (or (inline-fixnum? r) (raise (make-assertion-violation)))
   (define (fxdiv fx1 fx2)

GNU Guile

reply via email to

[Prev in Thread] Current Thread [Next in Thread]