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
+2004-10-04 Marius Vollmer <marius.vollmer@uni-dortmund.de>
+
+ * error.c (scm_wrong_type_arg): Do not talk about "argument" for
+ pos == 0.
+
+ Keywords no longer store a 'dash symbol'. Instead, they store a
+ symbol with their real name.
+
+ * keywords.h, keywords.c, deprecated.h, deprecated.c
+ (SCM_KEYWORDP, SCM_KEYWORDSYM): Deprecated and implemented in
+ terms of scm_is_keyword and scm_keyword_dash_symbol.
+
+ * keywords.h, keywords.c, discouraged.h, discouraged.c
+ (scm_make_keyword_from_dash_symbol, scm_keyword_dash_symbol,
+ scm_c_make_keyword): Discouraged.
+
+ * keywords.h, keywords.c (scm_symbol_to_keyword,
+ scm_keyword_to_symbol): Implemented in C.
+ (scm_is_keyword, scm_from_locale_keyword,
+ scm_from_locale_keywordn): New.
+
+ * goops.c: Replaced SCM_KEYWORDP with scm_is_keyword.
+
+ * snarf.h (SCM_KEYWORD, SCM_GLOBAL_KEYWORD): Use
+ scm_from_locale_keyword instead of scm_c_make_keyword.
+
+ * keywords.c (scm_symbol_to_keyword): Use SCM_ASSERT_TYPE for a
+ better error message.
+
+ * deprecated.c: Include discouraged.h and keywords.h.
+
+ * read.c (scm_lreadr): Simply do (symbol->keyword (read)) after
+ reading '#:' or ':'. See NEWS for consequences.
+
2004-09-29 Marius Vollmer <marius.vollmer@uni-dortmund.de>
* read.c (scm_lreadr): Revert change from 2004-09-22: string