3.6.0
Pre-release
Pre-release
This is a broken release, please, don't use it
It was published by mistake during the 3.6.0-RC1 release.
See details in Scala 3.6.0 Post Mortem blogpost
Highlights of the release
- Stabilise SIP-47 (Adding Clause Interleaving to method definitions) #20861
- Implement SIP-57 - add runtimeChecked method and annotation #20987
- Implement SIP-62 - For comprehension improvements #20522
- Implement SIP-64 as non-experimental #21668
- Make named tuples a standard feature #21680
- Switch mapping of context bounds to using clauses in 3.6 #21257
- Require named arguments for java defined annotations #21329
Other changes and fixes
Annotations
- Tighten java annot value parsing #21650
Dependencies
Erasure
- Fixes IllegalAccessError with Java package protected class #21362
Experimental: Capture Checking
- Existential Capabilities #20566
- 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
- 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: Strict Equality
- Fix #21392: Adjust
canComparePredefined(Nothing, T)
in explicit nulls #21504 - Add tracking of NotNullInfo for Match, Case, Try trees (fix #21380) #21389
Experimental: Modularity
- Revised given syntax #21208
Experimental: Global Initialization
- Analyze object when selecting from package #21511
- Fix bug in init checker while compiling scodec-bits community project #21574
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
Library
- Finalize named tuples #21710
Match Types
- Enable betterMatchTypeExtractors in >= 3.6 #21198
- 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
Pattern Matching
- Fix a bundle of patmat issues #21000
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
REPL
- Ignore best effort settings in repl and update docs #21540
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
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
- Move
NamedTuple.head
toNamedTupleDecomposition
#21308 - Define binary symbolic compiletime ops as
infix
#21683
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
- 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.0-RC1
these are:
128 Martin Odersky
35 Hamza REMMAL
34 Dale Wijnand
27 Eugene Flesselle
22 Hamza Remmal
22 Wojciech Mazur
12 Kacper Korban
11 Katarzyna Marek
9 noti0na1
9 rochala
8 Jamie Thompson
8 Jan Chyb
7 Adrien Piquerez
7 Matt Bovel
7 Som Snytt
7 dependabot[bot]
6 Yichen Xu
5 EnzeXing
5 Guillaume Martres
5 Sébastien Doeraene
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