-
Notifications
You must be signed in to change notification settings - Fork 30
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
update package versions #63
Conversation
Hi @johnnychen94, thanks for helping out with this. I am fine with all your suggestions if they can be accepted by the owners of Wavelets.jl. I have been having annoying package versioning issues and Julia keeps complaining specifically about Wavelets.jl and its restriction to old versions of SpecialFunctions. The only quick solution I could devise was to fork it and then point MIRT to this forked version. A general question about the process here. You are recommending that the Project.toml file list many old versions of packages, but as far as I can tell the CI only tests the latest version. So how we know it is valid to list all those old versions as being compatible? Thanks! |
Co-authored-by: Johnny Chen <johnnychen94@hotmail.com>
Co-authored-by: Johnny Chen <johnnychen94@hotmail.com>
Generally, we should keep backward-compatibility as much as possible, and we avoid introducing breaking changes to downstream packages. We should do this because downstream packages/users don't need to change their codes if we do so; the less human efforts involved, the better. We don't test all possible versions; we don't have enough CI resources for this and we don't yet have the utils to cover it. Semantic Versioning(SemVer) is a rule to help us reach the "same" status while requiring less CI coverage. Let's first discuss what should we do when there're new upstream versions. As a package maintainer, say, of It can be irrelevant upstream changes. Non-breaking changes are definitely irrelevant, breaking changes may or may not be related. If It can also be relevant upstream changes. Relevant changes can be upstream API rename, return value changes, or other more complex cases. As a maintainer, he/she should decide
The ideal choice is to absorb all changes inside Now, let's take
SemVer is useful because we can approximately infer compatibility from it. According to SemVer, patch versions are backward-compatible and have no new functionalities. Hence
The next question is: do we need new functionalities introduced in
Note that SemVer is not the philosophers‘ stone, it requires everyone's awareness and efforts in the ecosystem to make the conclusion (3)/(4) convincing. When compatibility bugs occur, the maintainer of As a side note, |
Co-authored-by: Johnny Chen <johnnychen94@hotmail.com>
@johnnychen94 thanks for the detailed explanation. I have accepted all your suggestions. Now I hope that the Wavelets package managers will accept this PR so that compatibility with recent SpecialFunctions is supported! |
Addresses #64. |
Thanks for that. Looks good to me. |
The main reason for this PR is to verify that Wavelets will work with the latest version of SpecialFunctions.
Currently the Project.toml is pinned to old versions that causes issues for me in other packages.
I don't really expect this PR to be accepted "as is" because you might want to continue to support old versions too, but it would be very helpful to at least get SpecialFunctions version updated.
(CompatHelper is helpful for this purpose BTW. I could make a PR for that github action if you want.)