-
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
[FR] Detect changes to exports and recommend a breaking release #439
Comments
I agree that removing an export is breaking. I would support adding a new AutoMerge check that makes sure that if a package has removed an export, then that release must be a breaking release. Personally, I do not agree that adding a new export is breaking. Instead, I personally believe that nobody should do
|
There are some muddying factors like the exports not necessarily defining the public API, things being explicitly marked as experimental etc. I generally agree about import clashes being the importer's fault. |
I agree, but there's plenty of code out there that does use Base has added exports in 1.x releases, so I guess that's the decision. We could still add checks to auto-merge to
Yeah, that's long been a gripe of mine... We really should find a better way to define a package's API. |
Or we could check whether packages that do |
I think exporting experimental functions should be avoided, and adding rules not to reduce exports without breaking release would be beneficial.
Just clarification, we should not allow tilde specifiers with major versions like |
How about adding rules like this?
We don't need to check
|
Some package managers (like
elm-package
) can automatically enforce semver by diffing public API before and after a release. In Julia, this is more complicated, but I still think we can do something in this area!When a package changes its exports, i.e. if
names(Example)
changes after a release, the release must be breaking. Removing an export is breaking for obvious reasons, but adding an export can also break dependent code, because it can introduce a new implicit import clash with another package. (Thanks @pfitzseb for pointing this out.) We could detect this and show a warning, and possibly block automerge.I recently experienced this myself (oops), and I feel like the General CI should not have allowed me to register a minor release that adds an export.
The text was updated successfully, but these errors were encountered: