Changes in 1.8.8 (since 1.8.7)
* Bugs fixed
** Fix possible buffer overruns when parsing numbers
** Fix random number generator on 64-bit platforms
Previously the `scm_c_random' function would crash or return only 32-bit
worth of randomness. In addition, the new `scm_c_random64' function
explicitly returns 64 bits of randomness.
** Add missing range checks in `vector-move-left!' and `vector-move-right!'
Previously these procedures could write past the end of a vector.
** Avoid clash with system setjmp/longjmp on IA64
** Don't dynamically link an extension that is already registered
** Fix `wrong type arg' exceptions with IPv6 addresses
** Fix typos in `(srfi srfi-19)'
** Have `(srfi srfi-35)' provide named struct vtables
** Fix C documentation extraction ("snarfing") with recent GCC versions
** Fix some Interix build problems
** Fix Tru64 build problems
** Fix GC-related build issues on Solaris 10 x86 with Sun Studio 12
** Several small documentation fixes
Changes in 1.8.7 (since 1.8.6)
* Bugs fixed
** Fix compilation with `--disable-deprecated'
** Fix %fast-slot-ref/set!, to avoid possible segmentation fault
** Fix MinGW build problem caused by HAVE_STRUCT_TIMESPEC confusion
** Fix build problem when scm_t_timespec is different from struct timespec
** Fix build when compiled with -Wundef -Werror
** More build fixes for `alphaev56-dec-osf5.1b' (Tru64)
** Build fixes for `powerpc-ibm-aix5.3.0.0' (AIX 5.3)
** With GCC, always compile with `-mieee' on `alpha*' and `sh*'
** Better diagnose broken `(strftime "%z" ...)' in `time.test' (bug #24130)
** Fix parsing of SRFI-88/postfix keywords longer than 128 characters
** Fix reading of complex numbers where both parts are inexact decimals
** Allow @ macro to work with (ice-9 syncase)
Previously, use of the @ macro in a module whose code is being
transformed by (ice-9 syncase) would cause an "Invalid syntax" error.
Now it works as you would expect (giving the value of the specified
module binding).
** Have `scm_take_locale_symbol ()' return an interned symbol (bug #25865)
** Fix potential deadlocks when running on multiple threads
** Fix problems building with the i586-mingw32msvc cross-compiler
It's now possible to build Guile for Windows by using the
i586-mingw32msvc cross-compiler on GNU/Linux. This kind of build
produces DLLs and a main program that can be copied to and used on a
Windows PC. For how to do this, see the `Cross building Guile'
section in `README'.
pthread_getattr_np(), just different,
needed for get_thread_stack_base() to work which is needed for
the scm_init_guile() API
approved by gdt
bump PKGREVISION
was there because guile was built against gmp etc. from /usr/pkg, not
present to let programs find -lguile. Therefore, add in rpath for
$(libdir) when we add in -L for libdir.
This looks ok to me, but I will be away AFK most of the day, so feel
free to remove the line in distinfo and re-commit if this turns out to
be bad.
merging to the new guile-config code, and it turns out not to be
necessary since there is some other mechanism to add rpath. Arguably
it should still be added, as the later rpath might only be there for
dependencies. (Plus, depending programs should use pkg-config
instead.)
Delete patch-aa as the whole lt_preloaded_symbols bit is gone upstream.
Changes in 1.8.6 (since 1.8.5)
* New features (see the manual for details)
** New convenience function `scm_c_symbol_length ()'
** Single stepping through code from Emacs
When you use GDS to evaluate Scheme code from Emacs, you can now use
`C-u' to indicate that you want to single step through that code. See
`Evaluating Scheme Code' in the manual for more details.
** New "guile(1)" man page!
* Changes to the distribution
** Automake's `AM_MAINTAINER_MODE' is no longer used
Thus, the `--enable-maintainer-mode' configure option is no longer
available: Guile is now always configured in "maintainer mode".
** `ChangeLog' files are no longer updated
Instead, changes are detailed in the version control system's logs. See
the top-level `ChangeLog' files for details.
* Bugs fixed
** `symbol->string' now returns a read-only string, as per R5RS
** Fix incorrect handling of the FLAGS argument of `fold-matches'
** `guile-config link' now prints `-L$libdir' before `-lguile'
** Fix memory corruption involving GOOPS' `class-redefinition'
** Fix possible deadlock in `mutex-lock'
** Fix build issue on Tru64 and ia64-hp-hpux11.23 (`SCM_UNPACK' macro)
** Fix build issue on mips, mipsel, powerpc and ia64 (stack direction)
** Fix build issue on hppa2.0w-hp-hpux11.11 (`dirent64' and `readdir64_r')
** Fix build issue on i386-unknown-freebsd7.0 ("break strict-aliasing rules")
** Fix misleading output from `(help rationalize)'
** Fix build failure on Debian hppa architecture (bad stack growth detection)
** Fix `gcd' when called with a single, negative argument.
** Fix `Stack overflow' errors seen when building on some platforms
** Fix bug when `scm_with_guile ()' was called several times from the
same thread
** The handler of SRFI-34 `with-exception-handler' is now invoked in the
dynamic environment of the call to `raise'
** Fix potential deadlock in `make-struct'
** Fix compilation problem with libltdl from Libtool 2.2.x
** Fix sloppy bound checking in `string-{ref,set!}' with the empty string
changes:
-new module: `(srfi srfi-88)'
-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
-bugfixes
pkgsrc note: added a patch which affects builds without thread
support only (fixes crash on termination)
approved by gdt
Changes in 1.8.3 (since 1.8.2)
* New modules (see the manual for details)
** `(srfi srfi-35)'
** `(srfi srfi-37)'
* Bugs fixed
** The `(ice-9 slib)' module now works as expected
** Expressions like "(set! 'x #t)" no longer yield a crash
** Warnings about duplicate bindings now go to stderr
** A memory leak in `make-socket-address' was fixed
** Alignment issues (e.g., on SPARC) in network routines were fixed
** A threading issue that showed up at least on NetBSD was fixed
** Build problems on Solaris and IRIX fixed
* Implementation improvements
** The reader is now faster, which reduces startup time
** Procedures returned by `record-accessor' and `record-modifier' are faster
functions clog and cexp (but presence of complex.h), reported in
pkg/36555. The patch in the PR is from gentoo and has already been
applied upstream along guile's 1.8 branch.
others required significant adjustment due to upstream changes.
Tested on NetBSD-current/i386.
Changes in 1.8.2 (since 1.8.1):
* New procedures (see the manual for details)
** set-program-arguments
** make-vtable
* Incompatible changes
** The body of a top-level `define' no longer sees the binding being created
In a top-level `define', the binding being created is no longer visible
from the `define' body. This breaks code like
"(define foo (begin (set! foo 1) (+ foo 1)))", where `foo' is now
unbound in the body. However, such code was not R5RS-compliant anyway,
per Section 5.2.1.
* Bugs fixed
** Fractions were not `equal?' if stored in unreduced form.
(A subtle problem, since printing a value reduced it, making it work.)
** srfi-60 `copy-bit' failed on 64-bit systems
** "guile --use-srfi" option at the REPL can replace core functions
(Programs run with that option were ok, but in the interactive REPL
the core bindings got priority, preventing SRFI replacements or
extensions.)
** `regexp-exec' doesn't abort() on #\nul in the input or bad flags arg
** `kill' on mingw throws an error for a PID other than oneself
** Procedure names are attached to procedure-with-setters
** Array read syntax works with negative lower bound
** `array-in-bounds?' fix if an array has different lower bounds on each index
** `*' returns exact 0 for "(* inexact 0)"
This follows what it always did for "(* 0 inexact)".
** SRFI-19: Value returned by `(current-time time-process)' was incorrect
** SRFI-19: `date->julian-day' did not account for timezone offset
** `ttyname' no longer crashes when passed a non-tty argument
** `inet-ntop' no longer crashes on SPARC when passed an `AF_INET' address
** Small memory leaks have been fixed in `make-fluid' and `add-history'
** GOOPS: Fixed a bug in `method-more-specific?'
** Build problems on Solaris fixed
** Build problems on HP-UX IA64 fixed
** Build problems on MinGW fixed
in lang/guile16. Many, many changes since the last 1.6.x release including
bug fixes, build fixes, and many feature additions. See the NEWS file for the
full (> 1,000 lines) list of changes.
Changes since Guile 1.6.7 (changes in 1.6.8):
* Changes to the distribution
** A number of GCC 4.0 related build problems have been fixed.
A number of changes have been made to accomodate GCC 4.0.
* Changes to the stand-alone interpreter
** `readline-set!' now works.
* Changes to Scheme functions and syntax
** Guile now allows multiple line comments to end without a trailing newline.
Previously Guile would throw an exception if a multiple line comment
ended without a trailing newline. Now "!#" will end a multiple line
comment regardless of what follows.
** Guile supports newer versions of SLIB more cleanly.
Guile now relies on the upstream SLIB code (guile.init) to handle the
load process. Previously Guile relied on its own copy of that code,
which was incorrect, at least for more recent versions of SLIB.
If you still need to use Guile with an older version of SLIB, and the
new approach doesn't work for you, please add the following definition
to your code before (ice-9 slib) is loaded for the first time:
(define *guile-use-old-ice-9-slib* #t)
This will cause Guile to revert to the old load behavior.
** The r5rs numerator and denominator functions have been added.
These are now available in the default environment.
** `/' fix to <any>/0-<y>i complex division case, avoiding divide-by-zero
** `array-map!' fix, accepts just a destination array again
** `cons*', `list' fix to not clobber source list when called via `apply'
** `string-index', `split-string' and other string func fixes for 8-bit chars
** `number->string' fix for parsing of polar complex number with invalid angle
** (ice-9 poe) bug fixes
** srfi-1 `lset-adjoin' fix to actually use given equality procedure
** srfi-1 `lset-union' fixes to operate in the way specified by the SRFI
Note in particular that if the first list is empty then the first
non-empty is the starting point, and duplicates are not cast out of
that. So
(lset-union = '() '(1 1 1)) => '(1 1 1)
where previously it was '(1). This, though perhaps unhelpful, comes
from the SRFI spec (that if list A is empty then the result is B).
** srfi-1 `lset=', `list=' fix to equality procedure argument order
** srfi-17 avoid deprecation warnings about reexport
** srfi-19 new 2005 leap second
** srfi-39 new parameter versions of `current-output-port' etc, per SRFI
** make-stack can now correctly construct a stack from a continuation.
** Output string port speed problems have been improved
Output string port (open-output-string, etc) writing was very slow at
about 50 to 100 kbytes or above. This affected various things, in
particular regexp-substitute/global on a large string, and stack
backtraces with a large object.
** Bug fix: printing values no longer protects them from GC
A bug in the printing code used to mean that printing a value (using
`display' or `write') would incorrectly protect that value from GC for
a while afterwards. This has now been fixed.
* Changes to the C interface
Ok gdt@
guile.init. A bit hackish, but restores slib functionality, which
should restore gnucash to working order. (The underlying problem is
that slib 3a2 has new primitives that dialect-specific init files are
supposed to define, and ice-9/slib.scm doesn't define one of them.
The slib way is to read slib's guile.init, but guile's way was to have
an implementation of the same interface, know known to be a moving
target.)
PKGREVISION++
Changes since Guile 1.6.6 (changes in 1.6.7):
* Changes to the distribution
** A build problem has been fixed.
Previously, on some systems, the build would fail when libguile-ltdl
couldn't be found during the build. This should now be fixed.
* Changes to Scheme functions and syntax
** array-map! and array-map-in-order! now correctly require at least one source
A mistake caused a call with just one source array to be rejected,
this has been fixed.
** string->number and octal constant bignums
An incorrect bignum size calculation has been fixed, this caused
overflow errors in string->number on bases other than 2, 10 and 16,
including octal literal constants in code or the reader.
** SRFI-1 alist-delete equality argument order fixed.
In the srfi-1 module alist-delete and alist-delete!, the order of the
arguments to the "=" procedure now matches the SRFI-1 specification.
** SRFI-13 string-any and string-every tail calls
string-any and string-every now make a tail call to their predicate
function on reaching the last character in the string, per the SRFI-13
specification.
Changes since Guile 1.6.5 (changes in 1.6.6):
* Changes to the distribution
** srfi-39 should work now - a file was missing from the distribution.
** A libltdl related build problem has been fixed.
* Changes to the C interface
** A bug has been fixed that caused uvec_equalp to function improperly.
** In scm_charnames and scm_charnums, sp is now an alias for space.
it before someone else does too :)
Changes since Guile 1.6.4 (changes in 1.6.5):
* Changes to the distribution
** Bugs have been fixed that prevented the (re)generation of psyntax.pp.
** SRFI-31 has been added (special form `rec' for recursive evaluation)
(use-modules (srfi srfi-31)) will now provide support for SRFI-31.
See the Guile info pages for more documentation.
** SRFI-39 has been added (parameter objects)
** Guile is now compiled with -fno-strict-aliasing when gcc is detected.
** The --enable-htmldoc option has been removed from 'configure'.
Support for translating the documentation into HTML is now always
provided. Use 'make html'.
* Changes to the stand-alone interpreter
** GC bug fixed.
The use of scm_must_realloc() for memory which is scanned by GC, could
trigger a GC scan of a free()d block of memory. This is now fixed.
* Changes to Scheme functions and syntax
** array-map! and array-map-in-order! now require at least one source array.
Previously a call without any source arrays like (array-map! array
proc) would cause a segfault. Now such calls are properly rejected.
** srfi-4 has been overhauled
Bugs have been fixed, and performance may be improved in certain
situations. Among other things, large 64-bit values should print
correctly now.
** gethost no longer causes an exception when trying to throw an exception
** call-with-output-string doesn't segv on closed port
Previously call-with-output-string would give a segmentation fault if
the string port was closed by the called function. An exception is
raised now.
** (ice-9 popen) duplicate pipe fd fix
open-pipe, open-input-pipe and open-output-pipe left an extra copy of
their pipe file descriptor in the child, which was normally harmless,
but it can prevent the parent seeing eof or a broken pipe immediately and has now been fixed.
** source-properties and set-source-properties! fix
Properties set with set-source-properties! can now be read back
correctly with source-properties.
** SRFI-1 delete equality argument order fixed.
In the srfi-1 module delete and delete!, the order of the arguments to
the "=" procedure now matches the SRFI-1 specification.
** SRFI-19 date-week-number fix
date-week-number now correctly respects the requested day of week
starting the week.
* Changes to the C interface
XXX: Package fails the same regression test 1.6.3 failed (scfi-19).
Changes since Guile 1.6.3 (i.e. changes for 1.6.4):
* Changes to the distribution
** Various architecture (and compiler optimization) related bugs fixed.
These changes should improve the situation on at least ia64, alpha,
and powerpc.
* Changes to the stand-alone interpreter
** Readline prompt problem fixed.
Previously, the readline prompt disappeared when running Guile in
non-echoing terminal mode (for example under GDB in Emacs). This has
been fixed.
** Printing bug fixed.
Previously, the state of writingp in the print state could be altered
by recursive calls to printing functions.
** Append mode in hooks.
Append mode in hooks (adding the hook last in the list) now works
correctly.
** GOOPS/GC bug fixed.
The class layout slot, which informs the GC about which slots to GC
protect, is now initialized correctly.
** GOOPS class redefinition bug fixed.
The class redefinition protocol now properly removes the old accessor
methods from their accessors.
** GOOPS method dispatch bug fixed.
Previously, the code updating the method cache in generic functions
got confused if handed method code created in a null environment
(environment = empty list). It now stands every environment
imaginable (think about it!).
** GOOPS init-thunks can now be primitive procedures
Previously, attempts to provide something else than a closure as value
for the #:init-thunk slot option would yield a segmentation fault.
Now, it's possible to supply a primitive procedure as init-thunk.
Non-allowed values result in an error.
** Garbage collection frequency improved for large malloc heaps
The decision when to run the GC is now done in a way that avoids GCs
with a small yield for heaps with a large amount of malloced storage.
The minimum expected yield for malloc storage is now relative to the
heap size, and not a fixed amount as it was previously.
* Changes to Scheme functions and syntax
** %fast-slot-ref no longer checks slot boundness
This makes the <active-class> metaclass in (oop goops active-slot)
working again.
** eqv? and equal? are now primitive generic functions
This means that it is possible to provide custom comparisons for new
classes by specializing `eqv?' and `equal?' to those classes.
* Changes to the C interface
** New snarf macros: SCM_PRIMITIVE_GENERIC, SCM_PRIMITIVE_GENERIC_1
These provide a way of adding primitive generics which is equivalent
to SCM_DEFINE and SCM_DEFINE1.
** GOOPS longer creates layout entries for non-instance slots.
** syntax-case bugs have been fixed
a) Macro expansion is no longer disturbed if the value of
(current-module) changes. This was the cause of a number of
different bugs people have reported.
b) Syntax-case now expands Guile's own macros as a part of the
macro expansion process. Previously, Guile macro calls were
treated as applications.
c) Objects which are constant data and which Guile considers
self-evaluating are no longer quoted.
One good consequence of these fixes is that it's now possible to
use syntax-case macro expansion together with GOOPS code.
** scm_readline now checks that it's using an output (not input) port.
Changes since Guile 1.6.0:
* Changes to the distribution
** Guile now provide and uses an "effective" version number.
** Guile now uses it's own version of libltdl.
** The Emacs interface has been fixed.
** The SRFI C headers are now installed.
* Changes to Scheme functions and syntax
** New function: effective-version
* Changes to the C interface
** New function: scm_effective_version
* installation fix: (ice-9 and-let*) has been renamed to (ice-9 and-let-star)
* build fix: net_db.c `inet_aton' declaration now properly conditionalized
* bugfix: `expt' now handles negative exponents correctly
* installation fix: some programs are no longer installed
* guile-snarf usage now internalizes output-file creation/deletion
* installation fix: libltdl now "installable" instead of "convenience"
* library versioning now more disciplined
* "make check" now works
* provisional documentation available
* interface summarization available