On Mon, 18 Sep 2017 20:07:42 +1000 Nick Coghlan <ncogh...@gmail.com> wrote:
> On 18 September 2017 at 19:48, Antoine Pitrou <solip...@pitrou.net> wrote: > > On Mon, 18 Sep 2017 11:31:12 +0200 > > Victor Stinner <victor.stin...@gmail.com> wrote: > >> > >> Ideally, CPython 3.x should never create reference cycles. Removing > >> Exception.__traceback__ is the obvious "fix" for the issue. But I > >> expect that slowly, a lot of code started to rely on the attribute, > >> maybe even for good reasons :-) > > > > The real issue is not reference cycles, but the fact that a traceback > > frame keeps all locals alive. When the frame's execution is finished, > > that information is practically almost always useless, but is kept for > > the rare cases of debugging (and perhaps dubious features such as > > some of py.test's magic). > > As another use case, IPython tracebacks will include details of > referenced local variables, and > https://docs.python.org/3/library/traceback.html#tracebackexception-objects > offers the ability to readily capture the repr() of locals referenced > from a traceback for the same reason. True... but interactive use has different concerns than production use (hence my proposition of a setting to change frame cleanup behaviour). Besides, IPython also stores the history of displayed values, which is another cause of keeping objects alive :-) Regards Antoine. _______________________________________________ Python-Dev mailing list Python-Dev@python.org https://mail.python.org/mailman/listinfo/python-dev Unsubscribe: https://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com