On Sunday, 25 September 2022 at 17:04:51 UTC, Sebastiaan Koppe wrote:
>On Sunday, 25 September 2022 at 14:23:22 UTC, Paul Backus wrote:
>If you have isolated
, the deallocator can be made @safe
by having it take an isolated
pointer as its argument.
That would be nice, but doesn't that tantamount to only being able to deallocate something when you can proof there are no other aliases?
That's a necessary condition for being able to deallocate memory in @safe
code, period. You can only do it if it doesn't create any dangling pointers.
At which point you might as well use that proof and have the compiler call deallocate for you ;)
Not necessarily. The proof is allowed to rely on runtime information, like reference counts, which the compiler does not necessarily know about. In these cases, the programmer can cast the pointer to isolated
in @trusted
code (similar to how you can cast away shared
in @trusted
code after locking a mutex).