|
| 1 | +# Highlights of the release |
| 2 | + |
| 3 | +- Stabilise SIP-47 (Adding Clause Interleaving to method definitions) [#20861](https://github.com/scala/scala3/pull/20861) |
| 4 | +- Stabilise SIP-64 (New syntax of givens and context bounds) [#21668](https://github.com/scala/scala3/pull/21668) |
| 5 | +- Context Bounds for Polymorphic Functions [#21643](https://github.com/scala/scala3/pull/21643) |
| 6 | +- Switch mapping of context bounds to using clauses in 3.6 [#21257](https://github.com/scala/scala3/pull/21257) |
| 7 | +- Enable betterMatchTypeExtractors in >= 3.6 [#21198](https://github.com/scala/scala3/pull/21198) |
| 8 | +- Require named arguments for java defined annotations [#21329](https://github.com/scala/scala3/pull/21329) |
| 9 | +- Refine the bounds of the `Tuple.Filter` type lambda predicate .. [#21286](https://github.com/scala/scala3/pull/21286) |
| 10 | +- Add an infix shorthand for `Tuple.{Append, Concat}` [#21288](https://github.com/scala/scala3/pull/21288) |
| 11 | +- Add .msi artifacts to release assets [#21834](https://github.com/scala/scala3/pull/21834) |
| 12 | +- Implement SIP-62 as experimental - For comprehension improvements [#20522](https://github.com/scala/scala3/pull/20522) |
| 13 | +- Implement SIP-57 as experimental - add runtimeChecked method and annotation [#20987](https://github.com/scala/scala3/pull/20987) |
| 14 | + |
| 15 | +# Other changes and fixes |
| 16 | + |
| 17 | +## Annotations |
| 18 | + |
| 19 | +- Tighten java annot value parsing [#21650](https://github.com/scala/scala3/pull/21650) |
| 20 | + |
| 21 | +## Erasure |
| 22 | + |
| 23 | +- Fixes IllegalAccessError with Java package protected class [#21362](https://github.com/scala/scala3/pull/21362) |
| 24 | + |
| 25 | +## Experimental: Capture Checking |
| 26 | + |
| 27 | +- Fix setup of CapSet arguments. [#21309](https://github.com/scala/scala3/pull/21309) |
| 28 | +- Check all top-level covariant capture sets in checkNotUniversal [#21428](https://github.com/scala/scala3/pull/21428) |
| 29 | +- Charge also dcs of local reaches to capture set of enclosing method [#21443](https://github.com/scala/scala3/pull/21443) |
| 30 | +- No need to unbox if expected type is LhsProto [#21508](https://github.com/scala/scala3/pull/21508) |
| 31 | +- Treat more closure parameter types as inferred [#21583](https://github.com/scala/scala3/pull/21583) |
| 32 | +- Existential Capabilities [#20566](https://github.com/scala/scala3/pull/20566) |
| 33 | +- Fixes for cleanup retains scheme [#21350](https://github.com/scala/scala3/pull/21350) |
| 34 | +- Improve Contains handling [#21361](https://github.com/scala/scala3/pull/21361) |
| 35 | +- Expand Capability types T to T^ only if no explicit capture set is given [#21375](https://github.com/scala/scala3/pull/21375) |
| 36 | +- Tighten closure extractor in TreeInfo [#21621](https://github.com/scala/scala3/pull/21621) |
| 37 | + |
| 38 | +## Experimental: Global Initialization |
| 39 | + |
| 40 | +- Analyze object when selecting from package [#21511](https://github.com/scala/scala3/pull/21511) |
| 41 | +- Fix bug in init checker while compiling scodec-bits community project [#21574](https://github.com/scala/scala3/pull/21574) |
| 42 | + |
| 43 | +## Experimental: Named Tuples |
| 44 | + |
| 45 | +- Finalize named tuples [#21710](https://github.com/scala/scala3/pull/21710) |
| 46 | +- Move `NamedTuple.head` to `NamedTupleDecomposition` [#21308](https://github.com/scala/scala3/pull/21308) |
| 47 | +- Move `NonEmptyTuple` members into `Tuple` [#21291](https://github.com/scala/scala3/pull/21291) |
| 48 | +- Migration rewrites for infix arguments interpreted as named tuples [#21949](https://github.com/scala/scala3/pull/21949) |
| 49 | +- Make named tuples a standard feature [#21680](https://github.com/scala/scala3/pull/21680) |
| 50 | +- Make named tuples an experimental feature again [#22045](https://github.com/lampepfl/dotty/pull/22045) |
| 51 | + |
| 52 | +## Experimental: Strict Equality |
| 53 | + |
| 54 | +- Fix #21392: Adjust `canComparePredefined(Nothing, T)` in explicit nulls [#21504](https://github.com/scala/scala3/pull/21504) |
| 55 | +- Add tracking of NotNullInfo for Match, Case, Try trees (fix #21380) [#21389](https://github.com/scala/scala3/pull/21389) |
| 56 | + |
| 57 | +## Experimentals |
| 58 | + |
| 59 | +- [experimental feature] Support HOAS pattern with type variables for quote pattern matching [#18271](https://github.com/scala/scala3/pull/18271) |
| 60 | + |
| 61 | +## Exports |
| 62 | + |
| 63 | +- Re-use attachment in exportForwarders to handle ambiguous overloads [#21518](https://github.com/scala/scala3/pull/21518) |
| 64 | +- Allow export statements in AnyVal [#21653](https://github.com/scala/scala3/pull/21653) |
| 65 | + |
| 66 | +## Extension Methods |
| 67 | + |
| 68 | +- Make right assoc ext method fwd refs error [#21641](https://github.com/scala/scala3/pull/21641) |
| 69 | + |
| 70 | +## Inline |
| 71 | + |
| 72 | +- Fix: throw an error before assigning ErrorType when expanding constValue [#21364](https://github.com/scala/scala3/pull/21364) |
| 73 | + |
| 74 | +## Implicits |
| 75 | + |
| 76 | +- Fix prioritization of `given`s over `implicit`s [#21226](https://github.com/scala/scala3/pull/21226) |
| 77 | + |
| 78 | +## JVM Backend |
| 79 | + |
| 80 | +- Backend computes line number from source of position [#21763](https://github.com/scala/scala3/pull/21763) |
| 81 | + |
| 82 | +## Linting |
| 83 | + |
| 84 | +- CheckUnused checks type param annotations [#20549](https://github.com/scala/scala3/pull/20549) |
| 85 | + |
| 86 | +## Match Types |
| 87 | + |
| 88 | +- Fix #21295: Restrict `provablyDisjoint` with `Nothing`s in invariant type params. [#21891](https://github.com/scala/scala3/pull/21891) |
| 89 | +- Do not propagate `TypeError`s of ops from `TypeComparer#tryAlso` [#21070](https://github.com/scala/scala3/pull/21070) |
| 90 | +- Fix #21402: Always allow type member extraction for stable scrutinees in match types. [#21700](https://github.com/scala/scala3/pull/21700) |
| 91 | +- Add a 3.6-migration warning for MT lubbing [#21336](https://github.com/scala/scala3/pull/21336) |
| 92 | +- Always interpret underscores inside patterns as type bounds [#21718](https://github.com/scala/scala3/pull/21718) |
| 93 | + |
| 94 | +## Opaque Types |
| 95 | + |
| 96 | +- Capture the kse3 issue in test cases and close it [#21260](https://github.com/scala/scala3/pull/21260) |
| 97 | + |
| 98 | +## Parser |
| 99 | + |
| 100 | +- Guard against recursive lower bounds in constraints [#21587](https://github.com/scala/scala3/pull/21587) |
| 101 | +- Handle old given syntax where identifier and type are seperated by new line [#21957](https://github.com/scala/scala3/pull/21957) |
| 102 | +- Fix: Allow `as` as an infix type in non context bound types [#21849](https://github.com/scala/scala3/pull/21849) |
| 103 | +- Revised given syntax [#21208](https://github.com/scala/scala3/pull/21208) |
| 104 | +- Make context bounds for poly functions a standard feature [#22019](https://github.com/scala/scala3/pull/22019) |
| 105 | + |
| 106 | +## Pattern Matching |
| 107 | + |
| 108 | +- Optimise SpaceEngine.signature [#21791](https://github.com/scala/scala3/pull/21791) |
| 109 | +- Fix a bundle of patmat issues [#21000](https://github.com/scala/scala3/pull/21000) |
| 110 | + |
| 111 | +## Pickling |
| 112 | + |
| 113 | +- Some fixes for AnnotatedTypes mapping [#19957](https://github.com/scala/scala3/pull/19957) |
| 114 | + |
| 115 | +## Polyfunctions |
| 116 | + |
| 117 | +- Fix: Check if a PolyFunction TypeTree has no ByName parameters [#21671](https://github.com/scala/scala3/pull/21671) |
| 118 | + |
| 119 | +## Presentation Compiler |
| 120 | + |
| 121 | +- Add regression test for issue 18726 [#20318](https://github.com/scala/scala3/pull/20318) |
| 122 | +- Remove artificial `CURSOR` added to code in the completions [#20899](https://github.com/scala/scala3/pull/20899) |
| 123 | +- Fix autoimports with using directives [#21590](https://github.com/scala/scala3/pull/21590) |
| 124 | + |
| 125 | +## Quotes |
| 126 | + |
| 127 | +- Handle suspension due to macro call in arbitrary phases [#21651](https://github.com/scala/scala3/pull/21651) |
| 128 | +- Have a better error message when healing types [#21711](https://github.com/scala/scala3/pull/21711) |
| 129 | +- Bound TypeRepr by Matchable in Quotes [#21377](https://github.com/scala/scala3/pull/21377) |
| 130 | +- Expr#show: Don't crash when the expression contains an unsupported type (like a SkolemType) [#20494](https://github.com/scala/scala3/pull/20494) |
| 131 | + |
| 132 | +## Reflection |
| 133 | + |
| 134 | +- Add the possibility to create a typeSymbol in the Quotes API [#20347](https://github.com/scala/scala3/pull/20347) |
| 135 | +- Fix stale symbols connected to lazy vals in macros [#21559](https://github.com/scala/scala3/pull/21559) |
| 136 | + |
| 137 | +## Reporting |
| 138 | + |
| 139 | +- Add better error reporting for inlined non-immutable paths [#21639](https://github.com/scala/scala3/pull/21639) |
| 140 | +- Only replace *new* errors by warnings under `-migration` [#21289](https://github.com/scala/scala3/pull/21289) |
| 141 | +- Warn when named tuples resemble assignments [#21823](https://github.com/scala/scala3/pull/21823) |
| 142 | + |
| 143 | +## REPL |
| 144 | + |
| 145 | +- REPL: JLine 3.27.0 (was 3.25.1) [#21752](https://github.com/scala/scala3/pull/21752) |
| 146 | +- Ignore best effort settings in repl and update docs [#21540](https://github.com/scala/scala3/pull/21540) |
| 147 | + |
| 148 | +## Rewrites |
| 149 | + |
| 150 | +- Remove empty argument lists for classes with only context bounds [#21513](https://github.com/scala/scala3/pull/21513) |
| 151 | +- Fix rewrite logic for old `<function> _` syntax [#21715](https://github.com/scala/scala3/pull/21715) |
| 152 | +- Remove the `-rewrite` option for `typechecks` methods in Quotes [#21547](https://github.com/scala/scala3/pull/21547) |
| 153 | +- Add migration rewrite for non-named arguments in Java annotations [#21397](https://github.com/scala/scala3/pull/21397) |
| 154 | + |
| 155 | +## Runner |
| 156 | + |
| 157 | +- Update Scala CLI to 1.5.4 (was 1.5.1) & coursier to 2.1.18 (was 2.1.13) [#22021](https://github.com/lampepfl/dotty/pull/22021) |
| 158 | + - [Scala CLI 1.5.2 release notes](https://github.com/VirtusLab/scala-cli/releases/tag/v1.5.2) highlights: |
| 159 | + - `--source` is now deprecated and scheduled for removal in Scala CLI v1.6.x |
| 160 | + - Initial support for emitting Wasm with a command line option and a directive |
| 161 | + - [Scala CLI 1.5.3 release notes](https://github.com/VirtusLab/scala-cli/releases/tag/v1.5.3) |
| 162 | + - [Scala CLI 1.5.4 release notes](https://github.com/VirtusLab/scala-cli/releases/tag/v1.5.4) |
| 163 | + |
| 164 | +## Scaladoc |
| 165 | + |
| 166 | +- Only trim one newline when preprocessing the content of a markdown code snippet [#21519](https://github.com/scala/scala3/pull/21519) |
| 167 | +- Filter opaque modifier from object documentation [#21640](https://github.com/scala/scala3/pull/21640) |
| 168 | +- Bump Inkuire version to fix it for the new Scala versions [#21611](https://github.com/scala/scala3/pull/21611) |
| 169 | + |
| 170 | +## Standard Library |
| 171 | + |
| 172 | +- Scala 2.13.15 (was .14) [#21648](https://github.com/scala/scala3/pull/21648) |
| 173 | +- Define binary symbolic compiletime ops as `infix` [#21683](https://github.com/scala/scala3/pull/21683) |
| 174 | + |
| 175 | +## Transform |
| 176 | + |
| 177 | +- Fix treatment of separately compiled @native methods in FirstTransform [#21593](https://github.com/scala/scala3/pull/21593) |
| 178 | +- Three fixes to SAM type handling [#21596](https://github.com/scala/scala3/pull/21596) |
| 179 | +- Always rewrite empty List() to Nil [#21689](https://github.com/scala/scala3/pull/21689) |
| 180 | +- Add support for clauseInterleaving in JVM generic signatures [#21709](https://github.com/scala/scala3/pull/21709) |
| 181 | + |
| 182 | +## Typeclass Derivation |
| 183 | + |
| 184 | +- Nicer error message in case a `derived` method has an explicit term param [#21332](https://github.com/scala/scala3/pull/21332) |
| 185 | + |
| 186 | +## Typer |
| 187 | + |
| 188 | +- Calm param autotupling for overloads [#21552](https://github.com/scala/scala3/pull/21552) |
| 189 | +- Survive inaccessible types when computing implicit scope [#21589](https://github.com/scala/scala3/pull/21589) |
| 190 | +- Avoid cyclic errors forcing default arg types [#21597](https://github.com/scala/scala3/pull/21597) |
| 191 | +- Allow autotupling if fn's param is a type param [#21741](https://github.com/scala/scala3/pull/21741) |
| 192 | +- Fix extending protected nested java classes [#21857](https://github.com/scala/scala3/pull/21857) |
| 193 | +- Fix incorrect caching with dependent method parameters [#21699](https://github.com/scala/scala3/pull/21699) |
| 194 | + |
| 195 | +# Contributors |
| 196 | + |
| 197 | +Thank you to all the contributors who made this release possible 🎉 |
| 198 | + |
| 199 | +According to `git shortlog -sn --no-merges 3.5.2..3.6.2` these are: |
| 200 | + |
| 201 | +``` |
| 202 | + 128 Martin Odersky |
| 203 | + 53 Wojciech Mazur |
| 204 | + 44 Dale Wijnand |
| 205 | + 35 Hamza REMMAL |
| 206 | + 33 Kacper Korban |
| 207 | + 31 Eugene Flesselle |
| 208 | + 22 Hamza Remmal |
| 209 | + 11 Katarzyna Marek |
| 210 | + 10 Matt Bovel |
| 211 | + 9 noti0na1 |
| 212 | + 9 rochala |
| 213 | + 8 Jamie Thompson |
| 214 | + 8 Jan Chyb |
| 215 | + 7 Adrien Piquerez |
| 216 | + 7 Som Snytt |
| 217 | + 7 Sébastien Doeraene |
| 218 | + 7 dependabot[bot] |
| 219 | + 6 Yichen Xu |
| 220 | + 5 EnzeXing |
| 221 | + 5 Guillaume Martres |
| 222 | + 4 Fengyun Liu |
| 223 | + 4 kasiaMarek |
| 224 | + 3 Martin Duhem |
| 225 | + 3 Oliver Bracevac |
| 226 | + 3 Piotr Chabelski |
| 227 | + 2 Aleksander Rainko |
| 228 | + 2 David Hua |
| 229 | + 2 Florian3k |
| 230 | + 2 HarrisL2 |
| 231 | + 2 Joel Wilsson |
| 232 | + 2 Jędrzej Rochala |
| 233 | + 2 Kenji Yoshida |
| 234 | + 1 Eugene Yokota |
| 235 | + 1 Kavin Satheeskumar |
| 236 | + 1 Lorenzo Gabriele |
| 237 | + 1 Michel Charpentier |
| 238 | + 1 Ondrej Lhotak |
| 239 | + 1 Raphael Jolly |
| 240 | + 1 Tomasz Godzik |
| 241 | + 1 Yuito Murase |
| 242 | + 1 crunchyfrog |
| 243 | + 1 philippus |
| 244 | +``` |
0 commit comments