On Friday, 2 March 2018 at 02:35:46 UTC, Meta wrote:
D1 -> D2 nearly killed D (can't remember which, but it was either Walter or Andrei that have said this on multiple occasions).

This gets repeated over and over again, but I haven't actually seen any evidence for it.

But even if it is true, I'd say it is just because they did it wrong. There never really was a D1->D2. There was just an ongoing evolution of D where one version was arbitrarily forked off and called D1. Seriously, D1.00 and D 2.00 came out at about the same time: Version D 1.001 Jan 23, 2007; 2.000 Jun 17, 2007.

I remember the biggest troubles I had with D2: immutable being introduced and changing, and a bunch of little library renames.... and they weren't really that big of a deal and btw occurred over the next ~2ish *years*. It wasn't all at once - remember "D2" was just the evolving D. D1 was a random, arbitrary snapshot.

If I were to do a D3, I'd make it opt in at the module level, and keep it so all D code can be compiled together - corresponding features added each step. For example, a "d3 module" is @safe by default. But the @safe semantics are still tehre for a "d2 module", you just annotate it elsewhere. Then there's no breakage and you can still change things.

Reply via email to