The pragmas have not been as effective as we might have liked, since
they only work with templates and can't tell you where in your code you
need to make changes, and they seemed to have been more annoying to
programmers than helpful, so we're going to discontinue them. We'll
leave them in for stuff that's actually been deprecated until deprecated
has been improved enough to take a message, but we'll leave "scheduled
for deprecation" messages to the documentation and changelog.
Given that these functions probably aren't used very often, we'd
probably be better of making their names longer and more descriptive as
Lars suggested. So, they're now isPrintible, isGraphical, and
isPunctuation.
isWhite, isLower, isUpper, toLower, and toUpper now have Ascii in their
name, which matches what std.unit does with its versions of those
functions. Hopefully, it should also reduce bugs due to using the wrong
function between the ASCII and unicode versions by making the difference
more obvious.
indexOf and lastIndexOf should not work properly with unicode for all
string types (unlike before). As part of that, I also ended up fixing a
bug in std.array.back for strings (wstrings in particular were broken).
I also improved various, related unit tests.
I'm not sure exactly what we want to do with hexDigits. I had originally
added the lowercase a-f to it on the theory that they're valid digits in
hex, but there's code in Phobos which uses std.string.hexdigits.length,
so I adjusted it so that hexDigits is the same as the old hexdigits but
added fullHexDigits for the version with the lowercase letters. Perhaps
folks will have something constructive to say about that in review, but
that's what I'm doing for now.