Skip to content

Releases: scala/scala3

3.7.4-RC1

29 Sep 18:38
39ebf6b
Compare
Choose a tag to compare
3.7.4-RC1 Pre-release
Pre-release

Highlights of the release

  • Bump Scala CLI to v1.9.1 (was v1.9.0) #23962
  • Make coverage more similar to the one in Scala 2 #23722

Other changes and fixes

Context Functions

  • Explain no expansion of ContextFunction0 #23844

Experimental: Capture Checking

  • Fix #23737: Update superCallContext to include dummy capture parameters in scope #23740
  • Fix separation checking for function results #23927
  • Simple enhancement for pattern matching with capturing types #23524
  • Don't check bounds in match type cases at CC #23738

Experimental: Explicit Nulls

  • Add warnings for inferred flexible types in public methods and fields #23880

Exports

  • Refine isEffectivelyFinal to avoid no-owner crash #23675

Implicits

  • Fix LiftToAnchors for higher-kinded type applications #23672
  • Fix implicit scope liftToAnchors for parameter lower bounds #23679

Linting

  • Invent given pattern name in for comprehension #23121
  • Unused var message mentions unread or unset #23719
  • Lint function arrow intended context function #23847

Match Types

  • Fix derivesFrom false negative in provablyDisjointClasses #23834

Parser

  • Improve message for nested package missing braces #23816
  • Fix: allow postfix setters under language.postfixOps #23775

Pattern Matching

  • Fix: do not transform Ident to This in PostTyper anymore #23899
  • Call inhabited for AppliedType recursively #23964
  • Fix false unreachable case warning #23800
  • Add subtype-based fallback in inferPrefixMap and recalculate constraints after application #23771

Presentation Compiler

  • Additional completions for using clause #23647
  • Completions - do not add [] for ... derives TC@@ #23811
  • Improve symbol order in completions provided by the presentation compiler #23888
  • Porting XRayModeHints #23891
  • Go to definition and hover for named args in pattern match #23956

Reporting

  • Do not discard amended format when f-interpolator warns #23697
  • Mention named givens in double def explainer #23833
  • Compute the right span for abstract error messages #23853
  • Add quick fix to add .nn #23598
  • Add addendum to private val parameter variance error message #23876

Scaladoc

  • Indicate optional parameters with = ... #23676
  • Scaladoc Support for Capture & Separation Checking #23607
  • Capture Calcuclus: don't eagerly drop caps on parameters #23759

SemanticDB

  • Add context parameters to SemanticDB synthetics #23381
  • Include synthetic apply in semanticdb #23629

Tuples

  • Fix: make vals created in desugaring of n-ary lambdas non-synthetic #23896

Typer

  • Prevent crash in SAM conversion with mismatched arity #23877
  • Handle assertion error in TyperState #23665
  • Correctly require a ClassTag when building a multidimensional Array #23902
  • Make isExactlyNothing and isExactlyAny work for And/OrTypes #24016

Contributors

Thank you to all the contributors who made this release possible ๐ŸŽ‰

According to git shortlog -sn --no-merges 3.7.3..3.7.4-RC1 these are:

    12  Som Snytt
    11  noti0na1
    11  Wojciech Mazur
     6  Martin Odersky
     5  Eugene Flesselle
     4  Hamza Remmal
     4  Natsu Kagami
     4  Seyon Sivatharan
     3  Oliver Braฤevac
     3  Yoonjae Jeon
     3  dependabot[bot]
     2  Jan Chyb
     2  Katarzyna Marek
     2  Matt Bovel
     1  HarrisL2
     1  Kacper Korban
     1  Martin Duhem
     1  Paweล‚ Perล‚akowski
     1  Piotr Chabelski
     1  Tomasz Godzik
     1  Vadim Chelyshov
     1  Yichen Xu
     1  Zieliล„ski Patryk
     1  aherlihy
     1  katrinafyi
     1  vder
     1  zielinsky

3.3.7-RC2

26 Sep 16:25
1e957ee
Compare
Choose a tag to compare
3.3.7-RC2 Pre-release
Pre-release

Backported fixes

Contributors

Thank you to all the contributors who made this release possible ๐ŸŽ‰

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

     2  Tomasz Godzik
     1  Jan Chyb
     1  Vadim Chelyshov
     1  Zieliล„ski Patryk
     1  vder

3.7.3

09 Sep 15:03
eb198cf
Compare
Choose a tag to compare

