Releases: scala/scala3
3.3.0-RC2
This release is nearly identical to 3.3.0-RC1. The only difference is that 3.3.0-RC1 generated output with incorrect TASTy version.
The following changelog is identical to the changelog of 3.3.0-RC1.
Highlights of the release
- Stabilize new lazy vals #16614
- Experimental Macro annotations #16392 #16454 #16534
- Fix stability check for inline parameters #15511
- Make
fewerBraces
a standard feature #16297 - Add new front-end phase for unused entities and add support for unused imports #16157
- Implement -Wvalue-discard warning #15975
- Introduce boundary/break control abstraction. #16612
Other changes and fixes
Annotations
- Support use-site meta-annotations #16445
Desugaring
- Reuse typed prefix for
applyDynamic
andapplyDynamicNamed
#16552 - Fix object selftype match error #16441
Erasure
- Dealias before checking for outer references in types #16525
- Fix generic signature for type params bounded by primitive #16442
- Avoid EmptyScope.cloneScope crashing, eg on missing references #16314
GADTs
- Inline GADT state restoring in TypeComparer #16564
- Add extension/conversion to GADT selection healing #16638
Incremental compilation
- Unpickle arguments of parent constructors in Templates lazily #16688
Initialization
Inline
- Dealias in ConstantValue, for inline if cond #16652
- Set Span for top level annotations generated in PostTyper #16378
- Interpolate any type vars from comparing against SelectionProto #16348
- Handle binding of beta reduced inlined lambdas #16377
- Do not add dummy RHS to abstract inline methods #16510
- Warn on inline given aliases with functions as RHS #16499
- Support inline overrides in value classes #16523
Java interop
- Represent Java annotations as interfaces so they can be extended, and disallow various misuses of them #16260
Opaque Types
- Delay opaque alias checking until PostTyper #16644
Overloading
- Handle context function arguments in overloading resolution #16511
Parser
- Improve support for Unicode supplementary characters in identifiers and string interpolation (as in Scala 2) #16278
- Require indent after colon at EOL #16466
- Help givens return refined types #16293
Pattern Matching
- Tweak AvoidMap's derivedSelect #16563
- Space: Use RHS of & when refining subtypes #16573
- Freeze constraints in a condition check of maximiseType #16526
- Restrict syntax of typed patterns #16150
- Test case to show that #16252 works with transparent #16262
- Support inline unapplySeq and with leading given parameters #16358
- Handle sealed prefixes in exh checking #16621
- Detect irrefutable quoted patterns #16674
Pickling
- Allow case classes with up to 254 parameters #16501
- Correctly unpickle Scala 2 private case classes in traits #16519
Polyfunctions
Quotes
- Remove contents of inline methods #16345
- Fix errors in explicit type annotations in inline match cases #16257
- Handle macro annotation suspends and crashes #16509
- Fix macro annotations
spliceOwner
#16513
REPL
- REPL: Fix crash when printing instances of value classes #16393
- Attempt to fix completion crash #16267
- Fix REPL shadowing bug #16389
- Open up for extensibility #16276
- Don't crash if completions throw #16687
Reflection
Reporting
- Suppress follow-on errors for erroneous import qualifiers #16658
- Fix order in which errors are reported for assignment to val #16660
- Fix class name in error message #16635
- Make refined type printing more source compatible #16303
- Add error hint on local inline def used in quotes #16572
- Fix Text wrapping #16277
- Fix -Wunused:import registering constructor
<init>
instead of its owner (also fix false positive for enum) #16661 - Fix #16675 : -Wunused false positive on case class generated method, due to flags used to distinguish case accessors. #16683
- Fix #16680 by registering Ident not containing a symbol #16689
- Fix #16682: CheckUnused missed some used symbols #16690
- Fix the non-miniphase tree traverser #16684
Scala-JS
Standard Library
TASTy format
- Make it a fatal error if erasure cannot resolve a type #16373
Tooling
Transform
- Avoid stackoverflow in ExplicitOuter #16381
- Make lazy vals run on non-fallback graal image - remove dynamic reflection #16346
- Patch to avoid crash in #16351 #16354
- Don't treat package object's
<init>
methods as package members #16667 - Space: Refine isSubspace property & an example #16574
Typer
- Drop requirement that self types are closed #16648
- Disallow constructor params from appearing in parent types for soundness #16664
- Don't search implicit arguments in singleton type prefix #16490
- Don't rely on isProvisional to determine whether atoms computed #16489
- Support signature polymorphic methods (
MethodHandle
andVarHandle
) #16225 - Prefer parameterless alternatives during ambiguous overload resolution #16315
- Fix calculation to drop transparent classes #16344
- Test case for issue 16311 #16317
- Skip caching provisional OrType atoms #16295
- Avoid cyclic references due to experimental check when inlining #16195
- Track type variable dependencies to guide instanti...
3.2.2
Highlights of the release
- Make truncation by characters in REPL configurable #16167
- New (experimental for now) lazy vals implementation #15296
Other changes and fixes
Coverage
- Make coverage instrumentation more robust #16235
Default parameters
- Resolve overloading: keep track of prefix and indices of all default getters #16009
Experimentals
- Let accessors inherit @experimental annotations from accessed symbols #16099
Extension Methods
- Fix i14451 #16010
GADTs
Initialization
- Code refactoring of initialization checker #16066
Inline
- Refine checking for outer references #16122
Java interoperability
- Parse
native
in Java bytecode as@native
#16232
Opaque Types
- Disallow opaque type aliases of context functions #16041
Overloading
- Fix curried overloading resolution for polymorphic methods #16485
Parser
- Align implementation with spec of soft modifiers #15961
Pattern Matching
- Fix redundancy (unreachability) warning #16179
- Teach
SpaceEngine
that generic tuples are irrefutable #16051 - Fix exhaustivity warning #16168
Polyfunctions
- Avoid checking purity of
Apply
without symbols #16221
Reporting
- Expose reason for unchecked warning #16086
- Refine
AsSeenFrom
approximation scheme #15957 - Better output under
-Ydetailed-stats
#15950 - Fix crash in
-Vprofile
code #16007 - Name stripped of module suffix must not be empty #15597
- Fix
InlineMatch
pos forsummonFrom
#16025
Rewrites
- Rewrites are UTF-8 #15622
Scala-JS
- Fix the detection of inferred types of
= js.native
. #16184 - Do not elide fields required for Scala.js interop semantics. #16187
Scaladoc
- Update quick links for new UI #15912
- Avoid parsing code comment twice #16154
- Make footer text configurable #16064
- Add typography fallback fonts #16063
SemanticDB
- Emit
SymbolInformation
andOccurrence
for anonymous class #15865 - Fix regression in type apply synthetics #16031
Transform
- Fix creating forwarders for simple alias givens #16193
- Only check for
Scala2LocalSuffix
in methods on Scala 2.x classes #16014 - Fix mapping
TypeMap
s over annotations #15948 - Peephole optimization to drop
.apply
from partially applied methods #16022
Typer
- Fix
approximateOr
of(A & Double) | Null
#16241 - Create boxed environments only for references and function values #16136
- Fix higher-order unification incorrectly substituting tparams #16181
- Handle copies of constrained type lambdas when determining an implicit scope #16159
- Create message for missing arguments #16158
- Make singleton types subtypes of their refined type #16135
- Disallow overriding val parameters #16096
- Avoid crash where creator proxies are referenced indirectly #16098
- Refine estimation of default arguments in overloading resolution #15962
- Harden
canAssign
#15963 - Fix
isSubType
for static objects filling in type projections #15959 - Fix expected type of
TupleXXL unapply
#16248 - Drop lazy recursive application in
approximateParent
#16073 - Type match with a match type when a match type is expected #15599
- Compute completions at
typerPhase
#16371 - Only include accessible base classes in
orDominator
#16477
Contributors
Thank you to all the contributors who made this release possible 🎉
According to git shortlog -sn --no-merges 3.2.1..3.2.2
these are:
86 Martin Odersky
24 Yichen Xu
23 Quentin Bernet
19 Dale Wijnand
18 Michael Pollmeier
13 Paweł Marks
8 Fengyun Liu
7 Guillaume Raffin
7 Som Snytt
6 Szymon Rodziewicz
5 Kacper Korban
4 Chris Kipp
3 Matt Bovel
3 Rikito Taniguchi
2 Ben Hutchison
2 Florian3k
2 Guillaume Martres
2 Jamie Thompson
2 João Costa
2 Julien Richard-Foy
2 Lukas Rytz
2 Sébastien Doeraene
1 Anton Sviridov
1 Gabriel Volpe
1 Liang Yan
1 Noah Rosamilia
1 Ondra Pelech
1 Seth Tisue
1 Tomasz Godzik
1 Vadim Chelyshov
1 nmc.borst
1 nmcb
1 olsdavis
3.2.2-RC2
Backported fixes
- Compute completions at
typerPhase
#16371 - Only include accessible base classes in
orDominator
#16477 - Fix curried overloading resolution for polymorphic methods #16485
- Teach SpaceEngine that generic tuples are irrefutable #16051
- Fix exhaustivity warning #16168
Contributors
Thank you to all the contributors who made this release possible 🎉
According to git shortlog -sn --no-merges 3.2.2-RC1..3.2.2-RC2
these are:
3 Martin Odersky
3 Paweł Marks
2 Dale Wijnand
1 Som Snytt
3.2.2-RC1
Highlights of the release
- Make truncation by characters in repl configurable #16167
- New (experimental for now) lazy vals implementation #15296
Other changes and fixes
Coverage
- Make coverage instrumentation more robust #16235
Default parameters
- Resolve overloading: keep track of prefix and indices of all default getters #16009
Experimentals
- Let accessors inherit @experimental annotations from accessed symbols #16099
Extension Methods
- Fix i14451 #16010
GADTs
Initialization
- Code refactoring of initialization checker #16066
Inline
- Refine checking for outer references #16122
Java interoperability
Opaque Types
- Disallow opaque type aliases of context functions #16041
Parser
- Align implementation with spec of soft modifiers #15961
Pattern Matching
- Fix redundancy (unreachability) warning #16179
Polyfunctions
- Avoid checking purity of Apply without symbols #16221
Reporting
- Expose reason for unchecked warning #16086
- Refine AsSeenFrom approximation scheme #15957
- Better output under -Ydetailed-stats #15950
- Fix crash in -Vprofile code #16007
- Name stripped of module suffix must not be empty #15597
- Fix InlineMatch pos for
summonFrom
#16025
Rewrites
- Rewrites are UTF-8 #15622
Scala-JS
- Fix the detection of inferred types of
= js.native
. #16184 - Do not elide fields required for Scala.js interop semantics. #16187
Scaladoc
- Update quick links for new ui #15912
- Avoid parsing code comment twice #16154
- Make footer text configurable #16064
- Add typography fallback fonts #16063
SemanticDB
- Emit SymbolInformation and Occurrence for anonymous class #15865
- Fix regression in type apply synthetics #16031
Transform
- Fix creating forwarders for simple alias givens #16193
- Only check for Scala2LocalSuffix in methods on Scala2x classes #16014
- Fix mapping TypeMaps over annotations #15948
- Peephole optimization to drop .apply from partially applied methods #16022
Typer
- Fix approximateOr of (A & Double) | Null #16241
- Create boxed environments only for references and function values #16136
- Fix higher-order unification incorrectly substituting tparams #16181
- Handle copies of constrained type lambdas when determining an implicit scope #16159
- Create message for missing arguments #16158
- Make singleton types subtypes of their refined type #16135
- Disallow overriding val parameters #16096
- Avoid crash where creator proxies are referenced indirectly #16098
- Refine estimation of default arguments in overloading resolution #15962
- Harden canAssign #15963
- Fix isSubType for static objects filling in type projections #15959
- Fix expected type of TupleXXL unapply #16248
- Drop lazy recursive application in approximateParent #16073
- Type match with a match type when a match type is expected #15599
Contributors
Thank you to all the contributors who made this release possible 🎉
According to git shortlog -sn --no-merges 3.2.1..3.2.2-RC1
these are:
83 Martin Odersky
24 Yichen Xu
23 Quentin Bernet
18 Michael Pollmeier
17 Dale Wijnand
8 Fengyun Liu
8 Paweł Marks
7 Guillaume Raffin
6 Som Snytt
6 Szymon Rodziewicz
5 Kacper Korban
4 Chris Kipp
3 Matt Bovel
3 Rikito Taniguchi
2 Ben Hutchison
2 Florian3k
2 Guillaume Martres
2 Jamie Thompson
2 João Costa
2 Julien Richard-Foy
2 Lukas Rytz
2 Sébastien Doeraene
1 Anton Sviridov
1 Gabriel Volpe
1 Liang Yan
1 Noah Rosamilia
1 Ondra Pelech
1 Seth Tisue
1 Tomasz Godzik
1 Vadim Chelyshov
1 nmc.borst
1 nmcb
1 olsdavis
3.2.1
Highlights of the release
Other changes and fixes
Backend
- Set ACC_FINAL access flag to final variable accessors #15707
Coverage
- Avoid instrumentation of inline and erased definitions #15504
Erasure
Extension Methods
- Merge nested polytypes in more cases in resolveOverloaded #15636
GADTs
- Fix GADT casting when typing if expressions #15646
- Use GADT constraints in maximiseType #15544
- Add the expected type to Poly's desugaring #15570
- Allow refineUsingParent to infer GADT bounds #15706
- Avoid leaking internal types in GadtConstraint.approximation #15558
- Improve GADT usage tracing for MatchType reduction #15872
- Add
gadtAddBound
to ExplainingTypeComparer tracing #15819 - Avoid adding
NoSymbol
to gadt constraints inTypeOps.instantiateToSubType
#15965
IDE Support
Initialization
- Fix #15465: Use resolveThis for outerSelect resolution #15606
- Fix #15459: Display uninitialized fields in promotion error #15488
- Fix #15363: Improve error messages for leaking of this #15364
- Make sure inner classes are checked first #15527
- Handle super accessors in initialization checker #15703
Inline
- Check is inline unapply has leading implicits #15583
- Fix #15374: Make sure prefix of outer select has the correct class symbol #15592
Java Interoperability
- Don't check import selectors for Java code #15617
JS Interoperability
- Fix #15701: Implement js.dynamicImport for dynamic module loading. #15720
- Implement support for js.
new
.target. #15734 - Fix #14488: Scala.js: Add compiler support for scala.Enumeration. #15770
Match Types
- Avoid null types when reducing match types #15748
- Avoid references to unbound parameters in applied type patterns #15710
Nullability
- Fix checking ctx to carry correct modes #15350
Pattern Matching
- Teach provablyDisjoint to handle FromJavaObject #15769
- Don't trust case class extractors with explicit type arguments #15669
- Space: Fix how sealed abstract classes decompose #15553
- Local classes are uncheckable (type tests) #15134
- Fix ValDef span assignment in PatternMatcher #15783
- Reject all explicitly written type references with bad bounds #15577
Pickling
- Make simplify replace type parameters inside method types #15430
Quotes
- Ignore types in macro runtime dependencies #15529
REPL
- ReplDriver.run and :load take complete input #15811
- REPL goes through a phase #15663
- Avoid assertion failure for illegal trait inheritance #15631
Reporting
- Underline assignment correctly in error message #15584
- Better error message for "implicit search must be more specific" #15747
- Provide better info on compiler crashes #15890
SemanticDB
- Handle colons in file names when producing SemanticDB #15863
Standard Library
- Fix
throwReturn
ofNonLocalReturns
to allow wider usage #15495 - Update Scala 2 library dependency to 2.13.10 #16074
Tooling
- Fix scala runner exit codes #15604
- Command line parser respects outer escaped quote #15497
- Added quotes to Scala home paths in scala and scalac scripts #15824
- Retain partial type params typying information on error #15825
Transform
- Implementation restriction: No partial functions with CFT results #15744
- Fix treatment of parameter selections via this in constructors. #15737
- Fix expansion and unexpansion of mixin qualified names #15712
- Fix #15514 in Parser #15524
- Check type arguments for bad bounds #15571
Typer
- Fix swapKey #15894
- Insert GADT casts for needy match types #15851
- Add missing dealias in isContextFunctionRef #15742
- Look for synthetic applies also under type applications #15572
- Optimize isSameType for invariant applied types with the same structure #15556
- Fix cycle detection for type aliases with wildcard arguments #15508
- Handle recursions in isFullyDefined #15443
- Do level checking on instantiation #15746
- Use fullyDefinedType for mirror synthesis #15814
- Instantiate more type variables to hard unions #15632
- Simplify level fixing scheme #15936
- Don't normalize in
AppliedType#superType
#15453 - Try promotion while widening arguments #15467
- Check import selectors at Typer #15477
- Turn some calls to
underlying
intosuperType
. #15455 - Find more looping implicits #15481
- Fix
findFunctionType
forOrTypes
#15478 - Fix looping implicits check #15655
- Try to avoid static symbols if leaving them would make a leak #15548
- Do not fold
IsConst
applied to dependent parameters #15759 - Only look for synthetic applies under
TypeApply
with inferred arguments #15970 - Improvements for implicit searches with top-level type variables #16001
- Better types for class type parameters #15951
- Fix tuple casting #16113
- Be even more careful when combining argument and info in
computeAsSeenFrom
#16070 - Be still more careful when computing denotations of class parameters #16112
Contributors
Thank you to all the contributors who made this release possible 🎉
According to git shortlog -sn --no-merges 3.2.0..3.2.1
these are:
215 Martin Odersky
94 Filip Łukasik
69 Fengyun Liu
57 Filip Zybała
31 Dale Wijnand
16 Paweł Marks
14 Sébastien Doeraene
10 Guillaume Raffin
9 rochala
8 Chris Kipp
8 Som Snytt
7 Jędrzej Rochala
7 Nicolas Stucki
7 Yichen Xu
6 Jamie Thompson
6 Tom Grigg
5 Kacper Korban
5 noti0na1
2 Arman Bilge
2 Matt Bovel
2 Ondrej Lhotak
2 Quentin Bernet
2 Seth Tisue
2 Tomasz Godzik
1 Adrien Piquerez
1 Florian3k
1 Gagandeep Kalra
1 Jentsch
1 Kieren Dav...
3.2.1-RC4
3.2.1-RC3
Backported fixes
- Fix tuple casting #16113
- Be even more careful when combining argument and info in
computeAsSeenFrom
#16070 - Be still more careful when computing denotations of class parameters #16112
Contributors
Thank you to all the contributors who made this release possible 🎉
According to git shortlog -sn --no-merges 3.2.1-RC2..3.2.1-RC3
these are:
4 Martin Odersky
2 Paweł Marks
3.2.1-RC2
Backported fixes
- Only look for synthetic applies under
TypeApply
with inferred arguments #15970 - Improvements for implicit searches with top-level type variables #16001
- Better types for class type parameters #15951
- Avoid adding
NoSymbol
to gadt constraints inTypeOps.instantiateToSubType
#15965
Contributors
Thank you to all the contributors who made this release possible 🎉
According to git shortlog -sn --no-merges 3.2.1-RC1..3.2.1-RC2
these are:
7 Martin Odersky
3 Kacper Korban
2 Paweł Marks
3.2.1-RC1
Highlights of the release
Other changes and fixes
Backend
- Set ACC_FINAL access flag to final variable accessors #15707
Coverage
- Avoid instrumentation of inline and erased definitions #15504
Erasure
Extension Methods
- Merge nested polytypes in more cases in resolveOverloaded #15636
GADTs
- Fix GADT casting when typing if expressions #15646
- Use GADT constraints in maximiseType #15544
- Add the expected type to Poly's desugaring #15570
- Allow refineUsingParent to infer GADT bounds #15706
- Avoid leaking internal types in GadtConstraint.approximation #15558
- Improve GADT usage tracing for MatchType reduction #15872
- Add
gadtAddBound
to ExplainingTypeComparer tracing #15819
IDE Support
Initialization
- Fix #15465: Use resolveThis for outerSelect resolution #15606
- Fix #15459: Display uninitialized fields in promotion error #15488
- Fix #15363: Improve error messages for leaking of this #15364
- Make sure inner classes are checked first #15527
- Handle super accessors in initialization checker #15703
Inline
- Check is inline unapply has leading implicits #15583
- Fix #15374: Make sure prefix of outer select has the correct class symbol #15592
Java Interoperability
- Don't check import selectors for Java code #15617
JS Interoperability
- Fix #15701: Implement js.dynamicImport for dynamic module loading. #15720
- Implement support for js.
new
.target. #15734 - Fix #14488: Scala.js: Add compiler support for scala.Enumeration. #15770
Match Types
- Avoid null types when reducing match types #15748
- Avoid references to unbound parameters in applied type patterns #15710
Nullability
- Fix checking ctx to carry correct modes #15350
Pattern Matching
- Teach provablyDisjoint to handle FromJavaObject #15769
- Don't trust case class extractors with explicit type arguments #15669
- Space: Fix how sealed abstract classes decompose #15553
- Local classes are uncheckable (type tests) #15134
- Fix ValDef span assignment in PatternMatcher #15783
- Reject all explicitly written type references with bad bounds #15577
Pickling
- Make simplify replace type parameters inside method types #15430
Quotes
- Ignore types in macro runtime dependencies #15529
REPL
- ReplDriver.run and :load take complete input #15811
- REPL goes through a phase #15663
- Avoid assertion failure for illegal trait inheritance #15631
Reporting
- Underline assignment correctly in error message #15584
- Better error message for "implicit search must be more specific" #15747
- Provide better info on compiler crashes #15890
SemanticDB
- Handle colons in file names when producing SemanticDB #15863
Standard Library
- Fix
throwReturn
ofNonLocalReturns
to allow wider usage #15495
Tooling
- Fix scala runner exit codes #15604
- Command line parser respects outer escaped quote #15497
- Added quotes to Scala home paths in scala and scalac scripts #15824
- Retain partial type params typying information on error #15825
Transform
- Implementation restriction: No partial functions with CFT results #15744
- Fix treatment of parameter selections via this in constructors. #15737
- Fix expansion and unexpansion of mixin qualified names #15712
- Fix #15514 in Parser #15524
- Check type arguments for bad bounds #15571
Typer
- Fix swapKey #15894
- Insert GADT casts for needy match types #15851
- Add missing dealias in isContextFunctionRef #15742
- Look for synthetic applies also under type applications #15572
- Optimize isSameType for invariant applied types with the same structure #15556
- Fix cycle detection for type aliases with wildcard arguments #15508
- Handle recursions in isFullyDefined #15443
- Do level checking on instantiation #15746
- Use fullyDefinedType for mirror synthesis #15814
- Instantiate more type variables to hard unions #15632
- Simplify level fixing scheme #15936
- Don't normalize in
AppliedType#superType
#15453 - Try promotion while widening arguments #15467
- Check import selectors at Typer #15477
- Turn some calls to
underlying
intosuperType
. #15455 - Find more looping implicits #15481
- Fix
findFunctionType
forOrTypes
#15478 - Fix looping implicits check #15655
- Try to avoid static symbols if leaving them would make a leak #15548
- Do not fold
IsConst
applied to dependent parameters #15759
Contributors
Thank you to all the contributors who made this release possible 🎉
According to git shortlog -sn --no-merges 3.2.0..3.2.1-RC1
these are:
204 Martin Odersky
94 Filip Łukasik
69 Fengyun Liu
57 Filip Zybała
31 Dale Wijnand
14 Sébastien Doeraene
10 Guillaume Raffin
9 rochala
8 Chris Kipp
8 Paweł Marks
8 Som Snytt
7 Jędrzej Rochala
7 Nicolas Stucki
7 Yichen Xu
6 Jamie Thompson
6 Tom Grigg
5 noti0na1
2 Arman Bilge
2 Kacper Korban
2 Matt Bovel
2 Ondrej Lhotak
2 Quentin Bernet
2 Tomasz Godzik
1 Adrien Piquerez
1 Florian3k
1 Gagandeep Kalra
1 Jentsch
1 Kieren Davies
1 Michał Pałka
1 Naveen
1 Oron Port
1 Rubin Simons
1 Seth Tisue
1 Wojciech Mazur
1 esteban marin
1 naveen
3.2.0
Highlights of the release
- Add runtime.TupleMirror to avoid anonymous classes for mirrors of tuples #15404
- Fix TupleXXL.productPrefix #15411
- Synthesize mirrors for small generic tuples #15250
- Fix #14150: Constrain refinements to type parameters #15014
- Gradual warning for deprecated nonlocal return #15303
- Restrict mirrors of any union type #15279
- Stabilize 3.2 APIs #15197
- Add error reporting for mirror synthesis #15164
- Fix #14432: Check if scala 2 case class is accessible #15008
- Fix #12919: Summon anonymous mirror when companion is a case object #14986
- Erase
Int | Nothing
signatures types intoInt
#14971 - Allow exports in extension clauses #14497
- Fix Scala Wart about implicit () class parameters #14840
- Re-architecture quote pickling #12540
- Add
scala.annotation.MainAnnotation
#14558 - Add in initial support for code coverage #13880
- Support tuple specialisation #15060
- Remove support for
-scala-output-version
flag #15146 - Make lazy vals and object native image friendly #14780
- Allow return in tailrec position #14067
Other changes and fixes
Backend
- Keep annotation order #15063
- Update asm to 9.3 #14926
- Fix #14773: Reuse the param slots for the tailrec local mutable vars. #14865
- Better error messages in case of
TooLarge*
exceptions in GenBCode #14943
Coverage
- Fix relativizing paths in coverage serializer #15240
- Fix lifting of arguments with
-coverage-out
#15530 - Avoid instrumentation of inline and erased definitions #15504
- Keep
fun
andargs
together when instrumentingTypeApply
for coverage #15739
Erasure
- Handle
&
and|
types when computing tuple arity #15330 - Fix two problems related to match types as array elements #15625
Experimentals
- Fix check experimental inline references #15147
Exports
- Refine criterion when to skip identifiers in pattern constructors #15367
- Simplify and harden duplicates checking in exports #14879
- Fix
isAbsType
prediction inTreeUnpickler
#14861
F-bounds
- Recursion brake for joins in TypeComparer #14880
GADTs
- Heal pattern-bound type by gathering constraints #15095
- Consider GADT upper bounds when upcasting the scrutinee type #15351
- Extract wildcard GADT constraints more directly #14832
- Fix constraining against
HKTypeLambda
arguments #15688
IDE Support
- Docs: Add a comment to
pathTo
mentioning that it might returnerrorTermTree
#15420 - Fix completions to properly contain public fields if they were shadowed #15236
- Add proper signatureHelp for unapply methods #15203
- Fix signatureHelp to show enclosing apply instead of closest one. #15119
- Fix implicit conversion type resolve in completions #15061
- Fix type alias completion, unify completion tests style #15047
- Support code completion for refined types #15283
- Fix
SourceFile.column
method. #15209
Initialization
- Check method arguments with parametricity when static #14916
- Add safe-init test to prevent adding cold elements to hot arrays #14895
- Allow non-hot values in SeqLiterals #14794
Inline
- Make private inline accessors
final
#15324 - Fix inlining when outer select is needed from inline call prefix #15327
- Support inline methods calling private inline methods on
this
#15075 - Types with only an abstract inline method are not SAMs #14874
- Don't issue unreachable error messages for inlined code #14871
- Dealias arg type to detect opaque types #15074
- Fix dependency status calculation for refined type aliases in method result types #15390
- Fix computation of class nesting level in inliner #15671
- Always expand inline accessor names #15619
Java Compatibility
- Java generic signatures can't refer to type members #15093
- Simplify and correctify calculation of the InnerClass attribute #15153
- Fix #13523: Survive missing Java inner annotation classfiles #15094
Match Types
- Implement
provablyDisjoint
for refined types and type aliases #15375 - Cache skolem types #14909
- Refine Matchtype checking #15423
Nullability
- Speed up
.nn
#15418 - Fix handling imports in
TreeUnpickler
#15137 - Honor language imports when unpickling #14962
- Remove special
eq
/ne
in unsafeNulls #15186 - Add
eq
/ne
extension forAnyRef|Null
to Scala3RunTime #14632
Parser
- Fix parser error for type arguments with trailing comma #15395
- Change fewerbraces to always use a colon, even before lambdas #15273
- Deprecate 3.1-migration, err on import #14978
- Treat all incomplete ifs as statements #14960
- Clarify and test rules for newline suppression #14877
- Tweak assertion in withMods #14857
- Fix loop in parser #15421
- Parse unary operators as regular identifiers when backquoted #15198
- Harden erasure of TermRefs #15658
Pattern Matching
- Preserve modifiers when desugaring for-comps #15403
- Extract unapply types like typedUnApply #15254
- Force Java enum children to be queried #15109
- Enable stricter pattern binding warnings by default #14294
- Irrefutable for generators don't require
withFilter
under-source:future
#15593 - Refutable extractor may be an
Apply
tree #15651
Pickling
- Survive unpickling crashes when completing from Tasty #14884