Release highlights
- Add support for local coverage on and off with
// $COVERAGE-OFF$and// $COVERAGE-ON$#24486 - Deprecate for removal
-print-linescompiler setting #25330
Other changes and fixes
Desugaring
Documentation
- Fix little errors in the API documentation #25241
- CC Language Reference: Rename
captoany/fresh#25057
Enums
- Deprecate override class, improve checks #24828
- Fix Java enum forwarders to pull from companion on initialization #24361
Experimental: Capture Checking
- Rename caps.cap to caps.any #24923
- Track global capabilities #24883
- Treat local mutable vars as capabilities #24815
- Fix Crashes when Capture-set Parameters Conflict with Terms #25029
- Replace "cannot be included in" by "cannot flow into" in error messages #25155
- CC: Add field captures to self-type constraints #24984
- Add uses clauses for templates #24857
- Drop special code paths for objects #24881
- Do not consider generated getters to be
update def#24906 - Under cc, mark inferred type arguments to inline methods with an @inferred annotation #25175
- Handle call-by-name types in bad locations under cc #25154
- Fixes for global capabilities #25123
- Warn if reach capability in result will likely cause leakage #24860
- Make
<fluid>decorations replace existing capture sets #25012 - Make TypeMaps in Setup work correctly for
fresh#24985 - For a limited time, also recognize caps.cap #25076
- Fix closure typing #25014
- Map class capture sets via as-seen-from with prefix of created types #24830
Experimental: Modularity
- Fix nested desugaring of applied constructor types #25288
Exports
- Add ctor proxies before exports #24884
Inline
- Make containsOuterRefsAnywhere follow aliases #25214
- Find annotation args in inline expansion #24895
- Also substitute symbols in case bindings symbols #24849
JDK
JVM Backend
- Simplify JVM interface list emission, remove a mini-phase #25203
- Don't generate bridge methods for inaccessible Java package-private methods #25166
- Revise isLocalToCompilationUnit #24856
Linting
- Extension check handles hiBound of opaque type #25172
- Distrust tree pos for patvar lint #25043
- Move second CheckUnused after pattern matcher #25114
- Unused lint ignores args to ctor of enclosing class #24768
- Check inline expansion for exclusion #23019
Metaprogramming
- Fix: Fix incremental compilation of (some unquoted) macros #24969
Named Tuples
- Don't try checking for ambiguous single-element tuples when in types #24910
- Fix "NamedTuple type in match is parsed as named pattern" #24929
- Fix "Named pattern matching doesn't work in
valstatements orforgenerators" #24928 - Fix false exhaustivity warning for pattern returning NamedTuple #23362
Overloading
- Prefer non-extension to extension #24943
Parser
- Check seen for TypeParamRef in TypeSizeAccumulator #25264
- End of new expr never shrinks #25253
- Use
toVectorfor XML literal sequences #23221
Pattern Matching
- Emit unchecked warnings for trait patterns #24962
Presentation Compiler
- Bugfix: inline value false-positive shadowing with lambda params #25140
- Test hover on backticked identifiers with whitespace #25142
- Inlining interpolated variables #25144
- Bugfix: treat self types as parent types #25167
- Feat(pc): add closing labels inlay hints #25178
- Coursier dependency imports should have lexicographic ordering #21592
- Bugfix: Fix various minor presentation compiler issues #25256
- Fix negative activeParameter in signature help #24945
- Closes #7532: Parameter hints not working for functions #23854
- Fix opaque types displayed as
Nothing & Anyin hover and signature help #24921
REPL
- Skip
module-info.classfiles during REPL tab-completion #24838 - Fix REPL usage of macros loaded via
:depand:jar#25312 - Make REPL type echo-ing use partially qualified names where made possible by imports #24850
Reporting
- Check -Werror on summarize #25096
- Fixes #24233: Remove misleading JDK compatibility hint for TASTy errors #25171
- Ignore resetting if preferPrevious #24991
- Enhance WInferUnion to not warn propagated explicit union types #25280
- Improve diagnostic message for unnecessary trailing underscore in eta-expansion #25285
- More descriptive "not found" message when type/term exists with the expected term/type name #24959
- Warn on Scala 2 auto-apply if loosely nullary #24811
- Fix printing references to nested objects #25086
- Add error note for type mismatch involving blocks without last expression #25181
- Drop
-print-linesoption #24905 - Don't suggest invisible members of root imports #24999
Rewrites
- Accommodate ArrowAssoc in infix named arg migration #25255
Scaladoc
- Init MacroClassLoader in scaladoc #25141
- Scaladoc Overload Method Link Fix #25156
- Fix duplicate member entries in Scaladoc generation #24712
- Scaladoc Tests for CC #25277
- Skip generation of API pages when building reference docs #25153
Standard Library
- Remove incorrect equals implementations from ArrayBuilder #25205
- Use StringBuilder intead of StringBuffer in Regex #24576
- Update
StringOps.*implementation #24786
Tooling
- Fix behavior of
-Ydump-sbt-inc#25125
Typer
- Never widen constant type on selector type in matches #25197
Quotes
Contributors
Thank you to all the contributors who made this release possible 🎉
According to git shortlog -sn --no-merges 3.8.2..3.8.3-RC1 these are:
80 Martin Odersky
46 Wojciech Mazur
26 Som Snytt
11 Li Haoyi
10 Tomasz Godzik
9 Kenji Yoshida
9 Oliver Bračevac
9 Solal Pirelli
7 Rikito Taniguchi
7 dependabot[bot]
5 Jakub Warchoł
4 Emil Ejbyfeldt
4 Hamza Remmal
4 Zieliński Patryk
4 noti0na1
3 Binayak Das
3 Lukas Rytz
3 Matt Bovel
2 Chua Chee Seng
2 Eugene Yokota
2 Jamie Thompson
2 Jędrzej Rochala
2 Natsu Kagami
2 Oscar Boykin
2 P. Oscar Boykin
2 Piotr Chabelski
2 Sébastien Doeraene
1 Anatolii Kmetiuk
1 Aviral Garg
1 Bbn08
1 Bill Venners
1 Eric Ventor
1 Jentsch
1 Jeon Yoonjae
1 Krrish Biswas
1 Matt Dziuban
1 Merlin Hughes
1 Philippus Baalman
1 Vadim Chelyshov