Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

deprecate OtherPackagesLoadedInAdvance #5773

Open
ThomasBreuer opened this issue Aug 19, 2024 · 3 comments
Open

deprecate OtherPackagesLoadedInAdvance #5773

ThomasBreuer opened this issue Aug 19, 2024 · 3 comments

Comments

@ThomasBreuer
Copy link
Contributor

Currently GAP supports the component Dependencies.OtherPackagesLoadedInAdvance in its PackageInfo.g records.
Its intended value is a list of package names/versions, meaning that these packages have to be completely loaded before one can start to load the package in question.
The idea is that code from the package is then allowed to call functions from the packages that are known to be loaded, or to extend data provided by these packages.

I think we should deprecate and eventually abolish this feature, for the following reasons.

  • The feature seems to be not used at all in distributed packages.
    (I do not remember the reason why the feature had to be provided.)
  • The implementation of the feature is not complete.
    One can construct package dependencies in such a way that for a package A requiring another B to be loaded in advance, loading A works in a GAP session with sufficiently many loaded packages, works in a new GAP session but without loading suggested packages, but does not work in a new GAP session such that also suggested packages shall get loaded.
  • The GAP 4.13 feature of package extensions should suffice for the purposes mentioned above:
    Instead of requiring in package A that package B must be loaded in advance, require package B as a needed package of A, add a package extension to A stating that some file F will get read as soon as B is available, and put the code pieces from A that call functions from B into the file F or into files that get read via ReadPackage statements in F.
    This way, the load order for files from A and B becomes less important.

The component Dependencies.OtherPackagesLoadedInAdvance is mentioned only in one place in the Reference Manual, and this place cannot be found with the interactive help. The definition of the component can be found in the suggested PackageInto.g template (the file from the Example package).

@fingolfin
Copy link
Member

No package we distribute uses this feature. A few had OtherPackagesLoadedInAdvance occur in their PackageInfo.g, in most cases commented out. I've removed those in all cases where I have access to their git repository, except in the example package, where we could remove it now, though:

See also gap-packages/example#40

@ThomasBreuer
Copy link
Contributor Author

O.k., if we agree that OtherPackagesLoadedInAdvance should be regarded as deprecated then the next step is to remove it from the documentation, but to keep the current implementation.
(The pull request for that should get the labels "kind: removal or deprecation" and "release notes: use title", then the release notes will mention the deprecation.)
I can provide such a pull request.

@fingolfin
Copy link
Member

Is is deprecated, and we are announcing that in the 4.14 notes, so I guess from this point of view this issue is resolved. Of course the next step kinda would be to also remove it (perhaps from 4.15). So perhaps we leave this a bit longer open as a reminder to finally remove it after 4.14 is out

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants