-
Notifications
You must be signed in to change notification settings - Fork 325
Add 3.3.0 announcement #1505
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
Add 3.3.0 announcement #1505
Conversation
Right(()).map(_ => failure) | ||
``` | ||
|
||
the programmer, by mistake, used the `map` method instead of `flatMap`. The code still compiles, but due to value discarding, behaves unexpectedly, returning `Right(())` from the `failedComputation` method. If the `-Wvalue-discard` flag is enabled, the compiler will report the warning, saving the user from a potential bug. |
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.
Would it be possible to show the compiler output in such a case?
|
||
You can read more about our compatibility guarantees in [the recent blog post](https://virtuslab.com/blog/the-scala-3-compatibility-story/). | ||
|
||
## What's new in Scala 3.3.0 |
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.
Consider using the following explicit subsections for this section:
- Language changes
- Developer experience improvements
- Standard library additions
We must make extra clear what is language and what is not language, as it confuses users too often.
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.
We should make things clear what is a language feature for sure, but maybe we can have some tags instead? The sections might comprise of a single point, so that seems very formal for the sake of it being formal.
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.
I think having a section with a single point is good. It makes it very obvious that there is actually very little that changes in the language (contrary to what we can read left and right).
} | ||
``` | ||
|
||
### The new default implementation of lazy vals |
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 should come earlier, as it is the only thing that may potentially have an impact on existing codebases during the upgrade process. Everything else is things you can profit from after you've upgraded.
In the Scala.js release notes, we have an explicit "Changes with compatibility concerns" section before a "What's new" section. See for example https://www.scala-js.org/news/2023/01/26/announcing-scalajs-1.13.0/. Consider doing the same here.
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.
On one hand it will be useful to have a list of things that might cause issues when updating, but maybe we can add it as a later section and let people know at the start?
"For compatibility concerns look to..."
This way we can first focus on things that are most interesting to users?
Also if lazy vals are an internal thing, so maybe it should on be in the same section? Or have a section with Impactful changes for x.y.z release
? If the new lazy vals are not working then it's a bug and if we say that it's compatibility concerns
that might cause people to think that something changed that might make their code stop compiling, while it's actually very unlikely.
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 way we can first focus on things that are most interesting to users?
Not every user has the same interests. When I upgrade something, the first thing I want to know is: is there anything I should pay attention to while I upgrade? 90% of the time, that's all I care about in release notes of software I use. The "exciting stuff" is not interesting to me in that scenario.
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.
A clear link and mention should be ok then, no? I think a lot of people might be interested about the "exciting stuff" so it would be good to cater to both demographics.
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.
Yes, sure. At the end of the day, it's a matter of opinion. If you prefer to show the exciting stuff first given those considerations, go for it. ;)
|
||
If you are a library author following semantic versioning, we advise you to update to Scala 3.3.0 in the next minor release of your project. Users of your library would also need to bump their compiler version to use the newest version of your library. If you have already published a minor version on 3.3.0 but learned about a critical vulnerability in your library, you can release a new patch release for the previous minor version of your library using Scala 3.2.2 (or any other version of the compiler you were using previously). This patch can be consumed by all the users of previous versions of the library, no matter if they have already switched to 3.3.0 or not. | ||
|
||
### Known incompatibility: Stability of inline parameters |
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 is also for the "Changes with compatibility concerns" section.
You probably want to make it more explicit that this a bug fix (so OK to do in a minor version), but for which we have already noticed existing problems in the wild, and so we're helping users by proactively giving them more information on how to deal with it.
028f3a0
to
d86b291
Compare
I've applied all the language suggestions. Now I'm thinking about the structural changes suggested by @sjrd. if I understand them correctly, we would end up with a structure like this:
I see a bunch of problems:
If others agree, I'm ok with removing the second example from the |
I think Sébastien’s suggestion makes sense. You could start with a section “Release Highlights” (just before “Changes with compatibility concerns”) with a summary of the high-impact changes for the end-users (like sbt does). I also agree with removing some content from the boundary/break section. |
To address that specific concern, you can remove the heading "Changes in 3.3.0" and move everything under it one level up. It's the release notes for 3.3.0, so we already know that "changes" are about 3.3.0. |
6d02f91
to
3b0f4b6
Compare
val aInner: a.Inner = ??? // ok | ||
|
||
var b = new Outer | ||
// val bInner: b.Inner = ??? // error |
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.
Maybe we should not comment out these erroneous lines as the purpose of the snippet is to show compilation errors?
@Kordyjan I see the conversation has a bit stalled regarding the ordering of things. At the end of the day, this is a matter of opinion about what message you want to send first. You're the one in charge, here, so if you prefer to send the positive stuff first, by all means do it. Irrespective of the ordering, @julienrf's suggestion of having a highlights section with links to every section (in a table of contents kind of way) sounds like a good idea. |
Co-authored-by: Michał Pałka <[email protected]>
301cf91
to
6da6b46
Compare
6da6b46
to
607c458
Compare
The content is fine to me, even though there are still some relevant (IMHO), unaddressed comments. Could you please show how the image is rendered on desktop screens and mobile devices? |
No description provided.