Release highlights

  • Warn if implicit default shadows given #23559
  • Standardize on -Vprint:... (still support -Xprint:... as alias) #22828

Other changes and fixes

Desugaring

  • Optimize simple tuple extraction #23373

Enums

  • Make hashcode of enum items stable #23218

Erasure

  • Replace erased class modifiers with Erased base traits #23447
  • Bring back part of PruneErasedDefs #23466

Experimental: Capture Checking

  • Fix parsing crash for update in later phases #23390
  • Implement boxing for singleton type arguments #23418
  • Expand Capability types also in arguments of Capability classes #23427
  • Adjustments to the capability trilogy #23428
  • Set context owner to the method for paramsToCap #23436
  • Flatten nested capture sets in retainedElementsRaw #23571
  • Fix well-formed test for capabilities #23393
  • Add restricted capabilities x.only[C] #23485
  • Rely on hidden sets for use checking #23580

Experimental: Separation Checking

  • Make separation checking controlled by language import #23560

Experimental: Erased Definitions

  • Refactorings and fixes to erased definition handling #23404

Experimental: Explicit Nulls

  • Add quick fix to remove unnecessary .nn #23461
  • Add stableNull annotation to force tracking mutable fields #23528

Experimental: Global Initialization

  • Rewrite resolveThis in global init checker #23282
  • Fix errors in the global initialization checker when compiling bootstrapped dotty #23429
  • Fix error in product-sequence match in global init checker #23480

Experimental: Into

  • Fix isConversionTargetType test #23401

Experimental: Modularity

  • Refinements to skolemizaton #23513

Experimental: Unroll

  • Enable UnrollDefinitions phase in REPL frontend phases #23433

Extension Methods

  • Avoid forcing extension on check of local select #23439

Implicits

  • Refine implicit search fallbacks for better ClassTag handling #23532

Inline

  • Fix Symbol.info remapping in TreeTypeMap #23432
  • Fail not inlined inline method calls early #22925
  • Fix inline export forwarder generation regression #23126

Linting

  • Consider setter of effectively private var #23211
  • Add accessible check for import usage #23348
  • Check OrType in interpolated toString lint #23365
  • Use result of lambda type of implicit in CheckUnused #23497
  • Add suppression if nowarn differs #23652

Match Types

  • Fix: #23261 Distinguish 0.0 and -0.0 in ConstantType match types #23265

Named Tuples

  • Skip bypassing unapply for scala 2 case classes to allow for single-element named tuple in unapply #23603

Parser

  • Enforce -new-syntax under -language:future #23443
  • Disallow Scala 2 implicits under -source:future #23472

Pattern Matching

  • Fix problems in checking that a constructor is uninhabited for exhaustive match checking #23403

Pickling

  • Don't force annotation unpickling when testing for SilentIntoAnnot #23506
  • Drop invalid assumption from TastyUnpickler #23353

Printer

  • Print update modifier when printing update method definitions #23392

Positions

  • Compare span points in pathTo to determine best span #23581
  • Add line number magic comment support #23549

Presentation Compiler

  • Port Inlay hints for name parameters #23375
  • Fix: Simplify infer type for apply #23434
  • Fix: Inconsistent annotation tooltips #23454
  • Fix adjust type when already exists #23455
  • Exclude named parameters inlay hints for java defined #23462
  • Fix: StringIndexOutOfBoundsException in presentation compiler's hasColon method #23498
  • Add InferredMethodProvider for automatic method signature generation #23563
  • Fix completions for Quotes #23619
  • Handle default arguments in named parameters for inlay hints #23641
  • Fix issue with pc breaking in requiredMethod on newly overloaded valueOf #23708
  • Handle default arguments in named parameters for inlay hints #23641
  • Fix extracting refinements from intersection types in dynamic select hovers #23640

Quotes

  • Skip splice level checking for <refinement> symbols #22782
  • Fix stale top level synthetic package object being used in later runs #23464
  • Emit an error for quoted pattern type variable after new #23618
  • Fix issue with certain polyfunctions not properly matching in macros #23614
  • Check PCP of constructor calls on the type #7531

Reflection

  • Quotes reflect: sort the typeMembers output list and filter out non-members #22876

