3.2.0-RC1
Pre-release
Pre-release
Highlights of the release
- Add runtime.TupleMirror to avoid anonymous classes for mirrors of tuples #15404
- Fix TupleXXL.productPrefix #15411
- Synthesize mirrors for small generic tuples #15250
- Fix #14150: Constrain refinements to type parameters #15014
- Gradual warning for deprecated nonlocal return #15303
- Restrict mirrors of any union type #15279
- Stabilize 3.2 APIs #15197
- Add error reporting for mirror synthesis #15164
- Fix #14432: Check if scala 2 case class is accessible #15008
- Fix #12919: Summon anonymous mirror when companion is a case object #14986
- Erase
Int | Nothing
signatures types intoInt
#14971 - Allow exports in extension clauses #14497
- Fix Scala Wart about implicit () class parameters #14840
- Re-architecture quote pickling #12540
- Add
scala.annotation.MainAnnotation
#14558 - Add in initial support for code coverage #13880
- Support tuple specialisation #15060
- Remove support for
-scala-output-version
flag #15146 - Make lazy vals and object native image friendly #14780
- Allow return in tailrec position #14067
Other changes and fixes
Backend
- Keep annotation order #15063
- Update asm to 9.3 #14926
- Fix #14773: Reuse the param slots for the tailrec local mutable vars. #14865
- Better error messages in case of
TooLarge*
exceptions in GenBCode #14943
Coverage
- Fix relativizing paths in coverage serializer #15240
Erasure
- Handle
&
and|
types when computing tuple arity #15330
Experimentals
- Fix check experimental inline references #15147
Exports
- Refine criterion when to skip identifiers in pattern constructors #15367
- Simplify and harden duplicates checking in exports #14879
- Fix
isAbsType
prediction inTreeUnpickler
#14861
F-bounds
- Recursion brake for joins in TypeComparer #14880
GADTs
- Heal pattern-bound type by gathering constraints #15095
- Consider GADT upper bounds when upcasting the scrutinee type #15351
- Extract wildcard GADT constraints more directly #14832
IDE Support
- Docs: Add a comment to
pathTo
mentioning that it might returnerrorTermTree
#15420 - Fix completions to properly contain public fields if they were shadowed #15236
- Add proper signatureHelp for unapply methods #15203
- Fix signatureHelp to show enclosing apply instead of closest one. #15119
- Fix implicit conversion type resolve in completions #15061
- Fix type alias completion, unify completion tests style #15047
- Support code completion for refined types #15283
- Fix
SourceFile.column
method. #15209
Initialization
- Check method arguments with parametricity when static #14916
- Add safe-init test to prevent adding cold elements to hot arrays #14895
- Allow non-hot values in SeqLiterals #14794
Inline
- Make private inline accessors
final
#15324 - Fix inlining when outer select is needed from inline call prefix #15327
- Support inline methods calling private inline methods on
this
#15075 - Types with only an abstract inline method are not SAMs #14874
- Don't issue unreachable error messages for inlined code #14871
- Dealias arg type to detect opaque types #15074
- Fix dependency status calculation for refined type aliases in method result types #15390
Java Compatibility
- Java generic signatures can't refer to type members #15093
- Simplify and correctify calculation of the InnerClass attribute #15153
- Fix #13523: Survive missing Java inner annotation classfiles #15094
Match Types
Nullability
- Speed up
.nn
#15418 - Fix handling imports in
TreeUnpickler
#15137 - Honor language imports when unpickling #14962
- Remove special
eq
/ne
in unsafeNulls #15186 - Add
eq
/ne
extension forAnyRef|Null
to Scala3RunTime #14632
Parser
- Fix parser error for type arguments with trailing comma #15395
- Change fewerbraces to always use a colon, even before lambdas #15273
- Deprecate 3.1-migration, err on import #14978
- Treat all incomplete ifs as statements #14960
- Clarify and test rules for newline suppression #14877
- Tweak assertion in withMods #14857
- Fix loop in parser #15421
- Parse unary operators as regular identifiers when backquoted #15198
Pattern Matching
- Preserve modifiers when desugaring for-comps #15403
- Extract unapply types like typedUnApply #15254
- Force Java enum children to be queried #15109
- Enable stricter pattern binding warnings by default #14294
Pickling
- Survive unpickling crashes when completing from Tasty #14884
Quotes
- Transform RHS of captured assignment reference #15247
- Properly look for inline methods #15072
- Fix hash code of ExprImpl and TypeImpl #15281
- Compute correct argument type in ExprMap #15269
- Detect quoted pattern variables in alternatives #15073
- Disallow old uses of quoted and spliced types #15012
- Fix capturing conditions of HOAS quote patterns #14822
Reflection
- Add missing cases in SourceCode printer #15032
- Add reflect
AppliedType
constructor #14923 - Add regression test #14924
Reporting
- Case class must have at least one leading non-implicit parameter list #15382
- Improve opaque type with no RHS error message #15285
- Refine condition when to report errors in an inserted apply #15016
- Accept soft modifiers separated by blank lines #14959
- Fix warning with leaking
this
into Scala2 synthetic apply #15307 - Refine error messages for early promotion #15263
- Standardize
-rewrite
advertisements and suppress them in REPL #14955 - Improve diagnostic for refutable extractors in pattern bindings #14988
- Fix: correction to ClassTooLargeException message #14974
Scaladoc
- Fix rendering
ThisType
#15440 - Add extension suffixes and fqName to scaladoc searchbar #15048
- Fix implicit members resolution #15021
- Fix windows paths handling in legacy external link provider #15023
- Warn about special characters in filenames according to the default Jekyll rules #14657
- Scaladoc annotations rework #15361
- Fix expanding docstrings in Scaladoc #15045
Scripting
SemanticDB
- Do not register SymbolOccurrence for non-symbol endmarker #15143
Standard Library
- Implement new main annotation #14841
- Add compiletime.ops.string.CharAt #14431
- Make
EmptyTuple
acase object
#14972
Tasty Inspector
Tooling
- Add -Vprofile option #15406
- Fix rewrite for type-ascribed refutable pattern binding #15314
- Fix rewrites for refutable pattern bindings #14954
Transform
- Also hoist lifted arguments in super calls #14919
- Add deprecated overriding checks #15432
- Don't cast to a value class as self type #14885
- Disallow
@targetName
on top-levelclass
,trait
, andobject
#15068 - Handle case where abstract overrides miss an implementation #14893
- Treat RecTypes as potentially uncheckable #14894
- Allow multiple wildcard vals #14906
Typeclass Derivation
- Support intersection types in mirrorCompanionRef #15192
- Fix #15222: Recursively check for product ctor accessibility #15231
- Fix 14025: Restrict curried type lambdas in mirror generation #15006
- Make anonymous mirrors serializable #15391
Typer
- Fix #15405: Dealias Or type constituents when finding its dominator #15416
- Handle unconstrained TypeVars when synthesizing ClassTags #15376
- Allow for unqualified
apply
as context functions #15417 - Prevent crash when reporting an error #15320
- Show a match type trace for "not a class type" errors #15218
- Don't constrain type variables in normalize #15223
- Eta expand CFTs in super accessors if needed #15092
- Reject structural applications of polymorphic methods #15090
- Hande clashes between same-named exports #14967
- Fix outer reference detection in class parents #14961
- Avoid redundant type test for irrefutable @unchecked patterns #14898
- Detect clashes involving renamed exports #14831
- Guard against stackoverflows when instantiating HK-Lambdas #14851
- Don't try conversions or extensions on Java companion objects #14881
- Revert #14452 and make compile-time operations on stable arguments stable #15268
- Better handling of type parameters in constructor pattern #15356
- Handle AvoidMap recursions #15393
- Add missing condition in checking synthetic apply #15362
- Harden type assignment of lambda trees #14887
- Disallow package names as types #14888
- Fix
constToLiteral
#14853
Contributors
Thank you to all the contributors who made this release possible 🎉
According to git shortlog -sn --no-merges 3.1.3..3.2.0-RC1
these are:
136 odersky
61 Nicolas Stucki
51 Filip Zybała
41 Jamie Thompson
38 Dale Wijnand
28 rochala
27 Tom Grigg
19 Paweł Marks
16 Guillaume Raffin
13 Ondrej Lhotak
13 Fengyun Liu
11 Guillaume Martres
10 Sébastien Doeraene
7 Matt Bovel
6 Som Snytt
6 Szymon Rodziewicz
5 Wojciech Mazur
5 Julien Richard-Foy
5 Martin Odersky
4 Xavientois
4 Olivier Blanvillain
3 Rikito Taniguchi
3 Vadim Chelyshov
2 Артём
2 Albert Chen
2 Anatolii Kmetiuk
2 Arnout Engelen
2 Chris Kipp
2 Jan Chyb
2 Lan, Jian
2 Phil
2 Philippus
2 Raphael Jolly
2 Robert Stoll
2 Tim Spence
2 cgccuser
2 gagandeepkalra
2 manojo
2 noti0na1
2 Adrien Piquerez
1 Timothée Loyck Andres
1 Jędrzej Rochala
1 Johannes Rudolph
1 Humberto Rodríguez A
1 Yichen Xu
1 adampauls
1 ouertani
1 Aleksander Boruch-Gruszecki
1 johannes karoff
1 xuwei-k
1 yoshinorin
1 Ondřej Lhoták
1 Stéphane Micheloud
1 Michał Pałka
1 Magnolia.K
1 Dmitrii Naumenko
1 Krzysztof Romanowski