== Quote from Walter Bright (newshou...@digitalmars.com)'s article > Tomas Lindquist Olsen wrote: > > On Thu, Mar 26, 2009 at 8:17 PM, Walter Bright > > <newshou...@digitalmars.com> wrote: > >> Denis Koroskin wrote: > >>> One of the breaking changes that I recall was that you made Posix > >>> identifier built-in and thus any custom Posix versioning became an > >>> error. Not sure if it was introduced in 1.041, though, but it is > >>> still a breaking change. > >> It was more of a build system change, but I get your point. It shows that > >> even trivial changes are a bad idea for D1. > >> > > > > Everyone certainly does not think it was a bad idea. If trivial things > > like this sets people off, they should at least look at the problem > > (and comment those few lines) before complaining. > > > > All my humble opinion of course. > To me, it illustrates a fundamental disconnect. One cannot have both a > 100% stable language and yet introduce improvements to it. > As for the does one develop stable code targeting D1 and D2, I would > suggest targeting D1 but be careful to use the string alias for all the > char[]'s, and treat strings as if they were immutable. This will cover > 90% of any source code changes between D1 and D2, perhaps even more than > 90%. It's also very possible to write D1 code using the immutability > style, in fact, I advocated it long before D2 (see all the old threads > discussing Copy On Write). If code follows the COW principle, it should > port from D1 to D2 with little more than a few cosmetic changes.
One minor thing in druntime that may help is that opEquals() returns an equals_t, which evaluates to bool in D2. It would probably be worth changing the declaration in D1 to have a similar alias that evaluates to int. That should help address another minor inconsistency between D1 and D2.