Top 5

downs default_357-line at yahoo.de
Thu Oct 9 13:08:28 PDT 2008


Andrei Alexandrescu wrote:
> downs wrote:
>> Andrei Alexandrescu wrote:
>>> Ok, per Aarti's suggestion: without speaking officially for Walter,
>>> let me ask this - what do you think are the top issues you'd like
>>> to see fixed in D?
>>>
>>> Andrei
>>
>> Let me throw in mine as well.
>>
>> As per request, I won't list enhancements, only things I perceive to
>> be issues with D as it _currently_ is.
>>

Oh my god somebody important answered. I'm really calm right now and I'm hoping to finish writing this response before the wave of excitement hits.

>> 1) the Phobos/Tango schism.
> 
> Consider it done.
> 

You have my gratitude.

>> 2) CTFE leaks. (been bitten by this recently)
> 
> Yah.
> 

Good to know I'm not the only one.

>> 3) the Exception/Error problem (they're different things, they
>> shouldn't inherit!)
> 
> I think Exception should inherit Error.
> 

I agree. Certainly a step up from Error inheriting Exception! :)

>> 4) std.zip
> 
> Haven't gotten around to it, but I promise I will. I also have a tar
> file reader hanging around my code somewhere, but I'd first need to work
> on an extensible archive interface first.
> 
>> 5) contracts under inheritance.
> 
> Go on...
> 

Basically, contracts imply that a method "promises" to behave in a certain way.

Thus, any subclasses' methods (the public ones at least) should relax the in { } of the "parent" method, and strengthen the out { }, in a logical extension of covariance and contravariance.

The first of those works. The second, however, does not.

Here's some code that demonstrates the problem.

class A {
	int test()
		out(result) { assert(result < 10); }
		body { return 8; }
}
class B : A {
	override int test() { return 15; }
}

import std.stdio;

void main() {
	A a = new B;
	writefln(a.test()); // violates contract, but does not fail.
}

>> Feature improvements would be:
>>
>> 1) AST manipulation at compile-time (this might supercede and
>> deprecate templates _and_ CTFE by merging them into a common
>> component) 2) auto return type 3) reference types 4) tuple syntax 5)
>> trailing delegates.
> 
> I think this won't come around before D3.
> 

I wouldn't expect it any earlier.

>> Of course, all of these have been brought up before (and mostly
>> ignored), so I don't hold much hope.
> 
> I understand.
> 
> 
> Andrei

Thank you for taking the time to read the original post, and your response.

 --downs



More information about the Digitalmars-d mailing list