* address remaining review comments from the July threads
* Rationale section renamed to Motivation
* Design Discussion section renamed to Rationale and Design Discussion
* kind enum is guaranteed to be at least 32 bits
* fast refs mapping is stored on the underlying frame
* delay initial cache refresh for each proxy instance to the
first operation that needs it
* be specific about which operations always update the cache, and which
update it if it hasn't been updated by this proxy instance
* eliminate more mentions of the old "dynamic snapshot" terminology
* add new rational/discussion section covering PEP 667 (including
how the PEP 558 implementation could be turned into a PEP 667
implementation if desired)
* make it clearer that proxy instances are ephemeral (lots of
stale phrasing with "the" dating from when they stored on the frame)
Co-authored-by: Hugo van Kemenade <hugovk@users.noreply.github.com>
- Fix miscellaneous typos
- Remove an outdated mention of possibly dropping suport for storing
extra f_locals keys in optimised scopes
- Make it more explicit that accessing frame.f_locals in Python
refreshes the f_locals cache on that frame
- Replace GetReturnsCopy with GetKind & other updates
- Reference Jan/Feb 2021 python-dev threads
- Note that read-only views on optimised frames have
the same cache consistency limitations as the read/write
proxy does.
Further implementation work on the fast locals proxy resulted
in treating the "f_locals" frame storage more as an implicitly
or explicitly updated cache, rather than treating it solely as a
dynamic snapshot.
* drop wording about daemon threads in isolated subinterpreters
new threads are not allowed (including daemon threads) implies that the opposite
is true in isolated=False subinterpreters, that new threads are allowed (*excluding* daemon threads)
* Update pep-0554.rst
Co-authored-by: Thomas Grainger <tagrain@gmail.com>
Co-authored-by: Eric Snow <ericsnowcurrently@gmail.com>