DIP60: @nogc attribute
Mike via Digitalmars-d
digitalmars-d at puremagic.com
Tue Apr 15 18:57:28 PDT 2014
On Tuesday, 15 April 2014 at 17:01:38 UTC, Walter Bright wrote:
> http://wiki.dlang.org/DIP60
>
> Start on implementation:
>
> https://github.com/D-Programming-Language/dmd/pull/3455
First of all, I have the following suggestions for the DIP:
* Articulate a more thorough motivation for this feature other
than to give users what they want.
* Summarize previous discussions and provide links to them.
* Provide some justification for the final decision, even if
it's subjective.
I don't believe users hesitant to use D will suddenly come to D
now that there is a @nogc attribute. I also don't believe they
want to avoid the GC, even if they say they do. I believe what
they really want is to have an alternative to the GC.
I suggest the following instead:
1. Provide the necessary druntime hooks to enable developers to
create a variety of memory management implementations.
2. Given these hooks and ideas that have been discussed in the
community and presented at DConf, improve D's default GC.
3. Implement a variety of alternative memory managers (official
and unofficial) that can be compiled and/or linked into druntime
and/or the program.
Alternative memory managers could include the following:
* Default D2 mark-and-sweep GC for backward compatibility
* Concurrent, precise or otherwise improved D2 mark-and-sweep GC
* Reference counting with mark-and-sweep fallback
* Automatic malloc, manual free
* Manual malloc, manual free
* {Insert your favorite here}
Users can use 'if version(x)' if they wish to support more than
one memory management scheme, and their choice forces them to
change their idioms.
I suspect some of the motivation for this is to give customers
"faster horses". I would be surprised if a @nogc attribute
increased D's appeal, and I think efforts would be better
allocated to some form of the above.
Bottom line:
IMO, memory management is an implementation detail of the problem
domain, not the language, and it's implementation should be
delegated to a library or to the programmer.
Mike
More information about the Digitalmars-d
mailing list