Want reasonable reference counting? Disable automatic sharing of immutable
Elronnd
elronnd at elronnd.net
Sun Nov 14 06:53:24 UTC 2021
On Sunday, 14 November 2021 at 02:54:52 UTC, Stanislav Blinov
wrote:
> On Sunday, 14 November 2021 at 02:24:42 UTC, Elronnd wrote:
>
>> A signal handler may not be pure, and it may be called at any
>> time. Including during the execution of a pure function.
>> Hence, your argument implies that no function should ever be
>> marked as pure, because it may be interrupted by a signal
>> handler which has some effects.
>
> Yes, yes, and cosmic radiation may flip a bit in my CPU thus
> also mutate my state. I still don't see what that has to do
> with the language and its runtime.
Signals are part of the language. Proof: GC must be able to
hijack threads; so there must be some mechanism for preempting an
existing thread of execution; and GC is part of the language.
Hence, that a function is 'pure' cannot be a strict indicator
that, between the time it is called and the time it returns, no
side effects are performed.
So it seems not at all inconsistent to me that a pure function
may cause the GC to run, causing a destructor to be run.
More information about the Digitalmars-d
mailing list