Most functions represent simple and cheap string-slicing operations. In
some cases, however, new memory must be allocated, and this increases
the cost of the operation by orders of magnitude. As some of these
cases may not be very obvious, I think it is best they are explicitly
mentioned in the documentation.
Having the January deprecations and February deprecations in the same
month seems a bit much to me, since we managed to have both of those
months have quite a few, whereas the next few months have very few if
any. And we're close to release too, so I'd prefer to avoid causing
issues by deprecating them now.
This enables the test suite to build with the -property switch enabled.
std.cpuid: vendor()/processor() have not been converted to properties in accordance to core.cpuid.
std.xml: Element.text() cannot be a property due to the optional parameter.
There are still a few left which cannot be enabled due to compiler bugs
or other parts of Phobos not being correctly annotated, but we're
getting there. ;) The remaining ones are all clearly marked with TODO
comments.
Unfortunately, I was unable to do so for dirName() due to its
first statement:
enum currentDir = cast(C[]) ".";
The reason is that it is not possible to create an enum of an
inout type.
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.
- Changed global fixed-length string constants to manifest constants.
- Changed generic functions' parameters from String to Char[] to deal with fixed-length strings.
- Explicitly typed local constants (enums) in dirname().
- Fixed bugzilla 4260: windows & basename.
- Made dirname() tolerant of excess path separators (e.g. "/usr//src").
- Fixed dirname() to deal with Windows' "current directory of a drive" case (e.g. "C:.").
- Made basename() more generic.
- Added more unittests for dirname() and basename().
- Changed version(Win32) to version(Windows) as the module doesn't depend on pointer size.
- Added guard assertion for unknown platforms.