What's the current state of D?

Leandro Lucarella llucax at gmail.com
Sat May 9 20:54:21 PDT 2009

Walter Bright, el  9 de mayo a las 11:23 me escribiste:
> Leandro Lucarella wrote:
> >D1 is INCOMPLETE (for example pre/post conditions inheritance are
> >missing). I tend to forget which features are there for real what aren't
> >(there are a few, true, but still).
> Array ops weren't there for a long time, many argued that D1 wasn't complete without them, and a few months ago I added them in.
> As far as I can tell, nobody cared about array ops.
> In C++ land, only one compiler actually completely implements C++98, and
> this is after more than 10 years. (Exported templates and template name
> lookup rules remain unimplemented by major compilers.) (P.S. Digital
> Mars C++ does the correct name lookup rules!) The fact is, nobody
> actually cares about those incomplete features. Nobody uses exported
> templates, even if they are using a compiler that supports it.
> So that leaves contract inheritance. I find it hard to see how not
> having it is a showstopper for using D1. Contracts in D haven't been the
> big win I thought they might be at first. They aren't use much at all.
> There are a lot of other issues that do make a big difference, and those
> are the issues that get attention.

Exported templates was unpractical and unimplementable AFAIK (but I guess
you know that better than me). And C++ is an ISO standard language. D is
not. If something is unpractical and unimplementable in D (I don't think
is the case of contract inheritance) why didn't you removed a long time
ago when you decided that it wasn't useful?

And maybe you are right, but the bottom line is how D is perceived. People
usually don't go through the C++98 standard to learn C++, but it goes
through the D specs to learn D. Nobody talks about exported templates in
C++ because they don't exist in reality, but the D specs talks about
features that are missing in what is supposed to be a finished version.
And that makes D looks bad.

> >Another very *BIG* issue is lack of mainstream tools support.
> >C++98 was finished before starting C++0x. A lot of effort was made to make
> >mainstream tools to support C++. Most tools demangle C++ names (even when
> >they aren't standard!). At least GDB should be able to do that, and
> >Valgrind and GNU binutils, if you want people to be comfortable working
> >with D. There are patches here and there but nothing works out of the box.
> GDB does have an official D mode. There are demanglers for
> D identifiers. Can you submit patches for GDB to the official source
> tree?

Official? I don't see any official support for D in GDB. I can only find
this patches:

And this thread about integrating the patches in GDB:

But I can't see any mention in the official GDB documentation and
certainly it doesn't automatically recognize D programs as such.

> >I think what D1 is *really* missing is that 2 things: completeness and
> >tools support. Without that is really hard to take it seriously.
> >I think the D team should be working more in that direction before
> >finishing D2. I know is very boring comparing it to making D2, but I think
> >that is what is transmitted from D maintainers: "D1 is boring, don't pay
> >attention to it, D2 is fun, let's play with that!". And this is what
> >happening. People are playing with D2 and forgetting to finish D1.
> It isn't about boring. It's about allocating our very limited resources
> for maximum effect. If I thought that contract inheritance was
> a showstopper for D1, it'd move way up on the priority list. But I have
> a hard time believing it is a showstopper, like array ops turned out to
> not be.

I don't think it's a *showtopper*. I'm trying to explain one of the
reasons I think D is perceived as a toy/incomplete/not-ready-for-business
language. But I certainly think D 1.0 should be finished before 2.0 though

> Most of the work I do on dmd is bug fixes, and nearly all of those wind
> up in D1 as well. It's just not true that D1 is being overlooked or
> ignored, and the D1 changelog should amply illustrate that.
> http://www.digitalmars.com/d/1.0/changelog.html

I know that. Everybody knows that. And I don't think anybody is arguing
that. Lack of bug-fixing is not a mentioned problem AFAIK.

> >The Tango vs. Phobos is still a *BIG* issue for D1. I think don't
> >addressing that is a huge error. It's only hurting D1 and preventing its
> >adoption.
> Doing a merge would be a very breaking change. D2's support for Tango is probably the biggest breaking change in moving D1 code to D2.

How is that? Most runtime code is not used by the user directly. And for
this item I think not merging it does more damage than introducing
a breaking change (is much better to introduce a breaking change to solve
this problem than to add a predefined Posix version ;).

Leandro Lucarella (luca) | Blog colectivo: http://www.mazziblog.com.ar/blog/
GPG Key: 5F5A8D05 (F8CD F9A7 BF00 5431 4145  104C 949E BFB6 5F5A 8D05)

More information about the Digitalmars-d mailing list