| |
|
Johan
Posted in reply to Andrei Alexandrescu
| On Monday, 1 November 2021 at 00:05:30 UTC, Andrei Alexandrescu wrote:
> On 10/31/21 2:37 PM, Johan wrote:
>> On Sunday, 31 October 2021 at 17:32:07 UTC, Andrei Alexandrescu wrote:
>>>
>>> I'd say if we get rid of autodecoding that would be a solid release attainable in good time. It would also provide a model for all future evolution - v3, v4, ...
>>
>> Hi Andrei,
>> Are you not worried about increasing the knowledge required to use and understand D? What I mean is: if the _standard_ library is going to be versioned, users will have to remember the differences between all versions of it.
>
> Thanks for asking.
>
> I have zero worries about that. Negative if at all possible.
>
> [...]
>
> There is stuff added to C++11, improved in C++14, and deprecated in C++17. And nobody bats an eye.
>
> Given the above and also the perennial stagnation the D library has been in, I'd say it's version or die.
OK. Just note that C++11,14,17 is a 3 year update schedule, whereas currently the D compiler releases at breakneck pace of 3 months. I really hope the versioned stdlib releases will not move at that pace.
> The fact that a solution turned out to be so simple is actually evidence that the community has been missing the point for years, instead of just working on the top priority.
>
>> I'm sorry to derail the topic of this thread, but rather than a discussion of how to implement the versioning, I would like to see a discussion first about what the user will see and how he is supposed to use it. I think the implementation of it is the easy part.
>
> I very strongly disagree.
Perhaps you misunderstood my point, but reading your mail I see we agree on most :) As you wrote a few sentences up, at least you agree that implementation is indeed easy ;-)
Just having clear examples of some code would really help paint the picture that indeed the future is bright with versioned stdlib.
Breakage can be OK, if done deliberately and in a 'nice' way for the user to deal with; and versioning deliberately prevents breakage.
>> Is the user expected to completely migrate to use std.v3, or should he use a mix of std.v1, std.v2, std.v3?
>
> Up to them.
This is a big statement. For me this means:
- v1 support is 'everlasting' and bugfixes will keep landing there too.
- v2, v3, v4 will contain _all_ functionality that v1 has, and version x may be somewhere halfway on the path between v1 behavior and end goal behavior (e.g. some functions still do autodecoding and others don't). Another path would be to only add to v2 the functions that have changed, and for functionality that did not change the user should keep using v1.
>> Will there be autodecoding functions in v3?
>
> Probably not. But there will be decoding functions in v3.
Removing the "auto" part sounds very good indeed.
-Johan
|