----- Original Message ----- > From: "Neal Gompa" <ngomp...@gmail.com> > To: "Fedora Python SIG" <python-devel@lists.fedoraproject.org> > Cc: "David Gray" <dag...@redhat.com> > Sent: Saturday, October 26, 2019 5:01:52 PM > Subject: Re: Building the python executable statically with libpython*.a for > better performance > > On Sat, Sep 21, 2019 at 5:16 PM Miro Hrončok <mhron...@redhat.com> wrote: > > > > Hello, > > > > we've been recently approached by a colleague from Red Hat working on > > performance (CCed). > > > > According to their testing, Fedora Python performance could be improved by > > ~15% > > by building /usr/bin/python* statically with libpython*.a. That sounds like > > a > > worthy thing to do. > > > > https://bugzilla.redhat.com/show_bug.cgi?id=1749479 > > > > Since Python 3.8 Python extension modules are no longer linked to > > libpython.so > > and we can do the following: > > > > * build /usr/bin/python3(.8) statically with libpython*.a > > * build and ship libpython3.8.so.1.0 for packages that "embed" Python > > > > The change in the python3 package is trivial: > > > > https://src.fedoraproject.org/rpms/python3/pull-request/133 > > > > However it can have serious impact on Python extension modules that are > > linked > > to libpython3.8.so.1.0 by various "nonstandard" build mechanisms or by > > compiling > > code for Python extension module and code that embeds Python into one file. > > > > We will likely propose a Fedora 32 Change for this, however I'm opening > > this > > topic for discussion before we do so. > > > > Testing the proposed Pull Request with your code is also helpful. Let me > > know > > how can we make that easier (e.g. if you want a Copr or a Fedora 30/31 > > python38 > > package with this change). > > > > WDYT? > > One major concern: We currently rely on the libpython shared object > linkage for non-standard builds to ensure we get everything for moving > to new Python versions. I've personally experienced quirks with trying > to force linking via the shared object when the Python interpreter > itself is not. For example, perl-Inline-Python determines how to build > itself by asking the interpreter. In Fedora, this works correctly > because the interpreter returns the shared object. In other > distributions where I've built the module, it doesn't and uses the > static link object, which makes it difficult to automatically generate > the link dependency to the system Python we are using. > > In Mageia, we actually reverted Python's change to not link libpython > with extension modules so that we still have the dependency link for > binary objects: > https://svnweb.mageia.org/packages/cauldron/python3/current/SOURCES/link-C-modules-with-libpython.patch?view=markup > > Is there no other way to get better performance? Do we want to > potentially give up the easily trackable dependency web for that? Is > it worth breaking non-standard build mechanisms that interrogate the > interpreter for how to link to it? > > > > -- > 真実はいつも一つ!/ Always, there's only one truth! > _______________________________________________ > python-devel mailing list -- python-devel@lists.fedoraproject.org > To unsubscribe send an email to python-devel-le...@lists.fedoraproject.org > Fedora Code of Conduct: > https://docs.fedoraproject.org/en-US/project/code-of-conduct/ > List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines > List Archives: > https://lists.fedoraproject.org/archives/list/python-devel@lists.fedoraproject.org >
Hello. For the record most of the packages build fine with the change, including perl-Inline-Python [0]. Also still waiting for the change to be sent by the wrangler, but you can read the finalized version here: https://fedoraproject.org/wiki/Changes/PythonStaticSpeedup [0] https://copr.fedorainfracloud.org/coprs/g/python/Python3_statically_linked/builds/ -- Regards, Charalampos Stratakis Software Engineer Python Maintenance Team, Red Hat _______________________________________________ python-devel mailing list -- python-devel@lists.fedoraproject.org To unsubscribe send an email to python-devel-le...@lists.fedoraproject.org Fedora Code of Conduct: https://docs.fedoraproject.org/en-US/project/code-of-conduct/ List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines List Archives: https://lists.fedoraproject.org/archives/list/python-devel@lists.fedoraproject.org