The modules are still available, tho, and you could use them together
with a renaming import, for example.
-** Guile now includes its own version of libltdl.
+** Guile no longer includes its own version of libltdl.
-We now use a modified version of libltdl that allows us to make
-improvements to it without having to rely on libtool releases.
+The official version is good enough now.
** The --enable-htmldoc option has been removed from 'configure'.
substring/copy, and substring/read-only. See the manual for more
information.
-** String literals are now read-only.
+** Backtraces will now highlight the value that caused the error.
+
+By default, these values are enclosed in "{...}", such as in this
+example:
+
+ guile> (car 'a)
+
+ Backtrace:
+ In current input:
+ 1: 0* [car {a}]
+
+ <unnamed port>:1:1: In procedure car in expression (car (quote a)):
+ <unnamed port>:1:1: Wrong type (expecting pair): a
+ ABORT: (wrong-type-arg)
+
+The prefix and suffix used for highlighting can be set via the two new
+printer options 'highlight-prefix' and 'highlight-suffix'. For
+example, putting this into ~/.guile will output the bad value in bold
+on an ANSI terminal:
+
+ (print-set! highlight-prefix "\x1b[1m")
+ (print-set! highlight-suffix "\x1b[22m")
-Use string-copy or similar to make a copy if you really want to modify
-such a string.
** 'gettext' support for internationalization has been added.
intended only for kluges and temporary fixes and for debugging, not
for ordinary code.
+** Keyword syntax has been made more disciplined.
+
+Previously, the name of a keyword was read as a 'token' but printed as
+a symbol. Now, it is read as a general Scheme datum which must be a
+symbol.
+
+Previously:
+
+ guile> #:12
+ #:#{12}#
+ guile> #:#{12}#
+ #:#{\#{12}\#}#
+ guile> #:(a b c)
+ #:#{}#
+ ERROR: In expression (a b c):
+ Unbound variable: a
+ guile> #: foo
+ #:#{}#
+ ERROR: Unbound variable: foo
+
+Now:
+
+ guile> #:12
+ ERROR: Wrong type (expecting symbol): 12
+ guile> #:#{12}#
+ #:#{12}#
+ guile> #:(a b c)
+ ERROR: Wrong type (expecting symbol): (a b c)
+ guile> #: foo
+ #:foo
+
** 'while' now provides 'break' and 'continue'
break and continue were previously bound in a while loop, but not
There is no replacement for undefine.
+* The functions make-keyword-from-dash-symbol and keyword-dash-symbol
+ have been discouraged.
+
+They are relics from a time where a keyword like #:foo was used
+directly as a Tcl option "-foo" and thus keywords were internally
+stored as a symbol with a starting dash. We now store a symbol
+without the dash.
+
+Use symbol->keyword and keyword->symbol instead.
+
* Changes to the C interface
new string representation, scm_symbol_to_string does not need to copy
and is thus quite efficient.
-** Some string and symbol functions have been discouraged.
+** Some string, symbol and keyword functions have been discouraged.
They don't fit into the uniform naming scheme and are not explicit
about the character encoding.
SCM_SYMBOL_HASH -> scm_hashq
SCM_SYMBOL_INTERNED_P -> scm_symbol_interned_p
+ scm_c_make_keyword -> scm_from_locale_keyword
+
+** The functions scm_keyword_to_symbol and sym_symbol_to_keyword are
+ now also available to C code.
+
+** SCM_KEYWORDP and SCM_KEYWORDSYM have been deprecated.
+
+Use scm_is_keyword and scm_keyword_to_symbol instead, but note that
+the latter returns the true name of the keyword, not the 'dash name',
+as SCM_KEYWORDSYM used to do.
+
** SCM_CELL_WORD_LOC has been deprecated.
Use the new macro SCM_CELL_OBJECT_LOC instead, which returns a pointer