aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorArmin Rigo <arigo@tunes.org>2019-04-17 11:54:09 +0200
committerArmin Rigo <arigo@tunes.org>2019-04-17 11:54:09 +0200
commit8a328ba0d72127d118d70020c591a0de7353baf0 (patch)
tree6fe66a40e113f67522f337affc75edb0a1b4e036 /pypy/doc/cpython_differences.rst
parentadd back mistakenly removed tag (diff)
downloadpypy-8a328ba0d72127d118d70020c591a0de7353baf0.tar.gz
pypy-8a328ba0d72127d118d70020c591a0de7353baf0.tar.bz2
pypy-8a328ba0d72127d118d70020c591a0de7353baf0.zip
Document the newer CPython finalizer behaviour
Diffstat (limited to 'pypy/doc/cpython_differences.rst')
-rw-r--r--pypy/doc/cpython_differences.rst4
1 files changed, 3 insertions, 1 deletions
diff --git a/pypy/doc/cpython_differences.rst b/pypy/doc/cpython_differences.rst
index af1981a704..32aa55335e 100644
--- a/pypy/doc/cpython_differences.rst
+++ b/pypy/doc/cpython_differences.rst
@@ -88,7 +88,9 @@ and the callback will not be invoked. (Issue `#2030`__)
There are a few extra implications from the difference in the GC. Most
notably, if an object has a ``__del__``, the ``__del__`` is never called more
than once in PyPy; but CPython will call the same ``__del__`` several times
-if the object is resurrected and dies again. The ``__del__`` methods are
+if the object is resurrected and dies again (at least it is reliably so in
+older CPythons; newer CPythons try to call destructors not more than once,
+but there are counter-examples). The ``__del__`` methods are
called in "the right" order if they are on objects pointing to each
other, as in CPython, but unlike CPython, if there is a dead cycle of
objects referencing each other, their ``__del__`` methods are called anyway;