Reporting

  • Add an explainer to the DoubleDefinition error #23470
  • Suppress warnings in comprehensions with 22+ binds #23590
  • Unhelpful error message when trying to use named extraction, when not matching case class or named tuple #23354
  • Improve error message for conflicting definitions #23453
  • -Yprofile-trace properly report macro splicing source #23488
  • -Yprofile-trace profiles all inline calls #23490

Rewrites

  • Patch empty implicit parens on error recovery #22835
  • Rewrite underscore with optional space #23525

Runner

  • Bump Scala CLI to v1.9.0 (was v1.8.4) #23702

Scaladoc

  • Scaladoc: fixes and improvements to context bounds and extension methods #22156
  • Encode path of class #23503

SemanticDB

  • Bugfix: Also save infos in semanticdb #23587

Transform

  • Handle multiple type parameter lists in value class methods #23516
  • Check path of module prefix for tailrec #23491

Tuples

  • Normalize tuple types in var args seq literals and classOf instances #23465

Typer

  • Fix #22922: Add TypeParamRef handling in isSingletonBounded #23501
  • Fix this references everywhere in dependent function types #23514
  • Don't approximate a type using Nothing as prefix #23531
  • Support cleanup actions in class completers #23515
  • Fix regressions in asSeenFrom introduced in 3.7 #23438
  • Use correct owner in eta expansion #7564
  • Fix irrefutability checking in for with untupling #23273
  • Fix missing members reporting for var setter...
Read more

3.7.3-RC3

04 Sep 08:46
350126f
Compare
Choose a tag to compare
3.7.3-RC3 Pre-release
Pre-release

Backported changes

  • Update scala-cli to 1.9.0 (was 1.8.5) #23861

Contributors

Thank you to all the contributors who made this release possible ๐ŸŽ‰

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

  3 Wojciech Mazur

3.3.7-RC1

29 Aug 12:20
Compare
Choose a tag to compare
3.3.7-RC1 Pre-release
Pre-release

Highlights of the release

  • Warn if interpolator uses toString #20578
  • Fixes #15736 blocking Scala 3 on Android #22632
  • Implement :jar (deprecate :require) #22343
  • In selector check, prefix of reference must match import qualifier #20894
  • Fix #21242: Add REPL flag to quit after evaluating init script #22636
  • Warn if implicit default shadows given #23559

Other changes and fixes

Annotations

  • Approximate annotated types in wildApprox #22893
  • Fix copy of annotation on @main methods #22582

CI

  • Disable Cats flaky tests #23007

Developer Experience

  • Add support for running the test sub-command with the bisect script #22796

Documentation

  • Improve the usage of inclusive language #22360
  • Update indentation.md to fix a typo #23505

Enums

  • Make hashcode of enum items stable #23218

Erasure

  • Add regression test for #23616 #23623
  • Disallow context function types as value-class parameters #23015
  • Handle type aliases in contextFunctionResultTypeAfter #21517
  • Align erasure of Array[Nothing] and Array[Null] with Scala 2 #22517

Experimental: Erased definitions

  • Erased fields are not nullable #23311

Implicits

  • Refine implicit search fallbacks for better ClassTag handling #23532
  • Fix #20335: Try extensions for arguments with type mismatch error #23212

Inline

  • Fix Symbol.info remapping in TreeTypeMap #23432

Lambda Lift

  • Fix: treat static vals as enclosures in lambdalift #22452
  • Fix: record calls to constructors in lambdaLift #22487

Linting

  • Check OrType in interpolated toString lint #23365
  • Consider setter of effectively private var #23211
  • Nowarn receiver of extension taking params #23351
  • Dealias when looking into imports #22889
  • Revert unconditional lint of Inlined expansion #22815
  • Warn unused member of anonymous class #22729
  • No warning for parameter of overriding method #22757
  • Lazy val def member is pattern var #22750
  • Ignore params to default arg getters #22749
  • Restore resolving prefixes of implicit Ident #22751
  • Exclude synthetic this.m, Any.m from import lookup #22695
  • Nowarn public implicit val class params #22664
  • Don't warn retainedBody #22510
  • Suppress spurious Suppression #22383
  • Handle Typeable #22663
  • CheckUnused checks span.exists before testing its parts #22504
  • Process Export for unused check #22984
  • Enclosing package p.q not visible as q #23069
  • Remove premature caching of lookups for unused lint #22982
  • Improve checking LHS of Assign #22977
  • Improve Unit ascription escape hatch #23147
  • Mention extension in unused param warning #23132
  • Dealias for unused param check #23256
  • Take inferred or explicit refinement result for unused check #23325
  • Add accessible check for import usage #23348
  • Use result of lambda type of implicit in CheckUnused #23497

