Releases: scala/scala3
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
Quotes
3.2.0-RC4
Backported fixes
- Refutable extractor may be an
Apply
tree #15651 - Bump compiler-interface and capture the
diagnosticCode
#15565 - Support Mirror synthesis for local and inner classes #15847
Contributors
Thank you to all the contributors who made this release possible 🎉
According to git shortlog -sn --no-merges $3.2.0-RC3..3.2.0-RC4
these are:
2 Chris Kipp
2 Paweł Marks
1 Jamie Thompson
1 odersky
3.2.0-RC3
Backported fixes
- Refutable extractor may be an
Apply
tree #15672 - Fix coverage instrumentation of Java-defined and parameterless methods #15648
- Keep
fun
andargs
together when instrumentingTypeApply
for coverage #15739 - Fix two problems related to match types as array elements #15625
- Survive TypeErrors in
isMatchedBy
#15675 - deprecate
ToString
type which should be deprecated at 3.2.0 #15645 - Fix constraining against
HKTypeLambda
arguments #15688 - Fix computation of class nesting level in inliner #15671
- Don't ignore expected types of
New
#15679 - Better infos for dependent class parameter references #15667
- Always expand inline accessor names #15619
- Harden erasure of TermRefs #15658
Contributors
Thank you to all the contributors who made this release possible 🎉
According to git shortlog -sn --no-merges $3.2.0-RC2..3.2.0-RC3
these are:
13 odersky
5 Guillaume Raffin
2 Paweł Marks
2 Tom Grigg
1 Dale Wijnand
1 rochala
3.2.0-RC2
Backported fixes
- Handle non-specialized functions in EtaReduce #15498
- Refine Matchtype checking #15423
- Fix lifting of arguments with
-coverage-out
#15530 - Avoid instrumentation of inline and erased definitions #15504
- Irrefutable for generators don't require
withFilter
under-source:future
#15593
Contributors
Thank you to all the contributors who made this release possible 🎉
According to git shortlog -sn --no-merges 3.2.0-RC1..3.2.0-RC2
these are:
4 Guillaume Raffin
4 odersky
2 Paweł Marks
1 Nicolas Stucki
1 Sébastien Doeraene
1 Tom Grigg
3.2.0-RC1
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
Erasure
- Handle
&
and|
types when computing tuple arity #15330
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
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
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
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
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
Pickling
- Survive unpickling crashes when completing from Tasty #14884
Quotes
- Transform RHS of captured assignment reference #15247
- Properly look for inline methods #15072
- Fix hash code of ExprImpl and TypeImpl #15281
- Compute correct argument type in ExprMap #15269
- Detect quoted pattern variables in alternatives #15073
- Disallow old uses of quoted and spliced types #15012
- Fix capturing conditions of HOAS quote patterns #14822
Reflection
- Add missing cases in SourceCode printer #15032
- Add reflect
AppliedType
constructor #14923 - Add regression test #14924
Reporting
- Case class must have at least one leading non-implicit parameter list #15382
- Improve opaque type with no RHS error message #15285
- Refine condition when to report errors in an inserted apply #15016
- Accept soft modifiers separated by blank lines #14959
- Fix warning with leaking
this
into Scala2 synthetic apply #15307 - Refine error messages for early promotion #15263
- ...
3.1.3
Highlights of the release
- f-interpolator: Scala 2 parity and bugfixes #13367
- Show inlined positions with source code on errors #14002
- Add reflect
ClassDef.apply
andSymbol.newClass
#14124 - Add experimental
TupledFunction
#14414
Other changes and fixes
Backend
- Filter out static forwarders for Java package private methods #14662
- Emit all classes as public to avoid object deserialization issues #14686
- Upgrade to ASM 9.2 #14711
Desugaring
- Adapt function arguments to n-ary prototype #14651
Erasure
- Don't optimize explicitly written isInstanceOf tests away. #14715
Exports
GADT
- Fix #14726: call exclusiveLower before addLess during unification #14727
- Avoid unsound GADT constraints derived from subtyping relations between singletons and refined types #14728
- Keep correct kind when preparing constraint in
stripParams
#14761
Initialization
- Add special case to init checker to always allow certain methods #14352
Implicits
- Avoid unnecessary under-constrained implicit searches #14353
- Prevent implicit conversion chaining #14750
- Fix hasKnownMembers #14762
Match types
- Fix #13855: Chaining Match Types fails at value level #14354
- Constrain pattern types when typing a match type case #14563
- Fix bounds of match type cases #14645
- More aggressive reduction of type selection (fixes parboiled2) #14987
- Relax avoidance checks more for match type reduction #15036
- Re-establish missing symbol from previous phase (in one specific case) #15295
Metaprogramming
- Allow nested Quotes with a different owners #13652
- Add typed versions of
Mirror.ProductOf#fromProduct
#14114 - Fix #14393: foldOver in default TreeAccumulator can't process Typed nodes #14396
- Fix invariant quote type holes #14425
- Make singleton operations covariant #14452
- Find inline calls inserted in synthetic members #14480
- Don't generate
Mirror.Sum
for simple enum cases #14525 - Collect all local class definitions #14528
- Only make the staged parts of a quote inlineable #14604
- Tolerate some faults when copying trees in
InlineTreeMap
#14674 - Handle this prefix in objects (in quote patterns) #14732
- Detect when position is not in known source #14801
- Handle
SummonFrom
in reflectTreeAccumulator
#14809 - Handle situation where an inline info cannot be computed #14827
Opaque Types
- Disallow overriding opaque type aliases #14665
- Disallow private opaque type aliases #14666
- Generate opaque proxies also for base classes #14668
Parser
- Accept supplementary Unicode characters #13136
- Don't compute indents when in a string #14441
- Parse empty arguments in (invalid)
Apply
more often #14463 - Expand span errorTermTree to include skipped span. #14492
- Fix lookahead logic in Scanner #14562
- Add private inteface methods parsing in JavaParser #14643
- Reject postfix ops already in Parser #14677
- Syntax error recovery #14695
Pattern matching
- For generic tuples, call
Tuples.apply
instead of_1/_2/..
#14296 - Preserve the intersection of disjoint numbers in match analysis #14550
- Fix casting of generic tuple selection #14590
- Ignore private/sealed abstract class/traits #14599
- Drop special treatment for Scala-2 code in unapply #14766
Pickling
- Disable type simplify in unpickler #14506
- Check if package names will be encoded in desugar #14597
- Fix picking default syntax for comments #14725
- Fix lack of type avoidance in argument lifting #15229
Refchecks
- Don't skip override tests when overridden is
AbsOverride
#14527 - Extend "cannot override mutable variable" restriction to deferred var… #14724
Repl
- Avoid stale import context during REPL parsing #14493
- Fix #11202: Incorrect highlight for type constructor #14518
- Make empty catch an incomplete. #14519
- Add in feedback when resetting REPL state #14521
- Fix #14535: End marker now has the same color as its definition in repl #14555
- Add backticks when needed in completions #14594
- Autocomplete repl commands #14627
- Harden REPL in presence of values that fail to initialize #14702
Reporting
- Change error message text from "fully-initialized" to "fully initialized" #14400
- Improve -explain rendering #14357
- Propagate unreported features when flushing a reporter #14503
- Avoid using
·
character #14453 - Fix explain rendering with Windows EOL #14456
- Fix #14576: Ensure unreported warning summaries are also emitted via sbt-bridge #14602
- Add context to safe-init warnings for inlined methods #14646
- Show unique ids of pattern bound symbols #14716
- Don't replace typevars by their f-bounds in error messages #14723
- Error message improvement for illegal access extension methods #14730
- Warn on misleading indentation in single-case catch #14738
- Use correct ErrorMessageID for EmptyCatchOrFinallyBlock #14786
- Correct highlight interpolation in explain message #14802
Don't issue implicit errors if parameter has default value #14849
Typer
3.1.3-RC5
Notable changes
- Avoid NPE in simplify #15310
- Eta expand export forwarders that have context function types #15217
- Fix #15220: Windows scripts do not delegate to MainGenericRunner #15325
- Re-establish missing symbol from previous phase (in one specific case) #15295
- Partially revert #14026 - Fixes 4 regressions #15343
Contributors
Thank you to all the contributors who made this release possible 🎉
According to git shortlog -sn --no-merges 3.1.3-RC4..3.1.3-RC5
these are:
7 odersky
2 Paweł Marks
1 Stéphane Micheloud
1 Tom Grigg
3.1.3-RC4
Notable changes
- Fix lack of type avoidance in argument lifting #15229
- Avoid overeager completion of Java annotations in classfile parser #15185
- Implement scalac script in Scala #15212
Contributors
Thank you to all the contributors who made this release possible 🎉
According to git shortlog -sn --no-merges 3.1.3-RC3..3.1.3-RC4
these are:
2 Paweł Marks
1 Guillaume Martres
1 Jamie Thompson
1 Tom Grigg