Breaking backwards compatiblity

bearophile bearophileHUGS at lycos.com
Fri Mar 9 15:14:45 PST 2012


Walter:

> While I don't think we need to worry so much at the moment about breaking binary 
> compatibility with new D releases, we do have a big problem with breaking source 
> code compatibility.
> 
> This is why we need to have a VERY high bar for breaking changes.

D will naturally progressively slow down the rhythm of its new breaking changes, but even very old languages introduce some breaking changes (see some of the changes in C++11), and D is not yet mature enough to slow them sharply down now. In D there are some unfinished parts still. Finishing them will probably break something.

Bug fixing are now breaking things in every release, and I don't want to see an arbitrary stop to those improvements now. If you stop breaking changes, we'll not be able to fix a nasty situation like ("Some untidy attributes"):
http://d.puremagic.com/issues/show_bug.cgi?id=3934
In bug 3934 there is a lot of stuff that I'd love to break in the code of the silly programmers that have used it.

Another small breaking change, that I have argued about for years:
http://d.puremagic.com/issues/show_bug.cgi?id=7444

Or this one "Default arguments of out and ref arguments":
http://d.puremagic.com/issues/show_bug.cgi?id=5850
If today people write code with default arguments at ref/out arguments, forbidding those default arguments will break their code.

"A bug-prone situation with AAs":
http://d.puremagic.com/issues/show_bug.cgi?id=3825

Currently string literals concatenation is accepted like this:
auto s = "foo" "bar";
But you have accepted to disallow this statically (and require a ~), after a request of mine. If today people write such code, this will be a breaking change for their code.

Do you want me to list some more bugs now that are small breaking changes? I am willing to discuss each one of them.

Stopping all those improvements right now at once is exceptionally unwise.

Bye,
bearophile


More information about the Digitalmars-d mailing list