Match Types

  • Handle NoType in TypeComparer.disjointnessBoundary #21520
  • Fix: #23261 Distinguish 0.0 and -0.0 in ConstantType match types #23265

Metaprogramming

  • Add a check for correct Array shape in quotes.reflect.ClassOfConstant #22033

Opaque Types

  • Fix stack overflow errors when generating opaque type proxies #22479

Optional Braces

  • Correctly detect colon lambda eol indent for optional brace of argument #22477

Overloading

  • Fail compilation if multiple conflicting top-level private defs/vals are in the same package #22759

Parser

  • Allow observing an indent after conditional #22611
  • No outdent at eof #22435
  • Fix annotations being not expected in the middle of an array type by java parser #22391
  • Fix incorrect warning with -no-indent #23216

Pattern Matching

  • Fix issue in lazy symbol completion or bug in nested classfile parser #23634
  • Fix existing GADT constraints with introduced pattern-bound symbols #22928
  • Avoid crash in uninhab check in Space #22601

Pickling

  • Try to handle SkolemTypes in SingletonTypeTree during pickling #23236

Positions

  • Compare span points in pathTo to determine best span #23581

Presentation Compiler

  • Fix: Fix extracting refinements from intersection types in dynamic select hovers #23640
  • Completions for requests just before string #22894
  • Add enum type param support in sourceSymbol #18603
  • Use untpd.Tree instead of tpd.Tree for SelectionRangeProvider #22702
  • Fix: handle multiple params lists in for infer type #23197
  • Fix completion mode filtering + optimize scopeCompletions #23172
  • Add selection ranges for more names #23257
  • Add inlay hints for by-name parameters #23283
  • Add jpath to VirtualFile (for pc) #23203

Quotes

  • Fix issue with static this references erroring in quoted code #22618
  • Skip splice level checking for symbols #22782
  • Fix stale top level synthetic package object being used in later runs #23464

REPL

  • REPL: JLine 3.29.0 (was 3.27.1) #22679
  • Repl: emit warning for the :sh command #22694

Reflection

  • Fix regression: do not approximate prefixes when using memberType in reflect API #22448
  • Forbid StringConstant(null) #23064
  • Quotes reflect: sort the typeMembers output list and filter out non-members #22876

Reporting

  • Register nowarn when inlining #22682
  • Filter help renders box border #22434
  • Fix incorrect warning on type ascription for backquoted identifiers #23088
  • Add an explainer to the DoubleDefinition error #23470

Scaladoc

Settings

  • Chore: filter allowed source versions by import and by settings #23215

Testing framework

  • Revert dubious retry in vulpix #21801

Transform

  • Check only stable qual for import prefix #22633
  • Warn trivial recursion with module prefix #23278

Tuples

  • Normalize tuple types ...
Read more

3.7.3-RC2

14 Aug 20:50
bb8910a
Compare
Choose a tag to compare
3.7.3-RC2 Pre-release
Pre-release

Backported chnages

  • Warn if implicit default shadows given #23559
  • Bump Scala CLI to v1.8.5 (was v1.8.4) #23702
  • Fix issue with pc breaking in requiredMethod on newly overloaded valueOf #23708
  • Handle default arguments in named parameters for inlay hints #23641
  • Add suppression if nowarn differs #23652
  • Fix match type bounds checking problem #23695
  • Generalize "Don't approximate a type using Nothing as prefix" #23628
  • More careful ClassTag instantiation #23659
  • Use more context for implicit search only if no default argument #23664
  • Fix extracting refinements from intersection types in dynamic select hovers #23640

Contributors

Thank you to all the contributors who made this release possible ๐ŸŽ‰

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

  5  Martin Odersky
  4  Som Snytt
  2  Wojciech Mazur
  1  Guillaume Martres
  1  Jan Chyb
  1  Kacper Korban
  1  Piotr Chabelski
  1  aherlihy

3.7.3-RC1

06 Aug 08:00
afc19b9
Compare
Choose a tag to compare
3.7.3-RC1 Pre-release
Pre-release

Changes and fixes

Desugaring

Enums

  • Make hashcode of enum items stable #23218

Erasure

  • Replace erased class modifiers with Erased base traits #23447
  • Bring back part of PruneErasedDefs #23466

