Plan for Exceptions and @nogc?
Jonathan Marler via Digitalmars-d
digitalmars-d at puremagic.com
Mon Feb 16 23:24:41 PST 2015
On Tuesday, 17 February 2015 at 05:52:23 UTC, philippecp wrote:
> I was wondering the same myself. I think there would be a lot
> of negative side effects to using alternate memory model other
> than GC (non-gc could introduce leaks, on stack has potential
> to be overwritten). For that reason, I think the only choices
> that make sense are that either @nogc functions are also
> nothrow, or that phobos has a set of preallocated immutable
> exceptions that can can thrown.
>
> I personally think that @nogc should be relaxed to exclude
> allocating exceptions since there would be no gc allocation
> other than for exceptional situations. I suspect that having
> code that relies on exception for main case logic is far worse
> for performance than any gc overhead anyway and is a pattern
> everyone knows to avoid.
Relaxing the definition of @nogc to exclude exceptions could be
an acceptable compromise. However, the nature of an exception is
that it is allocated when it is created, and deallocated after it
is caught. This model fits nicely with scope semantics. The
code catching the exception would catch a "scoped" reference
which means it would be responsible for cleaning up the
exception. It would still be allocated on the heap, but it
wouldn't be GC memory. This is how I think exceptions should
have been implemented in the first place, but back then the GC
wasn't a big deal and scope didn't exist yet.
More information about the Digitalmars-d
mailing list