Memory management design
Paulo Pinto
pjmlp at progtools.org
Wed Jul 10 03:56:47 PDT 2013
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.
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.
--
Paulo
More information about the Digitalmars-d
mailing list