Skip to content

Releases: scala/scala3

3.6.1

24 Oct 10:23
Compare
Choose a tag to compare
3.6.1 Pre-release
Pre-release

This is a fast-track release to replace a broken release 3.6.0 that occurred during the Scala 3.6.0-RC1 release. It might contain bugs that would be have been fixed during the Release Candidate bugfixes period. We recommend waiting for the stable Scala 3.6.2 release.

Scala 3.6.0 should never be used to produce libraries. TASTy files produced by this version of the compiler are produced in the experimental mode. These outputs are not compatible with consumers using stable versions of the compiler.

See details in Scala 3.6.0 Post Mortem blogpost

Highlights of the release

  • Stabilise SIP-47 (Adding Clause Interleaving to method definitions) #20861
  • Implement SIP-57 - add runtimeChecked method and annotation #20987
  • Implement SIP-62 - For comprehension improvements #20522
  • Implement SIP-64 as non-experimental #21668
  • Make named tuples a standard feature #21680
  • Switch mapping of context bounds to using clauses in 3.6 #21257
  • Require named arguments for java defined annotations #21329

Other changes and fixes

Annotations

  • Tighten java annot value parsing #21650

Dependencies

  • REPL: JLine 3.27.0 (was 3.25.1) #21752
  • Scala 2.13.15 (was .14) #21648

Erasure

  • Fixes IllegalAccessError with Java package protected class #21362

Experimental: Capture Checking

  • Existential Capabilities #20566
  • Fix setup of CapSet arguments. #21309
  • Check all top-level covariant capture sets in checkNotUniversal #21428
  • Charge also dcs of local reaches to capture set of enclosing method #21443
  • No need to unbox if expected type is LhsProto #21508
  • Treat more closure parameter types as inferred #21583
  • Fixes for cleanup retains scheme #21350
  • Improve Contains handling #21361
  • Expand Capability types T to T^ only if no explicit capture set is given #21375
  • Tighten closure extractor in TreeInfo #21621

