On Thursday, 6 June 2013 at 14:39:03 UTC, Dylan Knutson wrote:
[...]
I don't think that there'll be any performance improvements by
making in place modification functions. Considering under the
hood the path object is just a string, and that string's
reference needs to be changed with each modification, I don't
see how manipulation can be made faster.
Why does _path have to be an immutable string? It could just as
well be a char[], or it could be templated on the character type.
[...]
The more I think about it, the more partial I am to removing
the existing string methods in std.path. At most, using a Path
object increases number of characters typed by 6 (`Path()`).
And even then, chances are you'll be saving characters as
method names can be simplified to remove `path` from them:
buildNormalizedPath -> normalized, isValidPath -> isValid, etc.
Even with user code breaking, 1) D isn't exactly considered a
stable language quite yet; I'm sure that users expect code
breakage with each new release, and 2) it's trivial to convert
code that uses the string based API to the object based API.
I know D isn't 100% stable yet, but bear in mind that this module
was introduced no more than two years ago, as part of the
(still-ongoing) effort to revamp the old modules from the D1
days. It was accepted with a unanimous vote after a
comprehensive review by the D community. And already you want
another breaking redesign? I am strongly opposed to this.