Thoughts on versioning
schveiguy at gmail.com
Wed Oct 27 14:51:06 UTC 2021
On 10/27/21 10:22 AM, Adam D Ruppe wrote:
> * Removing autodecoding in v2 makes it more general. You can always
> write an autodecode function in terms of a plain function - just do a
> wrapper that adds the decode adapter.
I wish this were true. But there is a fundamental problem with
autodecode -- Phobos claims, for example, that a `string` has no
indexing, yet you can index it. `hasLength!string` is false, yet
`someString.length` works. There are a large amount of places where you
can use strings, that you can't use some wrapped autodecoding range.
Want to implicitly cast a `string` to a `const(char)`? No problem! Try
doing this with a custom type.
There is literally no way to reproduce the abomination known as an
autodecoding for backwards compatibility. I tried.
And given that a major focus of v2 is going to be ridding the library of
autodecoding, it means a huge segment of code will need to be redone. I
was actually kind of surprised how much I had to change when I was
trying to do it. It gets to the point where you are thinking "why are we
trying to save this code? Let's just rewrite it".
More information about the Digitalmars-d