Skip to content

Releases: scala/scala3

3.6.3-RC1

13 Dec 10:58
Compare
Choose a tag to compare
3.6.3-RC1 Pre-release
Pre-release

Highlights of the release

  • Scala 2 forwardport: -Yprofile-trace #19897

Other changes and fixes

Annotations

  • Fix Java parsing of annotations on qualified types #21867
  • Consider all arguments in Annotations.refersToParamOf #22001

Backend

  • Flag class file collision as error #19332

Compiler Phases

  • Fix #21939: Update names and descriptions for cc and setup phases #21942

Experimental: Explicit Nulls

  • Improve warning for wildcard matching only null under the explicit nulls flag (scala#21577) #21623
  • Fix warning message for matching on redundant nulls #21850

Experimental: Capture Checking

Experimentals

  • Replace symbol traversal with tree traversal when finding top level experimentals #21827

Extension Methods

  • Nowarn extension matching nonpublic member #21825

Implicits

  • Apply implicit conversion from derived Conversion instance defined as implicit rather than given #21785

Imports

  • Allow imports nested in packagings to shadow #21539

Inline

  • Avoid using the current denotation in NamedType.disambiguate #21414
  • Drop phase.isTyper use in isLegalPrefix/asf #21954
  • Fix for macro annotation that resolves macro-based implicit crashing the compiler #20353
  • Allow macro annotations to recover from suspension #21969

Linting

  • Disallow open modifier on objects #21922
  • Allow discarding "Discarded non-Unit" warnings with : Unit #21927

Opaque Types

  • Fix pkg obj prefix of opaque tp ext meth #21527

Parser

  • Fix: don't consider into as a soft-modifier #21924

Pattern Matching

  • Drop inaccessible subclasses from refineUsingParent #21799
  • (Re-)Drop inaccessible subclasses from refineUsingParent #21930
  • Fix use of class terms in match analysis #21848
  • Don't project nested wildcard patterns to nullable #21934
  • Fix provablyDisjoint handling enum constants with mixins #21876
  • Do not consider uninhabited constructors when performing exhaustive match checking #21750

Presentation Compiler

  • Update mtags to 1.4.1 and backport remaining changes #21859
  • Backport changes for the presentation compiler from Metals #21756

Pickling

  • Avoid orphan param from default arg #21824
  • Make sure definition tree has the defined symbol #21851

REPL

  • Allow top-level opaque type definitions in REPL #21753

Scaladoc

  • Fix scaladoc TastyInspector regressions #21716
  • Bring back the fix for scaladoc TastyInspector regressions #21929

Standard Library

  • Combine cases of Tuple.Zip disjoint from (h1 *: t1, h2 *: t2) #21287

Quotes

  • Fix #20471: owners of top-level symbols in cached quoted code being incorrect #21945

Reporting

  • Do not warn about expected missing positions in quotes.reflect.Symbol #21677
  • Add missing error messages to asserts in QuotesImpl #21852
  • Don't point to the compiler backlog when a compiler plugin phase crashes #21887
  • Better error message for polytypes wrapping capturing types #21843
  • Pretty-print lambdas #21846

Scala.js

  • Shade scalajs.ir under dotty.tools #21765

Scaladoc

  • Fix scaladoc graph highlight background color in dark mode #21814

SemanticDB

  • Extract semanticDB for lifted definitions #21856

Transform

  • Fix enclosingClass from returning refinement classes #21411
  • Attempt to beta reduce only if parameters and arguments have same shape #21970
  • Drop copied parent refinements before generating bytecode #21733

Tooling

  • Ensure to escape characters before constructing JSON profile trace #21872

Tuples

  • Fix tupleTypeFromSeq for XXL tuples #21782

Typer

  • Do not crash when typing a closure with unknown type, since it can occur for erroneous input #21178
  • Revert SAM condition to what it was before #21684
  • Fix ctx implicits under case unapplySeq #21748
  • Avoid erasure/preErasure issues around Any in transformIsInstanceOf #21647

Contributors

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

According to git shortlog -sn --no-merges 3.6.2..3.6.3-RC1 these are:

  30 Dale Wijnand
  30 Kacper Korban
  27 Wojciech Mazur
  14 noti0na1
  10 Eugene Flesselle
  10 Hamza Remmal
  10 HarrisL2
    9 Martin Odersky
    8 Matt Bovel
    7 Jan Chyb
    6 Tomasz Godzik
    4 Jamie Thompson
    2 Friendseeker
    2 Pascal Weisenburger
    2 Seth Tisue
    2 Sébastien Doeraene
    1 Adrien Piquerez
    1 Alden Torres
    1 Alexander
    1 Fengyun Liu
    1 Georgi Krastev
    1 Jentsch
    1 Lunfu Zhong
    1 Michał Pałka
    1 Natsu Kagami
    1 dependabot[bot]
    1 friendseeker
    1 tgodzik

3.6.2

10 Dec 14:43
Compare
Choose a tag to compare

Highlights of the release

  • Stabilise SIP-47 (Adding Clause Interleaving to method definitions) #20861
  • Stabilise SIP-64 (New syntax of givens and context bounds) #21668
  • Context Bounds for Polymorphic Functions #21643
  • Switch mapping of context bounds to using clauses in 3.6 #21257
  • Enable betterMatchTypeExtractors in >= 3.6 #21198
  • Require named arguments for java defined annotations #21329
  • Refine the bounds of the Tuple.Filter type lambda predicate .. #21286
  • Add an infix shorthand for Tuple.{Append, Concat} #21288
  • Add .msi artifacts to release assets #21834
  • Implement SIP-62 as experimental - For comprehension improvements #20522
  • Implement SIP-57 as experimental - add runtimeChecked method and annotation #20987

Other changes and fixes

Annotations

  • Tighten java annot value parsing #21650

Erasure

  • Fixes IllegalAccessError with Java package protected class #21362

Experimental: Capture Checking

  • 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
  • Existential Capabilities #20566
  • 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: Global Initialization

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

Experimental: Named Tuples

  • Finalize named tuples #21710
  • Move NamedTuple.head to NamedTupleDecomposition #21308
  • Move NonEmptyTuple members into Tuple #21291
  • Migration rewrites for infix arguments interpreted as named tuples #21949
  • Make named tuples a standard feature #21680
  • Make named tuples an experimental feature again #22045

Experimental: Explicit Nulls

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

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

Match Types

  • Fix #21295: Restrict provablyDisjoint with Nothings in invariant type params. #21891
  • 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
  • Handle old given syntax where identifier and type are seperated by new line #21957
  • Fix: Allow as as an infix type in non context bound types #21849
  • Revised given syntax #21208
  • Make context bounds for poly functions a standard feature #22019

Pattern Matching

  • Optimise SpaceEngine.signature #21791
  • 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
  • Warn when named tuples resemble assignments #21823

REPL

  • REPL: JLine 3.27.0 (was 3.25.1) #21752
  • 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

Runner

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

  • Scala 2.13.15 (was .14) #21648
  • Define binary symbolic compiletime ops as infix #21683

Transform

Read more

3.3.5-RC1

13 Dec 10:59
Compare
Choose a tag to compare
3.3.5-RC1 Pre-release
Pre-release

Highlights of the release

  • Use Scala 2.13.15 standard library #21648
  • Support JDK 23 #20144
  • Add the -Wall option that enables all warnings #20577
  • Reversed -Wconf parsing order to mirror Scala 2 semantics #18503

Other changes and fixes

Annotations

  • Tighten java annot value parsing #21650

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

Inference

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

Linting

  • Add origin filter to WConf, DeprecationWarning #21404
  • CheckUnused checks type param annotations #20549

Match Types

  • Fix #20897: Make Nothing ⋔ Nothing, as per spec. #21241
  • Always interpret underscores inside patterns as type bounds #21718

Overloading

  • Report only non-overridden unimplemented members #21337

Parser

  • Harden skip in Scanner #21607
  • SimplePattern errors should now be recovered as wildcard instead of unimplemented expr #21438

Positions

  • Fix trailing comma Ident's span #20445

Presentation Compiler

  • Fix autoimports with using directives #21590
  • Remove artificial CURSOR added to code in the completions #20899
  • Help implement Metals' infer expected type feature #21390
  • Weekly metals backport #21343
  • Change mock symbol search #21296
  • Fix: completions when parenthesis already provided #21299
  • Backport from metals #21196
  • Fix: don't add suffix if brackets already present #21259

Quotes

  • Handle suspension due to macro call in arbitrary phases #21651
  • Have a better error message when healing types #21711
  • Expr#show: Don't crash when the expression contains an unsupported type (like a SkolemType) #20494
  • Quotes type printing: take infix type modifier into account #21726

Reporting

  • Nicer error message in case a derived method has an explicit term param #21332
  • Add better error reporting for inlined non-immutable paths #21639

Releases

  • Add support for Chocolatey #20534
  • Add the merge commit hash to the icon's url #21221
  • Add sources of synthetic classes to sources jar #20904

REPL

  • Uppdate JLine to 3.27.0 (was 3.25.1) #21752
  • Allow JLine to fall back to a dumb terminal #21330

Scaladoc

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

TASTy format

  • Add child to parent in completion context #21214

Transform

  • Three fixes to SAM type handling #21596
  • Fix treatment of separately compiled @native methods in FirstTransform #21593
  • Fix #20856: Serialize Waiting and Evaluating as if null. #21243
  • Fixes IllegalAccessError with Java package protected class #21362
  • Consistently use TypeMismatch in TreeChecker #21529
  • Fix: don't use color codes for pattern match code action #21120
  • Let show behave more robustly for Recheck #21678
  • Always rewrite empty List() to Nil #21689

Typer

  • Fix extending protected nested java classes #21857
  • Avoid cyclic errors forcing default arg types #21597
  • Survive inaccessible types when computing implicit scope #21589
  • Revert "Drop redundant butNot = Param clause in isAnchor" #21566
  • Fail early & more clearly on shaded-broken classfiles #21262
  • Fix isomorphism tests of AndOrTypes under non-empty BinderPairs #21017
  • Some fixes for AnnotatedTypes mapping #19957
  • Simple performance improvement for Denotations #21584
  • Avoid import suggestion thread hang if -Ximport-suggestion-timeout <= 1 #21434
  • Fix incorrect caching with dependent method parameters #21699

Experimental: Explicit Nulls

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

Contributors

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

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

    44 Wojciech Mazur
    14 Dale Wijnand
    10 Katarzyna Marek
     8 rochala
     5 noti0na1
     4 Hamza Remmal
     4 Matt Bovel
     4 Som Snytt
     3 Jamie Thompson
     3 Martin Odersky
     3 Michał Pałka
     3 dependabot[bot]
     3 kasiaMarek
     2 Aleksander Rainko
     2 Eugene Flesselle
     2 Florian3k
     2 HarrisL2
     2 Jędrzej Rochala
     2 Kacper Korban
     2 Yichen Xu
     1 Eugene Yokota
     1 Guillaume Martres
     1 Hamza REMMAL
     1 Jan Chyb
     1 Joel Wilsson
     1 Kenji Yoshida
     1 Martin Duhem
     1 Nicolas Stucki
     1 Ondrej Lhotak
     1 Seth Tisue
     1 Sébastien Doeraene
     1 Tomasz Godzik

3.6.2-RC3

29 Nov 14:07
Compare
Choose a tag to compare
3.6.2-RC3 Pre-release
Pre-release

Note

Scala 3.6.2 would become the first official release for the Scala 3.6 series.
Versions 3.6.0 (a broken release) and 3.6.1 (a hotfix release) should never be used. For more information, refer to the Scala 3.6.0 Post Mortem blogpost

Scala 3.6.2 should effectively be regarded as "3.6.0" for all intents and purposes.

Backported fixes

  • Make named tuples an experimental feature again #22045

Contributors

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

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

    5 Wojciech Mazur

3.6.2-RC2

28 Nov 13:42
Compare
Choose a tag to compare
3.6.2-RC2 Pre-release
Pre-release

Note

Scala 3.6.2 would become the first official release for the Scala 3.6 series.
Versions 3.6.0 (a broken release) and 3.6.1 (a hotfix release) should never be used. For more information, refer to the Scala 3.6.0 Post Mortem blogpost

Scala 3.6.2 should effectively be regarded as "3.6.0" for all intents and purposes.

Backported fixes

  • Make context bounds for poly functions a standard feature #22019
  • Update Scala CLI to 1.5.4 (was 1.5.1) & coursier to 2.1.18 (was 2.1.13) #22021

Contributors

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

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

    4 Wojciech Mazur

3.6.2-RC1

21 Nov 10:37
Compare
Choose a tag to compare
3.6.2-RC1 Pre-release
Pre-release

Note

Scala 3.6.2 would become the first official release for the Scala 3.6 series.
Versions 3.6.0 (a broken release) and 3.6.1 (a hotfix release) should never be used. For more information, refer to the Scala 3.6.0 Post Mortem blogpost

Scala 3.6.2 should effectively be regarded as "3.6.0" for all intents and purposes.
This includes also an exception in versioning of produced TASTy files by its release candidates - 3.6.2-RC*.
Scala compiler emits TASTy files in an experimental version for candidates of a new minor version (e.g. 3.x.0-RC1), contrary to release candidates of a new patch version (e.g. 3.x.1-RC1) that emit a non-experimental TASTy in version established by the first stable release of their respective minor version.
Libraries should never publish artifacts containing experimental TASTy files. Instead, authors should wait until the stabilization of the TASTy format in Scala 3.6.2.

Highlights of the release

  • Stabilise SIP-47 (Adding Clause Interleaving to method definitions) #20861
  • Stablise SIP-64 #21668
  • Context Bounds for Polymorphic Functions #21643
  • Make named tuples a standard feature #21680
  • Switch mapping of context bounds to using clauses in 3.6 #21257
  • Enable betterMatchTypeExtractors in >= 3.6 #21198
  • Require named arguments for java defined annotations #21329
  • Refine the bounds of the Tuple.Filter type lambda predicate .. #21286
  • Add an infix shorthand for Tuple.{Append, Concat} #21288
  • Move NonEmptyTuple members into Tuple #21291
  • Add .msi artifacts to release assets #21834
  • Migration rewrites for infix arguments interpreted as named tuples #21949
  • Implement SIP-62 as experimental - For comprehension improvements #20522
  • Implement SIP-57 as experimental - add runtimeChecked method and annotation #20987

Other changes and fixes

Annotations

  • Tighten java annot value parsing #21650

Erasure

  • Fixes IllegalAccessError with Java package protected class #21362

Experimental: Capture Checking

  • 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
  • Existential Capabilities #20566
  • 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: Global Initialization

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

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

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

Match Types

  • Fix #21295: Restrict provablyDisjoint with Nothings in invariant type params. #21891
  • 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
  • Handle old given syntax where identifier and type are seperated by new line #21957
  • Fix: Allow as as an infix type in non context bound types #21849
  • Revised given syntax #21208

Pattern Matching

  • Optimise SpaceEngine.signature #21791
  • 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
  • Warn when named tuples resemble assignments #21823

REPL

  • REPL: JLine 3.27.0 (was 3.25.1) #21752
  • 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

  • Scala 2.13.15 (was .14) #21648
  • Define binary symbolic compiletime ops as infix #21683
  • Finalize named tuples #21710
  • Move NamedTuple.head to NamedTupleDecomposition #21308

Transform

  • Fix trea...
Read more

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