Hi,
Closure CVS now depends on CXML's rune implementation and XML parser.
I had postponed this commit for a long time, because the most interesting feature to me is the "character rune" implementation in CXML. However, there are many places in Closure were the rune abstraction was not being used entirely correctly, leaving Closure broken with character runes. After an evening of hacking, Closure can now render its homepage using character runes. Encouraged by that success, I decided to finally commit the patch.
Note that my changes will most likely have left many of these little bugs in place. If you get any errors about characters not being integers, you can try one of two solutions:
a) Switch to integer runes using (pushnew :rune-is-integer *features*) before loading anything.
Make sure to recompile both CXML and Closure after changing this setting.
b) Fix the code to correctly use runes.
That's mostly trivial. Just write #/U+0020 instead of 32; write #"foo" instead of #.(map 'vector #'char-code "foo"); use rune-code instead of identity when codes are really needed even on unicode-aware lisps; similarly rune-char when characters are needed even on non-unicode lisps. Etc.
Note that the CSS parser is a special case, it uses integers larger than 2^16 in places and can't be switches to characters easily.
d.