[Python-Dev] Re: shared library
Martin v. Löwis
martin at v.loewis.de
Tue Aug 5 21:56:24 EDT 2003
Francois Pinard <pinard at iro.umontreal.ca> writes:
> But I might be missing the meaning of the original question. If by any
> chance you feel like elaborating a bit, that could be instructive for me.
The question is whether the code containing the Python implementation
should be a shared library, i.e. libpythonxy.dll, which would give a
very small stub python executable. I think this causes more bad than
1. If there is a single <prefix>/python executable, there is just
about the same amount of sharing. Virtually all applications using
Python use the single executable, and they all share that single
executable, both on disk and in memory. The only significant
exception might be mod_python, which currently needs to link its
own copy of the Python implementation. The various run-time copies
of mod_python (across different Apache processes) still get shared.
2. Having libpythonxy.so causes significant maintenance problems. In
some installations, Python might fail to find libpython after
installation, because <prefix>/lib is not in the search path of the
shared linker, or ldconfig might need to be run before it is found.
3. Having libpythonxy.so increases the start-up time, as an additional
directory is added to the ld.so search path, which needs to be
searched for any shared library loaded by Python, including all C
extension modules which are not builtin.
4. Having libpythonxy.so decreases the run-time efficiency, as now all
code needs to be compiled as PIC.
5. Having libpythonxy.so creates a maintenance cost, as, for any
implementation of that feature, it fails on some system because of
obscure compiler/linker/dynamic linker aspects that haven't been
considered. I expect several years to pass until no new bug reports
about that feature come in.
So it has only disadvantages and no advantages, and is thus disabled
by default. It is only implemented to decrease the maintenance burden
of having to respond to people asking for the feature.
More information about the Python-Dev