@gc attribute for bypassign @nogc

bitwise via Digitalmars-d digitalmars-d at puremagic.com
Mon Jul 25 19:42:52 PDT 2016


On Tuesday, 26 July 2016 at 01:07:27 UTC, Chris Wright wrote:
> On Mon, 25 Jul 2016 15:46:54 +0000, bitwise wrote:
>
>> On Monday, 25 July 2016 at 07:43:34 UTC, rikki cattermole 
>> wrote:
>>> I've been saying for a very long time we need @assumenogc 
>>> attribute like we have @trusted for @safe.
>> 
>> So I'm not crazy then ;)
>> 
>> I'm wondering if Andrei and Walter consider @trusted a win 
>> though. They seem to have such firm stances on certain issues 
>> that it makes me wonder if they consider things like @trusted 
>> a liability.
>> 
>> Personally, I lean way to the side of flexibility, and believe 
>> a good language shouldn't force you to code a certain 
>> way(within reason). I feel like this type of feature is very 
>> reasonable.
>> 
>>      Bit
>
> @nogc conflates "doesn't allocate memory from the GC heap 
> because I don't want my application to use the GC at all" with 
> "doesn't cause GC collection pauses".
>
> The latter can have a @assumenogc annotation that works -- you 
> call GC.disable and GC.enable as appropriate. The former can't.

Fair point.

You got me thinking though. For my intended usage, I don't 
actually need errors for GC allocation, and that may actually be 
inappropriate. I just need to make a best effort to avoid 
allocations.

Something like @warngc could work nicely. It could function 
exactly as @nogc with the exception that it issued warnings 
instead of errors.

I feel like some people reading this would be very quick to scold 
me for "premature optimization", and recommend a profiler, but in 
the case of 30-60 fps games, it's practically guaranteed that you 
will eventually run into performance problems. Especially on 
mobile devices. So proactively writing good code can save you a 
lot of headache.

     Bit



More information about the Digitalmars-d mailing list