AcknowledgementsTopThe Force of ConventionVersion NumbersContents

Version Numbers

In fact, strictly speaking, the package clause change change would have forced us to bump up the major version number of the language. Scala's inofficial versioning scheme is as follows.

  1. Backwards incompatible changes in the language demand a new major version number, like the change from Scala 1 to Scala 2 in March 2005. The major version number would also have to be changed if there are sufficient additions to turn Scala into what's effectively a different language. So Scala 3 should mean something substantially different from Scala 2.
  2. New language features and backwards incompatible changes in the libraries demand a point number increment, e.g. from Scala 2.7 to 2.8. Backwards incompatible changes in libraries should be phased in slowly with -deprecation warnings or, where this is not possible, should be accompanied -Xmigration warnings.
  3. Backwards compatible library additions and bug fixes only demand a change in third version number e.g. Scala 2.8.0 to 2.8.1.
This versioning scheme is simply what we tried to follow so far; it does not have any official status, nor should it be assumed that it will always be like this.

The change in the meaning of package clauses is not backwards compatible and therefore would have demanded a major version jump to 3.0. However, the change came late in the run-up to 2.8, and was prompted by urgent requests from our users. At the time we had to choose among three possibilities: The first option was to go directly from 2.7 to 3.0. However, there were already books in print that talked about Scala 2.8. Readers of those books would have been unnecessarily confused. Besides, it's not nice to end up with a phantom version of a language that people talked a lot about but that never saw the light of day. The second option was to wait with the change to package clauses until after 2.8. This was unattractive precisely because the change can break existing code. If you need to do the change, the sooner you do it the better. The longer you wait, the more code there will be that might break. The third option was to make an exception to our numbering scheme, and that's the one we picked in the end.


AcknowledgementsTopThe Force of ConventionVersion NumbersContents