Experimental: Strict Equality

  • Fix #21392: Adjust canComparePredefined(Nothing, T) in explicit nulls #21504
  • Add tracking of NotNullInfo for Match, Case, Try trees (fix #21380) #21389

Experimental: Modularity

Experimental: Global Initialization

  • Analyze object when selecting from package #21511
  • Fix bug in init checker while compiling scodec-bits community project #21574

Experimentals

  • [experimental feature] Support HOAS pattern with type variables for quote pattern matching #18271

Exports

  • Re-use attachment in exportForwarders to handle ambiguous overloads #21518
  • Allow export statements in AnyVal #21653

Extension Methods

  • Make right assoc ext method fwd refs error #21641

Inline

  • Fix: throw an error before assigning ErrorType when expanding constValue #21364

Implicits

  • Fix prioritization of givens over implicits #21226

JVM backend

  • Backend computes line number from source of position #21763

Linting

  • CheckUnused checks type param annotations #20549

Library

  • Finalize named tuples #21710

Match Types

  • Enable betterMatchTypeExtractors in >= 3.6 #21198
  • Do not propagate TypeErrors of ops from TypeComparer#tryAlso #21070
  • Fix #21402: Always allow type member extraction for stable scrutinees in match types. #21700
  • Add a 3.6-migration warning for MT lubbing #21336
  • Always interpret underscores inside patterns as type bounds #21718

Opaque Types

  • Capture the kse3 issue in test cases and close it #21260

Parser

  • Guard against recursive lower bounds in constraints #21587

Pattern Matching

  • Fix a bundle of patmat issues #21000

Pickling

  • Some fixes for AnnotatedTypes mapping #19957

Polyfunctions

  • Fix: Check if a PolyFunction TypeTree has no ByName parameters #21671

Presentation Compiler

  • Add regression test for issue 18726 #20318
  • Remove artificial CURSOR added to code in the completions #20899
  • Fix autoimports with using directives #21590

Quotes

  • Handle suspension due to macro call in arbitrary phases #21651
  • Have a better error message when healing types #21711
  • Bound TypeRepr by Matchable in Quotes #21377
  • Expr#show: Don't crash when the expression contains an unsupported type (like a SkolemType) #20494

Reflection

  • Add the possibility to create a typeSymbol in the Quotes API #20347
  • Fix stale symbols connected to lazy vals in macros #21559

Reporting

  • Add better error reporting for inlined non-immutable paths #21639
  • Only replace new errors by warnings under -migration #21289

REPL

  • Ignore best effort settings in repl and update docs #21540

Rewrites

  • Remove empty argument lists for classes with only context bounds #21513
  • Fix rewrite logic for old <function> _ syntax #21715
  • Remove the -rewrite option for typechecks methods in Quotes #21547
  • Add migration rewrite for non-named arguments in Java annotations #21397

Scaladoc

  • Only trim one newline when preprocessing the content of a markdown code snippet #21519
  • Filter opaque modifier from object documentation #21640
  • Bump Inkuire version to fix it for the new Scala versions #21611

Standard Library

  • Move NamedTuple.head to NamedTupleDecomposition #21308
  • Define binary symbolic compiletime ops as infix #21683

Transform

  • Fix treatment of separately compiled @Native methods in FirstTransform #21593
  • Three fixes to SAM type handling #21596
  • Always rewrite empty List() to Nil #21689
  • Add support for clauseInterleaving in JVM generic signatures #21709

Typeclass Derivation

  • Nicer error message in case a derived method has an explicit term param #21332

Typer

  • Calm param autotupling for overloads #21552
  • Survive inaccessible types when computing implicit scope #21589
  • Avoid cyclic errors forcing default arg types #21597
  • Fix incorrect caching with dependent method parameters #21699

Contributors

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

According to git shortlog -sn --no-merges 3.5.2..3.6.1 these are:

   129  Martin Odersky
    35  Hamza REMMAL
    34  Dale Wijnand
    31  Eugene Flesselle
    31  Hamza Remmal
    30  Wojciech Mazur
    15  Kacper Korban
    12  Jamie Thompson
    11  Jan Chyb
    11  Katarzyna Marek
     9  noti0na1
     9  rochala
     8  Adrien Piquerez
     8  Matt Bovel
     7  Som Snytt
     7  dependabot[bot]
     6  Yichen Xu...
Read more

3.6.0

24 Oct 10:50
Compare
Choose a tag to compare
3.6.0 Pre-release
Pre-release

This is a broken release, please, don't use it

It was published by mistake during the 3.6.0-RC1 release.
See details in Scala 3.6.0 Post Mortem blogpost


Highlights of the release

  • Stabilise SIP-47 (Adding Clause Interleaving to method definitions) #20861
  • Implement SIP-57 - add runtimeChecked method and annotation #20987
  • Implement SIP-62 - For comprehension improvements #20522
  • Implement SIP-64 as non-experimental #21668
  • Make named tuples a standard feature #21680
  • Switch mapping of context bounds to using clauses in 3.6 #21257
  • Require named arguments for java defined annotations #21329

Other changes and fixes

Annotations

  • Tighten java annot value parsing #21650

Dependencies

  • REPL: JLine 3.27.0 (was 3.25.1) #21752
  • Scala 2.13.15 (was .14) #21648

Erasure

  • Fixes IllegalAccessError with Java package protected class #21362

Experimental: Capture Checking

  • Existential Capabilities #20566
  • Fix setup of CapSet arguments. #21309
  • Check all top-level covariant capture sets in checkNotUniversal #21428
  • Charge also dcs of local reaches to capture set of enclosing method #21443
  • No need to unbox if expected type is LhsProto #21508
  • Treat more closure parameter types as inferred #21583
  • Fixes for cleanup retains scheme #21350
  • Improve Contains handling #21361
  • Expand Capability types T to T^ only if no explicit capture set is given #21375
  • Tighten closure extractor in TreeInfo #21621

Experimental: Strict Equality

  • Fix #21392: Adjust canComparePredefined(Nothing, T) in explicit nulls #21504
  • Add tracking of NotNullInfo for Match, Case, Try trees (fix #21380) #21389

Experimental: Modularity

Experimental: Global Initialization

  • Analyze object when selecting from package #21511
  • Fix bug in init checker while compiling scodec-bits community project #21574

Experimentals

  • [experimental feature] Support HOAS pattern with type variables for quote pattern matching #18271

Exports

  • Re-use attachment in exportForwarders to handle ambiguous overloads #21518
  • Allow export statements in AnyVal #21653

Extension Methods

  • Make right assoc ext method fwd refs error #21641

Inline

  • Fix: throw an error before assigning ErrorType when expanding constValue #21364

Implicits

  • Fix prioritization of givens over implicits #21226

JVM backend

  • Backend computes line number from source of position #21763

Linting

  • CheckUnused checks type param annotations #20549

Library

  • Finalize named tuples #21710

Match Types

  • Enable betterMatchTypeExtractors in >= 3.6 #21198
  • Do not propagate TypeErrors of ops from TypeComparer#tryAlso #21070
  • Fix #21402: Always allow type member extraction for stable scrutinees in match types. #21700
  • Add a 3.6-migration warning for MT lubbing #21336
  • Always interpret underscores inside patterns as type bounds #21718

Opaque Types

  • Capture the kse3 issue in test cases and close it #21260

Parser

  • Guard against recursive lower bounds in constraints #21587

Pattern Matching

  • Fix a bundle of patmat issues #21000

Pickling

  • Some fixes for AnnotatedTypes mapping #19957

Polyfunctions

  • Fix: Check if a PolyFunction TypeTree has no ByName parameters #21671

Presentation Compiler

  • Add regression test for issue 18726 #20318
  • Remove artificial CURSOR added to code in the completions #20899
  • Fix autoimports with using directives #21590

Quotes

  • Handle suspension due to macro call in arbitrary phases #21651
  • Have a better error message when healing types #21711
  • Bound TypeRepr by Matchable in Quotes #21377
  • Expr#show: Don't crash when the expression contains an unsupported type (like a SkolemType) #20494

Reflection

  • Add the possibility to create a typeSymbol in the Quotes API #20347
  • Fix stale symbols connected to lazy vals in macros #21559

Reporting

  • Add better error reporting for inlined non-immutable paths #21639
  • Only replace new errors by warnings under -migration #21289

REPL

  • Ignore best effort settings in repl and update docs #21540

Rewrites

  • Remove empty argument lists for classes with only context bounds #21513
  • Fix rewrite logic for old <function> _ syntax #21715
  • Remove the -rewrite option for typechecks methods in Quotes #21547
  • Add migration rewrite for non-named arguments in Java annotations #21397

Scaladoc

  • Only trim one newline when preprocessing the content of a markdown code snippet #21519
  • Filter opaque modifier from object documentation #21640
  • Bump Inkuire version to fix it for the new Scala versions #21611

Standard Library

  • Move NamedTuple.head to NamedTupleDecomposition #21308
  • Define binary symbolic compiletime ops as infix #21683

Transform

  • Fix treatment of separately compiled @Native methods in FirstTransform #21593
  • Three fixes to SAM type handling #21596
  • Always rewrite empty List() to Nil #21689
  • Add support for clauseInterleaving in JVM generic signatures #21709

Typeclass Derivation

  • Nicer error message in case a derived method has an explicit term param #21332

Typer

  • Calm param autotupling for overloads #21552
  • Survive inaccessible types when computing implicit scope #21589
  • Avoid cyclic errors forcing default arg types #21597
  • Fix incorrect caching with dependent method parameters #21699

Contributors

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

According to git shortlog -sn --no-merges 3.5.2..3.6.0-RC1 these are:

   128  Martin Odersky
    35  Hamza REMMAL
    34  Dale Wijnand
    27  Eugene Flesselle
    22  Hamza Remmal
    22  Wojciech Mazur
    12  Kacper Korban
    11  Katarzyna Marek
     9  noti0na1
     9  rochala
     8  Jamie Thompson
     8  Jan Chyb
     7  Adrien Piquerez
     7  Matt Bovel
     7  Som Snytt
     7  dependabot[bot]
     6  Yichen Xu
     5  EnzeXing
     5  Guillaume Martres
     5  Sébastien Doeraene
     4  Fengyun Liu
     4  kasiaMarek
     3  Martin Duhem
     3  Oliver Bracevac
     3  Piotr Chabelski
     2  Aleksander Rainko
     2  David Hua
     2  Florian3k
     2  HarrisL2
     2  Joel Wilsson
     2  Jędrzej Rochala
     2  Kenji Yoshida
     1  Eugene Yokota
     1  Kavin Sath...
Read more

3.5.2

22 Oct 15:11
Compare
Choose a tag to compare

Highlights of the release

  • Add the -Wall option that enables all warnings (Plan B) #20577
  • Add origin filter to WConf, DeprecationWarning #21404

Other changes and fixes

Implicits

  • Streamline tryNormalize with underlyingMatchType #20268

Inference

  • Fix #20521: Optimise caching for computing atoms and widened in OrTypes #21223

JVM Backend

  • Update asm to patched 9.7 #20144

Overloading

  • Report only non-overridden unimplemented members #21337

Parser

  • SimplePattern errors should now be recovered as wildcard instead of unimplemented expr #21438

Positions

  • Fix trailing comma Ident's span #20445

Presentation Compiler

  • Implement completions for named tuple fields #21202
  • Don't add suffix if brackets already present #21259
  • Change mock symbol search #21296
  • Fix: completions when parenthesis already provided #21299
  • Weekly metals backport #21343
  • Backport from metals #21196
  • Help implement Metals' infer expected type feature #21390

Reporting

  • Fix: don't use color codes for pattern match code action #21120

Runner

  • Wrap the arguments passed to the scalac task between " #21322

SemanticDB

  • Fix: semanticdb symbol creation when targetName set #20950

TASTy format

  • Add child to parent in completion context #21214

Transform

  • Fix #20856: Serialize Waiting and Evaluating as if null. #21243

Typeclass Derivation

  • Revert "Compensate loss of transitivity" #21356

Typer

  • Avoid forcing ctors & parents which caused cycles #17086
  • Fix isomorphism tests of AndOrTypes under non-empty BinderPairs #21017
  • Fail when a poly function value has a different number of type params than the expected poly function #21248
  • Fail early & more clearly on shaded-broken classfiles #21262
  • A tweak to type improvement #21312
  • Fix #20897: Make Nothing ⋔ Nothing, as per spec. #21241

Experimental Changes

Modularity

  • Fix: Only implement a deferred given in a class if its parent won't implement it #21206

Named Tuples

  • Re-use isConcrete checking in match types for NamedTuple.From #20947
  • Fix: Dealias NamedTuple's name types when resolving NamedTuple's element types #21331

Safe Global Initialization

  • Fix exception on sequence matching with drop #21281
  • Fix uninitializing fields when evaluating a cached constructor call in global initialization checker #21403

Contributors

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

According to git shortlog -sn --no-merges 3.5.1..3.5.2 these are:

    22  Dale Wijnand
    12  Eugene Flesselle
    11  Katarzyna Marek
    11  Wojciech Mazur
     6  dependabot[bot]
     4  Hamza REMMAL
     4  Kacper Korban
     4  Martin Odersky
     4  Som Snytt
     4  Yichen Xu
     4  kasiaMarek
     3  Jamie Thompson
     2  EnzeXing
     2  Hamza Remmal
     2  Sébastien Doeraene
     1  Jan Chyb
     1  Jędrzej Rochala
     1  Kavin Satheeskumar
     1  Martin Duhem
     1  Matt Bovel
     1  Raphael Jolly
     1  noti0na1
     1  philippus

3.5.2-RC2

11 Oct 08:41
Compare
Choose a tag to compare
3.5.2-RC2 Pre-release
Pre-release

Backported fixes

  • Revert pattern matching improvements introducing regressions in 3.5.2 #21734

Contributors

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

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

     4  Wojciech Mazur
     1  Dale Wijnand

3.3.4

27 Sep 08:21
Compare
Choose a tag to compare

Highlights of the release

  • Error when reading class file with unknown newer jdk version #18618
  • Add support for xsbti.compile.CompileProgress #18739
  • Add support for @deprecatedInheritance #19082
  • Bump JLine 3.19.0 -> 3.24.1 & sbt 1.9.7 -> 1.9.9 #19744
  • Repl - method signatures in autocomplete #19917
  • Upgrade Scala 2 to 2.13.14 (was 2.13.12) #20902

Notable changes

  • Backport of #20463 corrects generic signatures emitted in the JVM bytecode for value classes and aligns it with Scala 2.13 semantics. The previously generated signatures for value classes were invalid - they contained underlying value class type instead of boxed type. This change would lead to MiMa errors when signature checks are enabled and could lead to issues when trying to refer to value class methods using reflection API. It would not affect the normal usage of value classes in Scala code compiled with the previous version of the compiler.

Other changes and fixes

Annotations

  • Attempt implicit search for old style implicit parameters in Application matchArgs #19737

Artifacts

  • Add versionLine marker to pom.xml #19986
  • Avoid duplications of properties in pom.xml #20020

Backend

  • Parallelise JVM backend - Scala 2 port #15392
  • Fix Closure span assignment in makeClosure #15841
  • Count size of parameters for platform limit check #18464
  • Opt: Get rid of the LiftTry phase; instead handle things in the back-end. #18619
  • Update asm to 9.6 #18712
  • Don't emit line number for synthetic unit value #18717
  • Avoid too eager transform of $outer for lhs & accessor rhs #18949
  • Make more anonymous functions static #19251
  • Fix deadlock in initialization of CoreBTypes using Lazy container #19298
  • Fix(#17255): cannot find Scala companion module from Java #19773
  • Change isStatic to isStaticOwner in hasLocalInstantiation #19803
  • Emit switch bytecode when matching unions of a switchable type #20411
  • Fix EnclosingMethod for lifted anonfun #20558
  • Fix deterministically adding additional interfaces #20593

Coverage

  • Correctly prettify names in coverage info #18542
  • Port coverage filter options for packages and files #19727

Default parameters

  • Lift all non trivial prefixes for default parameters #19739
  • Fix default args lookup for given classes #20256
  • Fix implicit search failure reporting #20261

Derivation

  • Fix infinite loop in Mirror synthesis of unreducible match type #20133

Desugaring

  • Make apply proxies work with overloaded ctors #19464
  • Fix possible crash in Desugar #19567
  • Add explanation to checkCaseClassInheritanceInvariant error msg #20141

Documentation

  • [spec] remove implementation details from enum spec #18579
  • [spec] some fixes to tuples #18582
  • [spec] Cosmetic changes in the lexical syntax chapter #18608
  • Spec: Update the list of tokens that can start/end statements. #18611
  • Update syntax.md #18648
  • Sync main with language-reference-stable #18718
  • Completion assert diffs will now show completion source #18890
  • Fix Export Doc #18952
  • reference doc: fix incorrect syntax production #19017
  • State all known limitations of right-associative extension methods #19210
  • Update explicit-nulls.md #19327
  • update old issues.scala-lang.org url #19606
  • Update syntax.md #19670
  • Clear the not-backported documentation changes queue #19699
  • remove implementation from asInstanceOf #19753
  • Port tailrec spec and adjustments to annotations section #19978
  • Optimize the documentation JS files #20075
  • Optimize main.js #20093
  • Improve documentation of implicit conversions #20103
  • Update Quotes.scala #20174
  • Supplement structural givens doc #20327
  • Fix three dead links in spec Types doc chapter #20337
  • Avoid jpath in example #20775

Erasure

  • Make eraseInfo work for classes with EmptyScopes #19550
  • Don't re-balance AndTypes arising from supertypes #20400

Exports

  • Do not propagate @tailrec to exported methods #19509
  • Fix retained flags in exports #19636
  • Add annotations in parameters for exports #20140
  • Fix isAliasType #20195

GADTs

  • Only cache base types when gadt state is empty #19562

Implicits

  • Tweak convertible implicits fix #18727
  • Run CheckStatic after UncacheGivenAliases #19318
  • Add tests to verify that crash is fixed elsewhere. Fixes #19328 #19329
  • Don't search for implicit conversions to NoType #19563
  • Prefer extensions over conversions for member selection #19717
  • Adjust owner in Interactive.contextOfPath causing crash in ImplicitSearch #19875
  • Improve ConstraintHandling of SkolemTypes #20175
  • Better error diagnostics under -explain-cyclic #20251
  • Bring back ambiguity filter when we report an implicit not found error #20368
  • Avoid stacked thisCall contexts #20488

Incremental Compilation

  • Fix undercompilation upon ctor change #19911
  • Retain default parameters with export #20167

Inferencing

  • Adapt toInstantiate in interpolateTypeVars to consider #20399 #20426

Infrastructure

  • Fix listing release versions for bisect script. #19356
  • Make tests resilient to exceptions thrown while reporting exceptions #19566
  • Move CI management from lampepfl/dotty-ci #19697
  • Switch to Java 17 in the CI #19703
  • [regression] Publish nightly releases and releases using Java 8 #19722
  • Bump scalacenter/sbt-dependency-submission from 2 to 3 #20440

Inline

  • Fix regression: inline match crash when rhs uses private inlined methods #18595
  • Add structural classes of dynamicApply before inlining #18766
  • Inline transparent implicit parameters when typing Unapply trees #19646
  • Specialized retained inline FunctionN apply methods #19801
  • Restore pre-3.3.2 behavior of inline implicit def #19877
  • Avoid crash after StopMacroExpansion #19883
  • Check deprecation of inline methods #19914
    ...
Read more

3.3.4-RC4

20 Sep 10:25
Compare
Choose a tag to compare
3.3.4-RC4 Pre-release
Pre-release

Reverted changes

  • Revert "Reduce projections of type aliases with class type prefixes" in LTS #21609

Contributors

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

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

     4  Wojciech Mazur

3.5.2-RC1

20 Sep 10:26
Compare
Choose a tag to compare
3.5.2-RC1 Pre-release
Pre-release

Highlights of the release

  • Add the -Wall option that enables all warnings (Plan B) #20577
  • Add origin filter to WConf, DeprecationWarning #21404

Other changes and fixes

Implicits

  • Streamline tryNormalize with underlyingMatchType #20268

Infer

  • Fix #20521: Optimise caching for computing atoms and widened in OrTypes #21223

Infrastructure

  • Add the project's icon for Intellij #21188
  • Add the link to scala's security policy #21220
  • Add _spec to dependabot #21227
  • Bump redcarpet from 3.5.1 to 3.6.0 in /docs/_spec #21231
  • Bump webrick from 1.7.0 to 1.8.1 in /docs/_spec #21232
  • Bump VirtusLab/scala-cli-setup from 1.4.0 to 1.4.1 #21233
  • Bump VirtusLab/scala-cli-setup from 1.4.1 to 1.4.3 #21371
  • Bump VirtusLab/scala-cli-setup from 1.4.3 to 1.5.0 #21441
  • Update ScAS #21283
  • Bump hamzaremmal/sdkman-release-action from 4cb6c8cf99cfdf0ed5de586d6b38500558737e65 to 1f2d4209b4f5a38721d4ae20014ea8e1689d869e #21440

JVM Backend

  • Update asm to patched 9.7 #20144

Overloading

  • Report only non-overridden unimplemented members #21337

Parser

  • SimplePattern errors should now be recovered as wildcard instead of unimplemented expr #21438

Pattern matching

  • Fix a bundle of patmat issues #21000

Positions

  • Fix trailing comma Ident's span #20445

Presentation Compiler

  • fix: don't use color codes for pattern match code action #21120
  • fix: don't add suffix if brackets already present #21259
  • Backport from metals #21196
  • change mock symbol search #21296
  • fix: completions when parenthesis already provided #21299
  • Weekly metals backport #21343
  • Help implement Metals' infer expected type feature #21390
  • feat: Implement completions for named tuple fields #21202

Runner

  • Wrap the arguments passed to the scalac task between " #21322

REPL

  • Allow JLine to fall back to a dumb terminal #21330

Semantic DB

  • fix: semanticdb symbol creation when targetName set #20950

Tasty Format

  • add child to parent in completion context #21214

Transform

  • Fix #20856: Serialize Waiting and Evaluating as if null. #21243

Typeclass Derivation

  • Revert "Compensate loss of transitivity" #21356

Typer

  • Avoid forcing ctors & parents which caused cycles #17086
  • Fix isomorphism tests of AndOrTypes under non-empty BinderPairs #21017
  • Fail when a poly function value has a different number of type params than the expected poly function #21248
  • Fail early & more clearly on shaded-broken classfiles #21262
  • A tweak to type improvement #21312
  • Fix #20897: Make Nothing ⋔ Nothing, as per spec. #21241

Experimental Changes

Modularity

  • fix: Only implement a deferred given in a class if its parent won't implement it #21206

Named Tuples

  • Re-use isConcrete checking in match types for NamedTuple.From #20947
  • fix: Dealias NamedTuple's name types when resolving NamedTuple's element types #21331

Safe Global Initialization

  • Fix exception on sequence matching with drop #21281
  • Fix uninitializing fields when evaluating a cached constructor call in global initialization checker #21403

Contributors

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

According to git shortlog -sn --no-merges 3.5.1..3.5.2-RC1 these are:

  21  Dale Wijnand
  12  Eugene Flesselle
  11  Katarzyna Marek
    6  dependabot[bot]
    5  Wojciech Mazur
    4  Hamza REMMAL
    4  Kacper Korban
    4  Martin Odersky
    4  Som Snytt
    4  Yichen Xu
    4  kasiaMarek
    3  Jamie Thompson
    2  EnzeXing
    2  Hamza Remmal
    2  Sébastien Doeraene
    1  Jan Chyb
    1  Jędrzej Rochala
    1  Kavin Satheeskumar
    1  Martin Duhem
    1  Matt Bovel
    1  Raphael Jolly
    1  noti0na1
    1  philippus

3.5.1

20 Sep 10:26
Compare
Choose a tag to compare

Highlights of the release

  • Add sources of synthetic classes to sources jar #20904

Other changes and fixes

Annotations

  • Preventing compilation of a @tailrec method when it does not rewrite, but an inner method does #20143
  • #20145 - bugfix when a return tailrec is called inside a val def. #20652

Backend

  • Fix EnclosingMethod for lifted anonfun #20558
  • Emit switch bytecode when matching unions of a switchable type #20411
  • Fix deterministically adding additional interfaces #20593
  • Emit generatedNonLocalClass in backend when callback is not enabled #21186

Documentation

  • Avoid jpath in example #20775
  • Chore: Fix doc link in clauseInterleaving docstring #20590
  • Chore: fix doc link in namedTuples docstring #20770

Erasure

  • Don't re-balance AndTypes arising from supertypes #20400

GADTs

  • Harden GADT constraint handling to survive illegal F-bounds #20325

Inferencing

  • Adapt toInstantiate in interpolateTypeVars to consider #20399 #20426

Infrastructure

  • Update addToBackportingProject.scala #20461
  • Simple scripts to run non-bootstrapped compiler after 'sbt buildQuick' #19894
  • Bump from 3.4.0 to 3.5.0-RC1 for MiMA #20404
  • Set reference version to 3.5.0-RC4 #21175
  • Bring back windows performance improvements #20423
  • Bump scalacenter/sbt-dependency-submission from 2 to 3 #20440
  • Fix incorrect paths to sha256 check sum files in release workflow #20709
  • Bump VirtusLab/scala-cli-setup from 1.3.2 to 1.4.0 #20906

Inline

  • Mark genSJSIR as disabled (rather than non-runnable) when no -scalajs. #20815
  • Map over refs of ImportTypes in TypeMap #20837

Initialization

  • More principled filtering of abstract values in initialization check #20548

Match Types

  • TryCompiletimeConstantFold in disjointnessBoundary #20168

Pattern Matching

  • Fix #20372: Check pattern match exhaustivity in inlined code #20403

Presentation Compiler

  • Add pattern completion for unapply contexts #20274
  • Bugfix: Exclude newer LSP4j, which is built on JDK 11 #20771
  • Chore: Bump mtags to latest stable #20442
  • Weekly metals backport #20542
  • Port pc find references from metals #20544

Quotes

  • Add regression test for issue 20309 #20387

REPL

  • Only consider methods with 0 parameters in valueOf #20543

Reflection

  • Fix erasure crash for Inlined rhs of a context function closure #20398
  • Fix #20458: do not expose ClassInfo in quotes reflect widenTermRefByName #20468

Reporting

  • Fix error message on setter with wrong type #20444
  • Add a specific error message for local final defs #20557
  • Explain unresolvable references better #20477
  • Add error code to diagnostics about unused code #19780
  • Better error diagnostics for illegal match cases #20905

Runner

  • Bump scala-cli to 1.4.1 + drop old cli management #21234
  • Bump scala-cli to 1.4.3 #21338

Scaladoc

  • Fix handling of right associative extension methods across scaladoc and printers #20467

Specification

  • Add binary lits to syntax summaries #19551

Settings

  • Enhance help message for language flag #20247
  • Accept legacy language features #20454
  • Set default source version to 3.5 #20435

Tooling

  • Improve source positions emited for synthetic unit in if-conditions #20431
  • Adjust the API name entry for nested classes #20279
  • Fix declaring product of straight-to-jar compilation #20592

Transform

  • Correct Java signature for value classes appearing in type arguments #20463

Typer

  • Retry constraint.replace after constraint.updateEntry #20399
  • Add special handling for comparisons with Singleton types #20474
  • Reinstantiate restriction to transparent inline methods #20371
  • Add regression test for #20288 fixed in #20527 #20857
  • Fix isEffectivelySingleton #20486
  • Fall back to direct subtype comparison at the end in dropIfSuper and dropIfSub #20523
  • Mark AppliedType cachedSuper valid Nowhere when using provisional args #20527
  • Fix healAmbiguous to compareAlternatives with disambiguate = true #21372

Experimentqal Changes

Capture Checking

  • Fix soundness hole of forgotten reach capabilities #20524
  • Drop @capability annotations #20396
  • Fix symbol reference retrivial for scala.caps.Caps #20493
  • Refactor adaptBoxed #20525
  • Fix error related to reaches when using scala2-library-cc-tasty #20528

Named tuples

  • Make NamedTuple.Empty an alias to NamedTuple #20502
  • Move NamedTuple methods to separate scope. re-export #20504
  • WidenDealias before extracting namedTupleElementTypes #20505
  • Improve type inference for literal named tuples #20497
  • Fix issue #20267 with regression test #20506
  • Only set AppliedType#validSuper after AppliedType#cachedSuper #20553
  • Fix NamedTuple selection on an unstable prefix #20455
  • Allow apply adaptation on Selectable with Fields #20489

Contributors

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

According to git shortlog -sn --no-merges 3.5.0..3.5.1 these are:

    82  Martin Odersky
    29  Wojciech Mazur
    22  Hamza REMMAL
    16  Jamie Thompson
    15  Eugene Flesselle
    14  Hamza Remmal
    13  noti0na1
     9  Katarzyna Marek
     7  Fengyun Liu
     7  Jan Chyb
     6  Dale Wijnand
     6  Guillaume Martres
     5  Som Snytt
     4  dependabot[bot]
     3  Adrien Piquerez
     3  Derek Wickern
     3  Matt Bovel
     3  OlegYch
     2  Florian3k
     2  Kacper Korban
     2  Lucy Martin
     2  Paweł Marks
     2  Tomasz Godzik
     1  Arnout Engelen
     1  Eugene Yokota
     1  João Ferreira
     1  Kasper Kondzielski
     1  Lucas Nouguier
     1  Lukas Rytz
     1  Mikołaj Fornal
     1  Nafer Sanabria
     1  Natsu Kagami
     1  Seth Tisue
     1  Sébastien Doeraene

3.3.4-RC3

13 Sep 13:23
Compare
Choose a tag to compare
3.3.4-RC3 Pre-release
Pre-release

Reverted changes

  • Revert pattern matching improvements introducing regressions in 3.3.4 #21573

Contributors

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

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

     4  Wojciech Mazur

3.3.4-RC2

10 Sep 20:18
Compare
Choose a tag to compare
3.3.4-RC2 Pre-release
Pre-release

Backported fixes

  • Fix a bundle of patmat issues #21000
  • Fixed false positive unreachable local object #21532
  • Reimplement support for type aliases in SAM types #18317
  • Allow SAM types to contain match alias refinements #20092
  • Allow SAM types to contain multiple refinements #20172

Contributors

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

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

    11  Dale Wijnand
     7  Wojciech Mazur
     1  Guillaume Martres