Memory management design
Paulo Pinto
pjmlp at progtools.org
Wed Jul 10 04:46:45 PDT 2013
On Wednesday, 10 July 2013 at 11:38:35 UTC, JS wrote:
> On Wednesday, 10 July 2013 at 10:56:48 UTC, Paulo Pinto wrote:
>> On Wednesday, 10 July 2013 at 10:40:10 UTC, JS wrote:
>>> On Wednesday, 10 July 2013 at 09:06:10 UTC, Paulo Pinto wrote:
>>>> On Wednesday, 10 July 2013 at 08:00:55 UTC, Manu wrote:
>>>>> On 10 July 2013 17:53, Dicebot <public at dicebot.lv> wrote:
>>>>>
>>>>>> On Wednesday, 10 July 2013 at 07:50:17 UTC, JS wrote:
>>>>>>
>>>>>>> ...
>>>>>>>
>>>>>>
>>>>>> I am pretty sure stuff like @nogc (or probably @noheap. or
>>>>>> both) will have
>>>>>> no problems in being accepted into the mainstream once
>>>>>> properly
>>>>>> implemented. It is mostly a matter of volunteer wanting to
>>>>>> get dirty with
>>>>>> the compiler.
>>>>>>
>>>>>
>>>>> I'd push for an ARC implementation. I've become convinced
>>>>> that's what I
>>>>> actually want, and that GC will never completely satisfy my
>>>>> requirements.
>>>>>
>>>>> Additionally, while I can see some value in @nogc, I'm not
>>>>> actually sold on
>>>>> that personally... it feels explicit attribution is a
>>>>> backwards way of
>>>>> going about it. ie, most functions may actually be @nogc,
>>>>> but only the ones
>>>>> that are explicitly attributed will enjoy that
>>>>> recognition... seems kinda
>>>>> backwards.
>>>>
>>>> That is the approach taken by other languages with untraced
>>>> pointers.
>>>>
>>>> Actually I prefer to have GC by default with something like
>>>> @nogc where it really makes a difference.
>>>>
>>>> Unless D wants to cater for the micro-optimizations folks
>>>> before anything else, that is so common in the C and C++
>>>> communities.
>>>>
>>>
>>> It's not about any micro-optimizations. Many real time
>>> applications simply can't use D because of it's stop the
>>> world GC(at least not without a great amount of work or
>>> severe limitations).
>>>
>>> By having a @nogc attribute people can start marking their
>>> code, the sooner the better(else, at some point, it because
>>> useless because there is too much old code to mark). @nogc
>>> respects function composition... so if two functions do not
>>> rely on the gc then if one calls the other it will not break
>>> anything.
>>>
>>> So, as libraries are updated more and more functions are
>>> available to those that can't use gc code, making D more
>>> useful for real time applications. If custom allocation
>>> methods ever come about then the @nogc may be obsolete are
>>> extremely useful depending on how the alternate memory models
>>> are implemented.
>>>
>>> Code that only use stack allocation or static heap allocation
>>> have no business being lumped in with code that is gc
>>> dependent.
>>
>> I do agree D needs something like @nogc, something like
>> untraced pointer as I mentioned.
>>
>> What I am speaking against is making GC a opt-in instead of
>> the default allocation mode.
>>
>
> I agree but it's not going to happen ;/
>
>> In such case it looks more as a workaround instead of fixing
>> the real problem, which is having a better GC.
>>
>> Note that by GC, I also mean some form of reference counting
>> with compiler support to minimize increment/decrement
>> operations.
>
> I don't know if that is a solid statement. ARC is pretty
> different from AGC.
Reference counting is pretty much seen as a primitive form of
garbage collection in the CS literature.
In some books it is usually the first chapter, hence the way I
phrased my comment.
--
Paulo
More information about the Digitalmars-d
mailing list