Releases: scala/scala3
3.3.1-RC2
Backported fixes
- Dealias types in `New`` before matching quotes #17615
- Fix
accessibleType
for package object prefixes #18057
Contributors
Thank you to all the contributors who made this release possible 🎉
According to git shortlog -sn --no-merges 3.3.1-RC1..3.3.1-RC2
these are:
2 Martin Odersky
2 Paweł Marks
1 Nicolas Stucki
3.3.1-RC1
Highlights of the release
Other changes and fixes
Backend
- Disallow mixins where super calls bind to vals #16908
- Fix #15107: Avoid re-emitting a LineNumber after only LabelNodes. #16813
Coverage
Default parameters
- Dupe fix when finding default arg getters #17058
Documentation
- Fix: ensure syntax blocks for ebnf are marked as such #16837
Erasure
- Handle
@companionClass
and@companionMethod
meta-annotations #17091
Extension Methods
- Support extension methods imported from different objects #17050
GADTs
- Fix tuple member selection so it works with GADT healing #16766
- Fix upper bound constraints, that are higher-kinded #16744
- Split out immutable GadtConstraint #16602
Implicits
- Improve subtyping check for not yet eta-expanded higher kinded types #17139
- Harden tpd.Apply/TypeApply in case of errors #16887
- Try to be more subtle when inferring type parameters of class parents #16896
- Include
P
in the implicit scope ofP.this.type
#17088
Incremental Compilation
- Fix under-compilation when the method type in a SAM changes #16996
Infrastructure
Inline
- Remove NamedArg from inlined arguments #17228
- Don't generate a Select for a TermRef with NoPrefix #16754
- Prepare bodies of inline forwarders eagerly #16757
- Do not remove inline method implementations until PruneErasedDefs #17408
Java Interop
- ClassfileParser: allow missing param names (for JDK 21) #17536
Linting
- Improve -Wunused: locals, privates with unset vars warning #16639 #17160
- Fix wunused false positive when deriving alias type #17157
- Port
-Wnonunit-statement
setting for dotty #16936
Match Types
- Normalize match type usage during implicit lookup #17457
- Fix #13757: Explicitly disallow higher-kinded scrutinees of match types. #17322
- Fix match type reduction with wildcard type arguments #17065
- Fix check whether classtag can be generated for match types #16708
Parser
- Allow lines starting with
.
to fall outside previous indentation widths #17056
Pattern Matching
- Fix #11541: Specialize ClassTag[T] in exhaustivity check #17385
- Check outer class prefixes in type projections when pattern matching #17136
- Make unchecked cases non-
@unchecked
and non-unreachable #16958 - Fix #16899: Better handle X instanceOf P where X is T1 | T2 #17382
Pickling
- ClassfileParser: Avoid cycle when accessing companion in inner class lookup #16882
Polyfunctions
- Fix type aliases in beta-reduction of polyfunctions #17054
Quotes
- Register
paramProxy
andthisProxy
inQuote
type #17541 - Only check newVal/newMethod privateWithin on -Xcheck-macros #17437
- Unencode quote and splice trees #17342
- Correctly type Expr.ofTupleFromSeq for arity > 22 #17261
- Use TermRef to distinguish distinct Type[T] instances #17205
- Check level consistency of SingletonTypeTree as a type #17209
- Fix splice type variable pattern detection #17048
- Avoid creation of
@SplicedType
quote local refrences #17051 - Dealias type references when healing types in quotes #17049
- Replace quoted type variables in signature of HOAS pattern result #16951
- Beta-reduce directly applied PolymorphicFunction #16623
- Use
Object.toString
forquoted.{Expr, Type}
#16663 - Fix Splicer.isEscapedVariable #16838
- Fix references to class members defined in quotes #17107
- Handle pickled forward references in pickled expressions #16855
- Fix #16615 - crashes of path dependent types in spliced Type.of #16773
- Disallow local term references in staged types #16362
- Refactor level checking / type healing logic #17082
- Dealias quoted types when staging #17059
- Fix quotes with references to path dependent types #17081
- Make arguments order in quote hole deterministic #17405
- Only transform the body of the quote with QuoteTransformer #17451
- Place staged type captures in Quote AST #17424
- Add SplicePattern AST to parse and type quote pattern splices #17396
Reflection
- -Xcheck-macros: add hint when a symbol in created twice #16733
- Assert that symbols created using reflect API have correct privateWithin symbols #17352
- Fix reflect.LambdaType type test #16972
- Improve
New
/Select
-Ycheck message #16746 - Improve error message for CyclicReference in macros #16749
- Add reflect
defn.FunctionClass
overloads #16849
REPL
- Always load REPL classes in macros including the output directory #16866
Reporting
- Improve missing argument list error #17126
- Improve implicit parameter error message with aliases #17125
- Improve "constructor proxy shadows outer" handling #17154
- Clarify ambiguous reference error message #16137
- Hint about forbidden combination of implicit values and conversions #16735
- Attach explanation message to diagnostic message #16787
- Propagate implicit search errors from implicit macros #16840
- Detail UnapplyInvalidReturnType error message #17167
- Add way to debug -Xcheck-macros tree checking #16973
- Enrich and finesse compiler crash reporting #17031
- Allow @implicitNotFound messages as explanations #16893
- Include top-level symbols from same file in outer ambiguity error #17033
- Do not issue deprecation warnings when declaring deprecated case classes #17165
Scala-JS
3.3.0
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
- Split out immutable GadtConstraint #16602
- Avoid bidirectional GADT typebounds from fullBounds #15683
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
Linting
- 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 #16682: CheckUnused missed some used symbols #16690
- Fix "-Wunused: False positive on parameterless enum member" #16927
- Register usage of symbols in non-inferred type trees in CheckUnused #16939
- Traverse annotations instead of just registering in -Wunused #16956
- Ignore parameter of accessors in -Wunused #16957
- Ignore parameter of accessors in -Wunused #16957
- Improve override detection in CheckUnused #16965
- WUnused: Fix unused warning in synthetic symbols #17020
- Fix WUnused with idents in derived code #17095
- WUnused: Fix for symbols with synthetic names and unused transparent inlines #17061
- Skip extension method params in WUnused #17178
- Fix wunused false positive when deriving alias type #17157
- Fix WUnused for accessible symbols that are renamed #17177
- Fix WUnused false positive in for #17176
- Make CheckUnused run both after Typer and Inlining #17206
- Disable WUnused for params of non-private defs #17223
- Wunused: Check if symbol exists before
isValidMemberDef
check #17316 - Wunused: Include import selector bounds in unused checks #17323
- Fix compiler crash in WUnused #17340
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
- Patmat: Use less type variables in prefix inference #16827
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 - Fix HK quoted pattern type variables #16907
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 #16680 by registering Ident not containing a symbol #16689
- Fix the non-miniphase tree traverser #16684
- Just warn on type ascription on a pattern #17454
Scala-JS
Scaladoc
- Added jpath check to `ClassLi...
3.3.0-RC6
Backported fixes
- Patmat: Use less type variables in prefix inference #16827
- Just warn on type ascription on a pattern #17454
- Fix #17187: allow patches with same span #17366
Contributors
Thank you to all the contributors who made this release possible 🎉
According to git shortlog -sn --no-merges 3.3.0-RC5..3.3.0-RC6
these are:
2 Adrien Piquerez
2 Michał Pałka
2 Paweł Marks
1 Dale Wijnand
3.3.0-RC5
Backported fixes
- Remove experimental from
Mirror#fromProductTyped
#16829 - Wunused: Check if symbol exists before
isValidMemberDef
check #17316 - Wunused: Include import selector bounds in unused checks #17323
- Fix compiler crash in WUnused #17340
Contributors
Thank you to all the contributors who made this release possible 🎉
According to git shortlog -sn --no-merges 3.3.0-RC4..3.3.0-RC5
these are:
2 Kacper Korban
2 Michael Pilquist
2 Paweł Marks
2 Szymon Rodziewicz
1 Matt Bovel
3.3.0-RC4
Backported fixes
- Fix HK quoted pattern type variables #16907
- Fix caching issue caused by incorrect isProvisional check #16989
- Fix race condition in new LazyVals #16975
- Fix "-Wunused: False positive on parameterless enum member" #16927
- Register usage of symbols in non-inferred type trees in CheckUnused #16939
- Traverse annotations instead of just registering in -W #16956
- Ignore parameter of accessors in -Wunused #16957
- Improve override detection in CheckUnused #16965
- WUnused: Fix unused warning in synthetic symbols #17020
- Fix WUnused with idents in derived code #17095
- WUnused: Fix for symbols with synthetic names and unused transparent inlines #17061
- Skip extension method params in WUnused #17178
- Fix wunused false positive when deriving alias type #17157
- Fix WUnused for accessible symbols that are renamed #17177
- Fix WUnused false positive in for #17176
- Make CheckUnused run both after Typer and Inlining #17206
- Disable WUnused for params of non-private defs #17223
Contributors
Thank you to all the contributors who made this release possible 🎉
According to git shortlog -sn --no-merges 3.3.0-RC3..3.3.0-RC4
these are:
41 Szymon Rodziewicz
4 Paul Coral
3 Paweł Marks
1 Guillaume Martres
1 Kacper Korban
1 Nicolas Stucki
3.3.0-RC3
Backported fixes
- Added jpath check to
ClassLikeSupport
getParentsAsTreeSymbolTuples #16759 - Split out immutable GadtConstraint #16602
- Avoid bidirectional GADT typebounds from fullBounds #15683
- Fix static lazy field holder for GraalVM #16800
- Add support for disabling redirected output in the REPL driver for usage in worksheets in the Scala Plugin for IntelliJ IDEA #16810
- Add missing criterion to subtype check #16889
Contributors
Thank you to all the contributors who made this release possible 🎉
According to git shortlog -sn --no-merges 3.3.0-RC2..3.3.0-RC3
these are:
7 Dale Wijnand
5 Szymon Rodziewicz
2 Paweł Marks
2 Vasil Vasilev
1 Martin Odersky
1 Mohammad Yousuf Minhaj Zia
3.3.0-RC2
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 instanti...
3.2.2
Highlights of the release
- Make truncation by characters in REPL configurable #16167
- New (experimental for now) lazy vals implementation #15296
Other changes and fixes
Coverage
- Make coverage instrumentation more robust #16235
Default parameters
- Resolve overloading: keep track of prefix and indices of all default getters #16009
Experimentals
- Let accessors inherit @experimental annotations from accessed symbols #16099
Extension Methods
- Fix i14451 #16010
GADTs
Initialization
- Code refactoring of initialization checker #16066
Inline
- Refine checking for outer references #16122
Java interoperability
- Parse
native
in Java bytecode as@native
#16232
Opaque Types
- Disallow opaque type aliases of context functions #16041
Overloading
- Fix curried overloading resolution for polymorphic methods #16485
Parser
- Align implementation with spec of soft modifiers #15961
Pattern Matching
- Fix redundancy (unreachability) warning #16179
- Teach
SpaceEngine
that generic tuples are irrefutable #16051 - Fix exhaustivity warning #16168
Polyfunctions
- Avoid checking purity of
Apply
without symbols #16221
Reporting
- Expose reason for unchecked warning #16086
- Refine
AsSeenFrom
approximation scheme #15957 - Better output under
-Ydetailed-stats
#15950 - Fix crash in
-Vprofile
code #16007 - Name stripped of module suffix must not be empty #15597
- Fix
InlineMatch
pos forsummonFrom
#16025
Rewrites
- Rewrites are UTF-8 #15622
Scala-JS
- Fix the detection of inferred types of
= js.native
. #16184 - Do not elide fields required for Scala.js interop semantics. #16187
Scaladoc
- Update quick links for new UI #15912
- Avoid parsing code comment twice #16154
- Make footer text configurable #16064
- Add typography fallback fonts #16063
SemanticDB
- Emit
SymbolInformation
andOccurrence
for anonymous class #15865 - Fix regression in type apply synthetics #16031
Transform
- Fix creating forwarders for simple alias givens #16193
- Only check for
Scala2LocalSuffix
in methods on Scala 2.x classes #16014 - Fix mapping
TypeMap
s over annotations #15948 - Peephole optimization to drop
.apply
from partially applied methods #16022
Typer
- Fix
approximateOr
of(A & Double) | Null
#16241 - Create boxed environments only for references and function values #16136
- Fix higher-order unification incorrectly substituting tparams #16181
- Handle copies of constrained type lambdas when determining an implicit scope #16159
- Create message for missing arguments #16158
- Make singleton types subtypes of their refined type #16135
- Disallow overriding val parameters #16096
- Avoid crash where creator proxies are referenced indirectly #16098
- Refine estimation of default arguments in overloading resolution #15962
- Harden
canAssign
#15963 - Fix
isSubType
for static objects filling in type projections #15959 - Fix expected type of
TupleXXL unapply
#16248 - Drop lazy recursive application in
approximateParent
#16073 - Type match with a match type when a match type is expected #15599
- Compute completions at
typerPhase
#16371 - Only include accessible base classes in
orDominator
#16477
Contributors
Thank you to all the contributors who made this release possible 🎉
According to git shortlog -sn --no-merges 3.2.1..3.2.2
these are:
86 Martin Odersky
24 Yichen Xu
23 Quentin Bernet
19 Dale Wijnand
18 Michael Pollmeier
13 Paweł Marks
8 Fengyun Liu
7 Guillaume Raffin
7 Som Snytt
6 Szymon Rodziewicz
5 Kacper Korban
4 Chris Kipp
3 Matt Bovel
3 Rikito Taniguchi
2 Ben Hutchison
2 Florian3k
2 Guillaume Martres
2 Jamie Thompson
2 João Costa
2 Julien Richard-Foy
2 Lukas Rytz
2 Sébastien Doeraene
1 Anton Sviridov
1 Gabriel Volpe
1 Liang Yan
1 Noah Rosamilia
1 Ondra Pelech
1 Seth Tisue
1 Tomasz Godzik
1 Vadim Chelyshov
1 nmc.borst
1 nmcb
1 olsdavis
3.2.2-RC2
Backported fixes
- Compute completions at
typerPhase
#16371 - Only include accessible base classes in
orDominator
#16477 - Fix curried overloading resolution for polymorphic methods #16485
- Teach SpaceEngine that generic tuples are irrefutable #16051
- Fix exhaustivity warning #16168
Contributors
Thank you to all the contributors who made this release possible 🎉
According to git shortlog -sn --no-merges 3.2.2-RC1..3.2.2-RC2
these are:
3 Martin Odersky
3 Paweł Marks
2 Dale Wijnand
1 Som Snytt