Hi Nick,
A couple more issues with PEP 558, as I see it.
Lack of specification
---------------------
There is no specification section in PEP 558.
Much of PEP 558 describes the differences between the current behavior
and what PEP 558 proposes. These differences are often intermingled with
a discussion of the flaws with the current behavior, which makes it
difficult to understand what the proposed behavior is.
I could not implement PEP 558 from the PEP alone.
Cycles and the cost of maintaining the f_locals cache
-----------------------------------------------------
PEP 558 proposes that f_locals acts as a proxy mapping to the locals in
a frame *and* that the frame caches the proxy. This obviously creates a
cycle, which needs to be broken by the cycle GC.
Although the cycle only exists if f_locals is actually used, there is
still some overhead for *every* call and return, as the f_locals field
needs to be initialized on call and checked for non-NULL on return.
Cheers,
Mark.