GC.addRange in pure function
Petar
Petar
Wed Feb 10 19:20:52 UTC 2021
On Wednesday, 10 February 2021 at 16:25:44 UTC, Petar Kirov
[ZombineDev] wrote:
> [..]
A few practical examples:
Here it is deemed that the only observable side-effect of
`malloc` and friends is the setting of `errno` in case of
failure, so these wrappers ensure that this is not observed.
Surely there are low-level ways to observe it (and also the act
of allocating / deallocating memory on the C heap), but this
definition purity what the standard library has decided it was
reasonable:
https://github.com/dlang/druntime/blob/master/src/core/memory.d#L1082-L1150
These two function calls in Array.~this() can be marked as
`pure`, as the Array type as a whole implements the RAII design
pattern and offers at least basic exception-safety guarantees:
https://github.com/dlang/phobos/blob/81a968dee68728f7ea245b6983eb7236fb3b2981/std/container/array.d#L296-L298
(The whole function is not marked pure, as the purity depends on
the purity of the destructor of the template type parameter `T`.)
More information about the Digitalmars-d-learn
mailing list