[Python-ideas] Runtime assertion with no overhead when not active
storchaka at gmail.com
Tue May 8 12:08:59 EDT 2018
08.05.18 18:34, Steven D'Aprano пише:
> I don't even know which builds of Python I'm running. My *guess* is that
> the OS-provided Python is probably a non-debug build, and the ones I've
> compiled from source will be whatever the default build settings are,
> but I don't know what that is or how to find out.
There are different means of "debug build".
It may mean that binaries are build with enabling runtime checks in C
code. When you build from sources you will get a non-debug build by
default. You need to pass a special option --with-pydebug to ./configure
for getting a debug build. The OS-provided Python is a non-debug build too.
It may means that the "assert" statement in Python code is not a no-op
and the building __debug__ constant is True. Python is ran in debug mode
by default. You have to pass the -O option to the python command for
running Python in non-debug mode. ISTM the OP uses the term "debug
build" in this meaning.
Finally, a special "development mode" mode was introduced in 3.7. It is
enabled by the command line option -X dev. It switches on several
expensive runtime checks in C code (if they are not switched off by
compiling binaries in "release build" in the first meaning).
All these things are virtually orthogonal and can be combined arbitrary.
More information about the Python-ideas