On Fri Aug 18 18:17:27 2023 +0000, Gabriel Ivăncescu wrote:
I don't think holding ref in tasks is a good idea, since that will keep the object alive for no reason (it would be an unknown edge as far as the CC is concerned). Is there really such a harm in doing the task_magic way? Maybe I can introduce a helper then to make it cleaner since it will be in the helper? e.g. `dispex_ref_decr_with_task`?
The wider implication of that is that we won't be able to unify `Release` implementation and we'd need to continue supporting custom per-object implementation to be able to put hacks there.
Also, well, it's clearly a workaround for a design shortcoming. It does not help to gain confidence in the design if you need workarounds in the very first MR after introducing the new architecture. It's a perfect moment to get rid of workaround, not introduce new ones. We analyzed it and we know potential solutions, so it will be fine. But to asses the solution, I'd be interested in how remaining objects will look like and if there are more similar problems. Right now, to verify your claims, I'd need to review dozens of object. I will need to review them later again when you will be migrating them, so doing it now would be a waste of my time. Reordering patches on your side should be trivial.