D Language 2.0
Craig Black
cblack at ara.com
Fri Jan 22 08:33:17 PST 2010
Andrei Alexandrescu Wrote:
> 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
That's the problem. We ARE talking about two different things. You are thinking -nogc should denote reference counting. If we are talking about reference counting, then I agree with you. However, circular references become an issue, and D code compiled this way will have to be fixed somehow to resolve this, perhaps using weak pointers as you mentioned earlier.
-Craig
More information about the Digitalmars-d
mailing list