In particular, functions which make changes in place have now been
renamed to have InPlace in their name as discussed on the newsgroup
(with versions with the old names scheduled for deprecation). I also
created versions for those functions which do _not_ do the changes in
place, but in at least a couple of cases, they had to be left commented
out until the old versions which do make the changes in place have
actually been removed. I'd love to just remove the old versions, but
that would silently break code, so tough luck for now.
Now, appending a range beats builtin append. I noticed that appending a range does not beat appending single elements when the size of the range is small (such as one element). There are probably heuristics we can find to optimize the copying, but I have a feeling these should just go into the builtin array copy code anyways.
Fixes bugzilla 5198
overlap: nested functions min() and max() are ad-hoc workaround to make the function pure nothrow.
front(), back(), popFront() and popBack() depend on std.utf, and they are unchanged for now.
It's not possible to index into void[] arrays, which means that they
cannot be ranges. Therefore, I've added template constraints to
front(), back(), popFront(), and popBack() in std.array that prevents
them from being instantiated with void[].
Removed buffer arg from std.xml.encode since most of the time the data is string data, and the buffer was defined as the same type.
Fixed std.format unittests to not use string-based appenders, since they now cannot be rewritten.
With this fix, Appender and builtin appending should both be callable on the same data without corruption, of course using the builtin append on data held
by an Appender will reallocate.
std.algorithm: defined move with one argument; levenshtein distance generalized to with all forward ranges; take now has swapped arguments
std.array: empty for arrays is now a @property; front and back for a string and wstring automatically decodes the first/last character; popFront, popBack for string and wstring obey the UTF stride
std.conv: changed the default array formatting from "[a, b, c]" to "a b c"
std.range: swapped order of arguments in take
std.stdio: added readln template
std.variant: now works with statically-sized arrays and const data
std.traits: added isNarrowString