Experimental: Capture Checking

  • Fix parsing crash for update in later phases #23390
  • Implement boxing for singleton type arguments #23418
  • Expand Capability types also in arguments of Capability classes #23427
  • Adjustments to the capability trilogy #23428
  • Set context owner to the method for paramsToCap #23436
  • Flatten nested capture sets in retainedElementsRaw #23571
  • Fix well-formed test for capabilities #23393
  • Add restricted capabilities x.only[C] #23485
  • Rely on hidden sets for use checking #23580

Experimental: Seperation Checking

  • Make separation checking controlled by language import #23560

Experimental: Erased Definitions

  • Refactorings and fixes to erased definition handling #23404

Experimental: Explicit Nulls

  • Add quick fix to remove unnecessary .nn #23461
  • Add stableNull annotation to force tracking mutable fields #23528

Experimental: Global Initialization

  • Rewrite resolveThis in global init checker #23282
  • Fix errors in the global initialization checker when compiling bootstrapped dotty #23429
  • Fix error in product-sequence match in global init checker #23480

Experimental: Into

  • Fix isConversionTargetType test #23401

Experimental: Modularity

  • Refinements to skolemizaton #23513

Experimental: Unroll

  • Enable UnrollDefinitions phase in REPL frontend phases #23433

Extension Methods

  • Avoid forcing extension on check of local select #23439

Implicits

  • Refine implicit search fallbacks for better ClassTag handling #23532

Inline

  • Fix Symbol.info remapping in TreeTypeMap #23432
  • Fail not inlined inline method calls early #22925
  • Fix inline export forwarder generation regression #23126

Linting

  • Consider setter of effectively private var #23211
  • Add accessible check for import usage #23348
  • Check OrType in interpolated toString lint #23365
  • Use result of lambda type of implicit in CheckUnused #23497

Match Types

  • Fix: #23261 Distinguish 0.0 and -0.0 in ConstantType match types #23265

Named Tuples

  • Skip bypassing unapply for scala 2 case classes to allow for single-element named tuple in unapply #23603

Parser

  • Enforce -new-syntax under -language:future #23443
  • Disallow Scala 2 implicits under -source:future #23472

Pattern Matching

  • Fix problems in checking that a constructor is uninhabited for exhaustive match checking #23403

Pickling

  • Don't force annotation unpickling when testing for SilentIntoAnnot #23506
  • Drop invalid assumption from TastyUnpickler #23353

Printer

  • Print update modifier when printing update method definitions #23392

Positions

  • Compare span points in pathTo to determine best span #23581
  • Add line number magic comment support #23549

Presentation Compiler

  • Port Inlay hints for name parameters #23375
  • Fix: Simplify infer type for apply #23434
  • Fix: Inconsistent annotation tooltips #23454
  • Fix adjust type when already exists #23455
  • Exclude named parameters inlay hints for java defined #23462
  • Fix: StringIndexOutOfBoundsException in presentation compiler's hasColon method #23498
  • Add InferredMethodProvider for automatic method signature generation #23563
  • Fix completions for Quotes #23619
  • Handle default arguments in named parameters for inlay hints #23641

Quotes

  • Skip splice level checking for <refinement> symbols #22782
  • Fix stale top level synthetic package object being used in later runs #23464
  • Emit an error for quoted pattern type variable after new #23618
  • Fix issue with certain polyfunctions not properly matching in macros #23614
  • Check PCP of constructor calls on the type #7531

Reflection

  • Quotes reflect: sort the typeMembers output list and filter out non-members #22876

Reporting

  • Add an explainer to the DoubleDefinition error #23470
  • Suppress warnings in comprehensions with 22+ binds #23590
  • Unhelpful error message when trying to use named extraction, when not matching case class or named tuple #23354
  • Improve error message for conflicting definitions #23453
  • -Yprofile-trace properly report macro splicing source #23488
  • -Yprofile-trace profiles all inline calls #23490

Rewrites

  • Patch empty implicit parens on error recovery #22835
  • Rewrite underscore with optional space #23525

Scaladoc

  • Scaladoc: fixes and improvements to context bounds and extension methods #22156
  • Encode path of class #23503

SemanticDB

  • Bugfix: Also save infos in semanticdb #23587

Settings

  • Standardize on -Vprint:... (still support -Xprint:... as alias) #22828

Transform

  • Handle multiple type parameter lists in value class methods #23516
  • Check path of module prefix for tailrec #23491

