[Python-Dev] No longer enable Py_TRACE_REFS by default in debug build
On Mon, 15 Apr 2019 12:50:00 +0200
Antoine Pitrou <solipsis at pitrou.net> wrote:
> On Thu, 11 Apr 2019 08:26:47 -0700
> Steve Dower <steve.dower at python.org> wrote:
> > On 10Apr2019 1917, Nathaniel Smith wrote:
> > > It sounds like --with-pydebug has accumulated a big grab bag of
> > > unrelated features, mostly stuff that was useful at some point for
> > > some CPython dev trying to debug CPython itself? It's clearly not
> > > designed with end users as the primary audience, given that no-one
> > > knows what it actually does and that it makes third-party extensions
> > > really awkward to run. If that's right then I think Victor's plan of
> > > to sort through what it's actually doing makes a lot of sense,
> > > especially if we can remove the ABI breaking stuff, since that causes
> > > a disproportionate amount of trouble.
> > Does it really cause a "disproportionate" amount of trouble? It's
> > definitely not meant for anyone who isn't working on C code, whether in
> > CPython, an extension or a host application. If you want to use
> > third-party extensions and are not able to rebuild them, that's a very
> > good sign that you probably shouldn't be on the debug build at all.
> I can't really agree with that. There are third-party extensions that
> have non-trivial build requirements. The fact that you have to rebuild
> third-party dependencies is a strong deterrent against using pydebug
> builds even when they may be actually useful (for example when
> debugging an extension module of your own).
Oh, and as a datapoint, there are user requests for pydebug builds in
Anaconda and conda-forge:
The problem is, while it's technically relatively easy to build and
distribute a special build of Python, to make it useful implies also
building a whole separate distribution of Python libraries as well. I
suspect the latter is why those issues were never acted upon.
So, there's actual demand from people who would (probably) benefit from
it, but are blocked by burden of recompiling all dependencies.