3.6.1
Pre-release
Pre-release
This is a fast-track release to replace a broken release 3.6.0 that occurred during the Scala 3.6.0-RC1 release. It might contain bugs that would be have been fixed during the Release Candidate bugfixes period. We recommend waiting for the stable Scala 3.6.2 release.
Scala 3.6.0 should never be used to produce libraries. TASTy files produced by this version of the compiler are produced in the experimental mode. These outputs are not compatible with consumers using stable versions of the compiler.
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.1
these are:
129 Martin Odersky
35 Hamza REMMAL
34 Dale Wijnand
31 Eugene Flesselle
31 Hamza Remmal
30 Wojciech Mazur
15 Kacper Korban
12 Jamie Thompson
11 Jan Chyb
11 Katarzyna Marek
9 noti0na1
9 rochala
8 Adrien Piquerez
8 Matt Bovel
7 Som Snytt
7 dependabot[bot]
6 Yichen Xu
5 EnzeXing
5 Fengyun Liu
5 Guillaume Martres
5 Sébastien Doeraene
4 Tomasz Godzik
4 kasiaMarek
3 Martin Duhem
3 Oliver Bracevac
3 Piotr Chabelski
2 Aleksander Rainko
2 David Hua
2 Florian3k
2 Friendseeker
2 HarrisL2
2 Joel Wilsson
2 Jędrzej Rochala
2 Kenji Yoshida
2 Seth Tisue
1 Eugene Yokota
1 Georgi Krastev
1 Kavin Satheeskumar
1 Lorenzo Gabriele
1 Michał Pałka
1 Michel Charpentier
1 Ondrej Lhotak
1 Raphael Jolly
1 Yuito Murase
1 crunchyfrog
1 friendseeker
1 philippus