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
are present if the complex.h header exists. csqrt on the contrary
is actively checked. For now, disable complex double handling on
DragonFly to work around this.
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@
makeinfo if no native makeinfo executable exists. Honor TEXINFO_REQD
when determining whether the native makeinfo can be used.
* Remove USE_MAKEINFO and replace it with USE_TOOLS+=makeinfo.
* Get rid of all the "split" argument deduction for makeinfo since
the PLIST module already handles varying numbers of split info files
correctly.
NOTE: Platforms that have "makeinfo" in the base system should check
that the makeinfo entries of pkgsrc/mk/tools.${OPSYS}.mk are
correct.
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
automatically by pthread.buildlink3.mk. Also, factor out the pthread
library out of PTHREAD_LDFLAGS into a standalone variable PTHREAD_LIBS
and use it in packages where necessary (usually the ones that don't
have a GNU configure script).
Unfortunately, guile{,14}/buildlink3.mk directly includes it, and I don't
know which dependencies actually need libltdl, so it was a recursive bump.
Hopefully this recursive inclusion can be ripped out of
guile{,14}/buildlink3.mk at some point and bubble down to dependencies that
actually use libltdl, avoiding this headache in the future....
in the process. (More information on tech-pkg.)
Bump PKGREVISION and BUILDLINK_DEPENDS of all packages using libtool and
installing .la files.
Bump PKGREVISION (only) of all packages depending directly on the above
via a buildlink3 include.
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.
curses.buildlink2.mk. This was wrong because we _really_ do want to
express that we want _n_curses when we include the buildlink2.mk file.
We should have a better way to say that the NetBSD curses doesn't
quite work well enough. In fact, it's far better to depend on ncurses
by default, and exceptionally note when it's okay to use NetBSD curses
for specific packages. We will look into this again in the future.
** 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