Please send Guile bug reports to bug-guile@gnu.org.
\f
+Changes since Guile 1.3.4:
+
+configure has new options to remove support for certain features:
+
+--disable-posix omit posix interfaces
+--disable-net omit networking interfaces
+--disable-regex omit regular expression interfaces
+
+These are likely to become separate modules some day.
+
+\f
Changes since Guile 1.3.2:
+* Changes to the stand-alone interpreter
+
+** Debugger
+
+An initial version of the Guile debugger written by Chris Hanson has
+been added. The debugger is still under development but is included
+in the distribution anyway since it is already quite useful.
+
+Type
+
+ (debug)
+
+after an error to enter the debugger. Type `help' inside the debugger
+for a description of available commands.
+
+If you prefer to have stack frames numbered and printed in
+anti-chronological order and prefer up in the stack to be down on the
+screen as is the case in gdb, you can put
+
+ (debug-enable 'backwards)
+
+in your .guile startup file. (However, this means that Guile can't
+use indentation to indicate stack level.)
+
+The debugger is autoloaded into Guile at the first use.
+
+** Further enhancements to backtraces
+
+There is a new debug option `width' which controls the maximum width
+on the screen of printed stack frames. Fancy printing parameters
+("level" and "length" as in Common LISP) are adaptively adjusted for
+each stack frame to give maximum information while still fitting
+within the bounds. If the stack frame can't be made to fit by
+adjusting parameters, it is simply cut off at the end. This is marked
+with a `$'.
+
+** Some modules are now only loaded when the repl is started
+
+The modules (ice-9 debug), (ice-9 session), (ice-9 threads) and (ice-9
+regex) are now loaded into (guile-user) only if the repl has been
+started. The effect is that the startup time for scripts has been
+reduced to 30% of what it was previously.
+
+Correctly written scripts load the modules they require at the top of
+the file and should not be affected by this change.
+
+** Hooks are now represented as smobs
+
* Changes to Scheme functions and syntax
** Readline support has changed again.
This should work at any time, including from the guile prompt.
+To avoid confusion about the terms of Guile's license, please only
+enable readline for your personal use; please don't make it the
+default for others. Here is why we make this rather odd-sounding
+request:
+
+Guile is normally licensed under a weakened form of the GNU General
+Public License, which allows you to link code with Guile without
+placing that code under the GPL. This exception is important to some
+people.
+
+However, since readline is distributed under the GNU General Public
+License, when you link Guile with readline, either statically or
+dynamically, you effectively change Guile's license to the strict GPL.
+Whenever you link any strictly GPL'd code into Guile, uses of Guile
+which are normally permitted become forbidden. This is a rather
+non-obvious consequence of the licensing terms.
+
+So, to make sure things remain clear, please let people choose for
+themselves whether to link GPL'd libraries like readline with Guile.
+
** regexp-substitute/global has changed slightly, but incompatibly.
If you include a function in the item list, the string of the match
Return #t if OBJ is a hook, otherwise #f.
+*** New function: make-hook-with-name NAME [ARITY]
+
+Return a hook with name NAME and arity ARITY. The default value for
+ARITY is 0. The only effect of NAME is that it will appear when the
+hook object is printed to ease debugging.
+
*** New function: hook-empty? HOOK
Return #t if HOOK doesn't contain any procedures, otherwise #f.
Returns true iff OBJECT is a directory stream --- the sort of object
returned by `opendir'.
+** New function: using-readline?
+
+Return #t if readline is in use in the current repl.
+
+** structs will be removed in 1.4
+
+Structs will be replaced in Guile 1.4. We will merge GOOPS into Guile
+and use GOOPS objects as the fundamental record type.
+
* Changes to the scm_ interface
+** structs will be removed in 1.4
+
+The entire current struct interface (struct.c, struct.h) will be
+replaced in Guile 1.4. We will merge GOOPS into libguile and use
+GOOPS objects as the fundamental record type.
+
** The internal representation of subr's has changed
Instead of giving a hint to the subr name, the CAR field of the subr
It is now possible to extend the functionality of some Guile
primitives by letting them defer a call to a GOOPS generic function on
-argument mismatch. This functionality is enabled with the GOOPS
-primitive
-
- enable-primitive-generic! PRIMITIVE ...
-
-It is then possible to extend the primitive(s) by defining methods for
-them without loss of efficiency in normal evaluation.
+argument mismatch. This means that there is no loss of efficiency in
+normal evaluation.
Example:
- (use-modules (oop goops))
- (enable-primitive-generic! +)
+ (use-modules (oop goops)) ; Must be GOOPS version 0.2.
(define-method + ((x <string>) (y <string>))
(string-append x y))
- + will still be as efficient as usual in numerical calculations, but
- can also be used for concatenating strings.
++ will still be as efficient as usual in numerical calculations, but
+can also be used for concatenating strings.
- Who will be the first one to extend Guile's numerical tower to
- rationals? :)
+Who will be the first one to extend Guile's numerical tower to
+rationals? :) [OK, there a few other things to fix before this can
+be made in a clean way.]
*** New snarf macros for defining primitives: SCM_GPROC, SCM_GPROC1
New function: SCM scm_call_generic_2 (GENERIC, ARG1, ARG2)
New function: SCM scm_call_generic_3 (GENERIC, ARG1, ARG2, ARG3)
+** Deprecated function: scm_make_named_hook
+
+It is now replaced by:
+
+** New function: SCM scm_create_hook (const char *name, int arity)
+
+Creates a hook in the same way as make-hook above but also
+binds a variable named NAME to it.
+
+This is the typical way of creating a hook from C code.
+
+Currently, the variable is created in the "current" module.
+This might change when we get the new module system.
+
+[The behaviour is identical to scm_make_named_hook.]
+
+
\f
Changes since Guile 1.3:
This is the typical way of creating a hook from C code.
-Currently, the variable is created in the root module. This will
-change when we get the new module system.
+Currently, the variable is created in the "current" module. This
+might change when we get the new module system.
** The smob interface