Releases: scala/scala3
3.4.0-RC3
Backported fixes
- Sync language.scala with main and backport "Add tests for context bounds migration" #19515
- Handle default implicits to context parameters under -3.4-migration #19512
Contributors
Thank you to all the contributors who made this release possible ๐
According to git shortlog -sn --no-merges 3.4.0-RC2..3.4.0-RC3
these are:
4 Paweล Marks
1 Martin Odersky
1 Nicolas Stucki
3.4.0-RC2
Backported fixes
- Fix expandParam's use of argForParam/isArgPrefixOf. #19412
- Remove ascriptionVarargsUnpacking as we never used it #19399
- Make explicit arguments for context bounds an error from 3.5 #19316
- Avoid generating given definitions that loop #19282
- Turn given loop prevention on for -source future #19392
- Fix algorithm to prevent recursive givens #19411
Contributors
Thank you to all the contributors who made this release possible ๐
According to git shortlog -sn --no-merges 3.4.0-RC1..3.4.0-RC2
these are:
15 Martin Odersky
4 Nicolas Stucki
3 Paweล Marks
1 Dale Wijnand
1 Jan Chyb
3.4.0-RC1
Highlights of the release
- Make polymorphic functions more efficient and expressive #17548
- SIP-56: Better foundations for match types #18262
- Make SIP 54 (Multi-Source Extension Overloads) a standard feature #17441
- Value parameter inference for polymorphic lambdas #18041
- Add
@publicInBinary
annotation and-WunstableInlineAccessors
linting flag #18402 - Stabilize Quotes
defn.PolyFunction
#18480 - Stabilize Quotes
Flags.AbsOverride
#18482 - Add
-experimental
compiler flags #18571 - Stabilize SIP-53 (quote pattern explicit type variable syntax) #18574
- Add reflect TypeRepr.dealiasKeepOpaques #18583
- Add attributes section to TASTy and use it for Stdlib TASTy #18599
- Error when reading class file with unknown newer jdk version #18618
- Add support for xsbti.compile.CompileProgress #18739
- Improve type inference for functions like fold #18780
- Improve error message for mismatched tasty versions, allow configuration of header unpickler #18828
- In 3.4 make refutable patterns in a for comprehension an error #18842
- Disallow use of PolyFunction in user code #18920
- Store source file in TASTY attributes #18948
- First step to pipelining support - enable reading Java symbols from TASTy #19074
- Activate constrainResult fix in 3.4 #19253
- Parallelise JVM backend - Scala 2 port #15392
Deprecation warnings for old syntax
_
type wildcards #18813private[this]
#18819var x = _
#18821with
as a type operator #18837xs: _*
varargs #18872- trailing
_
to force eta expansion #18926
Other changes and fixes
Backend
- Count size of parameters for platform limit check #18464
- Don't emit line number for synthetic unit value #18717
- Avoid too eager transform of $outer for lhs & accessor rhs #18949
- Make more anonymous functions static #19251
- Fix deadlock in initialization of CoreBTypes using Lazy container #19298
- Fix #18769: Allow HK type args in Java signatures. #18883
- Loading symbols from TASTy files directly #17594
- Use dedicated equals method for univerval equality of chars #18770
Erasure
- Get generic signature of fields entered after erasure from their accessor #19207
- Detect case where two alternatives are the same after widening ExprTypes #18787
- Improve erased params logic #18433
Experimental: Capture Checking
- Fix capture set variable installation in Setup #18885
- Don't follow opaque aliases when transforming sym info for cc #18929
- Reset
comparersInUse
to zero inContextState.reset
#18915 - Special handling of experimental.captureChecking import #17427
- Change handling of curried function types in capture checking #18131
- Fix #18246: correctly compute capture sets in
TypeComparer.glb
#18254 - New capture escape checking based on levels #18463
- A more robust scheme for resetting denotations after Recheck #18534
- A more flexible scheme for handling the universal capability #18699
- Fix potential soundness hole when adding references to a mapped capture set #18758
- Alternative scheme for cc encapsulation #18899
- Make reach refinement shallow #19171
F-bounds
- Don't check bounds of Java applications in Java units #18054
GADTs
- Avoid embedding SelectionProtos in Conversions #17755
- Freeze constraints while calculating GADT full bounds #18222
Implicits
- Followup fix to transparent inline conversion #18130
- Select local implicits over name-imported over wildcard imported #18203
- Fix how implicit candidates are combined #18321
- Improve error message about missing type of context function parameter #18788
- Support implicit arguments before extractor method #18671
- Tweak convertible implicits fix #18727
Incremental Compilation
- Make incremental compilation aware of synthesized mirrors #18310
Inference
- Honour hard unions in lubbing and param replacing #18680
Infrastructure
- Use -Yscala2-library-tasty to add Scala 2 lib TASTY to scalac (internal only) #18613
- Rename
stdlib-bootstrapped-tasty
toscala2-library-tasty
#18615 - Fix #19286: Freeze rubygems-update at < 3.5.0. #19288
Initialization
- Fix #17997: Handle intersection type as this type of super type #18069
- Add test for issue #17997 affecting the global object initialization checker #18141
- Fix i18624 and add test case for it #18859
- Treat new Array(0) as immutable #19192
- Fix #18407: Ignore Quote/Slice in init checker #18848
- Check safe initialization of static objects #16970
- Pattern match support in checking global objects #18127
- Fix crash in global object initialization checker when select target has no source #18627
- Fix warning underlining in global init checker #18668
- Fix i18629 #18839
- I18628 #18841
- Make safe init checker skip global objects #18906
- Handle local lazy vals properly #18998
Inline
- Fix regression: inline match crash when rhs uses private inlined methods #18595
- Add structural classes of dynamicApply before inlining #18766
- Set missing expansion span for copied inlined node #18229
- Fix
callTrace
of inlined methods #18738
Linting
- Keep tree of type ascriptions of quote pattern splices #18412
- Fix false positive in WUnused for renamed path-dependent imports #18468
- Fix false positive in WUnused for renamed path-dependent imports (2) #18617
- Fix wunused false positive on CanEqual #18641
- Implement -Xlint:private-shadow, type-parameter-shadow #17622
- Fix: reversed wconf parsing order to mirror scala 2 #18503
- Revert Fix false positive in WUnused for renamed path-dependent imports #18514
Macro Annotations
- Enter missing symbols generated by the MacroAnnotation expansion [#18826](https://git...
3.3.2-RC1
Highlights of the release
- Improvements to code coverage (detailed list below)
- Add Stable Presentation Compiler #17528
Other changes and fixes
Backend
- Make sure synthetic apply methods are generated in deterministic order #18210
Coverage
- Only lift inner expressions when lifting repeated
Typed
arguments #18424 - Fix: scoverage statement's line number should be 1-base #18932
- Do not lift applications of context functions #18498
- Don't lift the argument of a
synchronized
block in scoverage #16941 - Fix the issue with coverage inside of a TypeApply #18420
- Coverage: mark case bodies as branches; don't ignore branches with synthetic spans #18437
Documentation
- Compiler plugin Scaladoc: document phase requirement #18394
Exports
- Refine override exclude criterion for export forwarders #17590
Incremental Compilation
- Fix overcompilation due to unstable context bound desugaring #18280
Inline
- Don't generate a super accessor for an inline method call #17598
Linting
- Wunused: Only use type treverser for checking refinements in refined type trees #17929
Parser
Pattern Matching
- Properly refine type of inlined unapply pattern #18292
Presentation Compiler
- Bugfix: suggest correct arg name completions for lambda expressions #18379
- Improvement: print better bracket suffix in completion item label #18380
- Fix presentation compiler autoimports, update presentation compiler dependencies #18264
- Update scala3-presentation-compiler to 39e349e #18296
- Update presentation compiler with changes from PR 5287 #18301
- Update presentation compiler to a829a6a #18347
- Bugfix: highlight enum cases correctly #18362
Quotes
- Do not beta-reduce/eta-expand pattern splices with contextual function types #18198
- XcheckMacro types of Block expression and Apply/TypeApply function #18242
- Fix owner of splices in class statements #18359
- Handle macro dependencies through class of
this
#18396 - Add missing span in
QuoteMatcher
#18178 - Fix stale symbol crashes in some path depended types in macro contexts #18077
- Simplify avoidance of local types of Hole #17571
Reporting
- Detail "not a constant type" message #17626
- Suggest imports for the expected type of the underlying implicit not found error #17976
- Fix: report correct location on a repeat modifier #17982
- Warn when calling synchronized on AnyVal #18021
- Fix compile error message in wildcard exports #18189
- Improve parameter type inference error messaging #18190
- Don't report warnings in migration when performing rewrites #15589
- Fix crash reporter, units and phases #17754
- Omit more prefixes in non-package module printing #17758
- Fix pretty printer to handle using and erased modifier #17952
- Add -Yprint-tasty compiler flag #17986
- Add actionable item to PatternMatchExhaustivity diagnostic #18314
Scaladoc
- Fix: -no-link-warnings does not work #17028
- Fix: Validation for API link #17099
- Scaladoc: type rendering fixes and improvements #17213
- Feat: Add a custom icon #17241
- Fix: Correction of the siteRoot path #17297
- Fix: Correct the navigation to anchor #17910
- Fix: Style for wiki syntax #18079
- Fix NoSuchElementException in scaladoc #18184
SemanticDB
- Check for primary constructor in namePresentInSource #18325
- Add -semanticdb-text compiler option #18307
Typer
- Fix pattern generation in "ordinal" mirror method #17570
- Fix superType of SuperType #17574
- Avoid crash in erasure when reference cannot be emitted #18056
- Disallow overloading from breaking stable patterns #18327
- Fix widen types before checking an implicit view exists #18719
- Properly handle SAM types with wildcards #18201
- Handle recursion in collectParts #18214
- Allow eta-expansion of inline defs #18249
- Stable names for lambda lifted methods #18281
Contributors
Thank you to all the contributors who made this release possible ๐
According to git shortlog -sn --no-merges 3.3.1..3.3.2-RC1
these are:
37 Nicolas Stucki
36 Paweล Marks
28 Chris Kipp
15 Sรฉbastien Doeraene
13 Lucas Leblanc
13 Martin Odersky
12 Guillaume Martres
10 Dale Wijnand
10 Jamie Thompson
8 ghostbuster91
6 Florian3k
5 Kacper Korban
4 Jฤdrzej Rochala
4 Katarzyna Marek
4 Quentin Bernet
3 Jan Chyb
3 Lucas
3 Matt Bovel
3 Seth Tisue
2 Julien Richard-Foy
2 Wojciech Mazur
1 Aleksey Troitskiy
1 Arnout Engelen
1 Bjorn Regnell
1 Eugene Yokota
1 Justin Reardon
1 Kisaragi
1 Martin Kuฤera
1 Matthew Rooney
1 Matthias Kurz
1 Ondrej Lhotak
1 Rikito Taniguchi
1 Stefan Wachter
1 Yuito Murase
1 rochala
3.3.1
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.1-RC7
Backported fixes
Contributors
Thank you to all the contributors who made this release possible ๐
According to git shortlog -sn --no-merges 3.3.1-RC6..3.3.1-RC7
these are:
3 Paweล Marks
1 Martin Odersky
3.3.1-RC6
Backported fixes
- Refine
infoDependsOnPrefix
#18204 - FDo not compute
protoFormal
ifparam.tpt
is empty #18288 - Revert "Normalize match type usage during implicit lookup" #18440
Contributors
Thank you to all the contributors who made this release possible ๐
According to git shortlog -sn --no-merges 3.3.1-RC5..3.3.1-RC6
these are:
3 Paweล Marks
2 Martin Odersky
1 Nicolas Stucki
3.3.1-RC5
Backported fixes
- Heal stage inconsistent prefixes of type projections #18239
- Fix regression #17245: Overloaded methods with ClassTags #18286
- Disallow taking singleton types of packages again #18232
- A slightly more conservative version of #14218 #18352
- Record failures to adapt application arguments #18269
- Fix regression in exhaustivity of HK types #18303
Contributors
Thank you to all the contributors who made this release possible ๐
According to git shortlog -sn --no-merges 3.3.1-RC4..3.3.1-RC5
these are:
5 Dale Wijnand
2 Martin Odersky
2 Paweล Marks
1 Jan Chyb
1 Nicolas Stucki
3.3.1-RC4
Backported fixes
- Revert "Include top-level symbols from same file in outer ambiguity error" #17438
Contributors
Thank you to all the contributors who made this release possible ๐
According to git shortlog -sn --no-merges 3.3.1-RC3..3.3.1-RC4
these are:
2 Paweล Marks
1 Nicolas Stucki
3.3.1-RC3
Backported fixes
- Add clause for protected visibility from package objects #18134
Contributors
Thank you to all the contributors who made this release possible ๐
According to git shortlog -sn --no-merges 3.3.1-RC2..3.3.1-RC3
these are:
2 Paweล Marks
1 Martin Odersky