This release is nearly identical to 3.3.0-RC1. The only difference is that 3.3.0-RC1 generated output with incorrect TASTy version.
The following changelog is identical to the changelog of 3.3.0-RC1.
Highlights of the release
- Stabilize new lazy vals #16614
- Experimental Macro annotations #16392 #16454 #16534
- Fix stability check for inline parameters #15511
- Make
fewerBraces
a standard feature #16297 - Add new front-end phase for unused entities and add support for unused imports #16157
- Implement -Wvalue-discard warning #15975
- Introduce boundary/break control abstraction. #16612
Other changes and fixes
Annotations
- Support use-site meta-annotations #16445
Desugaring
- Reuse typed prefix for
applyDynamic
andapplyDynamicNamed
#16552 - Fix object selftype match error #16441
Erasure
- Dealias before checking for outer references in types #16525
- Fix generic signature for type params bounded by primitive #16442
- Avoid EmptyScope.cloneScope crashing, eg on missing references #16314
GADTs
- Inline GADT state restoring in TypeComparer #16564
- Add extension/conversion to GADT selection healing #16638
Incremental compilation
- Unpickle arguments of parent constructors in Templates lazily #16688
Initialization
Inline
- Dealias in ConstantValue, for inline if cond #16652
- Set Span for top level annotations generated in PostTyper #16378
- Interpolate any type vars from comparing against SelectionProto #16348
- Handle binding of beta reduced inlined lambdas #16377
- Do not add dummy RHS to abstract inline methods #16510
- Warn on inline given aliases with functions as RHS #16499
- Support inline overrides in value classes #16523
Java interop
- Represent Java annotations as interfaces so they can be extended, and disallow various misuses of them #16260
Opaque Types
- Delay opaque alias checking until PostTyper #16644
Overloading
- Handle context function arguments in overloading resolution #16511
Parser
- Improve support for Unicode supplementary characters in identifiers and string interpolation (as in Scala 2) #16278
- Require indent after colon at EOL #16466
- Help givens return refined types #16293
Pattern Matching
- Tweak AvoidMap's derivedSelect #16563
- Space: Use RHS of & when refining subtypes #16573
- Freeze constraints in a condition check of maximiseType #16526
- Restrict syntax of typed patterns #16150
- Test case to show that #16252 works with transparent #16262
- Support inline unapplySeq and with leading given parameters #16358
- Handle sealed prefixes in exh checking #16621
- Detect irrefutable quoted patterns #16674
Pickling
- Allow case classes with up to 254 parameters #16501
- Correctly unpickle Scala 2 private case classes in traits #16519
Polyfunctions
Quotes
- Remove contents of inline methods #16345
- Fix errors in explicit type annotations in inline match cases #16257
- Handle macro annotation suspends and crashes #16509
- Fix macro annotations
spliceOwner
#16513
REPL
- REPL: Fix crash when printing instances of value classes #16393
- Attempt to fix completion crash #16267
- Fix REPL shadowing bug #16389
- Open up for extensibility #16276
- Don't crash if completions throw #16687
Reflection
Reporting
- Suppress follow-on errors for erroneous import qualifiers #16658
- Fix order in which errors are reported for assignment to val #16660
- Fix class name in error message #16635
- Make refined type printing more source compatible #16303
- Add error hint on local inline def used in quotes #16572
- Fix Text wrapping #16277
- Fix -Wunused:import registering constructor
<init>
instead of its owner (also fix false positive for enum) #16661 - Fix #16675 : -Wunused false positive on case class generated method, due to flags used to distinguish case accessors. #16683
- Fix #16680 by registering Ident not containing a symbol #16689
- Fix #16682: CheckUnused missed some used symbols #16690
- Fix the non-miniphase tree traverser #16684
Scala-JS
Standard Library
TASTy format
- Make it a fatal error if erasure cannot resolve a type #16373
Tooling
Transform
- Avoid stackoverflow in ExplicitOuter #16381
- Make lazy vals run on non-fallback graal image - remove dynamic reflection #16346
- Patch to avoid crash in #16351 #16354
- Don't treat package object's
<init>
methods as package members #16667 - Space: Refine isSubspace property & an example #16574
Typer
- Drop requirement that self types are closed #16648
- Disallow constructor params from appearing in parent types for soundness #16664
- Don't search implicit arguments in singleton type prefix #16490
- Don't rely on isProvisional to determine whether atoms computed #16489
- Support signature polymorphic methods (
MethodHandle
andVarHandle
) #16225 - Prefer parameterless alternatives during ambiguous overload resolution #16315
- Fix calculation to drop transparent classes #16344
- Test case for issue 16311 #16317
- Skip caching provisional OrType atoms #16295
- Avoid cyclic references due to experimental check when inlining #16195
- Track type variable dependencies to guide instantiation decisions #16042
- Two fixes to constraint solving #16353
- Fix regression in cyclic constraint handling #16514
- Sharpen range approximation for applied types with capture set ranges #16261
- Cut the Gordian Knot: Don't widen unions to transparent #15642
- Fix widening logic to keep instantiation within bounds #16417
- Skip ambiguous reference error when symbols are aliases #16401
- Avoid incorrect simplifications when updating bounds in the constraint #16410
- Take
@targetName
into account when resolving extension methods #16487 - Improve ClassTag handling to avoid invalid ClassTag generation and inference failure #16492
- Fix extracting the elemType of a union of arrays #16569
- Make sure annotations are typed in expression contexts #16699
- Throw a type error when using hk-types in unions or intersections #16712
Contributors
Thank you to all the contributors who made this release possible 🎉
According to git shortlog -sn --no-merges 3.2.2..3.3.0-RC1
these are:
225 Martin Odersky
73 Dale Wijnand
58 Szymon Rodziewicz
54 Nicolas Stucki
48 Kamil Szewczyk
48 Paul Coral
30 Paweł Marks
28 Florian3k
28 Yichen Xu
14 Guillaume Martres
8 Fengyun Liu
8 Michał Pałka
7 Chris Birchall
7 rochala
6 Kacper Korban
6 Sébastien Doeraene
6 jdudrak
5 Seth Tisue
5 Som Snytt
5 nizhikov
4 Filip Zybała
4 Jan Chyb
4 Michael Pollmeier
4 Natsu Kagami
3 Jamie Thompson
2 Alex
2 Anatolii Kmetiuk
2 Dmitrii Naumenko
2 Lukas Rytz
2 adampauls
2 yoshinorin
1 Alexander Slesarenko
1 Chris Kipp
1 Guillaume Raffin
1 Jakub Kozłowski
1 Jan-Pieter van den Heuvel
1 Julien Richard-Foy
1 Kenji Yoshida
1 Philippus
1 Szymon R
1 Tim Spence
1 s.bazarsadaev