Skip to content
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

3.1 release blogpost #1284

Merged
merged 23 commits into from
Oct 21, 2021
Merged

3.1 release blogpost #1284

merged 23 commits into from
Oct 21, 2021

Conversation

Kordyjan
Copy link
Contributor

The first draft of the 3.1 release blogpost.

@Kordyjan
Copy link
Contributor Author

@prolativ: can you take a look and suggest changes?

@pikinier20: can you suggest a few sentences about Scastie in Scaladoc and provide a gif showing the new functionality.

blog/_posts/2021-10-19-scala-3.1.0-released.md Outdated Show resolved Hide resolved
blog/_posts/2021-10-19-scala-3.1.0-released.md Outdated Show resolved Hide resolved
blog/_posts/2021-10-19-scala-3.1.0-released.md Outdated Show resolved Hide resolved
blog/_posts/2021-10-19-scala-3.1.0-released.md Outdated Show resolved Hide resolved
blog/_posts/2021-10-19-scala-3.1.0-released.md Outdated Show resolved Hide resolved
blog/_posts/2021-10-19-scala-3.1.0-released.md Outdated Show resolved Hide resolved
blog/_posts/2021-10-19-scala-3.1.0-released.md Outdated Show resolved Hide resolved
blog/_posts/2021-10-19-scala-3.1.0-released.md Outdated Show resolved Hide resolved
blog/_posts/2021-10-19-scala-3.1.0-released.md Outdated Show resolved Hide resolved
blog/_posts/2021-10-19-scala-3.1.0-released.md Outdated Show resolved Hide resolved
blog/_posts/2021-10-19-scala-3.1.0-released.md Outdated Show resolved Hide resolved
blog/_posts/2021-10-19-scala-3.1.0-released.md Outdated Show resolved Hide resolved
Kordyjan and others added 3 commits October 18, 2021 16:55
Co-authored-by: Vinz <bazzucchi.vincenzo@gmail.com>
Co-authored-by: Michał Pałka <prolativus@gmail.com>
@SethTisue
Copy link
Member

SethTisue commented Oct 19, 2021

I apologize for not suggesting this sooner, but I think it's really important that the blog post be super explicit and up-front about the following:

https://twitter.com/SethTisue/status/1450260785762947076

PSA: Scala 3.0 cannot consume 3.1-compiled libraries. Scala 3 minor versions are backwards compatible only, not forwards. This is a big change from Scala 2.

here's what happens if you try:
% echo 'class C' > C.scala
% scalac --scala-version 3.1.0 C.scala
% echo 'class D { new C }' > D.scala
% scalac --scala-version 3.0.0 D.scala
http://dotty.tools.tasty.UnpickleException
TASTy signature has wrong version

So unlike Scala 2, you cannot upgrade your libraries at will. If the library maintainers have moved to a newer Scala 3 minor version, you must move as well in order to use the latest library version.

(Keep in mind that Scala 2 version numbers are epoch.major.minor; Scala 3 version numbers are major.minor.patch.)

(Note that Scala.js has long worked this way; it's normal to have to upgrade Scala.js before upgrading a library. sbt is the same; it's normal to need to upgrade sbt itself before upgrading a plugin. It's fine; I believe we'll all adjust to Scala 3 now being this way too.)

@smarter
Copy link
Member

smarter commented Oct 19, 2021

We could have a blurb similar to the one used in the Scala.js blog posts: https://www.scala-js.org/news/2021/08/04/announcing-scalajs-1.7.0/ (starting from "This is a minor release").

@Kordyjan
Copy link
Contributor Author

I've added a paragraph about compatibility.
@SethTisue @smarter Can you take a look?

Kordyjan and others added 3 commits October 20, 2021 11:33
Co-authored-by: Dale Wijnand <dale.wijnand@gmail.com>
Co-authored-by: Julien Richard-Foy <julien@richard-foy.fr>
Co-authored-by: Jamie Thompson <bishbashboshjt@gmail.com>
@Kordyjan Kordyjan marked this pull request as ready for review October 20, 2021 17:00
Kordyjan and others added 2 commits October 20, 2021 19:38
Co-authored-by: Julien Richard-Foy <julien@richard-foy.fr>
Co-authored-by: Julien Richard-Foy <julien@richard-foy.fr>
blog/_posts/2021-10-21-scala-3.1.0-released.md Outdated Show resolved Hide resolved
blog/_posts/2021-10-21-scala-3.1.0-released.md Outdated Show resolved Hide resolved

Although we cannot guarantee full source compatibility between minor versions, we have put a lot of effort into assuring that all code that was working in 3.0.2, except in some rare cases, will also work in 3.1.0. This means that if you are an application developer, you can confidently update the compiler version to take advantage of the newest improvements. You will still be able to use dependencies compiled with Scala 3.0.

If you are a library maintainer, *updating to 3.1.0 will force all of your users to update to 3.1.0 as well*. We understand that the current state of binary compatibility may be unsatisfactory. We are actively working on technical solutions to support forward-compatibility in 3.2.0. In the meantime, we recommend testing your library with Scala 3.1.0 and 3.0.2, but _publishing_ it with 3.0.2. This will allow downstream users to use your library even if they can’t update to Scala 3.1.0. You can find an example of build that follows this recommendation [here](https://github.com/typelevel/scalacheck/pull/847).
Copy link
Member

Choose a reason for hiding this comment

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

We are actively working on technical solutions to support forward-compatibility in 3.2.0.

Is this a promise? It isn't, right? We aren't sure if this will actually happen in 3.2.0? If so, consider weakening the wording a little, perhaps to "We are exploring possible technical solutions to..."

Copy link
Contributor Author

Choose a reason for hiding this comment

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

It is intended to be a promise - a promise that we will not release another minor version until we have a solution for the compatibility problem.

Copy link
Member

Choose a reason for hiding this comment

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

I don't think we should commit - and therefore sound like we're committing - to that. That's not to say I'm not all for finding something better and shipping it in 3.2.0. But if it takes 6 months we might ship everything else as a minor release before the solution. So let's mention intent and desire, but no commitment.

blog/_posts/2021-10-21-scala-3.1.0-released.md Outdated Show resolved Hide resolved
blog/_posts/2021-10-21-scala-3.1.0-released.md Outdated Show resolved Hide resolved
blog/_posts/2021-10-21-scala-3.1.0-released.md Outdated Show resolved Hide resolved
blog/_posts/2021-10-21-scala-3.1.0-released.md Outdated Show resolved Hide resolved
blog/_posts/2021-10-21-scala-3.1.0-released.md Outdated Show resolved Hide resolved
blog/_posts/2021-10-21-scala-3.1.0-released.md Outdated Show resolved Hide resolved
Kordyjan and others added 3 commits October 21, 2021 14:36
Co-authored-by: Michał Pałka <prolativus@gmail.com>
Co-authored-by: Michał Pałka <prolativus@gmail.com>
Copy link
Member

@dwijnand dwijnand left a comment

Choose a reason for hiding this comment

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

This is missing the bit about suggesting to update in a minor version, if updating.

@Kordyjan
Copy link
Contributor Author

This is missing the bit about suggesting to update in a minor version, if updating.

After #1284 (comment) I and @romanowski decided that if we are recommending not publishing builds for 3.1 at all, it will only add to the confusion if later we suggest in which version the bump should be performed.

@prolativ prolativ merged commit 6c55ed8 into scala:main Oct 21, 2021
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.