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