Skip to content

Add Scala 3.7.0 release blog post #1798

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

Merged
merged 10 commits into from
May 7, 2025
Merged

Add Scala 3.7.0 release blog post #1798

merged 10 commits into from
May 7, 2025

Conversation

WojciechMazur
Copy link
Contributor

Blogpost for the Scala 3.7.0 release, scheduled for May 7th

Comment on lines 377 to 387
#### Scala CLI

Scala runner has been updated and uses now Scala CLI 1.7.1.
The new Scala runner uses `scalafmt` binaries built using Scala Native for `fmt` subcommand, this change can improve the performance of formatting Scala sources. It also includes experimental support for running `scalafix` rules using `scala fix` subcommand.

Please refer to Scala CLI changelogs for more details:

* [Scala CLI 1.6.0](https://github.com/VirtusLab/scala-cli/releases/tag/v1.6.0)
* [Scala CLI 1.6.1](https://github.com/VirtusLab/scala-cli/releases/tag/v1.6.1)
* [Scala CLI 1.7.0](https://github.com/VirtusLab/scala-cli/releases/tag/v1.7.0)
* [Scala CLI 1.7.1](https://github.com/VirtusLab/scala-cli/releases/tag/v1.7.1)
Copy link
Contributor Author

Choose a reason for hiding this comment

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

@Gedochao I'm not sure if we should highlight experimental changes introduced to Scala runner. I also had no good idea how to scope the introduced changes since 1.5.4. Maybe you have some idea how to write down the introduce changes to the runner?

Copy link
Contributor

Choose a reason for hiding this comment

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

I believe experimental changes should be highlighted, yep.
I added a comment with suggested changes. It mostly refactors what's already there.

The presentation compiler is a specialized instance of the Scala compiler that runs interactively in IDEs or LSPs, providing immediate feedback about code correctness, type checking, symbol resolution, autocompletion, error highlighting, and other editing support functionalities.
Some of the latest improvements to the presentation compiler focus on the ability to infer more information about expected types of expressions provided by the users. As the results presented compiler can now show the users the expected type of expression when hovering over holes.

### Quotes API changes
Copy link
Contributor Author

Choose a reason for hiding this comment

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

@jchyb Can I ask for technical review of this part? I don't want to make some mistake in here

Comment on lines 16 to 17
### [SIP-52: Binary APIs](https://docs.scala-lang.org/sips/binary-api.html)

Copy link
Contributor Author

Choose a reason for hiding this comment

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

The SIP contains a fragment about the deprecation strategy, where previously deprecated-public method becomes package-private and publicInBinary. Is it still the use case?
Is there any case where where protected or package private method is emitted as private in bytecode? AFAIK these 2 are always emitted with ACC_PUBLIC so effectively public.


## New experimental SIPs

### [SIP-61: Unroll Default Arguments for Binary Compatibility](https://docs.scala-lang.org/sips/unroll-default-arguments.html)
Copy link
Contributor Author

Choose a reason for hiding this comment

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

@bishabosha Can I ask for a quick technical review here as your the implementor of the @unroll?

@WojciechMazur WojciechMazur requested review from SethTisue and tgodzik May 1, 2025 19:04
@WojciechMazur
Copy link
Contributor Author

There were some PRs labeled with release-notes that are not covered here. I belive the text is already long enough. I'm not sure if these are intresting enough to cover here

REPL: add flag to quit after evaluating init script scala/scala3#22636
REPL: implement :jar (deprecate :require) scala/scala3#22343

}
```

Furthermore, the `Quotes.newClass` method has been extended to support class parameters, flags, privateWithin, and annotations ([#21880](https://github.com/scala/scala3/pull/21880)). This enhancement enables the dynamic creation of classes with constructors, access modifiers, and annotations, providing greater control over generated code structures.
Copy link
Member

Choose a reason for hiding this comment

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

@lihaoyi fyi for Cross macro in mill

@Gedochao
Copy link
Contributor

Gedochao commented May 5, 2025

There were some PRs labeled with release-notes that are not covered here. I belive the text is already long enough. I'm not sure if these are intresting enough to cover here

REPL: add flag to quit after evaluating init script scala/scala3#22636 REPL: implement :jar (deprecate :require) scala/scala3#22343

@WojciechMazur I believe :jar is rather important to mention (scala/scala3#22343)
The other change is primarily for internal use, so it's perhaps less important to describe.


## Other notable changes

### New scheme for given prioritization
Copy link
Contributor

Choose a reason for hiding this comment

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

As this is kind-of breaking change, shouldn't we somehow point this out at the very beginning of the blog post?

@WojciechMazur WojciechMazur marked this pull request as ready for review May 7, 2025 10:39
@WojciechMazur WojciechMazur merged commit 4ff3667 into main May 7, 2025
1 check passed
@WojciechMazur WojciechMazur deleted the release/3.7.0 branch May 7, 2025 11:16
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.