Tuples

  • Normalize tuple types in var args seq literals and classOf instances #23465

Typer

  • Fix #22922: Add TypeParamRef handling in isSingletonBounded #23501
  • Fix this references everywhere in dependent function types #23514
  • Don't approximate a type using Nothing as prefix #23531
  • Support cleanup actions in class completers #23515
  • Fix regressions in asSeenFrom introduced in 3.7 #23438
  • Use correct owner in eta expansion #7564
  • Fix irrefutability checking in for with untupling #23273
  • Fix missing members reporting for var setters #23476
  • Guard against invalid prefixes in argForParam #23508
  • Add missing case to TypeComparer #23550

Contributors

Thank you to all the contributors who made this release possible ๐ŸŽ‰

According to git shortlog -sn --no-merges 3.7.2..3.7.3-RC1 these are:

    80  Martin Odersky
    56  Hamza Remmal
    22  Wojciech Mazur
    20  noti0na1
    18  Yichen Xu
    16  Som Snytt
    14  Jan Chyb
     9  Matt Bovel
     7  EnzeXing
     6  Guillaume Martres
     5  Sรฉbastien Doeraene
     5  aherlihy
  ...
Read more

3.7.2

01 Aug 10:25
efb6ce7
Compare
Choose a tag to compare

Highlights of the release

  • Add an -Yimplicit-to-given flag for rewrites to easily test changes in the ecosystem #22580
    This experimental flag when used in conjunction with --rewrite allows to migrate most of implicit definitions as given. It aims to ease with migration to new syntax, or testing how it would affect your code base.

  • Bump Scala CLI to v1.8.4 (was v1.8.0) #23538

    • Support for URLs in using file directives
    • Better support for the REPL with JDK 24+
    • experimental publish support for the Sonatype Central Portal
    • See full Scala CLI changelog
  • Implement applied constructor types #22543
    It introduces new syntax allowing for easier definition of tracked parameters under -language:experimental.modularity
    You can read more about this experimental feature in the Modularity Improvements proposal documentation.

Other changes and fixes

Documentation

  • Mark AnyRef::eq and AnyRef::ne as infix instead of special casing when emitting the warning #23252
  • Mark eq and ne in Predef as infix #23255

Experimental: Capture Checking

  • Allow caps in result types of functions to be mapped to reaches #23275
  • Adapt types according to read-only status #23332
  • Rename mut to update #23335
  • Change retains annotation from using term arguments to using type arguments #22909
  • New Syntax for Capture Variables and Explicit Capture Polymorphism v3 #23063
  • Fix #23223: Add handling for classes deriving from Capability during Setup #23248
  • Copy @use and @consume annotations to parameter types #23324
  • Fix handling of @use and @consume in class parameters #23342
  • Some usability improvements relating to errors #23370
  • Loosen the "does not match previously inferred" criterion #23067
  • Use level checking for Fresh instances #23101
  • Ensure all capture variables carry the attachment #23162
  • Cache ResultCaps #23198
  • Move separation checking to -source:3.8 #23249
  • Refactorings for CC error reporting #23260
  • Standardize on log-based undo #23357
  • Flag nonsensical capturing types with pure parents as errors #23367

Experimental: Erased Definitions

  • Erased fields are not nullable #23311

Experimental: Explicit Nulls

  • Relax comparison between Null and reference types in explicit nulls #23308
  • Warn about unnecessary uses of .nn #23327

Experimental: Global Initialization

  • Modified abstract domain in global initialization checker #23138

Experimental: Into Modifier

  • Change into scheme to be fully type-based #23014

Experimental: Modularity

  • Implement applied constructor types #22543

Implicits

  • Try extensions for arguments with type mismatch error #23212

Linting

  • Improve checking LHS of Assign #22977
  • Remove premature caching of lookups for unused lint #22982
  • Enclosing package p.q not visible as q #23069
  • Mention extension in unused param warning #23132
  • Improve Unit ascription escape hatch #23147
  • Dealias for unused param check #23256
  • Take inferred or explicit refinement result for unused check #23325
  • Nowarn receiver of extension taking params #23351
  • Improved edit span for import #23083
  • Use result of lambda type of implicit in CheckUnused #23497

Parser

  • Fix incorrect warning with -no-indent #23216
  • Patvar: adjust caret in error message #23115
  • Disallow empty parameter clauses in extension definition #23143

