What's the current state of D?

Walter Bright newshound1 at digitalmars.com
Sat May 9 11:23:23 PDT 2009


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.

We've got only so many chips (time) to play with, and it's real 
important that we play them for maximum effect.


> 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?


> 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.

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


> 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.


> The result is 2 incomplete, unsupported (by mainstream tools) languages.




More information about the Digitalmars-d mailing list