Proof of concept for v2 - NO duplication, NO `static if` hell, NO difficulty with interoperability

Johan j at j.nl
Mon Nov 1 11:28:55 UTC 2021


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





More information about the Digitalmars-d mailing list