- 10 Aug, 2016 3 commits
-
-
-
Tres Seaver authored
[ci skip]
-
Tres Seaver authored
On deactivate release in-slots objects too
-
- 21 Jul, 2016 1 commit
-
-
Kirill Smelkov authored
On ._p_deactivate() and ._p_invalidate(), when an object goes to ghost state, objects referenced by all its attributes, except related to persistence machinery, are released, this way freeing memory (if they were referenced only from going-to-ghost object). That's the idea - an object in ghost state is simply a stub, which loads its content on first access (via hooking into get/set attr) while occupying minimal memory in not-yet-loaded state. However the above is not completely true right now, as currently on ghostification only object's .__dict__ is released, while in-slots objects are retained attached to ghost object staying in RAM: ---- 8< ---- from ZODB import DB from persistent import Persistent import gc db = DB(None) jar = db.open() class C: def __init__(self, v): self.v = v def __del__(self): print 'released (%s)' % self.v class P1(Persistent): pass class P2(Persistent): __slots__ = ('aaa') p1 = P1() jar.add(p1) p1.aaa = C(1) p2 = P2() jar.add(p2) p2.aaa = C(2) p1._p_invalidate() # "released (1)" is printed p2._p_invalidate() gc.collect() # "released (2)" is NOT printed <-- ---- 8< ---- So teach ghostify() & friends to release objects in slots to free-up memory when an object goes to ghost state. NOTE PyErr_Occurred() added after ghostify() calls because pickle_slotnames() can raise an error, but we do not want to change ghostify() prototype for backward compatibility reason - as it is used in cPersistenceCAPIstruct. ( I hit this bug with wendelin.core which uses proxies to load data from DB to virtual memory manager and then deactivate proxy right after load has been completed: https://lab.nexedi.com/nexedi/wendelin.core/blob/f7803634/bigfile/file_zodb.py#L239 https://lab.nexedi.com/nexedi/wendelin.core/blob/f7803634/bigfile/file_zodb.py#L295 )
-
- 26 May, 2016 5 commits
-
-
Tres Seaver authored
-
Tres Seaver authored
-
Tres Seaver authored
Fix #38 by returning the correct type from TimeStamp_hash.
-
Jason Madden authored
-
Jason Madden authored
-
- 24 May, 2016 1 commit
-
-
Marius Gedminas authored
CI for travis and appveyor
-
- 22 May, 2016 1 commit
-
-
Forest Gregg authored
-
- 18 May, 2016 3 commits
-
-
Forest Gregg authored
-
Forest Gregg authored
-
Forest Gregg authored
-
- 05 May, 2016 3 commits
-
-
Jim Fulton authored
-
Jim Fulton authored
TimeStamp: sub-second precision for Python implementation of timeTime()
-
Julien Muchembled authored
The fractional part of return values was always 0.
-
- 22 Apr, 2016 1 commit
-
-
Adam Groszer authored
-
- 20 Apr, 2016 1 commit
-
-
Adam Groszer authored
-
- 15 Apr, 2016 3 commits
-
-
Forest Gregg authored
-
Tres Seaver authored
Add support for Python 3.5.
-
Tres Seaver authored
-
- 14 Apr, 2016 3 commits
-
-
Tres Seaver authored
Don't use/poison global wheel cache when building w/ PURE_PYTHON.
-
Tres Seaver authored
[ci skip].
-
Tres Seaver authored
-
- 11 Apr, 2016 1 commit
-
-
Tres Seaver authored
-
- 25 Mar, 2016 4 commits
-
-
Jim Fulton authored
Drop support for Python 2.6 and 3.2.
-
Tres Seaver authored
- 2.6 is long out-of-maintenance, and a security quagmire. - 3.2 cannot be tested on Travis.
-
Tres Seaver authored
[ci skip]
-
Tres Seaver authored
[ci skip]
-
- 23 Dec, 2015 1 commit
-
-
Michael Egorov authored
-
- 08 Nov, 2015 1 commit
-
-
Marius Gedminas authored
-
- 04 Jul, 2015 1 commit
-
-
Michael Egorov authored
-
- 02 Jun, 2015 3 commits
-
-
Tres Seaver authored
-
Tres Seaver authored
-
Marius Gedminas authored
Fixes #27. Test plan: - run detox to generate ALL THE WEIRD FILES - run check-manifest to see if any made it into the sdist
-
- 19 May, 2015 4 commits
-
-
Tres Seaver authored
-
Tres Seaver authored
-
Tres Seaver authored
Support for ZODB on PyPy
-
Jason Madden authored
-