-
-
Notifications
You must be signed in to change notification settings - Fork 5.7k
Define what is and is not covered by SemVer for Julia itself (Base Julia and stdlibs) #33684
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
base: master
Are you sure you want to change the base?
Conversation
|
Pre 1.0 @StefanKarpinski had a Google doc somewhere that tracked this kind of thing. |
|
Here's the doc: https://docs.google.com/document/d/1WdlfucPHcesbNZXQ-eFx39evNkdseMe08GAPf8zEasY/edit?usp=sharing. If anyone wants to be able to edit, Slack me and I can give edit permissions. I haven't looked at this in a while, so not sure how much I still agree with what's in there. These are just the notes I took in the lead up to 1.0. |
|
@StefanKarpinski do you want to attempt to transpose the bits of that that are still relevent into this PR, |
|
I don't really have time at the moment, but yes, someone should probably filter through that and figure out what's relevant and put it in the docs along with what you've proposed. |
|
FWIW: I'd be in favor to state that if a package A exposes dependency B via its API (e.g. a return type), then any major change in B regarding the exposed parts should require a major change in A. |
|
This PR has had no activity for five years+, so I'll close it as stale. @oxinabox If you're still interested in working on this PR, let me know, and I can re-open it. |
|
We actually should still do this. Make a version of https://docs.sciml.ai/ColPrac/stable/#Changes-that-are-not-considered-breaking |
dff4a90 to
4fd7475
Compare
|
I think there are a couple open questions:
I'll add the
I think the second part (what should the contents be) is going to be tougher for triage to answer, although of course any feedback from triage is appreciated. |
|
Note this is about what is covered by semver for julia itself. So it definately doesn't belong in the Pkg docs. |
| # The Julia Language API and SemVer | ||
|
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
FAQ on semver should link to this
|
We likely should adopt language from https://docs.sciml.ai/ColPrac/stable/#Changes-that-are-not-considered-breaking |
|
|
||
|
|
||
| The following are excluded: | ||
| - _API Items_ that are not exported |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| - _API Items_ that are not exported | |
| - _API Items_ that are not `public` |
| This also includes when a breaking change was mistakenly added, a patch release can revert it. | ||
|
|
||
|
|
||
| The following things *are* covered by the SemVer garentee (many other things also, but these might catch you by surprise): |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
documented public APIs
|
|
||
| ## TODO Classify these: | ||
| - The serialization format used by `Base.serialize`; except when dealing with stored values that are of types that were allowed to be changed. | ||
| - The stream of random numbers given by the default random number generator for a given seed. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| ## TODO Classify these: | ||
| - The serialization format used by `Base.serialize`; except when dealing with stored values that are of types that were allowed to be changed. | ||
| - The stream of random numbers given by the default random number generator for a given seed. | ||
| - Behavour after reassigning a constant |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This has behavior as of 1.12
| - The serialization format used by `Base.serialize`; except when dealing with stored values that are of types that were allowed to be changed. | ||
| - The stream of random numbers given by the default random number generator for a given seed. | ||
| - Behavour after reassigning a constant | ||
| - Behavour while engaging in type-piracy |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
you will get the behavior that the implementation defines.
|
Commented with triage perspective on specifics. Overall we think this is worth reviving (but will need some updates to reflect improvements since when it was originally written as well as typos/grammar) |
|
|
||
|
|
||
| ## TODO Classify these: | ||
| - The serialization format used by `Base.serialize`; except when dealing with stored values that are of types that were allowed to be changed. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
link to serialize docs on this
We really should document this.
I figured I would start and people who know more could push directly to my branch.
TensorFlow has a good one of these pages in its docs
We could almost take these directly: