- Specifically Mule bug fixes.

All functions that work with filenames should support non-ASCII
filenames, and support file-name-coding-system (and
pathname-coding-system, for compatibility).  Bugs have been fixed, and
tests have been added to make sure that write-region and file-truename
work properly with non-ASCII filenames, and properly respect
file-name-coding-system.

XEmacs would crash if you modified a character in a long string (> 8k
bytes) so that the length in its internal representation changed.

        * alloc.c (allocate_string_chars_struct):
        (make_uninit_string):
        (resize_string):
        (verify_string_chars_integrity):
        (compact_string_chars): Now only called for small strings.
        (sweep_strings):
        String allocation rewrite.
        Properly handle resizing big strings.
        Fixes crash when evaluating:
        (aset (make-string 9003 ??) 1 (make-char 'latin-iso8859-1 57))
        Use consistent coding convention.
        Never use xfree_1() directly.
        General cleanup.
        (CHARS_TO_STRING_CHAR): Remove. No longer needed.
        Big strings had unused space at beginning.

- Performance improvements:

The heavily used bytecount_to_charcount was optimized for stretches of
entirely ASCII text.  It has been modified to that it is optimized for
stretches of characters from the same charset.  The speedup is of the
order of 2 or 3 as long as almost all characters have the same charset
as the preceding one.

        * insdel.c (bytecount_to_charcount): Optimize.
        The function used to be optimized for entirely ASCII sequences.
        Now it is optimized for successive characters from the same
        charset.  This also wins big for _mostly_ ASCII sequences.

Try to convert algorithms that iterate over strings to use O(N).

        * fns.c (Ffillarray): Use O(N), not O(N^2) algorithm for strings.

- Testing support

A file specifically dedicated to testing Mule has been added to the
automated test suite.

Here are a few examples of easily understood tests from
test/automated/mule-tests.el, to show the flavor of the test suite
implementation:

  (Assert (coding-system-p (find-coding-system 'binary)))
  (Assert (coding-system-canonical-name-p 'binary))
  (Assert (not (coding-system-alias-p 'binary)))

There is a new file src/tests.c, for running tests via the automated
test suite that can only be run from C.  Currently only
TO_EXTERNAL_FORMAT/TO_INTERNAL_FORMAT tests have been added.