Life in the Fast Lane (@nogc blog post)
Bastiaan Veelo via Digitalmars-d-announce
digitalmars-d-announce at puremagic.com
Tue Jun 20 02:56:03 PDT 2017
On Monday, 19 June 2017 at 10:13:33 UTC, Ali Çehreli wrote:
> I know that there are efforts towards @nogc exceptions but I
> think @nogc should somehow related only to the normal operation
> of code. Since exceptions are for error cases, perhaps they
> shouldn't have an effect on whether a function is @nogc.
This strikes me as making a lot of sense. You can compare it to
the @system, @trusted and @safe trio, where @system is the
default and @trusted could be verbosely translated as
@unsafe_code_that_is_acceptable_to_be_called_in_safe_code_as_an_exception_to_the_rule.
Transferring this to GC, you could have @gc (the default), @nogc
(the @safe equivalent) and the @trusted equivalent:
@gc_code_that_is_acceptable_to_be_called_in_nogc_code_as_an_exception_to_the_rule. I'll abbreviate this as @gc78 until there is a better name.
With this, exceptions can be defined to be @gc78 to make them
work in @nogc code: As exceptions are exceptional, one can argue
that it is OK for them to do exceptional things.
Also, you can write a debugging function that uses string
concatenation and writeln inside a DebugCondition, mark it as
@gc78 and you'll still be able to call it in @nogc code. This
won't cause collection in release versions.
Bastiaan.
More information about the Digitalmars-d-announce
mailing list