diff --git a/changelogs/3.3.6-RC1.md b/changelogs/3.3.6-RC1.md new file mode 100644 index 000000000000..e51c46523772 --- /dev/null +++ b/changelogs/3.3.6-RC1.md @@ -0,0 +1,252 @@ +# Highlights of the release + +- Partial Fix #21242: Add REPL init script setting [#22206](https://github.com/scala/scala3/pull/22206) +- Update asm to patched 9.7.1 [#22250](https://github.com/scala/scala3/pull/22250) +- REPL: Add back `:silent` command [#22248](https://github.com/scala/scala3/pull/22248) +- Scala 2 forwardport: `-Yprofile-trace` [#19897](https://github.com/scala/scala3/pull/19897) + +# Other changes and fixes + +## Annotations + +- Make sure symbols in annotation trees are fresh before pickling [#22002](https://github.com/scala/scala3/pull/22002) +- Fix Java parsing of annotations on qualified types [#21867](https://github.com/scala/scala3/pull/21867) +- Rename `InlineCopier` to `ConservativeTreeCopier`, use it in `TypeMap`s [#21941](https://github.com/scala/scala3/pull/21941) +- Consider all arguments in Annotations.refersToParamOf [#22001](https://github.com/scala/scala3/pull/22001) + +## Backend + +- Flag class file collision as error [#19332](https://github.com/scala/scala3/pull/19332) +- Backend computes line number from source of position [#21763](https://github.com/scala/scala3/pull/21763) + +## CI + +- In CI, use new standard scala/cla-checker action [#22203](https://github.com/scala/scala3/pull/22203) +- Cancel stale CI executions when CI is re-triggered in the same branch/PR [#21974](https://github.com/scala/scala3/pull/21974) +- Drop support for old experimental in community-build [#21729](https://github.com/scala/scala3/pull/21729) + +## Coverage + +- Fix coverage serialization when encountering macro suspension [#22303](https://github.com/scala/scala3/pull/22303) + +## Dependencies + +- Sbt 1.10.5 (was 1.9.9) [#20157](https://github.com/scala/scala3/pull/20157) +- Scala 2.13.16 (was .15) [#22386](https://github.com/scala/scala3/pull/22386) + +## Desugaring + +- Fix #22051: only trust the type application part for case class unapplies [#22099](https://github.com/scala/scala3/pull/22099) + +## Documentation + +- Fix: typo in documentation for Tuple.zip [#22313](https://github.com/scala/scala3/pull/22313) +- Copyright 2025 [#22326](https://github.com/scala/scala3/pull/22326) +- Documentation only: update Example code linked to obsolete content in macros-spec.md [#22256](https://github.com/scala/scala3/pull/22256) +- Doc fix, removed repeated use of the word with [#21915](https://github.com/scala/scala3/pull/21915) +- Fix typos [#21913](https://github.com/scala/scala3/pull/21913) + +## Enums + +- Add type parameters derived from enum to default param getters of enum cases [#22157](https://github.com/scala/scala3/pull/22157) + +## Extension Methods + +- Add regression test for #22320 [#22321](https://github.com/scala/scala3/pull/22321) +- Tweak ExtensionNullifiedByMember [#22268](https://github.com/scala/scala3/pull/22268) + +# Infrastructure + +- Improve, document and group versioning code in `Build.scala` [#21837](https://github.com/scala/scala3/pull/21837) +- Fix: drop jackson-module-scala from CB [#22353](https://github.com/scala/scala3/pull/22353) +- Fix inductive-implicits benchmark [#22007](https://github.com/scala/scala3/pull/22007) +- Remove tests/pos-with-compiler-cc from VSCode ignored files [#22198](https://github.com/scala/scala3/pull/22198) +- Bump webrick from 1.8.2 to 1.9.1 in /docs/_spec [#22066](https://github.com/scala/scala3/pull/22066) +- Fix Windows OS detection in TraceNameManglingTest [#21937](https://github.com/scala/scala3/pull/21937) +- Don't warn for deprecated Thread.getId() calls in `ChromeTrace` [#21831](https://github.com/scala/scala3/pull/21831) +- Improvement: Remove workaround for Bloop and update docs [#21842](https://github.com/scala/scala3/pull/21842) +- Ensure ChromeTraceTest event timestamps are emitted in correct invervals [#21911](https://github.com/scala/scala3/pull/21911) +- Remove tests/pos-with-compiler-cc [#21956](https://github.com/scala/scala3/pull/21956) +- Shade scalajs.ir under dotty.tools [#21765](https://github.com/scala/scala3/pull/21765) + +## Implicits + +- Rollback constraints in compareAppliedTypeParamRef [#22339](https://github.com/scala/scala3/pull/22339) +- Apply implicit conversion from derived Conversion instance defined as implicit rather than given [#21785](https://github.com/scala/scala3/pull/21785) + +## Imports + +- Allow imports nested in packagings to shadow [#21539](https://github.com/scala/scala3/pull/21539) + +## Inline + +- Fix inline reduction for CaseDef guards with asInstanceOf [#22305](https://github.com/scala/scala3/pull/22305) +- Avoid using the current denotation in NamedType.disambiguate [#21414](https://github.com/scala/scala3/pull/21414) + +## Linting + +- Append instead of prepending import selectors for the current scope when collecting them in CheckUnused [#22314](https://github.com/scala/scala3/pull/22314) +- Allow discarding "Discarded non-Unit" warnings with `: Unit` [#21927](https://github.com/scala/scala3/pull/21927) +- Disallow open modifier on objects [#21922](https://github.com/scala/scala3/pull/21922) +- Only count associated files of direct members of package objects in dropStale [#22190](https://github.com/scala/scala3/pull/22190) + +## Metaprogramming + +- Rethrow SuspendExceptions caught in CodeGen phase [#22009](https://github.com/scala/scala3/pull/22009) +- Extend compiletime.testing.typechecks with certain transform phases [#21185](https://github.com/scala/scala3/pull/21185) + +# Match Types + +- Fix #21841: Check more that an `unapplySeq` on a `NonEmptyTuple` is valid. [#22366](https://github.com/scala/scala3/pull/22366) +- Type avoidance in MT bound inference [#22142](https://github.com/scala/scala3/pull/22142) + + +## Nullability + +- Fix #21619: Refactor NotNullInfo to record every reference which is retracted once. [#21624](https://github.com/scala/scala3/pull/21624) + +## Parser + +- Fix: don't consider `into` as a soft-modifier [#21924](https://github.com/scala/scala3/pull/21924) +- Fix: Allow `as` as an infix type in non context bound types [#21849](https://github.com/scala/scala3/pull/21849) +- Undo patch of double-block apply [#21982](https://github.com/scala/scala3/pull/21982) + +## Pattern Matching + +- (Re-)Drop inaccessible subclasses from refineUsingParent [#21930](https://github.com/scala/scala3/pull/21930) +- Fix #21914: Don't project nested wildcard patterns to nullable [#21934](https://github.com/scala/scala3/pull/21934) +- Fix use of class terms in match analysis [#21848](https://github.com/scala/scala3/pull/21848) +- Fix provablyDisjoint handling enum constants with mixins [#21876](https://github.com/scala/scala3/pull/21876) +- Do not consider uninhabited constructors when performing exhaustive match checking [#21750](https://github.com/scala/scala3/pull/21750) + +## Pickling + +- Avoid orphan param from default arg [#21824](https://github.com/scala/scala3/pull/21824) +- Make sure definition tree has the defined symbol [#21851](https://github.com/scala/scala3/pull/21851) + +## Presentation Compiler + +- Use new infer expected type for singleton complations [#21421](https://github.com/scala/scala3/pull/21421) +- Fix presentation compiler testcases [#22253](https://github.com/scala/scala3/pull/22253) +- Fix match error in keyword completions [#22138](https://github.com/scala/scala3/pull/22138) +- Add test cases project for presentation compiler [#22101](https://github.com/scala/scala3/pull/22101) +- Improvement: Update mtags to 1.4.1 and backport remaining changes [#21859](https://github.com/scala/scala3/pull/21859) +- Backport changes for the presentation compiler from Metals [#21756](https://github.com/scala/scala3/pull/21756) + +## Quotes + +- Fix tupleTypeFromSeq for XXL tuples [#21782](https://github.com/scala/scala3/pull/21782) +- Do not bring forward symbols created in transform and backend phases [#21865](https://github.com/scala/scala3/pull/21865) +- Fix #20471: owners of top-level symbols in cached quoted code being incorrect [#21945](https://github.com/scala/scala3/pull/21945) +- Fix for macro annotation that resolves macro-based implicit crashing the compiler [#20353](https://github.com/scala/scala3/pull/20353) +- Allow macro annotations to recover from suspension [#21969](https://github.com/scala/scala3/pull/21969) + +# REPL + +- 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) +- Fix #9879: allow top-level opaque type definitions in REPL [#21753](https://github.com/scala/scala3/pull/21753) + +## Reflection + +- Do not return java outline dummy constructor in `primaryConstructor` [#22104](https://github.com/scala/scala3/pull/22104) + +## Reporting + +- Normalise the types for Type Mismatch Error (E007) [#22337](https://github.com/scala/scala3/pull/22337) +- Do not warn about expected missing positions in quotes.reflect.Symbol [#21677](https://github.com/scala/scala3/pull/21677) +- Add missing error messages to asserts in QuotesImpl [#21852](https://github.com/scala/scala3/pull/21852) +- Don't point to the compiler backlog when a compiler plugin phase crashes [#21887](https://github.com/scala/scala3/pull/21887) +- Nowarn extension matching nonpublic member [#21825](https://github.com/scala/scala3/pull/21825) +- Fix: better error messages when an enum derives from AnyVal [#22236](https://github.com/scala/scala3/pull/22236) + +## Scaladoc + +- [ISSUE-#19208] If scaladocs on file protocol don't do SPA routing. [#22013](https://github.com/scala/scala3/pull/22013) +- Fix scaladoc graph highlight background color in dark mode [#21814](https://github.com/scala/scala3/pull/21814) + +## SemanticDB + +- Extract semanticDB for lifted definitions [#21856](https://github.com/scala/scala3/pull/21856) + +## Specification + +- Align the spec to allow the marker [#22323](https://github.com/scala/scala3/pull/22323) +- Fix #20271: Bring for comprehension spec up to date. [#21702](https://github.com/scala/scala3/pull/21702) +- Spec: Integrate the specification for match types. [#22164](https://github.com/scala/scala3/pull/22164) + +## Settings + +- Limit exposure to ConcurrentModificationException when sys props are replaced or mutated [#22180](https://github.com/scala/scala3/pull/22180) + +# Tooling + +- Connect the input to the compiler in `sbt` [#22336](https://github.com/scala/scala3/pull/22336) +- Ensure to escape characters before constructing JSON profile trace [#21872](https://github.com/scala/scala3/pull/21872) +- Fix: correctly print literal types in the refined printer [#22351](https://github.com/scala/scala3/pull/22351) + +## Transform + +- Attempt to beta reduce only if parameters and arguments have same shape [#21970](https://github.com/scala/scala3/pull/21970) +- Fix enclosingClass from returning refinement classes [#21411](https://github.com/scala/scala3/pull/21411) +- Fix #22226: Use `classOf[BoxedUnit]` for Unit array in `ArrayConstructors`. [#22238](https://github.com/scala/scala3/pull/22238) +- Fix typo in `allTermArguments` [#21836](https://github.com/scala/scala3/pull/21836) + +## Typer + +- Fixes for isLegalPrefix change [#22241](https://github.com/scala/scala3/pull/22241) +- Resolve name when named imp is behind wild imps [#21888](https://github.com/scala/scala3/pull/21888) +- 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) +- Allow autotupling if fn's param is a type param [#21741](https://github.com/scala/scala3/pull/21741) +- Fix ctx implicits under case unapplySeq [#21748](https://github.com/scala/scala3/pull/21748) +- Avoid using ExplainingTypeComparer in regular code [#21583](https://github.com/scala/scala3/pull/21583) +- Avoid erasure/preErasure issues around Any in transformIsInstanceOf [#21647](https://github.com/scala/scala3/pull/21647) +- Remove tvars introduced while testing normalizedCompatible [#21466](https://github.com/scala/scala3/pull/21466) + +## Miscellaneous + +- Replace deprecated AnyRefMap [#22230](https://github.com/scala/scala3/pull/22230) + +# Contributors + +Thank you to all the contributors who made this release possible 🎉 + +According to git shortlog -sn --no-merges 3.3.5..3.3.6-RC1 these are: + +``` + 63 Tomasz Godzik + 30 Dale Wijnand + 26 Wojciech Mazur + 20 noti0na1 + 15 Hamza Remmal + 15 Matt Bovel + 10 Jan Chyb + 9 Kacper Korban + 6 Som Snytt + 4 Sébastien Doeraene + 3 HarrisL2 + 3 Jamie Thompson + 3 Martin Odersky + 3 Seth Tisue + 3 kasiaMarek + 2 Friendseeker + 2 João Ferreira + 2 Kenji Yoshida + 2 Natsu Kagami + 2 Pascal Weisenburger + 2 dependabot[bot] + 1 Adrien Piquerez + 1 Alden Torres + 1 Alexander + 1 Georgi Krastev + 1 Guillaume Martres + 1 Jentsch + 1 Lunfu Zhong + 1 Mathias + 1 Michał Pałka + 1 Oleg Zenzin + 1 Oliver Bračevac + 1 friendseeker + 1 philippus + 1 tgodzik + 1 xiaoshihou +``` diff --git a/changelogs/3.3.6-RC2.md b/changelogs/3.3.6-RC2.md new file mode 100644 index 000000000000..28f9da5f3eea --- /dev/null +++ b/changelogs/3.3.6-RC2.md @@ -0,0 +1,13 @@ +# Reverted changes + +- Do not lift annotation arguments [#22035](https://github.com/scala/scala3/pull/22035) and [#22046](https://github.com/scala/scala3/pull/22046) + +# Contributors + +Thank you to all theq contributors who made this release possible 🎉 + +According to `git shortlog -sn --no-merges 3.3.6-RC1..3.3.6-RC2` these are: + +``` + 3 Tomasz Godzik +``` diff --git a/changelogs/3.3.6-RC3.md b/changelogs/3.3.6-RC3.md new file mode 100644 index 000000000000..4dd8e2dfd223 --- /dev/null +++ b/changelogs/3.3.6-RC3.md @@ -0,0 +1,16 @@ +# Backported fixes + +- classfile reader: handle JDK 9+ constant types in constant pool [#19533](https://github.com/scala/scala3/pull/19533) +- Update asm to 9.8.0 [#23004](https://github.com/scala/scala3/pull/23004) + +# Contributors + +Thank you to all theq contributors who made this release possible 🎉 + +According to `git shortlog -sn --no-merges 3.3.6-RC2..3.3.6-RC3` these are: + +``` + 2 Seth Tisue + 1 Tomasz Godzik + 1 philippus +``` diff --git a/changelogs/3.3.6.md b/changelogs/3.3.6.md new file mode 100644 index 000000000000..189911d99178 --- /dev/null +++ b/changelogs/3.3.6.md @@ -0,0 +1,253 @@ +# Highlights of the release + +- REPL: Add REPL init script setting [#22206](https://github.com/scala/scala3/pull/22206) +- Update asm to patched 9.8.0 to support new JDK versions [#23004](https://github.com/scala/scala3/pull/23004) +- classfile reader: handle JDK 9+ constant types in constant pool [#19533](https://github.com/scala/scala3/pull/19533) +- REPL: Add back `:silent` command [#22248](https://github.com/scala/scala3/pull/22248) +- Scala 2 forward port: `-Yprofile-trace` [#19897](https://github.com/scala/scala3/pull/19897) + +# Other changes and fixes + +## Annotations + +- Make sure symbols in annotation trees are fresh before pickling [#22002](https://github.com/scala/scala3/pull/22002) +- Fix Java parsing of annotations on qualified types [#21867](https://github.com/scala/scala3/pull/21867) +- Rename `InlineCopier` to `ConservativeTreeCopier`, use it in `TypeMap`s [#21941](https://github.com/scala/scala3/pull/21941) +- Consider all arguments in Annotations.refersToParamOf [#22001](https://github.com/scala/scala3/pull/22001) + +## Backend + +- Flag class file collision as error [#19332](https://github.com/scala/scala3/pull/19332) +- Backend computes line number from source of position [#21763](https://github.com/scala/scala3/pull/21763) + +## CI + +- In CI, use new standard scala/cla-checker action [#22203](https://github.com/scala/scala3/pull/22203) +- Cancel stale CI executions when CI is re-triggered in the same branch/PR [#21974](https://github.com/scala/scala3/pull/21974) +- Drop support for old experimental in community-build [#21729](https://github.com/scala/scala3/pull/21729) + +## Coverage + +- Fix coverage serialization when encountering macro suspension [#22303](https://github.com/scala/scala3/pull/22303) + +## Dependencies + +- Sbt 1.10.5 (was 1.9.9) [#20157](https://github.com/scala/scala3/pull/20157) +- Scala 2.13.16 (was .15) [#22386](https://github.com/scala/scala3/pull/22386) + +## Desugaring + +- Fix #22051: only trust the type application part for case class unapplies [#22099](https://github.com/scala/scala3/pull/22099) + +## Documentation + +- Fix: typo in documentation for Tuple.zip [#22313](https://github.com/scala/scala3/pull/22313) +- Copyright 2025 [#22326](https://github.com/scala/scala3/pull/22326) +- Documentation only: update Example code linked to obsolete content in macros-spec.md [#22256](https://github.com/scala/scala3/pull/22256) +- Doc fix, removed repeated use of the word with [#21915](https://github.com/scala/scala3/pull/21915) +- Fix typos [#21913](https://github.com/scala/scala3/pull/21913) + +## Enums + +- Add type parameters derived from enum to default param getters of enum cases [#22157](https://github.com/scala/scala3/pull/22157) + +## Extension Methods + +- Add regression test for #22320 [#22321](https://github.com/scala/scala3/pull/22321) +- Tweak ExtensionNullifiedByMember [#22268](https://github.com/scala/scala3/pull/22268) + +# Infrastructure + +- Improve, document and group versioning code in `Build.scala` [#21837](https://github.com/scala/scala3/pull/21837) +- Fix: drop jackson-module-scala from CB [#22353](https://github.com/scala/scala3/pull/22353) +- Fix inductive-implicits benchmark [#22007](https://github.com/scala/scala3/pull/22007) +- Remove tests/pos-with-compiler-cc from VSCode ignored files [#22198](https://github.com/scala/scala3/pull/22198) +- Bump webrick from 1.8.2 to 1.9.1 in /docs/_spec [#22066](https://github.com/scala/scala3/pull/22066) +- Fix Windows OS detection in TraceNameManglingTest [#21937](https://github.com/scala/scala3/pull/21937) +- Don't warn for deprecated Thread.getId() calls in `ChromeTrace` [#21831](https://github.com/scala/scala3/pull/21831) +- Improvement: Remove workaround for Bloop and update docs [#21842](https://github.com/scala/scala3/pull/21842) +- Ensure ChromeTraceTest event timestamps are emitted in correct invervals [#21911](https://github.com/scala/scala3/pull/21911) +- Remove tests/pos-with-compiler-cc [#21956](https://github.com/scala/scala3/pull/21956) +- Shade scalajs.ir under dotty.tools [#21765](https://github.com/scala/scala3/pull/21765) + +## Implicits + +- Rollback constraints in compareAppliedTypeParamRef [#22339](https://github.com/scala/scala3/pull/22339) +- Apply implicit conversion from derived Conversion instance defined as implicit rather than given [#21785](https://github.com/scala/scala3/pull/21785) + +## Imports + +- Allow imports nested in packagings to shadow [#21539](https://github.com/scala/scala3/pull/21539) + +## Inline + +- Fix inline reduction for CaseDef guards with asInstanceOf [#22305](https://github.com/scala/scala3/pull/22305) +- Avoid using the current denotation in NamedType.disambiguate [#21414](https://github.com/scala/scala3/pull/21414) + +## Linting + +- Append instead of prepending import selectors for the current scope when collecting them in CheckUnused [#22314](https://github.com/scala/scala3/pull/22314) +- Allow discarding "Discarded non-Unit" warnings with `: Unit` [#21927](https://github.com/scala/scala3/pull/21927) +- Disallow open modifier on objects [#21922](https://github.com/scala/scala3/pull/21922) +- Only count associated files of direct members of package objects in dropStale [#22190](https://github.com/scala/scala3/pull/22190) + +## Metaprogramming + +- Rethrow SuspendExceptions caught in CodeGen phase [#22009](https://github.com/scala/scala3/pull/22009) +- Extend compiletime.testing.typechecks with certain transform phases [#21185](https://github.com/scala/scala3/pull/21185) + +# Match Types + +- Fix #21841: Check more that an `unapplySeq` on a `NonEmptyTuple` is valid. [#22366](https://github.com/scala/scala3/pull/22366) +- Type avoidance in MT bound inference [#22142](https://github.com/scala/scala3/pull/22142) + + +## Nullability + +- Fix #21619: Refactor NotNullInfo to record every reference which is retracted once. [#21624](https://github.com/scala/scala3/pull/21624) + +## Parser + +- Fix: don't consider `into` as a soft-modifier [#21924](https://github.com/scala/scala3/pull/21924) +- Fix: Allow `as` as an infix type in non context bound types [#21849](https://github.com/scala/scala3/pull/21849) +- Undo patch of double-block apply [#21982](https://github.com/scala/scala3/pull/21982) + +## Pattern Matching + +- (Re-)Drop inaccessible subclasses from refineUsingParent [#21930](https://github.com/scala/scala3/pull/21930) +- Fix #21914: Don't project nested wildcard patterns to nullable [#21934](https://github.com/scala/scala3/pull/21934) +- Fix use of class terms in match analysis [#21848](https://github.com/scala/scala3/pull/21848) +- Fix provablyDisjoint handling enum constants with mixins [#21876](https://github.com/scala/scala3/pull/21876) +- Do not consider uninhabited constructors when performing exhaustive match checking [#21750](https://github.com/scala/scala3/pull/21750) + +## Pickling + +- Avoid orphan param from default arg [#21824](https://github.com/scala/scala3/pull/21824) +- Make sure definition tree has the defined symbol [#21851](https://github.com/scala/scala3/pull/21851) + +## Presentation Compiler + +- Use new infer expected type for singleton complations [#21421](https://github.com/scala/scala3/pull/21421) +- Fix presentation compiler testcases [#22253](https://github.com/scala/scala3/pull/22253) +- Fix match error in keyword completions [#22138](https://github.com/scala/scala3/pull/22138) +- Add test cases project for presentation compiler [#22101](https://github.com/scala/scala3/pull/22101) +- Improvement: Update mtags to 1.4.1 and backport remaining changes [#21859](https://github.com/scala/scala3/pull/21859) +- Backport changes for the presentation compiler from Metals [#21756](https://github.com/scala/scala3/pull/21756) + +## Quotes + +- Fix tupleTypeFromSeq for XXL tuples [#21782](https://github.com/scala/scala3/pull/21782) +- Do not bring forward symbols created in transform and backend phases [#21865](https://github.com/scala/scala3/pull/21865) +- Fix #20471: owners of top-level symbols in cached quoted code being incorrect [#21945](https://github.com/scala/scala3/pull/21945) +- Fix for macro annotation that resolves macro-based implicit crashing the compiler [#20353](https://github.com/scala/scala3/pull/20353) +- Allow macro annotations to recover from suspension [#21969](https://github.com/scala/scala3/pull/21969) + +# REPL + +- 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) +- Fix #9879: allow top-level opaque type definitions in REPL [#21753](https://github.com/scala/scala3/pull/21753) + +## Reflection + +- Do not return java outline dummy constructor in `primaryConstructor` [#22104](https://github.com/scala/scala3/pull/22104) + +## Reporting + +- Normalise the types for Type Mismatch Error (E007) [#22337](https://github.com/scala/scala3/pull/22337) +- Do not warn about expected missing positions in quotes.reflect.Symbol [#21677](https://github.com/scala/scala3/pull/21677) +- Add missing error messages to asserts in QuotesImpl [#21852](https://github.com/scala/scala3/pull/21852) +- Don't point to the compiler backlog when a compiler plugin phase crashes [#21887](https://github.com/scala/scala3/pull/21887) +- Nowarn extension matching nonpublic member [#21825](https://github.com/scala/scala3/pull/21825) +- Fix: better error messages when an enum derives from AnyVal [#22236](https://github.com/scala/scala3/pull/22236) + +## Scaladoc + +- [ISSUE-#19208] If scaladocs on file protocol don't do SPA routing. [#22013](https://github.com/scala/scala3/pull/22013) +- Fix scaladoc graph highlight background color in dark mode [#21814](https://github.com/scala/scala3/pull/21814) + +## SemanticDB + +- Extract semanticDB for lifted definitions [#21856](https://github.com/scala/scala3/pull/21856) + +## Specification + +- Align the spec to allow the marker [#22323](https://github.com/scala/scala3/pull/22323) +- Fix #20271: Bring for comprehension spec up to date. [#21702](https://github.com/scala/scala3/pull/21702) +- Spec: Integrate the specification for match types. [#22164](https://github.com/scala/scala3/pull/22164) + +## Settings + +- Limit exposure to ConcurrentModificationException when sys props are replaced or mutated [#22180](https://github.com/scala/scala3/pull/22180) + +# Tooling + +- Connect the input to the compiler in `sbt` [#22336](https://github.com/scala/scala3/pull/22336) +- Ensure to escape characters before constructing JSON profile trace [#21872](https://github.com/scala/scala3/pull/21872) +- Fix: correctly print literal types in the refined printer [#22351](https://github.com/scala/scala3/pull/22351) + +## Transform + +- Attempt to beta reduce only if parameters and arguments have same shape [#21970](https://github.com/scala/scala3/pull/21970) +- Fix enclosingClass from returning refinement classes [#21411](https://github.com/scala/scala3/pull/21411) +- Fix #22226: Use `classOf[BoxedUnit]` for Unit array in `ArrayConstructors`. [#22238](https://github.com/scala/scala3/pull/22238) +- Fix typo in `allTermArguments` [#21836](https://github.com/scala/scala3/pull/21836) + +## Typer + +- Fixes for isLegalPrefix change [#22241](https://github.com/scala/scala3/pull/22241) +- Resolve name when named imp is behind wild imps [#21888](https://github.com/scala/scala3/pull/21888) +- 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) +- Allow autotupling if fn's param is a type param [#21741](https://github.com/scala/scala3/pull/21741) +- Fix ctx implicits under case unapplySeq [#21748](https://github.com/scala/scala3/pull/21748) +- Avoid using ExplainingTypeComparer in regular code [#21583](https://github.com/scala/scala3/pull/21583) +- Avoid erasure/preErasure issues around Any in transformIsInstanceOf [#21647](https://github.com/scala/scala3/pull/21647) +- Remove tvars introduced while testing normalizedCompatible [#21466](https://github.com/scala/scala3/pull/21466) + +## Miscellaneous + +- Replace deprecated AnyRefMap [#22230](https://github.com/scala/scala3/pull/22230) + +# Contributors + +Thank you to all the contributors who made this release possible 🎉 + +According to git shortlog -sn --no-merges 3.3.5..3.3.6-RC1 these are: + +``` + 63 Tomasz Godzik + 30 Dale Wijnand + 26 Wojciech Mazur + 20 noti0na1 + 15 Hamza Remmal + 15 Matt Bovel + 10 Jan Chyb + 9 Kacper Korban + 6 Som Snytt + 4 Sébastien Doeraene + 3 HarrisL2 + 3 Jamie Thompson + 3 Martin Odersky + 3 Seth Tisue + 3 kasiaMarek + 2 Friendseeker + 2 João Ferreira + 2 Kenji Yoshida + 2 Natsu Kagami + 2 Pascal Weisenburger + 2 dependabot[bot] + 1 Adrien Piquerez + 1 Alden Torres + 1 Alexander + 1 Georgi Krastev + 1 Guillaume Martres + 1 Jentsch + 1 Lunfu Zhong + 1 Mathias + 1 Michał Pałka + 1 Oleg Zenzin + 1 Oliver Bračevac + 1 friendseeker + 1 philippus + 1 tgodzik + 1 xiaoshihou +```