D Language 2.0

Andrei Alexandrescu SeeWebsiteForEmail at erdani.org
Thu Jan 21 19:33:26 PST 2010


Craig Black wrote:
> 
> "Andrei Alexandrescu" <SeeWebsiteForEmail at erdani.org> wrote in message 
> news:hj8gd7$2soe$1 at digitalmars.com...
>> Craig Black wrote:
>>>
>>> "Andrei Alexandrescu" <SeeWebsiteForEmail at erdani.org> wrote in 
>>> message news:hj7vnu$2008$1 at digitalmars.com...
>>>> BCS wrote:
>>>>> Hello Andrei,
>>>>>
>>>>>> The nice part about refcounting is that for the most part you don't
>>>>>> need to cripple the language.
>>>>>>
>>>>>
>>>>> I think people are trying to say that disallowing use of GC stuff 
>>>>> wouldn't cripple the language.
>>>>
>>>> Well it's a fact that there would be fewer idioms and options 
>>>> accessible. So I didn't mean it in a derogatory way as much as a 
>>>> factual statement.
>>>>
>>>>> Also there is one thing that -nogc would have over what you are 
>>>>> talking about; you could use it on some modules and not others. If 
>>>>> I have some performance critical code where attempting to use the 
>>>>> GC would break it's perf contract, I can put it in it's own module 
>>>>> and compile just it with -nogc and then link it in with code that 
>>>>> does use the GC.
>>>>
>>>> Meh. This has been discussed in the C++ standardization committee, 
>>>> and it gets really tricky real fast when you e.g. use together 
>>>> several libraries, each with its own view of memory management. My 
>>>> impression: don't.
>>>
>>> There are certainly challenges, even perhaps some that I haven't 
>>> thought of, with mixing manual memory management and GC code.  But 
>>> perhaps there is a bigger problem with the approach you describe.  
>>> Correct me if I'm wrong, but it seems that what you propose is a 
>>> -nogc option that would fragment all D code into two incompatible 
>>> groups.  If my -nogc code could not be used with anyone else's D 
>>> code, then what I have is not a dialect of D at all, but a different 
>>> incompatible language.
>>>
>>> I know this issue is a challenging problem from a language design 
>>> standpoint, and I see why you would have some disdain for it.  
>>> However, this is not an impossible problem to solve.  For example, I 
>>> believe Managed C++ does this, albeit with some weird syntax, but 
>>> this proves that it can be done.  Anyway, just my 2 cents.
>>
>> It's reasonable to say that you decide at application design level 
>> what memory management approach you want to choose. That doesn't 
>> fragment the community. The decision is similar to many others made at 
>> the same level: libraries used, build flags, target platform(s), 
>> pointer size (32 vs. 64, not an option yet for dmd), etc.
>>
>> Andrei
> 
> Are we talking about the same thing here?  The things you mention here 
> do not create two incompatible styles of programming.  I would like to 
> point out how great it is that Phobos and Tango can be compiled together 
> in the same application.  Now they are interoperable.  If -nogc code 
> can't be used together with GC code, then we create a similar schism as 
> having two incompatible "standard" libraries.

Well if we get into details we'll figure that things must be quite 
different for different memory management models. For example Object in 
ref-counted mode is not a class anymore, it's a struct. So now there's 
going to be two parts in an app: those in which Object is a class, and 
those in which Object is a struct. Reconciling those would be a tall order.

Andrei



More information about the Digitalmars-d mailing list