[dmd-beta] D 1.075 and 2.060 betas 2

Andrei Alexandrescu andrei at erdani.com
Mon Jul 30 09:05:07 PDT 2012


On 7/30/12 11:03 AM, Don Clugston wrote:
> On 30 July 2012 16:28, Andrei Alexandrescu<andrei at erdani.com>  wrote:
>> On 7/30/12 10:27 AM, David Simcha wrote:
>>>
>>> So is http://d.puremagic.com/issues/show_bug.cgi?id=8428  officially a
>>> wontfix for this release?
>>
>>
>> I think it's quite important we fix that one and its ilk.
>
> Bug 5939 seems to be a Phobos design flaw, and this one is probably related.
> Unfortunately, I don't think we can fix the problem other than by
> ripping all Voldemort types out of Phobos. Voldemort Types now appear
> to be a concept that has tragically flawed semantics, and also has
> poor performance (see
> http://d.puremagic.com/issues/show_bug.cgi?id=5939). Removing them
> would be a big change to make this late in a release cycle.
> I don't know what to do here.

OK, let's step back for just a second here.

The first response to 
https://github.com/D-Programming-Language/phobos/pull/728 is it reflects 
a problem with the compiler.

My conjecture (and please correct me if I'm wrong) is there should be no 
difference between a Voldemort static struct (emphasis on STATIC, which 
is not currently used in map) and a classic struct defined outside map. 
I'm saying this because I see no difference in what state is available 
and how code would be generated between the two. It's a simple name 
visibility issue.

If that's correct, the fix in 
https://github.com/D-Programming-Language/phobos/pull/728 should simply 
add "static" to the Voldemorts, and implement the same functionality 
that it's currently implementing.

Longer term, it has become obvious to me that we need a clear and simple 
mechanism for a function to save another function passed by alias, even 
if that function holds state. That must happen regardless of interaction 
with Voldemort types. We must have a mean do e.g. define a scope 
delegate that holds the alias function and is able to call it. This has 
been a long-standing problem that we've avoided in limited cases by 
relying on the built-in frame pointer.


Andrei


More information about the dmd-beta mailing list