|  | 
|  | 1 | +# Highlights of the release | 
|  | 2 | + | 
|  | 3 | +- REPL: Add REPL init script setting [#22206](https://github.com/scala/scala3/pull/22206) | 
|  | 4 | +- Update asm to patched 9.8.0 to support new JDK versions [#23004](https://github.com/scala/scala3/pull/23004) | 
|  | 5 | +- classfile reader: handle JDK 9+ constant types in constant pool [#19533](https://github.com/scala/scala3/pull/19533) | 
|  | 6 | +- REPL: Add back `:silent` command [#22248](https://github.com/scala/scala3/pull/22248) | 
|  | 7 | +- Scala 2 forward port: `-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