|
| 1 | +# Highlights of the release |
| 2 | + |
| 3 | +- Add REPL init script setting [#22206](https://github.com/scala/scala3/pull/22206) |
| 4 | +- Support for JDK 24 [#22250](https://github.com/scala/scala3/pull/22250) |
| 5 | +- Merge -Xno-decode-stacktraces with -Xno-enrich-error-messages [#22208](https://github.com/scala/scala3/pull/22208) |
| 6 | +- Do not lift annotation arguments [#22035](https://github.com/scala/scala3/pull/22035) |
| 7 | + |
| 8 | +# Other changes and fixes |
| 9 | + |
| 10 | +## Annotations |
| 11 | + |
| 12 | +- Make sure symbols in annotation trees are fresh before pickling [#22002](https://github.com/scala/scala3/pull/22002) |
| 13 | +- Consider all arguments in Annotations.refersToParamOf [#22001](https://github.com/scala/scala3/pull/22001) |
| 14 | +- Do not lift annotation arguments (bis) [#22046](https://github.com/scala/scala3/pull/22046) |
| 15 | + |
| 16 | +## Desugaring |
| 17 | + |
| 18 | +- Fix #22051: only trust the type application part for case class unapplies [#22099](https://github.com/scala/scala3/pull/22099) |
| 19 | + |
| 20 | +## Documentation |
| 21 | + |
| 22 | +- Update example code linked to obsolete content in macros-spec.md [#22256](https://github.com/scala/scala3/pull/22256) |
| 23 | + |
| 24 | +## Experimental: Capture Checking |
| 25 | + |
| 26 | +- Fix #21868, #21869, and #21870: handle CapsOf in more places [#21875](https://github.com/scala/scala3/pull/21875) |
| 27 | +- Refine rules for capture parameters and members [#22000](https://github.com/scala/scala3/pull/22000) |
| 28 | +- Add a hint for using CC with REPL [#22220](https://github.com/scala/scala3/pull/22220) |
| 29 | +- Consolidate CC [#21863](https://github.com/scala/scala3/pull/21863) |
| 30 | + |
| 31 | +## Experimental: Global Initialization |
| 32 | + |
| 33 | +- Fix crash when initializing val in ByName closure [#22354](https://github.com/scala/scala3/pull/22354) |
| 34 | + |
| 35 | +## Experimental: Named Tuples |
| 36 | + |
| 37 | +- Handle TypeProxy of Named Tuples in unapply [#22325](https://github.com/scala/scala3/pull/22325) |
| 38 | +- Fail more eagerly when trying to adapt named unapply patterns [#22315](https://github.com/scala/scala3/pull/22315) |
| 39 | +- Widen singleton types when computing fields from .Fields [#22149](https://github.com/scala/scala3/pull/22149) |
| 40 | +- Fix .toTuple insertion [#22028](https://github.com/scala/scala3/pull/22028) |
| 41 | + |
| 42 | +## Extension Methods |
| 43 | + |
| 44 | +- Tweak ExtensionNullifiedByMember [#22268](https://github.com/scala/scala3/pull/22268) |
| 45 | +- Nowarn extension matching nonpublic member [#21825](https://github.com/scala/scala3/pull/21825) |
| 46 | + |
| 47 | +## Implicits |
| 48 | + |
| 49 | +- Rollback constraints in compareAppliedTypeParamRef [#22339](https://github.com/scala/scala3/pull/22339) |
| 50 | +- Try implicit searching after finding dynamic select [#22318](https://github.com/scala/scala3/pull/22318) |
| 51 | + |
| 52 | +## Inline |
| 53 | + |
| 54 | +- Drop phase.isTyper use in isLegalPrefix/asf [#21954](https://github.com/scala/scala3/pull/21954) |
| 55 | + |
| 56 | +## Linting |
| 57 | + |
| 58 | +- Allow discarding "Discarded non-Unit" warnings with `: Unit` [#21927](https://github.com/scala/scala3/pull/21927) |
| 59 | + |
| 60 | +## Match Types |
| 61 | + |
| 62 | +- Fix #21841: Check more that an `unapplySeq` on a `NonEmptyTuple` is valid. [#22366](https://github.com/scala/scala3/pull/22366) |
| 63 | +- Type avoidance in MT bound inference [#22142](https://github.com/scala/scala3/pull/22142) |
| 64 | + |
| 65 | +## Metaprogramming |
| 66 | + |
| 67 | +- Rethrow SuspendExceptions caught in CodeGen phase [#22009](https://github.com/scala/scala3/pull/22009) |
| 68 | + |
| 69 | +## Metaprogramming: Compile-time |
| 70 | + |
| 71 | +- Extend compiletime.testing.typechecks with certain transform phases [#21185](https://github.com/scala/scala3/pull/21185) |
| 72 | + |
| 73 | +## Nullability |
| 74 | + |
| 75 | +- Fix #21619: Refactor NotNullInfo to record every reference which is retracted once. [#21624](https://github.com/scala/scala3/pull/21624) |
| 76 | + |
| 77 | +## Presentation Compiler |
| 78 | + |
| 79 | +- Use new infer expected type for singleton complations [#21421](https://github.com/scala/scala3/pull/21421) |
| 80 | +- Fix match error in keyword completions [#22138](https://github.com/scala/scala3/pull/22138) |
| 81 | + |
| 82 | +## Reflection |
| 83 | + |
| 84 | +- Do not return java outline dummy constructor in `primaryConstructor` [#22104](https://github.com/scala/scala3/pull/22104) |
| 85 | + |
| 86 | +## Reporting |
| 87 | + |
| 88 | +- Normalise the types for Type Mismatch Error (E007) [#22337](https://github.com/scala/scala3/pull/22337) |
| 89 | +- Improve given search preference warning [#22189](https://github.com/scala/scala3/pull/22189) |
| 90 | +- Better error messages when an enum derives from AnyVal [#22236](https://github.com/scala/scala3/pull/22236) |
| 91 | +- Correctly print litteral types in the refined printer [#22351](https://github.com/scala/scala3/pull/22351) |
| 92 | + |
| 93 | +## Rewrites |
| 94 | + |
| 95 | +- Undo patch of double-block apply [#21982](https://github.com/scala/scala3/pull/21982) |
| 96 | + |
| 97 | +## Scaladoc |
| 98 | + |
| 99 | +- Scaladoc: Add support for named tuples [#22263](https://github.com/scala/scala3/pull/22263) |
| 100 | + |
| 101 | +## Settings |
| 102 | + |
| 103 | +- Limit exposure to ConcurrentModificationException when sys props are replaced or mutated [#22180](https://github.com/scala/scala3/pull/22180) |
| 104 | + |
| 105 | +## Specification |
| 106 | + |
| 107 | +- Align the spec to allow the marker [#22323](https://github.com/scala/scala3/pull/22323) |
| 108 | +- Integrate the specification for match types. [#22164](https://github.com/scala/scala3/pull/22164) |
| 109 | + |
| 110 | +## Transform |
| 111 | + |
| 112 | +- Fix #22226: Use `classOf[BoxedUnit]` for Unit array in `ArrayConstructors`. [#22238](https://github.com/scala/scala3/pull/22238) |
| 113 | + |
| 114 | +## Typer |
| 115 | + |
| 116 | +- Fixes for isLegalPrefix change [#22241](https://github.com/scala/scala3/pull/22241) |
| 117 | +- Resolve name when named imp is behind wild imps [#21888](https://github.com/scala/scala3/pull/21888) |
| 118 | + |
| 119 | +# Contributors |
| 120 | + |
| 121 | +Thank you to all the contributors who made this release possible 🎉 |
| 122 | + |
| 123 | +According to `git shortlog -sn --no-merges 3.6.3..3.6.4-RC1` these are: |
| 124 | + |
| 125 | +``` |
| 126 | + 46 Martin Odersky |
| 127 | + 33 noti0na1 |
| 128 | + 17 Wojciech Mazur |
| 129 | + 14 Dale Wijnand |
| 130 | + 13 Matt Bovel |
| 131 | + 11 Hamza Remmal |
| 132 | + 7 Jan Chyb |
| 133 | + 6 aherlihy |
| 134 | + 5 Kacper Korban |
| 135 | + 5 Seth Tisue |
| 136 | + 5 Som Snytt |
| 137 | + 4 Oliver Bračevac |
| 138 | + 4 Yichen Xu |
| 139 | + 3 Sébastien Doeraene |
| 140 | + 3 dependabot[bot] |
| 141 | + 3 kasiaMarek |
| 142 | + 2 João Ferreira |
| 143 | + 1 David Hua |
| 144 | + 1 Eugene Flesselle |
| 145 | + 1 Eugene Yokota |
| 146 | + 1 Florian3k |
| 147 | + 1 Jędrzej Rochala |
| 148 | + 1 Kenji Yoshida |
| 149 | + 1 Mathias |
| 150 | + 1 Natsu Kagami |
| 151 | + 1 Oleg Zenzin |
| 152 | + 1 Piotr Chabelski |
| 153 | + 1 Rui Chen |
| 154 | + 1 philippus |
| 155 | + 1 rochala |
| 156 | + 1 xiaoshihou |
| 157 | +``` |
0 commit comments