Release process and backwards compatibility

Jesse Phillips Jessekphillips+D at gmail.com
Mon Mar 11 13:57:45 PDT 2013


On Saturday, 9 March 2013 at 07:19:34 UTC, Dicebot wrote:
> Any well-thought change is the way forwards as it improves the 
> language. And is actually a regression.

I disagree with your definition of regression and prefer:

"A return to a former or less developed state."

> You tend to separate "good regressions" and "bad regressions" 
> but there is no possible way to separate those unless you are 
> deep into D development. We have no spec (reference compiler is 
> the spec) and for an end user all those break code equally 
> surprisingly, having good intentions does not help.

I'm not talking hypothetical here, my experience. Update opEquals 
and toHash so they are const/pure/nothrow/fairy dust I'll grumble 
as I now need to update code I didn't write so don't understand 
the ramifications of my changes, but so be it. But to have to 
change it all back the next release because it was too disruptive 
and there might be a different approach that needs taken, that 
brings grumbling to a whole new level. (I'm not as annoyed as I 
make it sound, but I certainly am not sounding annoyed enough for 
many)

> And clearly because changes are _needed_ and bug-fixing can't 
> be stopped, there needs to be clear accepted approach of "how 
> do we break stuff" instead of "breaking stuff is bad". I have 
> attempted to suggest one such approach.

And that is what it comes down to, how do we do it. The Utopia, 
all non-breaking changes are applied to all past releases. We 
need a middle ground, somewhere probably not near the middle. And 
gave my approach.

> This is already accepted as part of new release process, but, 
> unfortunately, does not seem to be executed in practice.

Shouldn't we be trying to get this practiced first? Your 
suggestion still relies on maintaining something other than the 
current dev branch. If we can't get this, what are we left with?

> Problem with maintaining only last 2 releases is that they come 
> out pretty fast, sometimes as fast as once in two months. That 
> does not leave enough time to adapt without sacrificing mundane 
> development.

You can remain on the same compiler version you initially 
programmed for. I'm all for a Long term support like approach, 
but I see that as a secondary thing to properly releasing a dev.

> It is actually the other way around - I want _more_ breaking 
> changes :) And that won't happen while two conflicting goals 
> are pursued at the same time.

A Long Term Support does not allow for more breaking changes, it 
only delays how long before you have to deal with it. There are 
only two options to not have breaking changes, the C++/Windows 
approach (which fails) and never updating your program. But we 
can do a better job managing expectations.


More information about the Digitalmars-d mailing list