Skip to content

Conversation

@oxinabox
Copy link
Contributor

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:

Floating point numerical details: The specific floating point values computed by ops may change at any time. Users should rely only on approximate accuracy and numerical stability, not on the specific bits computed. Changes to numerical formulas in minor and patch releases should result in comparable or improved accuracy, with the caveat that in machine learning improved accuracy of specific formulas may result in decreased accuracy for the overall system.

Random numbers: The specific random numbers computed by the random ops may change at any time. Users should rely only on approximately correct distributions and statistical strength, not the specific bits computed. However, we will make changes to random bits rarely (or perhaps never) for patch releases. We will, of course, document all such changes.

Bugs: We reserve the right to make backwards incompatible behavior (though not API) changes if the current implementation is clearly broken, that is, if it contradicts the documentation or if a well-known and well-defined intended behavior is not properly implemented due to a bug. For example, if an optimizer claims to implement a well-known optimization algorithm but does not match that algorithm due to a bug, then we will fix the optimizer. Our fix may break code relying on the wrong behavior for convergence. We will note such changes in the release notes.

Error behavior: We may replace errors with non-error behavior. For instance, we may change a function to compute a result instead or raising an error, even if that error is documented. We also reserve the right to change the text of error messages. In addition, the type of an error may change unless the exception type for a specific error condition is specified in the documentation

@Keno
Copy link
Member

Keno commented Oct 26, 2019

Pre 1.0 @StefanKarpinski had a Google doc somewhere that tracked this kind of thing.

@StefanKarpinski
Copy link
Member

StefanKarpinski commented Oct 27, 2019

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.

@oxinabox
Copy link
Contributor Author

@StefanKarpinski do you want to attempt to transpose the bits of that that are still relevent into this PR,
and we can then work to clean the text up in git (rather than in google docs) ?

@StefanKarpinski
Copy link
Member

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.

@laborg
Copy link
Contributor

laborg commented May 10, 2020

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.

@DilumAluthge
Copy link
Member

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.

@oxinabox
Copy link
Contributor Author

oxinabox commented Feb 9, 2026

We actually should still do this.
But idk if this PR is the place

Make a version of https://docs.sciml.ai/ColPrac/stable/#Changes-that-are-not-considered-breaking
which is official for julia itself.

@DilumAluthge
Copy link
Member

DilumAluthge commented Feb 9, 2026

I think there are a couple open questions:

  1. Should we add a docs page like this? If yes, where should it go (Julia manual vs Pkg.jl manual vs somewhere else?)?
  2. What should the contents of the docs page be?

I'll add the triage label, so that triage can discuss this. At this point, my question for triage is just the first part, specifically I'd like triage to answer the following:

  • Should we add a docs page like this? If yes, where should it go?

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.

@DilumAluthge DilumAluthge added triage This should be discussed on a triage call status: waiting for triage feedback labels Feb 9, 2026
@oxinabox
Copy link
Contributor Author

oxinabox commented Feb 9, 2026

Note this is about what is covered by semver for julia itself.
Not advise to package authors.
But rather a promise (or disclaimer of promise) about what future versions of julia will do.

So it definately doesn't belong in the Pkg docs.
Except perhaps has a note to package authors that they might like to stick to similar standards as julia itself does.

@DilumAluthge DilumAluthge changed the title Define what is and is not covered by SemVer Define what is and is not covered by SemVer for Julia itself (Base Julia and stdlibs) Feb 9, 2026
Comment on lines +1 to +2
# The Julia Language API and SemVer

Copy link
Member

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

@oscardssmith
Copy link
Member

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
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
- _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):
Copy link
Member

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.
Copy link
Member

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
Copy link
Member

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
Copy link
Member

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.

@oscardssmith oscardssmith removed triage This should be discussed on a triage call status: waiting for triage feedback labels Feb 12, 2026
@oscardssmith
Copy link
Member

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.
Copy link
Member

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

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

Successfully merging this pull request may close these issues.

7 participants