On Saturday, 1 September 2012 at 02:52:23 UTC, bearophile wrote:
One more comment, a quotation from the DIP18:
Currently, all functions can use garbage collected memory.
Threads that call those functions must be managed by the
garbage collector, which may occasionally suspend them to
perform collection. This can lead to unwanted pauses, that are
not acceptable in some situations, mainly real-time audio/video
processing, gaming, and others.<
C heap functions like malloc(), calloc(), realloc() have the
same problem, their run-time is not deterministic, so if you
don't want pauses a @noheap is useful.
@noheap is not meant to forbid calling low-level
system-specific memory allocation functions.
Bye,
bearophile
It looks very much that several annotations are actually directed
at the compiler or the runtime for specific optimisations.
The @ could be used (or are used) as local compiler switches or
runtime hints.