Skip to content

[chore] Sync main with language-reference-stable changes #23306

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 1 commit into from
Jun 3, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
266 changes: 266 additions & 0 deletions changelogs/3.7.0-RC1.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,266 @@
# Highlights of the release

- Add `@scala.annotation.internal.preview` annotation and `-preview` flag. [#22317](https://github.com/scala/scala3/pull/22317)
- Make SIP-52 `@publicInBinary` a stable feature in 3.7 [#22591](https://github.com/scala/scala3/pull/22591)
- Make SIP-58 - `Named Tuples` a stable feature in 3.7 [#22753](https://github.com/scala/scala3/pull/22753)
- Make SIP-62 - `Better Fors` a preview feature in 3.7 [#22776](https://github.com/scala/scala3/pull/22776)
- Implement SIP-61 `@unroll` annotation as experimental [#21693](https://github.com/scala/scala3/pull/21693)
- Upgrade Scala 2 Standard Library to 2.13.16 [#22386](https://github.com/scala/scala3/pull/22386)
- Upgrade Scala.js to 1.18.1. [#22397](https://github.com/scala/scala3/pull/22397)
- Upgrade Scala CLI to 1.7.0 [#22735](https://github.com/scala/scala3/pull/22735)
- Expression Compiler is now part of Scala 3 compiler [#22597](https://github.com/scala/scala3/pull/22597)
- Quotes API: Added `apply` methods to import selectors [#22457](https://github.com/scala/scala3/pull/22457)
- Quotes API: Implement experimental `summonIgnoring` method [#22417](https://github.com/scala/scala3/pull/22417)
- Quotes API: Add class parameters, flags, and privateWithin and annotations to experimental `newClass` methods [#21880](https://github.com/scala/scala3/pull/21880)
- Experimental: Capture Calculus - Inferring `tracked` modifier [#21628](https://github.com/scala/scala3/pull/21628)
- Presentation Compiler: Show inferred type on holes in hover [#21423](https://github.com/scala/scala3/pull/21423)
- JVM Backend: Fix #15736 blocking Scala 3 on Android [#22632](https://github.com/scala/scala3/pull/22632)
- REPL: add flag to quit after evaluating init script [#22636](https://github.com/scala/scala3/pull/22636)
- REPL: implement :jar (deprecate :require) [#22343](https://github.com/scala/scala3/pull/22343)
- Linting: Improvements to -Wunused and -Wconf [#20894](https://github.com/scala/scala3/pull/20894)
- Implicit parameters warn at call site without `using` keyword [#22441](https://github.com/scala/scala3/pull/22441)
- Minimal support for dependent case classes [#21698](https://github.com/scala/scala3/pull/21698)

# Other changes and fixes

## Annotations

- Lift arguments of explicitly constructed annotations [#22553](https://github.com/scala/scala3/pull/22553)
- Fix copy of annotation on `@main` methods [#22582](https://github.com/scala/scala3/pull/22582)
- `@publicInBinary` has now effect on secondary constructors [#22630](https://github.com/scala/scala3/pull/22630)
- Fix mapping of annotations [#22407](https://github.com/scala/scala3/pull/22407)

## Backend: Scala.js

- Emit `js.NewArray` IR nodes when possible. [#22446](https://github.com/scala/scala3/pull/22446)

## Classpath

- Fix empty ClassPath attribute in one or more classpath jars causes crash [#22462](https://github.com/scala/scala3/pull/22462)

## Documentation

- Improve the usage of inclusive language [#22360](https://github.com/scala/scala3/pull/22360)

## Erasure

- Handle type aliases in contextFunctionResultTypeAfter [#21517](https://github.com/scala/scala3/pull/21517)
- Align erasure of `Array[Nothing]` and `Array[Null]` with Scala 2 [#22517](https://github.com/scala/scala3/pull/22517)

## Desugering

- Under `betterFors` don't drop the trailing `map` if it would result in a different type (also drop `_ => ()`) [#22619](https://github.com/scala/scala3/pull/22619)

## Experimental: Capture Checking

- Canonicalize capture variable subtype comparisons [#22299](https://github.com/scala/scala3/pull/22299)
- Permit Capture Refs for Uninitialized Type and Term Params in BiTypeMap [#22451](https://github.com/scala/scala3/pull/22451)
- Fix maximal capability handling and expand aliases [#22341](https://github.com/scala/scala3/pull/22341)

## Experimental: Modularity

- Widen skolem types when adding parent refinements [#22488](https://github.com/scala/scala3/pull/22488)

## Experimental: Global Initialization Checker

- Refactor the abstract domain of global init checker to compile http4s [#22179](https://github.com/scala/scala3/pull/22179)
- Fix global init checking crash when using a value defined in by-name closure [#22625](https://github.com/scala/scala3/pull/22625)

## Experimentals

- Expand value references to packages to their underlying package objects [#22011](https://github.com/scala/scala3/pull/22011)

## Implicits

- Restrict implicit args to using [#22458](https://github.com/scala/scala3/pull/22458)

## Linting

- Suppress spurious Suppression [#22383](https://github.com/scala/scala3/pull/22383)
- CheckUnused checks span.exists before testing its parts [#22504](https://github.com/scala/scala3/pull/22504)
- Don't warn retainedBody [#22510](https://github.com/scala/scala3/pull/22510)
- Handle Typeable [#22663](https://github.com/scala/scala3/pull/22663)
- Nowarn public implicit val class params [#22664](https://github.com/scala/scala3/pull/22664)
- Exclude synthetic this.m, Any.m from import lookup [#22695](https://github.com/scala/scala3/pull/22695)
- Warn unused member of anonymous class [#22729](https://github.com/scala/scala3/pull/22729)
- Ignore params to default arg getters [#22749](https://github.com/scala/scala3/pull/22749)
- Lazy val def member is pattern var [#22750](https://github.com/scala/scala3/pull/22750)
- Restore resolving prefixes of implicit Ident [#22751](https://github.com/scala/scala3/pull/22751)
- No warning for parameter of overriding method [#22757](https://github.com/scala/scala3/pull/22757)
- Dealias before checking for member in lint [#22708](https://github.com/scala/scala3/pull/22708)
- Warn on bad extensions of aliases [#22362](https://github.com/scala/scala3/pull/22362)
- Warn universal extensions on opaque types [#22502](https://github.com/scala/scala3/pull/22502)
- Discourage default arg for extension receiver [#22492](https://github.com/scala/scala3/pull/22492)
- Rename on import is never wildcard [#22712](https://github.com/scala/scala3/pull/22712)
- Collect nowarn symbols instead of skipping them [#22766](https://github.com/scala/scala3/pull/22766)

## Match Types

- Handle NoType in TypeComparer.disjointnessBoundary [#21520](https://github.com/scala/scala3/pull/21520)

## Named Tuples

- Special case NamedTuple.From for arguments derived from Tuple [#22449](https://github.com/scala/scala3/pull/22449)
- Generate mirrors for named tuples [#22469](https://github.com/scala/scala3/pull/22469)

## Opaque Types

- Fix stack overflow errors when generating opaque type proxies [#22479](https://github.com/scala/scala3/pull/22479)
- Fix inline proxy generation for opaque types referencing other opaque types [#22381](https://github.com/scala/scala3/pull/22381)
- Fix opaque types leaking rhs when inlined and found in type params (and a related stale symbol issue) [#22655](https://github.com/scala/scala3/pull/22655)

## Overloading

- Make overload pruning based on result types less aggressive [#21744](https://github.com/scala/scala3/pull/21744)

## Parser

- Fix annotations being not expected in the middle of an array type by java parser [#22391](https://github.com/scala/scala3/pull/22391)
- No outdent at eof [#22435](https://github.com/scala/scala3/pull/22435)
- Allow observing an indent after conditional [#22611](https://github.com/scala/scala3/pull/22611)
- Correctly detect colon lambda eol indent for optional brace of argument [#22477](https://github.com/scala/scala3/pull/22477)

## Pattern Matching

- Avoid crash in uninhab check in Space [#22601](https://github.com/scala/scala3/pull/22601)
- Account for named tuples in space subtraction [#22658](https://github.com/scala/scala3/pull/22658)
- Check exhaustivity of any case class [#22604](https://github.com/scala/scala3/pull/22604)

## Presentation Compiler

- Add enum type param support in sourceSymbol [#18603](https://github.com/scala/scala3/pull/18603)
- Map name position to desugared version of named context bound [#22374](https://github.com/scala/scala3/pull/22374)
- Hover and go to definition for named tuples [#22202](https://github.com/scala/scala3/pull/22202)
- Completions: do not complete package [#20532](https://github.com/scala/scala3/pull/20532)
- Print parens for single method argument only if a direct tuple type [#21510](https://github.com/scala/scala3/pull/21510)
- Improvement: use heuristic to figure out `nameSpan` if `pointDelta` too big [#22484](https://github.com/scala/scala3/pull/22484)
- Fix inferredTypeEdits for symbols [#22485](https://github.com/scala/scala3/pull/22485)
- Fix: Only fallback to the definition of a synthetic valdef if it is zero extent [#22551](https://github.com/scala/scala3/pull/22551)
- Better LSP completions inside of backticks [#22555](https://github.com/scala/scala3/pull/22555)
- Don't search for members in pc info when irrelevant [#22674](https://github.com/scala/scala3/pull/22674)
- Backport from Metals [#22426](https://github.com/scala/scala3/pull/22426)
- Backport from Metals [#22491](https://github.com/scala/scala3/pull/22491)
- Backport from Metals [#22665](https://github.com/scala/scala3/pull/22665)

## Runner

- Upgrade Scala CLI to [1.7.0 highlights](https://github.com/VirtusLab/scala-cli/releases/tag/v1.7.0)
- Switch to scalameta/scalafmt images of scalafmt 3.9.1+ [#3502](https://github.com/VirtusLab/scala-cli/pull/3502)
- Support the `--test` command line option for `run` subcommand [#3519](https://github.com/VirtusLab/scala-cli/pull/3519)
- Support the `--test` command line option for `package` subcommand [#3519](https://github.com/VirtusLab/scala-cli/pull/3519)
- Detect objects with main class in scripts [#3479](https://github.com/VirtusLab/scala-cli/pull/3479)
- Support for Scala.js 1.18.2 [#3454](https://github.com/VirtusLab/scala-cli/pull/3454)
- Support for Scala Native 0.5.7 [#3527](https://github.com/VirtusLab/scala-cli/pull/3527)
- Add support for running a main method from the test scope [#3502](https://github.com/VirtusLab/scala-cli/pull/3502)

## Quotes

- Add a check for correct Array shape in quotes.reflect.ClassOfConstant [#22033](https://github.com/scala/scala3/pull/22033)
- Fix issue with static `this` references erroring in quoted code [#22618](https://github.com/scala/scala3/pull/22618)
- Fix #21721: make case TypeBlock(_,_) not match non-type Block [#21722](https://github.com/scala/scala3/pull/21722)
- Make Ref.apply() return trees usable in the largest scope possible [#22240](https://github.com/scala/scala3/pull/22240)
- Make sure Block does not incorrectly match a TypeBlock [#22716](https://github.com/scala/scala3/pull/22716)
- Do not approximate prefixes when using memberType in reflect API [#22448](https://github.com/scala/scala3/pull/22448)
- Bring back pattern match exhaustivity checking for macros [#22622](https://github.com/scala/scala3/pull/22622)

## REPL

- REPL: JLine 3.29.0 (was 3.27.1) [#22679](https://github.com/scala/scala3/pull/22679)
- Repl: emit warning for the `:sh` command [#22694](https://github.com/scala/scala3/pull/22694)
- Add warning for :kind command [#22572](https://github.com/scala/scala3/pull/22572)

## Reporting

- Filter help renders box border [#22434](https://github.com/scala/scala3/pull/22434)
- Register nowarn when inlining [#22682](https://github.com/scala/scala3/pull/22682)
- Rule out exports of member of the current class [#22545](https://github.com/scala/scala3/pull/22545)

## Scaladoc

- Render `@deprecated` correctly even when named arguments weren't used [#21925](https://github.com/scala/scala3/pull/21925)
- Remove DRI from Scaladoc warnings [#22330](https://github.com/scala/scala3/pull/22330)

## SemanticDB

- Don't add `()` to semanticdb symbol for java variables [#22573](https://github.com/scala/scala3/pull/22573)
- Fix compiler crash when using betasty with missing java classfiles [#22599](https://github.com/scala/scala3/pull/22599)

## Transform

- Check only stable qual for import prefix [#22633](https://github.com/scala/scala3/pull/22633)
- Treat static vals as enclosures in lambdalift [#22452](https://github.com/scala/scala3/pull/22452)
- Record calls to constructors in lambdaLift [#22487](https://github.com/scala/scala3/pull/22487)
- Only check logicalOwners for methods, and not for classes, when looking for proxies [#22356](https://github.com/scala/scala3/pull/22356)
- Add error-checking when fetching rhs of trees from TASTy [#22565](https://github.com/scala/scala3/pull/22565)

## Typer

- Root of Java select must be class or rooted package [#21800](https://github.com/scala/scala3/pull/21800)
- Check if a prefix is valid before selecting from a type [#22368](https://github.com/scala/scala3/pull/22368)
- Preserve hard unions in widenSingletons [#22369](https://github.com/scala/scala3/pull/22369)
- Constructor proxy is restricted if class is protected [#22563](https://github.com/scala/scala3/pull/22563)
- Constructor companion gets privateWithin [#22627](https://github.com/scala/scala3/pull/22627)
- Revert lambda cleanup [#22697](https://github.com/scala/scala3/pull/22697)
- Avoid infinite recursion when looking for suggestions [#22361](https://github.com/scala/scala3/pull/22361)
- Fix cyclic check, regardless of definition order [#22342](https://github.com/scala/scala3/pull/22342)
- Avoid inf recursion in provablyDisjointClasses [#22489](https://github.com/scala/scala3/pull/22489)

## Value Classes

- Allow private members when computing the denotation of a NamedType [#22549](https://github.com/scala/scala3/pull/22549)

## Other changes

- Remove locale dependent FileSystemException check [#21633](https://github.com/scala/scala3/pull/21633)

# Contributors

Thank you to all the contributors who made this release possible 🎉

According to `git shortlog -sn --no-merges 3.6.4..3.7.0-RC1` these are:

```
59 Martin Odersky
43 Som Snytt
33 Adrien Piquerez
32 Hamza Remmal
21 Wojciech Mazur
19 aherlihy
19 kasiaMarek
15 Jan Chyb
13 Dale Wijnand
11 Kacper Korban
10 EnzeXing
7 Guillaume Martres
7 Matt Bovel
7 Oliver Bračevac
7 noti0na1
6 Sébastien Doeraene
5 HarrisL2
5 Jamie Thompson
5 dependabot[bot]
4 Joel Wilsson
4 Seth Tisue
3 Piotr Chabelski
3 Roman Janusz
3 anna herlihy
2 David Hua
1 Alec Theriault
1 Daisy Li
1 Daniel Thoma
1 Dmitrii Naumenko
1 Felix Herrmann
1 He-Pin(kerr)
1 João Ferreira
1 Jędrzej Rochala
1 Katarzyna Marek
1 Kenji Yoshida
1 Niklas Fiekas
1 Rocco Mathijn Andela
1 Vadim Chelyshov
1 Yichen Xu
1 adpi2
1 fan-tom
1 philwalk
1 rochala
```
27 changes: 27 additions & 0 deletions changelogs/3.7.0-RC2.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
# Backported changes

- Backport "Check trailing blank line at EOF for OUTDENT" to 3.7.0 [#22942](https://github.com/scala/scala3/pull/22942)
- Backport "Fail compilation if multiple conflicting top-level private defs/vals are in the same package" to 3.7 [#22932](https://github.com/scala/scala3/pull/22932)
- Backport "Deprecate `Yno-kind-polymorphism`" to 3.7 [#22931](https://github.com/scala/scala3/pull/22931)
- Backport "Revert unconditional lint of Inlined expansion" to 3.7 [#22930](https://github.com/scala/scala3/pull/22930)
- Backport "Bump Scala CLI to v1.7.1 (was v1.7.0)" to 3.7 [#22929](https://github.com/scala/scala3/pull/22929)
- Backport "Fix #22794: Emit the definition of Arrays.newArray even though it's a primitive." to 3.7.0 [#22801](https://github.com/scala/scala3/pull/22801)

# Reverted changes

- Revert "Make overload pruning based on result types less aggressive" in 3.7.0 [#22940](https://github.com/scala/scala3/pull/22940)

# Contributors

Thank you to all the contributors who made this release possible 🎉

According to `git shortlog -sn --no-merges 3.7.0-RC1..3.7.0-RC2` these are:

```
4 Som Snytt
4 Wojciech Mazur
1 Jan Chyb
1 Piotr Chabelski
1 Sébastien Doeraene
1 Yichen Xu
```
16 changes: 16 additions & 0 deletions changelogs/3.7.0-RC3.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
# Backported changes

- Backport "Two fixes to NamedTuple pattern matching" to 3.7.0 [#22995](https://github.com/scala/scala3/pull/22995)
- Backport "changes to scala.caps in preparation to make Capability stable" to 3.7.0 [#22967](https://github.com/scala/scala3/pull/22967)

# Contributors

Thank you to all the contributors who made this release possible 🎉

According to `git shortlog -sn --no-merges 3.7.0-RC2..3.7.0-RC3` these are:

```
4 Martin Odersky
2 Wojciech Mazur
1 Natsu Kagami
```
15 changes: 15 additions & 0 deletions changelogs/3.7.0-RC4.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
# Backported changes

- Backport "Upgrade to Scala.js 1.19.0." to 3.7 [#23035](https://github.com/scala/scala3/pull/23035)


# Contributors

Thank you to all the contributors who made this release possible 🎉

According to `git shortlog -sn --no-merges 3.7.0-RC3..3.7.0-RC4` these are:

```
2 Sébastien Doeraene
1 Tomasz Godzik
```
Loading
Loading