|
| 1 | +# Highlights of the release |
| 2 | + |
| 3 | +- Partial Fix #21242: Add REPL init script setting [#22206](https://github.com/scala/scala3/pull/22206) |
| 4 | +- Update asm to patched 9.7.1 [#22250](https://github.com/scala/scala3/pull/22250) |
| 5 | +- REPL: Add back `:silent` command [#22248](https://github.com/scala/scala3/pull/22248) |
| 6 | +- Do not lift annotation arguments [#22035](https://github.com/scala/scala3/pull/22035) and [#22046](https://github.com/scala/scala3/pull/22046) |
| 7 | +- Scala 2 forwardport: `-Yprofile-trace` [#19897](https://github.com/scala/scala3/pull/19897) |
| 8 | + |
| 9 | +# Other changes and fixes |
| 10 | + |
| 11 | +## Annotations |
| 12 | + |
| 13 | +- Make sure symbols in annotation trees are fresh before pickling [#22002](https://github.com/scala/scala3/pull/22002) |
| 14 | +- Fix Java parsing of annotations on qualified types [#21867](https://github.com/scala/scala3/pull/21867) |
| 15 | +- Rename `InlineCopier` to `ConservativeTreeCopier`, use it in `TypeMap`s [#21941](https://github.com/scala/scala3/pull/21941) |
| 16 | +- Consider all arguments in Annotations.refersToParamOf [#22001](https://github.com/scala/scala3/pull/22001) |
| 17 | + |
| 18 | +## Backend |
| 19 | + |
| 20 | +- Flag class file collision as error [#19332](https://github.com/scala/scala3/pull/19332) |
| 21 | +- Backend computes line number from source of position [#21763](https://github.com/scala/scala3/pull/21763) |
| 22 | + |
| 23 | +## CI |
| 24 | + |
| 25 | +- In CI, use new standard scala/cla-checker action [#22203](https://github.com/scala/scala3/pull/22203) |
| 26 | +- Cancel stale CI executions when CI is re-triggered in the same branch/PR [#21974](https://github.com/scala/scala3/pull/21974) |
| 27 | +- Drop support for old experimental in community-build [#21729](https://github.com/scala/scala3/pull/21729) |
| 28 | + |
| 29 | +## Coverage |
| 30 | + |
| 31 | +- Fix coverage serialization when encountering macro suspension [#22303](https://github.com/scala/scala3/pull/22303) |
| 32 | + |
| 33 | +## Dependencies |
| 34 | + |
| 35 | +- Sbt 1.10.5 (was 1.9.9) [#20157](https://github.com/scala/scala3/pull/20157) |
| 36 | +- Scala 2.13.16 (was .15) [#22386](https://github.com/scala/scala3/pull/22386) |
| 37 | + |
| 38 | +## Desugaring |
| 39 | + |
| 40 | +- Fix #22051: only trust the type application part for case class unapplies [#22099](https://github.com/scala/scala3/pull/22099) |
| 41 | + |
| 42 | +## Documentation |
| 43 | + |
| 44 | +- Fix: typo in documentation for Tuple.zip [#22313](https://github.com/scala/scala3/pull/22313) |
| 45 | +- Copyright 2025 [#22326](https://github.com/scala/scala3/pull/22326) |
| 46 | +- Documentation only: update Example code linked to obsolete content in macros-spec.md [#22256](https://github.com/scala/scala3/pull/22256) |
| 47 | +- Doc fix, removed repeated use of the word with [#21915](https://github.com/scala/scala3/pull/21915) |
| 48 | +- Fix typos [#21913](https://github.com/scala/scala3/pull/21913) |
| 49 | + |
| 50 | +## Enums |
| 51 | + |
| 52 | +- Add type parameters derived from enum to default param getters of enum cases [#22157](https://github.com/scala/scala3/pull/22157) |
| 53 | + |
| 54 | +## Extension Methods |
| 55 | + |
| 56 | +- Add regression test for #22320 [#22321](https://github.com/scala/scala3/pull/22321) |
| 57 | +- Tweak ExtensionNullifiedByMember [#22268](https://github.com/scala/scala3/pull/22268) |
| 58 | + |
| 59 | +# Infrastructure |
| 60 | + |
| 61 | +- Improve, document and group versioning code in `Build.scala` [#21837](https://github.com/scala/scala3/pull/21837) |
| 62 | +- Fix: drop jackson-module-scala from CB [#22353](https://github.com/scala/scala3/pull/22353) |
| 63 | +- Fix inductive-implicits benchmark [#22007](https://github.com/scala/scala3/pull/22007) |
| 64 | +- Remove tests/pos-with-compiler-cc from VSCode ignored files [#22198](https://github.com/scala/scala3/pull/22198) |
| 65 | +- Bump webrick from 1.8.2 to 1.9.1 in /docs/_spec [#22066](https://github.com/scala/scala3/pull/22066) |
| 66 | +- Fix Windows OS detection in TraceNameManglingTest [#21937](https://github.com/scala/scala3/pull/21937) |
| 67 | +- Don't warn for deprecated Thread.getId() calls in `ChromeTrace` [#21831](https://github.com/scala/scala3/pull/21831) |
| 68 | +- Improvement: Remove workaround for Bloop and update docs [#21842](https://github.com/scala/scala3/pull/21842) |
| 69 | +- Ensure ChromeTraceTest event timestamps are emitted in correct invervals [#21911](https://github.com/scala/scala3/pull/21911) |
| 70 | +- Remove tests/pos-with-compiler-cc [#21956](https://github.com/scala/scala3/pull/21956) |
| 71 | +- Shade scalajs.ir under dotty.tools [#21765](https://github.com/scala/scala3/pull/21765) |
| 72 | + |
| 73 | +## Implicits |
| 74 | + |
| 75 | +- Rollback constraints in compareAppliedTypeParamRef [#22339](https://github.com/scala/scala3/pull/22339) |
| 76 | +- Apply implicit conversion from derived Conversion instance defined as implicit rather than given [#21785](https://github.com/scala/scala3/pull/21785) |
| 77 | + |
| 78 | +## Imports |
| 79 | + |
| 80 | +- Allow imports nested in packagings to shadow [#21539](https://github.com/scala/scala3/pull/21539) |
| 81 | + |
| 82 | +## Inline |
| 83 | + |
| 84 | +- Fix inline reduction for CaseDef guards with asInstanceOf [#22305](https://github.com/scala/scala3/pull/22305) |
| 85 | +- Avoid using the current denotation in NamedType.disambiguate [#21414](https://github.com/scala/scala3/pull/21414) |
| 86 | + |
| 87 | +## Linting |
| 88 | + |
| 89 | +- Append instead of prepending import selectors for the current scope when collecting them in CheckUnused [#22314](https://github.com/scala/scala3/pull/22314) |
| 90 | +- Allow discarding "Discarded non-Unit" warnings with `: Unit` [#21927](https://github.com/scala/scala3/pull/21927) |
| 91 | +- Disallow open modifier on objects [#21922](https://github.com/scala/scala3/pull/21922) |
| 92 | +- Only count associated files of direct members of package objects in dropStale [#22190](https://github.com/scala/scala3/pull/22190) |
| 93 | + |
| 94 | +## Metaprogramming |
| 95 | + |
| 96 | +- Rethrow SuspendExceptions caught in CodeGen phase [#22009](https://github.com/scala/scala3/pull/22009) |
| 97 | +- Extend compiletime.testing.typechecks with certain transform phases [#21185](https://github.com/scala/scala3/pull/21185) |
| 98 | + |
| 99 | +# Match Types |
| 100 | + |
| 101 | +- Fix #21841: Check more that an `unapplySeq` on a `NonEmptyTuple` is valid. [#22366](https://github.com/scala/scala3/pull/22366) |
| 102 | +- Type avoidance in MT bound inference [#22142](https://github.com/scala/scala3/pull/22142) |
| 103 | + |
| 104 | + |
| 105 | +## Nullability |
| 106 | + |
| 107 | +- Fix #21619: Refactor NotNullInfo to record every reference which is retracted once. [#21624](https://github.com/scala/scala3/pull/21624) |
| 108 | + |
| 109 | +## Parser |
| 110 | + |
| 111 | +- Fix: don't consider `into` as a soft-modifier [#21924](https://github.com/scala/scala3/pull/21924) |
| 112 | +- Fix: Allow `as` as an infix type in non context bound types [#21849](https://github.com/scala/scala3/pull/21849) |
| 113 | +- Undo patch of double-block apply [#21982](https://github.com/scala/scala3/pull/21982) |
| 114 | + |
| 115 | +## Pattern Matching |
| 116 | + |
| 117 | +- (Re-)Drop inaccessible subclasses from refineUsingParent [#21930](https://github.com/scala/scala3/pull/21930) |
| 118 | +- Fix #21914: Don't project nested wildcard patterns to nullable [#21934](https://github.com/scala/scala3/pull/21934) |
| 119 | +- Fix use of class terms in match analysis [#21848](https://github.com/scala/scala3/pull/21848) |
| 120 | +- Fix provablyDisjoint handling enum constants with mixins [#21876](https://github.com/scala/scala3/pull/21876) |
| 121 | +- Do not consider uninhabited constructors when performing exhaustive match checking [#21750](https://github.com/scala/scala3/pull/21750) |
| 122 | + |
| 123 | +## Pickling |
| 124 | + |
| 125 | +- Avoid orphan param from default arg [#21824](https://github.com/scala/scala3/pull/21824) |
| 126 | +- Make sure definition tree has the defined symbol [#21851](https://github.com/scala/scala3/pull/21851) |
| 127 | + |
| 128 | +## Presentation Compiler |
| 129 | + |
| 130 | +- Use new infer expected type for singleton complations [#21421](https://github.com/scala/scala3/pull/21421) |
| 131 | +- Fix presentation compiler testcases [#22253](https://github.com/scala/scala3/pull/22253) |
| 132 | +- Fix match error in keyword completions [#22138](https://github.com/scala/scala3/pull/22138) |
| 133 | +- Add test cases project for presentation compiler [#22101](https://github.com/scala/scala3/pull/22101) |
| 134 | +- Improvement: Update mtags to 1.4.1 and backport remaining changes [#21859](https://github.com/scala/scala3/pull/21859) |
| 135 | +- Backport changes for the presentation compiler from Metals [#21756](https://github.com/scala/scala3/pull/21756) |
| 136 | + |
| 137 | +## Quotes |
| 138 | + |
| 139 | +- Fix tupleTypeFromSeq for XXL tuples [#21782](https://github.com/scala/scala3/pull/21782) |
| 140 | +- Do not bring forward symbols created in transform and backend phases [#21865](https://github.com/scala/scala3/pull/21865) |
| 141 | +- Fix #20471: owners of top-level symbols in cached quoted code being incorrect [#21945](https://github.com/scala/scala3/pull/21945) |
| 142 | +- Fix for macro annotation that resolves macro-based implicit crashing the compiler [#20353](https://github.com/scala/scala3/pull/20353) |
| 143 | +- Allow macro annotations to recover from suspension [#21969](https://github.com/scala/scala3/pull/21969) |
| 144 | + |
| 145 | +# REPL |
| 146 | + |
| 147 | +- REPL: JLine: follow recommendation to use JNI, not JNA; also JLine 3.27.1 (was 3.27.0) [#22205](https://github.com/scala/scala3/pull/22205) |
| 148 | +- Fix #9879: allow top-level opaque type definitions in REPL [#21753](https://github.com/scala/scala3/pull/21753) |
| 149 | + |
| 150 | +## Reflection |
| 151 | + |
| 152 | +- Do not return java outline dummy constructor in `primaryConstructor` [#22104](https://github.com/scala/scala3/pull/22104) |
| 153 | + |
| 154 | +## Reporting |
| 155 | + |
| 156 | +- Normalise the types for Type Mismatch Error (E007) [#22337](https://github.com/scala/scala3/pull/22337) |
| 157 | +- Do not warn about expected missing positions in quotes.reflect.Symbol [#21677](https://github.com/scala/scala3/pull/21677) |
| 158 | +- Add missing error messages to asserts in QuotesImpl [#21852](https://github.com/scala/scala3/pull/21852) |
| 159 | +- Don't point to the compiler backlog when a compiler plugin phase crashes [#21887](https://github.com/scala/scala3/pull/21887) |
| 160 | +- Nowarn extension matching nonpublic member [#21825](https://github.com/scala/scala3/pull/21825) |
| 161 | +- Fix: better error messages when an enum derives from AnyVal [#22236](https://github.com/scala/scala3/pull/22236) |
| 162 | + |
| 163 | +## Scaladoc |
| 164 | + |
| 165 | +- [ISSUE-#19208] If scaladocs on file protocol don't do SPA routing. [#22013](https://github.com/scala/scala3/pull/22013) |
| 166 | +- Fix scaladoc graph highlight background color in dark mode [#21814](https://github.com/scala/scala3/pull/21814) |
| 167 | + |
| 168 | +## SemanticDB |
| 169 | + |
| 170 | +- Extract semanticDB for lifted definitions [#21856](https://github.com/scala/scala3/pull/21856) |
| 171 | + |
| 172 | +## Specification |
| 173 | + |
| 174 | +- Align the spec to allow the marker [#22323](https://github.com/scala/scala3/pull/22323) |
| 175 | +- Fix #20271: Bring for comprehension spec up to date. [#21702](https://github.com/scala/scala3/pull/21702) |
| 176 | +- Spec: Integrate the specification for match types. [#22164](https://github.com/scala/scala3/pull/22164) |
| 177 | + |
| 178 | +## Settings |
| 179 | + |
| 180 | +- Limit exposure to ConcurrentModificationException when sys props are replaced or mutated [#22180](https://github.com/scala/scala3/pull/22180) |
| 181 | + |
| 182 | +# Tooling |
| 183 | + |
| 184 | +- Connect the input to the compiler in `sbt` [#22336](https://github.com/scala/scala3/pull/22336) |
| 185 | +- Ensure to escape characters before constructing JSON profile trace [#21872](https://github.com/scala/scala3/pull/21872) |
| 186 | +- Fix: correctly print literal types in the refined printer [#22351](https://github.com/scala/scala3/pull/22351) |
| 187 | + |
| 188 | +## Transform |
| 189 | + |
| 190 | +- Attempt to beta reduce only if parameters and arguments have same shape [#21970](https://github.com/scala/scala3/pull/21970) |
| 191 | +- Fix enclosingClass from returning refinement classes [#21411](https://github.com/scala/scala3/pull/21411) |
| 192 | +- Fix #22226: Use `classOf[BoxedUnit]` for Unit array in `ArrayConstructors`. [#22238](https://github.com/scala/scala3/pull/22238) |
| 193 | +- Fix typo in `allTermArguments` [#21836](https://github.com/scala/scala3/pull/21836) |
| 194 | + |
| 195 | +## Typer |
| 196 | + |
| 197 | +- Fixes for isLegalPrefix change [#22241](https://github.com/scala/scala3/pull/22241) |
| 198 | +- Resolve name when named imp is behind wild imps [#21888](https://github.com/scala/scala3/pull/21888) |
| 199 | +- Do not crash when typing a closure with unknown type, since it can occur for erroneous input [#21178](https://github.com/scala/scala3/pull/21178) |
| 200 | +- Allow autotupling if fn's param is a type param [#21741](https://github.com/scala/scala3/pull/21741) |
| 201 | +- Fix ctx implicits under case unapplySeq [#21748](https://github.com/scala/scala3/pull/21748) |
| 202 | +- Avoid using ExplainingTypeComparer in regular code [#21583](https://github.com/scala/scala3/pull/21583) |
| 203 | +- Avoid erasure/preErasure issues around Any in transformIsInstanceOf [#21647](https://github.com/scala/scala3/pull/21647) |
| 204 | +- Remove tvars introduced while testing normalizedCompatible [#21466](https://github.com/scala/scala3/pull/21466) |
| 205 | + |
| 206 | +## Miscellaneous |
| 207 | + |
| 208 | +- Replace deprecated AnyRefMap [#22230](https://github.com/scala/scala3/pull/22230) |
| 209 | + |
| 210 | +# Contributors |
| 211 | + |
| 212 | +Thank you to all the contributors who made this release possible 🎉 |
| 213 | + |
| 214 | +According to git shortlog -sn --no-merges 3.3.5..3.3.6-RC1 these are: |
| 215 | + |
| 216 | +``` |
| 217 | + 63 Tomasz Godzik |
| 218 | + 30 Dale Wijnand |
| 219 | + 26 Wojciech Mazur |
| 220 | + 20 noti0na1 |
| 221 | + 15 Hamza Remmal |
| 222 | + 15 Matt Bovel |
| 223 | + 10 Jan Chyb |
| 224 | + 9 Kacper Korban |
| 225 | + 6 Som Snytt |
| 226 | + 4 Sébastien Doeraene |
| 227 | + 3 HarrisL2 |
| 228 | + 3 Jamie Thompson |
| 229 | + 3 Martin Odersky |
| 230 | + 3 Seth Tisue |
| 231 | + 3 kasiaMarek |
| 232 | + 2 Friendseeker |
| 233 | + 2 João Ferreira |
| 234 | + 2 Kenji Yoshida |
| 235 | + 2 Natsu Kagami |
| 236 | + 2 Pascal Weisenburger |
| 237 | + 2 dependabot[bot] |
| 238 | + 1 Adrien Piquerez |
| 239 | + 1 Alden Torres |
| 240 | + 1 Alexander |
| 241 | + 1 Georgi Krastev |
| 242 | + 1 Guillaume Martres |
| 243 | + 1 Jentsch |
| 244 | + 1 Lunfu Zhong |
| 245 | + 1 Mathias |
| 246 | + 1 Michał Pałka |
| 247 | + 1 Oleg Zenzin |
| 248 | + 1 Oliver Bračevac |
| 249 | + 1 friendseeker |
| 250 | + 1 philippus |
| 251 | + 1 tgodzik |
| 252 | + 1 xiaoshihou |
| 253 | +``` |
0 commit comments