DMD needs branches

Russell Lewis webmaster at villagersonline.com
Fri Apr 13 10:16:01 PDT 2007


Lionello Lunesu wrote:
> How's a post in D.announce "unleashing it on the general public"??
> 
> I'd say: if it ain't broke, don't 'fix' it. Meaning that if you have a D 
> that works for you, don't upgrade? And if you want to play with new 
> stuff, you upgrade.

The problem is that this doesn't work in the real world with real 
projects.  Imagine that you have a gigantic project (100,000 lines or 
more), and late in the game you stumble across some small (but 
important) bug.  You work on it, and finally realize that the root cause 
is in the compiler: it is producing incorrect code, or whatever.

You post a bug, and the response is, "This bug was fixed in version 
1.2.3.4."  Problem is, 1.2.1.2 introduced a major change to the language 
which will break 1000s of lines of your code.  Or, worse yet, there have 
been many small changes to the language...and you don't know if they 
would break your code or not.  If you pick up the new compiler, you must 
first test build the entire project, then start your test over, pretty 
much from scratch, in order to confirm that nothing is subtly broken. 
This isn't going to happen.

So what do you do now?  Do you rewrite your whole project so that you 
can pick up the new compiler?  Do you find some sort of hackish 
workaround in your code to avoid the bug?

I face this problem all the time at work.  We have released a large, 
expensive product to the field.  We have customers who hit bugs (and our 
QA department, while reduced in size, is still active and finding new 
bugs).  We are required to fix these bugs and periodically release new 
versions of the microcode...but we must never break what "works" in the 
field.  Breakage is the Cardinal Sin of my development group.  Every new 
(or changed) feature in D is potentially Breakage, which is why, IMHO, 
somebody (perhaps not Walter) needs to maintain a "stable" branch.

Russ



More information about the Digitalmars-d mailing list