Breaking D2 language/spec changes with D1 being discontinued in a month

Joseph Rushton Wakeling joseph.wakeling at webdrake.net
Wed Nov 28 10:05:03 PST 2012


On 11/28/2012 12:48 PM, Manu wrote:
> If D stabilised on exactly the feature set it offers right now (or even 3 months
> ago), I wouldn't be interested. The lowest level is brittle, and the high level
> is still missing a couple of little details (rvalues -> ref is the key one for me).
> D's fluidity is actually one of it's biggest selling points as far as I'm
> concerned. D seems to accept that mistakes can be fixed and improvements can be
> made, and it should embrace that to an extent, or you end up with C++ long term.
>
> I think the best approach is one that others have suggested, 2 branches,
> 'stable' which is maintained for 6-12 months, and only receives non-breaking
> fixes after they've been tested for a while, and 'dev', which users accept may
> receive breaking changes at any time. Those users will be happy to adapt their
> code as the language moves forward, as I am.

I'd agree but with one caveat -- how do you handle the case of the standard 
library, or indeed any other library?

Obviously, every library developer can choose between maintaining a version that 
works with stable only; maintaining a stable and 'bleeding-edge' version; or 
just bleeding edge.  Presumably for Phobos you'd choose the second of these. 
But then, how do you handle _new_ functionality that may or may not depend on 
breaking changes to the language?

Given that Phobos is still a moving target with new functionality being added on 
a regular basis, it could be a bit of a disappointment to have to wait as long 
as 6 months to see the latest new features.

The same also applies to the downstream compilers like GDC and LDC -- it would 
be frustrating to have to wait so long to see new functionality available here. 
  One way to handle that might be to first do the work to properly separate out 
the frontend, so that updates can be merged immediately into GDC/LDC's dev 
versions rather than having to wait for each release.

Finally, even in dev I think it would be useful to still have some formal notice 
of deprecation, so that there's time to anticipate changes.  I'd rather not just 
wake up one morning and find that my code no longer compiles!


More information about the Digitalmars-d mailing list