On Thu, 9 Apr 2020 20:56:56 -0700 "Gregory P. Smith" email@example.com wrote:
On Wed, Apr 8, 2020, 10:37 AM Antoine Pitrou firstname.lastname@example.org wrote:
On Wed, 8 Apr 2020 10:18:47 -0700 Guido van Rossum email@example.com wrote:
But when I leave "large" temp objects hanging and give a rip, I already stick in "del" statements anyway. Very rarely, but it happens.
I recall that in the development of asyncio there were a few places where we had to insert del statements, not so much to free a chunk of memory,
to cause some destructor or finalizer to run early enough. (IIRC not
at that moment, but at some later moment even if some Futures are still alive.) Those issues took considerable effort to find, and would conceivably have been prevented by this proposal.
If code relies on life variable analysis for correctness, it implies other Python implementations must implement it with exactly the same results.
As far as I know they all do? The existence of locals() as an API cements this behavior. If you want something to disappear from locals it requires an explicit del. (explicit is better than implicit and all...)
I mean all Python implementations would have to implement the exact same variant of live variable analysis. Right now there is none: variables are deleted when the frame dies (or when `del x` is issued explicitly, which does not imply any analysis :-)).