You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Previously the Gap class that implements the (effectively singleton) libgap instance variable in sage.libs.gap.libgap called initialize() (the function which initializes libgap for the process) in its __init__ method.
Because of this, it was impossible to import it without causing libgap to be initialized, creating slowdown during Sage initialization. The tradeoff is that most code in Sage that uses the libgap interface has to awkwardly use inline imports of from sage.libs.gap.libgap import libgap all over the place.
I would like to do away with that, especially for work on #18267
This removes initialize() from Gap.__init__() and instead carefully places calls to initialize() just in the few places where it's absolutely crucial to ensure libgap is initialized first (specifically in code paths that users and developers are actually intended to use directly; it is not added directly to every single function that uses GAP objects).
This sacrifices some simplicity in implementation of the libgap interface for simplicity in using it, which I think is crucial for updating more code in Sage to use it over the pexpect interface.
Note: I originally posted this as MR11 on GitLab, but it did not synchronize due probably to an apparent system-wide problem with webhooks being triggered on gitlib.org. I will keep the merge request open for now until this ticket is closed.
Previously the
Gap
class that implements the (effectively singleton)libgap
instance variable insage.libs.gap.libgap
calledinitialize()
(the function which initializes libgap for the process) in its__init__
method.Because of this, it was impossible to import it without causing libgap to be initialized, creating slowdown during Sage initialization. The tradeoff is that most code in Sage that uses the libgap interface has to awkwardly use inline imports of
from sage.libs.gap.libgap import libgap
all over the place.I would like to do away with that, especially for work on #18267
This removes
initialize()
fromGap.__init__()
and instead carefully places calls toinitialize()
just in the few places where it's absolutely crucial to ensure libgap is initialized first (specifically in code paths that users and developers are actually intended to use directly; it is not added directly to every single function that uses GAP objects).This sacrifices some simplicity in implementation of the libgap interface for simplicity in using it, which I think is crucial for updating more code in Sage to use it over the pexpect interface.
Note: I originally posted this as MR11 on GitLab, but it did not synchronize due probably to an apparent system-wide problem with webhooks being triggered on gitlib.org. I will keep the merge request open for now until this ticket is closed.
Component: interfaces
Author: Erik Bray
Branch/Commit: u/embray/libgap/lazy-initialization @
a756429
Issue created by migration from https://trac.sagemath.org/ticket/27678
The text was updated successfully, but these errors were encountered: