Thoughts on versioning

Andrei Alexandrescu SeeWebsiteForEmail at erdani.org
Tue Oct 26 14:41:38 UTC 2021


On 10/26/21 3:04 AM, Sebastiaan Koppe wrote:
> On Tuesday, 26 October 2021 at 06:03:38 UTC, sarn wrote:
>> On Tuesday, 26 October 2021 at 01:19:29 UTC, Andrei Alexandrescu wrote:
>>> Goals of library versioning:
>>>
>>> - avoid copy-and-paste code duplication across versions
>> This might be overengineering.  Unless new features are going to be 
>> backported to the original std, is there anything wrong with just 
>> forking std to std2?
> 
> Yeah, I kind of agree there, just copy the stuff. Simple and effective; 
> no crazy mixins or module aliases.

Indeed that's simple and would allow trivial concurrent use of the two 
libraries.

I foresee the following challenges:

* Evolution to future versions. Does copying the whole codebase and 
tweaking it scale to e.g. annual releases of Phobos? Five years from now 
we'll have essentially five copypastas. How do you maintain them?

* For maintenance across versions, Adam proposed in discord that we 
leverage git patching. You copy the codebase, master is the most recent, 
and bugfixes are cherry-picked into previous releases (which are copies 
of the git tree at defined points in time). I am unclear (as others on 
discord seem to be) about how well this will work and what to do when it 
breaks - e.g. cherry-picking fails etc. Judging by an old refactoring PR 
that I'm trying to rebase - 
https://github.com/dlang/phobos/pull/7638/files - it is nigh impossible. 
And that's just a refactoring that doesn't aim to change semantincs, 
unlike phobos evolution. I am worried this will become a huge drag that 
will discourage us from doing maintenance as much as we are not 
discouraged from doing evolution. We should aim for both.



More information about the Digitalmars-d mailing list