www.digitalmars.com         C & C++   DMDScript  

digitalmars.D - Differences between D2.0 and D1.0

reply Paul Anderson <paul.d.anderson.removethis comcast.andthis.net> writes:
Is there a summary somewhere of the differences between 1.0xx and 2.0xx?

This would be handy for someone making a choice for development:  

Does 2.0 have a "must have" feature that 1.0 doesn't? 

Is the feature I'm relying on in 1.0 going to go away someday? 

Is the feature I like only in 2.0 and subject to change or elimination?

I know the intent of the 1.0 version was to have a "stable" base, but having
2.0 in the background doesn't make me confident about committing to 1.0. I'd
like to have a place where I could see what I was getting/giving up.

Paul
Nov 19 2007
parent Robert Fraser <fraserofthenight gmail.com> writes:
Paul Anderson wrote:
 Is there a summary somewhere of the differences between 1.0xx and 2.0xx?
 
 This would be handy for someone making a choice for development:  
 
 Does 2.0 have a "must have" feature that 1.0 doesn't? 
 
 Is the feature I'm relying on in 1.0 going to go away someday? 
 
 Is the feature I like only in 2.0 and subject to change or elimination?
 
 I know the intent of the 1.0 version was to have a "stable" base, but having
2.0 in the background doesn't make me confident about committing to 1.0. I'd
like to have a place where I could see what I was getting/giving up.
 
 Paul

Check the changelog for 2.0; you'll see a number of features. The big ones I think are: * Const (which is going to be changing in the next few releases) * C++ interface * __traits * Closures * Overload sets * Foreach range statement * opStar 1.0 is stable, and will remain so. Most 1.0 features will probably remain in 2.0, also. Right now, 2.0 is in turmoil (the const thing is going to change soon), so I'd recommend sticking to 1.0 if you're new or want to do any real work, while 2.0 is great for exploring & smaller projects where maintainability isn't as big a deal. 1.0 does get a few breaking changes, though -- most notably, a paser bugfix eliminated the ability to do: version(Windows) { extern(Windows): } else { extern(C): } It also changed the .init default property from a variable initializer to a type initializer, which broke some code (and killed a very cool feature, IMO).
Nov 19 2007