Skip to content

Releases: scala/scala3

3.3.0-RC2

30 Jan 16:19
Compare
Choose a tag to compare
3.3.0-RC2 Pre-release
Pre-release

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 and applyDynamicNamed #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

  • Fix #16438: Supply dummy args for erroneous parent call in init check #16448

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

  • Fix #9996: Crash with function accepting polymorphic function type with singleton result #16327

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

  • Fix reflect typeMembers to return all members #15033
  • Deprecate reflect Flags.Static #16568

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

  • Fix #14289: Accept Ident refs to js.native in native member rhs. #16185

Standard Library

  • Add CanEqual instance for Map #15886
  • Refine Tuple.Append return type #16140

TASTy format

  • Make it a fatal error if erasure cannot resolve a type #16373

Tooling

  • Add -Yimports compiler flag #16218
  • Allow BooleanSettings to be set with a colon #16425

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 and VarHandle) #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...
Read more

3.2.2

30 Jan 11:29
Compare
Choose a tag to compare

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

Extension Methods

GADTs

  • Add fixed GADT exhaustivity test cases #16169
  • Eliminate class hierarchy in GadtConstraint #16194

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 for summonFrom #16025

Rewrites

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 Scala 2.x 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
  • 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

22 Dec 21:57
Compare
Choose a tag to compare
3.2.2-RC2 Pre-release
Pre-release

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

07 Nov 13:48
Compare
Choose a tag to compare
3.2.2-RC1 Pre-release
Pre-release

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

Extension Methods

GADTs

  • Add fixed GADT exhaustivity test cases #16169
  • Eliminate class hierarchy in GadtConstraint #16194

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

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

07 Nov 13:48
Compare
Choose a tag to compare

Highlights of the release

  • Add experimental capture checking #15877
  • Scaladoc: New UI design #15697

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

  • Fix #15199: Exclude JavaDefined Modules from bridge generation. #15499

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 in TypeOps.instantiateToSubType #15965

IDE Support

  • Recover from TypeErrors in isErroneous #15442
  • Add a guard against empty ident #15542

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 of NonLocalReturns 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 into superType. #15455
  • Find more looping implicits #15481
  • Fix findFunctionType for OrTypes #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...
Read more

3.2.1-RC4

18 Oct 18:01
Compare
Choose a tag to compare
3.2.1-RC4 Pre-release
Pre-release

Backported fixes

  • Update Scala 2 library dependency to 2.13.10 #16074

Contributors

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

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

     2  Paweł Marks
     1  Seth Tisue

3.2.1-RC3

18 Oct 18:01
Compare
Choose a tag to compare
3.2.1-RC3 Pre-release
Pre-release

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

16 Sep 08:51
Compare
Choose a tag to compare
3.2.1-RC2 Pre-release
Pre-release

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 in TypeOps.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

05 Sep 13:09
Compare
Choose a tag to compare
3.2.1-RC1 Pre-release
Pre-release

Highlights of the release

  • Add experimental capture checking #15877
  • Scaladoc: New UI design #15697

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

  • Fix #15199: Exclude JavaDefined Modules from bridge generation. #15499

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

  • Recover from TypeErrors in isErroneous #15442
  • Add a guard against empty ident #15542

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 of NonLocalReturns 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 into superType. #15455
  • Find more looping implicits #15481
  • Fix findFunctionType for OrTypes #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

01 Sep 10:01
Compare
Choose a tag to compare

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 into Int #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 and args together when instrumenting TypeApply 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 in TreeUnpickler #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 return errorTermTree #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 for AnyRef|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

  • 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 ...
Read more