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.
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.