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 ofimplicit
definitions asgiven
. 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 oftracked
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
andAnyRef::ne
as infix instead of special casing when emitting the warning #23252 - Mark
eq
andne
in Predef asinfix
#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
toupdate
#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
inValueOf
#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