Skip to content

3.7.2

Latest
Compare
Choose a tag to compare
@github-actions github-actions released this 01 Aug 10:25
· 8806 commits to main since this release
efb6ce7

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 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
  • Fix regressions in asSeenFrom introduced in 3.7 #23438

Contributors

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

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

    93  Martin Odersky
    29  Wojciech Mazur
    22  Som Snytt
    22  noti0na1
    14  Tomasz Godzik
    13  Hamza Remmal
    13  Yichen Xu
     6  EnzeXing
     5  Jan Chyb
     5  Matt Bovel
     3  Oliver Bračevac
     3  aherlihy
     3  kasiaMarek
     2  Alexander
     2  Dale Wijnand
     2  Dolphin von Chips
     2  Georgi Krastev
     2  Jędrzej Rochala
     2  Kacper Korban
     2  Natsu Kagami
     2  Ondrej Lhotak
     2  Piotr Chabelski
     2  Seyon Sivatharan
     2  Yoonjae Jeon
     2  Zieliński Patryk
     1  Guillaume Martres
     1  Jakub Kozłowski
     1  Katarzyna Marek
     1  MatthieuSLR9
     1  Ondřej Lhoták
     1  Tomas Mikula
     1  anna herlihy
     1  dependabot[bot]
     1  rochala
     1  s2sivath