Pattern Matching

  • Improve GADT reasoning for pattern alternatives #23205

Pickling

  • Try to handle SkolemTypes in SingletonTypeTree during pickling #23236
  • Avoid creating constructors where not warranted #23178

Presentation Compiler

  • Use untpd.Tree instead of tpd.Tree for SelectionRangeProvider #22702
  • Fix completion mode filtering + optimize scopeCompletions #23172
  • Handle multiple params lists in for infer type #23197
  • Add jpath to VirtualFile (for pc) #23203
  • Add selection ranges for more names #23257
  • Add inlay hints for by-name parameters #23283
  • Implement code action 'convert to named lambda parameters' #22799
  • Improve completions when a lot of exports are present #23414
  • Buffix: Make PC actions work for re-exported symbols #22722
  • Bugfix: Fix enumeration issues when Value is imported #23124
  • Bugfix: Check in the collector for empty arrays #23341
  • Bugfix: Don't check scope members if not needed #23384
  • Improvement: Don't dealias named tuples for type hints #23013
  • Improvement: Simplify match types when possible #23146
  • Improvement: Improve efficiency of completions #23355
  • Improvement: Cache compilation on . and don't add CURSOR #23356

Private Options

  • Add scala.language.2.13 #23219

Rewrites

  • Remove empty parentheses when rewriting implicits to givens #23339

Quotes

  • Preserve implicits in Quotes context #23263
  • Don't StackOverflow when printing RecursiveType structure. #22859

Reflection

  • Forbid StringConstant(null) #23064

Reporting

  • Fix incorrect warning on type ascription for backquoted identifiers #23088
  • Improve position of deprecation #23052
  • Have a better error message when context bounds are not allowed #23190
  • Avoid false warning when synthesising deferred givens #23087
  • Fix insufficient number width allocated when using -print-lines #23336

SemanticDB

  • Fix SemantiDB production of method signature with shadowed parameters #23161
  • Check if symbol exists before calling methods on it #23376

Settings

  • Filter allowed source versions by import and by settings #23215

Tooling

  • Suggest to add using as a code action #23079

Transform

  • Warn trivial recursion with module prefix #23278
  • Partial function synthesis changesOwner of selector #23337
  • Check path of module prefix for tailrec #23491
  • Fix stale top level synthetic package object being used in later runs #23464

Typer

  • Compare TypeVar and TypeParamRef in mergeRefinedOrApplied #23045
  • Revert recent changes to opaque type proxy generation #23059
  • Only keep denotation for methods in IntegrateMa...
Read more

3.7.2-RC2

21 Jul 15:19
Compare
Choose a tag to compare
3.7.2-RC2 Pre-release
Pre-release

Backported chnages

  • Backport "Bump Scala CLI to v1.8.4 (was v1.8.1)" to 3.7.2 #23547
  • Backport "Use result of lambda type of implicit in CheckUnused" to 3.7.2 #23545
  • Backport "Check path of module prefix for tailrec" to 3.7.2 #23544
  • Backport "Fix stale top level synthetic package object being used in later runs" to 3.7.2 #23543
  • Backport "Improve completions when a lot of exports are present" to 3.7.2 #23542
  • Backport "Fix regressions in asSeenFrom introduced in 3.7" #23442

Contributors

Thank you to all the contributors who made this release possible ๐ŸŽ‰

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

    11  Wojciech Mazur
     1  Guillaume Martres
     1  Tomasz Godzik

3.7.2-RC1

24 Jun 09:34
3f98956
Compare
Choose a tag to compare
3.7.2-RC1 Pre-release
Pre-release

Highlights of the release

  • Implement applied constructor types #22543
  • Bump Scala CLI to v1.8.1 (was v1.8.0) #23334

Other changes and fixes

Documentation

  • Mark AnyRef::eq and AnyRef::ne as infix instead of special casing when emitting the warning #23252
  • Mark eq and ne in Predef as infix #23255

Experimental: Capture Checking

  • Allow caps in result types of functions to be mapped to reaches #23275
  • Adapt types according to read-only status #23332
  • Rename mut to update #23335
  • Change retains annotation from using term arguments to using type arguments #22909
  • New Syntax for Capture Variables and Explicit Capture Polymorphism v3 #23063
  • Fix #23223: Add handling for classes deriving from Capability during Setup #23248
  • Copy @use and @consume annotations to parameter types #23324
  • Fix handling of @use and @consume in class parameters #23342
  • Some usability improvements relating to errors #23370
  • Loosen the "does not match previously inferred" criterion #23067
  • Use level checking for Fresh instances #23101
  • Ensure all capture variables carry the attachment #23162
  • Cache ResultCaps #23198
  • Move separation checking to -source:3.8 #23249
  • Refactorings for CC error reporting #23260
  • Standardize on log-based undo #23357
  • Flag nonsensical capturing types with pure parents as errors #23367

