+0.5 at the moment.
Previously I wrote in the pitch:
and added a concern about "nonisolated deinit" (when not writing deinit explicitly) which then suddenly turns into "isolated deinit" when writing.
I think this will cause a huge behavioral gap without any available opt-ins.
While "deinit async" came up as a solution for opt-in explicit isolated deinit, I now find that the entire discussion could be simplified just by introducing nonisolated deinit
keyword instead to opt-in the same behavior as the compiler implicitly injects.
I believe having nonisolated deinit
will eventually avoid thinking about complicated deinit async
topic, and nonisolated deinit
(or deinit async
in the 2nd favor) is also a must-have feature to accompany with this proposal to add extra +0.5.
Side note
As a side note, having nonisolated deinit
will unfortunately break:
init
/init async
/deinit
/deinit async
symmetry, but I'm recently inclined to look for:
nonisolated init
/init
/nonisolated deinit
/deinit
as more simpler and better correspondence, which actually oppose to the already-accepted SE-0327 On Actors and Initialization.
While explaining why is another long topic (so I will skip here for now), we can still discuss about nonisolated deinit
separately from initializer (and their symmetry) topic.