Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Rewrite
@wrap
,@gapwrap
and@gapattribute
to not use@generated
anymore: we used that as a trick to delay loading of certain objects from GAP to runtime; but this was always brittle and will fail in the future when Julia becomes more effective and aggressive precompilation support.We replace this with a simpler approach where the GAP objects now really are only loaded at runtime, and store in global
const Ref{GapObj}
variables. This is in theory slightly less efficient (as now every function call has to check whether theRef
is already assigned), but this is tiny. In practice we still have a noticeable improvement over directly calling the relevant GAP functions. Indeed:Before this patch:
After this patch:
For reference, without the wrappers (same before and after this patch):
This patch is motivated by JuliaLang/julia#36770 and JuliaLang/julia#43990