On Friday, 18 April 2014 at 14:45:37 UTC, Byron wrote:
On Thu, 17 Apr 2014 11:55:14 +0000, w0rp wrote:
I'm not convinced that any automatic memory management scheme
will buy
much with real time applications. Generally with real-time
processes,
you need to pre-allocate. I think GC could be feasible for a
real-time
application if the GC is precise and collections are
scheduled, instead
of run randomly. Scoped memory also helps.
I thought the current GC only ran on allocations? If so @nogc
is *very*
useful to enforce critical paths. If we added a @nogcscan on
blocks that
do not contain pointers we maybe able to reduce the collection
time, not
as good as a precise collector. I would think we can get
decent compiler
support for this (ie. no refs, pointers, class, dynamic array).
You can actually prevent scanning/collection already without much
difficulty:
GC.disable();
scope(exit) GC.enable();
I feel like @nogc is most useful in avoiding surprises by
declaring your assumptions. Problems like how toUpperInPlace
would still allocate (with gusto) could much more easily be
recognized and fixed with @nogc available.