Highlights of the release
- Stabilise SIP-47 (Adding Clause Interleaving to method definitions) #20861
- Stabilise SIP-64 (New syntax of givens and context bounds) #21668
- Context Bounds for Polymorphic Functions #21643
- Switch mapping of context bounds to using clauses in 3.6 #21257
- Enable betterMatchTypeExtractors in >= 3.6 #21198
- Require named arguments for java defined annotations #21329
- Refine the bounds of the
Tuple.Filter
type lambda predicate .. #21286 - Add an infix shorthand for
Tuple.{Append, Concat}
#21288 - Add .msi artifacts to release assets #21834
- Implement SIP-62 as experimental - For comprehension improvements #20522
- Implement SIP-57 as experimental - add runtimeChecked method and annotation #20987
Other changes and fixes
Annotations
- Tighten java annot value parsing #21650
Erasure
- Fixes IllegalAccessError with Java package protected class #21362
Experimental: Capture Checking
- Fix setup of CapSet arguments. #21309
- Check all top-level covariant capture sets in checkNotUniversal #21428
- Charge also dcs of local reaches to capture set of enclosing method #21443
- No need to unbox if expected type is LhsProto #21508
- Treat more closure parameter types as inferred #21583
- Existential Capabilities #20566
- Fixes for cleanup retains scheme #21350
- Improve Contains handling #21361
- Expand Capability types T to T^ only if no explicit capture set is given #21375
- Tighten closure extractor in TreeInfo #21621
Experimental: Global Initialization
- Analyze object when selecting from package #21511
- Fix bug in init checker while compiling scodec-bits community project #21574
Experimental: Named Tuples
- Finalize named tuples #21710
- Move
NamedTuple.head
toNamedTupleDecomposition
#21308 - Move
NonEmptyTuple
members intoTuple
#21291 - Migration rewrites for infix arguments interpreted as named tuples #21949
- Make named tuples a standard feature #21680
- Make named tuples an experimental feature again #22045
Experimental: Explicit Nulls
- Fix #21392: Adjust
canComparePredefined(Nothing, T)
in explicit nulls #21504 - Add tracking of NotNullInfo for Match, Case, Try trees (fix #21380) #21389
Experimentals
- [experimental feature] Support HOAS pattern with type variables for quote pattern matching #18271
Exports
- Re-use attachment in exportForwarders to handle ambiguous overloads #21518
- Allow export statements in AnyVal #21653
Extension Methods
- Make right assoc ext method fwd refs error #21641
Inline
- Fix: throw an error before assigning ErrorType when expanding constValue #21364
Implicits
- Fix prioritization of
given
s overimplicit
s #21226
JVM Backend
- Backend computes line number from source of position #21763
Linting
- CheckUnused checks type param annotations #20549
Match Types
- Fix #21295: Restrict
provablyDisjoint
withNothing
s in invariant type params. #21891 - Do not propagate
TypeError
s of ops fromTypeComparer#tryAlso
#21070 - Fix #21402: Always allow type member extraction for stable scrutinees in match types. #21700
- Add a 3.6-migration warning for MT lubbing #21336
- Always interpret underscores inside patterns as type bounds #21718
Opaque Types
- Capture the kse3 issue in test cases and close it #21260
Parser
- Guard against recursive lower bounds in constraints #21587
- Handle old given syntax where identifier and type are seperated by new line #21957
- Fix: Allow
as
as an infix type in non context bound types #21849 - Revised given syntax #21208
- Make context bounds for poly functions a standard feature #22019
Pattern Matching
Pickling
- Some fixes for AnnotatedTypes mapping #19957
Polyfunctions
- Fix: Check if a PolyFunction TypeTree has no ByName parameters #21671
Presentation Compiler
- Add regression test for issue 18726 #20318
- Remove artificial
CURSOR
added to code in the completions #20899 - Fix autoimports with using directives #21590
Quotes
- Handle suspension due to macro call in arbitrary phases #21651
- Have a better error message when healing types #21711
- Bound TypeRepr by Matchable in Quotes #21377
- Expr#show: Don't crash when the expression contains an unsupported type (like a SkolemType) #20494
Reflection
- Add the possibility to create a typeSymbol in the Quotes API #20347
- Fix stale symbols connected to lazy vals in macros #21559
Reporting
- Add better error reporting for inlined non-immutable paths #21639
- Only replace new errors by warnings under
-migration
#21289 - Warn when named tuples resemble assignments #21823
REPL
Rewrites
- Remove empty argument lists for classes with only context bounds #21513
- Fix rewrite logic for old
<function> _
syntax #21715 - Remove the
-rewrite
option fortypechecks
methods in Quotes #21547 - Add migration rewrite for non-named arguments in Java annotations #21397
Runner
- Update Scala CLI to 1.5.4 (was 1.5.1) & coursier to 2.1.18 (was 2.1.13) #22021
- Scala CLI 1.5.2 release notes highlights:
--source
is now deprecated and scheduled for removal in Scala CLI v1.6.x- Initial support for emitting Wasm with a command line option and a directive
- Scala CLI 1.5.3 release notes
- Scala CLI 1.5.4 release notes
- Scala CLI 1.5.2 release notes highlights:
Scaladoc
- Only trim one newline when preprocessing the content of a markdown code snippet #21519
- Filter opaque modifier from object documentation #21640
- Bump Inkuire version to fix it for the new Scala versions #21611
Standard Library
Transform
- Fix treatment of separately compiled
@native
methods in FirstTransform #21593 - Three fixes to SAM type handling #21596
- Always rewrite empty List() to Nil #21689
- Add support for clauseInterleaving in JVM generic signatures #21709
Typeclass Derivation
- Nicer error message in case a
derived
method has an explicit term param #21332
Typer
- Calm param autotupling for overloads #21552
- Survive inaccessible types when computing implicit scope #21589
- Avoid cyclic errors forcing default arg types #21597
- Allow autotupling if fn's param is a type param #21741
- Fix extending protected nested java classes #21857
- Fix incorrect caching with dependent method parameters #21699
Contributors
Thank you to all the contributors who made this release possible 🎉
According to git shortlog -sn --no-merges 3.5.2..3.6.2
these are:
128 Martin Odersky
53 Wojciech Mazur
44 Dale Wijnand
35 Hamza REMMAL
33 Kacper Korban
31 Eugene Flesselle
22 Hamza Remmal
11 Katarzyna Marek
10 Matt Bovel
9 noti0na1
9 rochala
8 Jamie Thompson
8 Jan Chyb
7 Adrien Piquerez
7 Som Snytt
7 Sébastien Doeraene
7 dependabot[bot]
6 Yichen Xu
5 EnzeXing
5 Guillaume Martres
4 Fengyun Liu
4 kasiaMarek
3 Martin Duhem
3 Oliver Bracevac
3 Piotr Chabelski
2 Aleksander Rainko
2 David Hua
2 Florian3k
2 HarrisL2
2 Joel Wilsson
2 Jędrzej Rochala
2 Kenji Yoshida
1 Eugene Yokota
1 Kavin Satheeskumar
1 Lorenzo Gabriele
1 Michel Charpentier
1 Ondrej Lhotak
1 Raphael Jolly
1 Tomasz Godzik
1 Yuito Murase
1 crunchyfrog
1 philippus