Experimental: Erased Definitions

  • Erased fields are not nullable #23311

Experimental: Explicit Nulls

  • Relax comparison between Null and reference types in explicit nulls #23308
  • Warn about unnecessary uses of .nn #23327

Experimental: Global Initialization

  • Modified abstract domain in global initialization checker #23138

Experimental: Into Modifier

  • Change into scheme to be fully type-based #23014

Implicits

  • Try extensions for arguments with type mismatch error #23212

Linting

  • Improve checking LHS of Assign #22977
  • Remove premature caching of lookups for unused lint #22982
  • Enclosing package p.q not visible as q #23069
  • Mention extension in unused param warning #23132
  • Improve Unit ascription escape hatch #23147
  • Dealias for unused param check #23256
  • Take inferred or explicit refinement result for unused check #23325
  • Nowarn receiver of extension taking params #23351
  • Improved edit span for import #23083

Parser

  • Fix incorrect warning with -no-indent #23216
  • Patvar: adjust caret in error message #23115
  • Disallow empty parameter clauses in extension definition #23143

Pattern Matching

  • Improve GADT reasoning for pattern alternatives #23205

Pickling

  • Try to handle SkolemTypes in SingletonTypeTree during pickling #23236
  • Avoid creating constructors where not warranted #23178

Presentation Compiler

  • Use untpd.Tree instead of tpd.Tree for SelectionRangeProvider #22702
  • Fix completion mode filtering + optimize scopeCompletions #23172
  • Handle multiple params lists in for infer type #23197
  • Add jpath to VirtualFile (for pc) #23203
  • Add selection ranges for more names #23257
  • Add inlay hints for by-name parameters #23283
  • Implement code action 'convert to named lambda parameters' #22799
  • Buffix: Make PC actions work for re-exported symbols #22722
  • Bugfix: Fix enumeration issues when Value is imported #23124
  • Bugfix: Check in the collector for empty arrays #23341
  • Bugfix: Don't check scope members if not needed #23384
  • Improvement: Don't dealias named tuples for type hints #23013
  • Improvement: Simplify match types when possible #23146
  • Improvement: Improve efficiency of completions #23355
  • Improvement: Cache compilation on . and don't add CURSOR #23356

Private Options

  • Add an -Yimplicit-to-given flag for rewrites to easily test changes in the ecosystem #22580
  • Add scala.language.2.13 #23219

Rewrites

  • Remove empty parentheses when rewriting implicits to givens #23339

Quotes

  • Preserve implicits in Quotes context #23263
  • Don't StackOverflow when printing RecursiveType structure. #22859

Reflection

  • Forbid StringConstant(null) #23064

Reporting

  • Fix incorrect warning on type ascription for backquoted identifiers #23088
  • Improve position of deprecation #23052
  • Have a better error message when context bounds are not allowed #23190
  • Avoid false warning when synthesising deferred givens #23087
  • Fix insufficient number width allocated when using -print-lines #23336

SemanticDB

  • Fix SemantiDB production of method signature with shadowed parameters #23161
  • Check if symbol exists before calling methods on it #23376

Settings

  • Filter allowed source versions by import and by settings #23215

Tooling

  • Suggest to add using as a code action #23079

Transform

  • Warn trivial recursion with module prefix #23278
  • Partial function synthesis changesOwner of selector #23337

Typer

  • Compare TypeVar and TypeParamRef in mergeRefinedOrApplied #23045
  • Revert recent changes to opaque type proxy generation #23059
  • Only keep denotation for methods in IntegrateMap #23226
  • Tighten condition when to do SAM type conversion #23246
  • Revert "Make overload pruning based on result types less aggressive (#21744)" in main #23331
  • Tweak parameter dependency test when typing applications #23346
  • Ensure pt span exists in implicitParams migration #23372
  • Check for error before checking members of product type in getUnapplySelectors #23358
  • Synthesise value of this.type in ValueOf #23094
  • Hide constructor proxies at PostTyper #23269