May 08, 2009
Walter Bright wrote:

> Steve Teale wrote:
>> This is the sort of answer that will kill D. The guy comes back after 2 years, asks a straight question, and get's told "business as usual, we're still arguing among ourselves about what it should be".
>> 
>> Maybe Tiobe is right! Lots of others may not even bother to ask. They just visit the newsgroup, read a page of it, and conclude "same old, same old", and go away.
>> 
>> D should be D, not maybe 1.043, or let's wait a while and see what happens with D2. Potential real users hate uncertainty. If they are going to commit, then D must do so too.
> 
> What bothers me about this sentiment is that every other mainstream language undergoes revision, sometimes major ones, but that never seems to be an excuse for people to not use it.
> 
> For example, C++ is quite in flux with C++0x.
> 
> The only languages that are not undergoing revision are dead ones.

There are some differences though:

- other mainstream languages release new compilers and features every couple of years, you do so every couple of months!

- these other languages go out of their way to make new releases backwards compatible, sometimes at great costs. They almost never completely succeed though.

To be clear, I do think these are good things for D evolution, but most people are wary to invest energy in change. Reflecting back on the commitment to D1, I think this was a good move in two ways: it allowed larger programs and libraries to rely on it and may have freed the way for D2 to incorporate bolder changes.

May 08, 2009
== Quote from dsimcha (dsimcha@yahoo.com)'s article
>
> Awesome.  I actually found a few of these bugs in the past few days, and was meaning to report them.  I guess I don't need to now.  Just out of curiosity, though, you use __gshared in a lot of places and I haven't seen it in any of the discussions.  What is it?

It's a way to declare something as "classic global" so you can sidestep any bugs that crop up with the implementation of 'shared'.  The hope is that you'll eventually just be able to do a search/replace of '__gshared' to 'shared' once everything is working correctly.
May 08, 2009
Walter Bright wrote:

> grauzone wrote:
>> But C++ programs still compile and run correctly with C++0x compilers.
> 
> True enough, but that wasn't true for C++98, or C89. Nobody refused to use C or C++ because of that.
> 
>> I bet none of the projects on dsource are even compilable with dmd2 (even if they were written for D2.0).
> 
> Take any C++ project from 15 years ago and I bet it won't compile today, either.
> 
>> And _many_ projects probably need minor
>> fixes, before they compile with the latest dmd1 compiler.
> 
> Nearly all of those are due to inadvertent reliance on bugs in D1. You see this quite a bit in the C++ world. Every time g++ gets updated, I have to tweak something in my sources.
> 
> Every binary release of dmd is available for download. If you require an unchanging compiler, it's trivial to operate that way. dmd isn't going to auto-update itself and break your compiles.

That's a really good thing imho. I remember when I got the Civilization 4 C++ SDK, it would only compile with the MS 2003 compiler. Which at the time was outdated and unavailable for download in a legal way. It was also 130K LoC and beyond my ability to fix of course, very frustrating.


May 08, 2009
Walter Bright schrieb:
> dsimcha wrote:
>> Exactly my feelings, but I'll add that the time to make huge, sweeping
>> changes
>> like the ones we're seeing now is before the language becomes
>> mainstream.  Once
>> the language has a large base of crufty production code that nobody still
>> understands and can fix quickly and easily when the language changes,
>> it becomes
>> much harder to make these kinds of changes.
> 
> Yes.
> 
> The next D2 update will have one such change, which has been planned for maybe the past year. All static and global variables will default to being thread local (instead of being implicitly shared). Doing this is disruptive, but is critical to credibly supporting multithreaded programming.
> 
> In testing this out, I've uncovered at least a dozen implicit sharing bugs in Phobos. I think this change will have a big payoff for multithreaded code.

can you allow "shared" or "__gshared" in D1 as do-nothing keywords? That
will make it more easy to write code that compiles for D1 and D2.
Or is there a trick to accomplish this?


May 08, 2009
Steve Teale wrote:
> This is the sort of answer that will kill D. The guy comes back after 2 years, asks a straight question, and get's told "business as usual, we're still arguing among ourselves about what it should be".

Last week I asked Andrei what DMD2/Phobos to use, looking for something stable. I wanted to use D2, but he couldn't answer that question. So why is it a problem to give this person an honest answer?

I don't want D2 to be a rush job. Cool things are happening with it. I am, however, impatient for it to be stable, but I'm not upset that it isn't. It just means I won't use D2 for most of my projects just yet.

May 08, 2009
Sean Kelly wrote:
> == Quote from Steve Teale (steve.teale@britseyeview.com)'s article
>> OK so for those who crave stability there is D1.x, but when all the focus appears to be on D2, what level of confidence is afforded to
> D1 users. Can a project Manager cross his heart and say that D1 will still be alive and well in five years time?
> 
> Will that project manager care?  Most build teams don't update compiler
> versions very often--once a version has been settled upon that's pretty
> much it, unless a show-stopping bug appears during development that
> for some reason can't be worked around.  In fact, I can't even see a team
> bothering to speculate about the future popularity of a language when
> choosing it for a project.  The only thing that matters is whether it's a
> good decision today, not five years from now.  If that weren't the case,
> then there would have never been a call for COBOL programmers
> during the Y2K transition.

In the Windows world, you get a new compiler every two to three years, so that's hardly an issue. Similarly with Java.

Open source projects tend to have to support wider ranges of compilers. I've seen OSS projects where they prioritized issues specific to gcc-3.4.2 as highly as any other issue, even if the developers typically used the 4.x branch.
May 08, 2009
Lutger wrote:
> - other mainstream languages release new compilers and features every couple of years, you do so every couple of months!

Rapid evolution is a good thing.  For every improvement that will be made to the D2 language, I'd rather see that improvement in a week than in a couple of years.  *Especially* for improvements that break backwards compatibility.

D2 is incomplete right now.  The faster it evolves, the sooner it'll reach completion, at which point it should be as stable as any language.


-- 
Rainer Deyke - rainerd@eldwood.com
May 08, 2009
dsimcha wrote:
> Just out of curiosity,
> though, you use __gshared in a lot of places and I haven't seen it in any of the
> discussions.  What is it?

__gshared is the "cowboy" approach, it means make it global and I don't care about any weenie synchronization or type checking. It's handy for initial ports of "I just want it to compile, I'll fix it later".

Naturally, it won't be allowed in safe mode.
May 08, 2009
Sean Kelly wrote:
> It's a way to declare something as "classic global" so you can sidestep any bugs
> that crop up with the implementation of 'shared'.  The hope is that you'll
> eventually just be able to do a search/replace of '__gshared' to 'shared' once
> everything is working correctly.

I like the moniker "classic global", or perhaps even better, "global classic" as a term for it.
May 08, 2009
Frank Benoit wrote:
> can you allow "shared" or "__gshared" in D1 as do-nothing keywords? That
> will make it more easy to write code that compiles for D1 and D2.
> Or is there a trick to accomplish this?

I think that making code that will compile under both is an impractical task.