|
| 1 | +# Highlights of the release |
| 2 | + |
| 3 | +- Implement applied constructor types [#22543](https://github.com/scala/scala3/pull/22543) |
| 4 | +- Bump Scala CLI to v1.8.4 (was v1.8.0) [#23538](https://github.com/scala/scala3/pull/23538) |
| 5 | + - Support for URLs in using file directives |
| 6 | + - Better support for the REPL with JDK 24+ |
| 7 | + - experimental publish support for the Sonatype Central Portal |
| 8 | + - See full [Scala CLI changelog](https://github.com/VirtusLab/scala-cli/releases/tag/v1.8.4) |
| 9 | + |
| 10 | +# Other changes and fixes |
| 11 | + |
| 12 | +## Documentation |
| 13 | + |
| 14 | +- Mark `AnyRef::eq` and `AnyRef::ne` as infix instead of special casing when emitting the warning [#23252](https://github.com/scala/scala3/pull/23252) |
| 15 | +- Mark `eq` and `ne` in Predef as `infix` [#23255](https://github.com/scala/scala3/pull/23255) |
| 16 | + |
| 17 | +## Experimental: Capture Checking |
| 18 | + |
| 19 | +- Allow caps in result types of functions to be mapped to reaches [#23275](https://github.com/scala/scala3/pull/23275) |
| 20 | +- Adapt types according to read-only status [#23332](https://github.com/scala/scala3/pull/23332) |
| 21 | +- Rename `mut` to `update` [#23335](https://github.com/scala/scala3/pull/23335) |
| 22 | +- Change retains annotation from using term arguments to using type arguments [#22909](https://github.com/scala/scala3/pull/22909) |
| 23 | +- New Syntax for Capture Variables and Explicit Capture Polymorphism v3 [#23063](https://github.com/scala/scala3/pull/23063) |
| 24 | +- Fix #23223: Add handling for classes deriving from Capability during Setup [#23248](https://github.com/scala/scala3/pull/23248) |
| 25 | +- Copy `@use` and `@consume` annotations to parameter types [#23324](https://github.com/scala/scala3/pull/23324) |
| 26 | +- Fix handling of `@use` and `@consume` in class parameters [#23342](https://github.com/scala/scala3/pull/23342) |
| 27 | +- Some usability improvements relating to errors [#23370](https://github.com/scala/scala3/pull/23370) |
| 28 | +- Loosen the "does not match previously inferred" criterion [#23067](https://github.com/scala/scala3/pull/23067) |
| 29 | +- Use level checking for Fresh instances [#23101](https://github.com/scala/scala3/pull/23101) |
| 30 | +- Ensure all capture variables carry the attachment [#23162](https://github.com/scala/scala3/pull/23162) |
| 31 | +- Cache ResultCaps [#23198](https://github.com/scala/scala3/pull/23198) |
| 32 | +- Move separation checking to `-source:3.8` [#23249](https://github.com/scala/scala3/pull/23249) |
| 33 | +- Refactorings for CC error reporting [#23260](https://github.com/scala/scala3/pull/23260) |
| 34 | +- Standardize on log-based undo [#23357](https://github.com/scala/scala3/pull/23357) |
| 35 | +- Flag nonsensical capturing types with pure parents as errors [#23367](https://github.com/scala/scala3/pull/23367) |
| 36 | + |
| 37 | +## Experimental: Erased Definitions |
| 38 | + |
| 39 | +- Erased fields are not nullable [#23311](https://github.com/scala/scala3/pull/23311) |
| 40 | + |
| 41 | +## Experimental: Explicit Nulls |
| 42 | + |
| 43 | +- Relax comparison between Null and reference types in explicit nulls [#23308](https://github.com/scala/scala3/pull/23308) |
| 44 | +- Warn about unnecessary uses of .nn [#23327](https://github.com/scala/scala3/pull/23327) |
| 45 | + |
| 46 | +## Experimental: Global Initialization |
| 47 | + |
| 48 | +- Modified abstract domain in global initialization checker [#23138](https://github.com/scala/scala3/pull/23138) |
| 49 | + |
| 50 | +## Experimental: Into Modifier |
| 51 | + |
| 52 | +- Change `into` scheme to be fully type-based [#23014](https://github.com/scala/scala3/pull/23014) |
| 53 | + |
| 54 | +## Implicits |
| 55 | + |
| 56 | +- Try extensions for arguments with type mismatch error [#23212](https://github.com/scala/scala3/pull/23212) |
| 57 | + |
| 58 | +## Linting |
| 59 | + |
| 60 | +- Improve checking LHS of Assign [#22977](https://github.com/scala/scala3/pull/22977) |
| 61 | +- Remove premature caching of lookups for unused lint [#22982](https://github.com/scala/scala3/pull/22982) |
| 62 | +- Enclosing package p.q not visible as q [#23069](https://github.com/scala/scala3/pull/23069) |
| 63 | +- Mention extension in unused param warning [#23132](https://github.com/scala/scala3/pull/23132) |
| 64 | +- Improve Unit ascription escape hatch [#23147](https://github.com/scala/scala3/pull/23147) |
| 65 | +- Dealias for unused param check [#23256](https://github.com/scala/scala3/pull/23256) |
| 66 | +- Take inferred or explicit refinement result for unused check [#23325](https://github.com/scala/scala3/pull/23325) |
| 67 | +- Nowarn receiver of extension taking params [#23351](https://github.com/scala/scala3/pull/23351) |
| 68 | +- Improved edit span for import [#23083](https://github.com/scala/scala3/pull/23083) |
| 69 | +- Use result of lambda type of implicit in CheckUnused [#23497](https://github.com/scala/scala3/pull/23497) |
| 70 | + |
| 71 | +## Parser |
| 72 | + |
| 73 | +- Fix incorrect warning with -no-indent [#23216](https://github.com/scala/scala3/pull/23216) |
| 74 | +- Patvar: adjust caret in error message [#23115](https://github.com/scala/scala3/pull/23115) |
| 75 | +- Disallow empty parameter clauses in `extension` definition [#23143](https://github.com/scala/scala3/pull/23143) |
| 76 | + |
| 77 | +## Pattern Matching |
| 78 | + |
| 79 | +- Improve GADT reasoning for pattern alternatives [#23205](https://github.com/scala/scala3/pull/23205) |
| 80 | + |
| 81 | +## Pickling |
| 82 | + |
| 83 | +- Try to handle SkolemTypes in SingletonTypeTree during pickling [#23236](https://github.com/scala/scala3/pull/23236) |
| 84 | +- Avoid creating constructors where not warranted [#23178](https://github.com/scala/scala3/pull/23178) |
| 85 | + |
| 86 | +## Presentation Compiler |
| 87 | + |
| 88 | +- Use untpd.Tree instead of tpd.Tree for SelectionRangeProvider [#22702](https://github.com/scala/scala3/pull/22702) |
| 89 | +- Fix completion mode filtering + optimize scopeCompletions [#23172](https://github.com/scala/scala3/pull/23172) |
| 90 | +- Handle multiple params lists in for infer type [#23197](https://github.com/scala/scala3/pull/23197) |
| 91 | +- Add jpath to VirtualFile (for pc) [#23203](https://github.com/scala/scala3/pull/23203) |
| 92 | +- Add selection ranges for more names [#23257](https://github.com/scala/scala3/pull/23257) |
| 93 | +- Add inlay hints for by-name parameters [#23283](https://github.com/scala/scala3/pull/23283) |
| 94 | +- Implement code action 'convert to named lambda parameters' [#22799](https://github.com/scala/scala3/pull/22799) |
| 95 | +- Improve completions when a lot of exports are present [#23414](https://github.com/scala/scala3/pull/23414) |
| 96 | +- Buffix: Make PC actions work for re-exported symbols [#22722](https://github.com/scala/scala3/pull/22722) |
| 97 | +- Bugfix: Fix enumeration issues when Value is imported [#23124](https://github.com/scala/scala3/pull/23124) |
| 98 | +- Bugfix: Check in the collector for empty arrays [#23341](https://github.com/scala/scala3/pull/23341) |
| 99 | +- Bugfix: Don't check scope members if not needed [#23384](https://github.com/scala/scala3/pull/23384) |
| 100 | +- Improvement: Don't dealias named tuples for type hints [#23013](https://github.com/scala/scala3/pull/23013) |
| 101 | +- Improvement: Simplify match types when possible [#23146](https://github.com/scala/scala3/pull/23146) |
| 102 | +- Improvement: Improve efficiency of completions [#23355](https://github.com/scala/scala3/pull/23355) |
| 103 | +- Improvement: Cache compilation on . and don't add CURSOR [#23356](https://github.com/scala/scala3/pull/23356) |
| 104 | + |
| 105 | +## Private Options |
| 106 | + |
| 107 | +- Add an `-Yimplicit-to-given` flag for rewrites to easily test changes in the ecosystem [#22580](https://github.com/scala/scala3/pull/22580) |
| 108 | +- Add `scala.language.2.13` [#23219](https://github.com/scala/scala3/pull/23219) |
| 109 | + |
| 110 | +## Rewrites |
| 111 | + |
| 112 | +- Remove empty parentheses when rewriting implicits to givens [#23339](https://github.com/scala/scala3/pull/23339) |
| 113 | + |
| 114 | +## Quotes |
| 115 | + |
| 116 | +- Preserve implicits in Quotes context [#23263](https://github.com/scala/scala3/pull/23263) |
| 117 | +- Don't StackOverflow when printing RecursiveType structure. [#22859](https://github.com/scala/scala3/pull/22859) |
| 118 | + |
| 119 | +## Reflection |
| 120 | + |
| 121 | +- Forbid `StringConstant(null)` [#23064](https://github.com/scala/scala3/pull/23064) |
| 122 | + |
| 123 | +## Reporting |
| 124 | + |
| 125 | +- Fix incorrect warning on type ascription for backquoted identifiers [#23088](https://github.com/scala/scala3/pull/23088) |
| 126 | +- Improve position of deprecation [#23052](https://github.com/scala/scala3/pull/23052) |
| 127 | +- Have a better error message when context bounds are not allowed [#23190](https://github.com/scala/scala3/pull/23190) |
| 128 | +- Avoid false warning when synthesising deferred givens [#23087](https://github.com/scala/scala3/pull/23087) |
| 129 | +- Fix insufficient number width allocated when using `-print-lines` [#23336](https://github.com/scala/scala3/pull/23336) |
| 130 | + |
| 131 | +## SemanticDB |
| 132 | + |
| 133 | +- Fix SemantiDB production of method signature with shadowed parameters [#23161](https://github.com/scala/scala3/pull/23161) |
| 134 | +- Check if symbol exists before calling methods on it [#23376](https://github.com/scala/scala3/pull/23376) |
| 135 | + |
| 136 | +## Settings |
| 137 | + |
| 138 | +- Filter allowed source versions by import and by settings [#23215](https://github.com/scala/scala3/pull/23215) |
| 139 | + |
| 140 | +## Tooling |
| 141 | + |
| 142 | +- Suggest to add using as a code action [#23079](https://github.com/scala/scala3/pull/23079) |
| 143 | + |
| 144 | +## Transform |
| 145 | + |
| 146 | +- Warn trivial recursion with module prefix [#23278](https://github.com/scala/scala3/pull/23278) |
| 147 | +- Partial function synthesis changesOwner of selector [#23337](https://github.com/scala/scala3/pull/23337) |
| 148 | +- Check path of module prefix for tailrec [#23491](https://github.com/scala/scala3/pull/23491) |
| 149 | +- Fix stale top level synthetic package object being used in later runs [#23464](https://github.com/scala/scala3/pull/23464) |
| 150 | + |
| 151 | +## Typer |
| 152 | + |
| 153 | +- Compare TypeVar and TypeParamRef in mergeRefinedOrApplied [#23045](https://github.com/scala/scala3/pull/23045) |
| 154 | +- Revert recent changes to opaque type proxy generation [#23059](https://github.com/scala/scala3/pull/23059) |
| 155 | +- Only keep denotation for methods in IntegrateMap [#23226](https://github.com/scala/scala3/pull/23226) |
| 156 | +- Tighten condition when to do SAM type conversion [#23246](https://github.com/scala/scala3/pull/23246) |
| 157 | +- Revert "Make overload pruning based on result types less aggressive (#21744)" in main [#23331](https://github.com/scala/scala3/pull/23331) |
| 158 | +- Tweak parameter dependency test when typing applications [#23346](https://github.com/scala/scala3/pull/23346) |
| 159 | +- Ensure pt span exists in implicitParams migration [#23372](https://github.com/scala/scala3/pull/23372) |
| 160 | +- Check for error before checking members of product type in getUnapplySelectors [#23358](https://github.com/scala/scala3/pull/23358) |
| 161 | +- Synthesise value of `this.type` in `ValueOf` [#23094](https://github.com/scala/scala3/pull/23094) |
| 162 | +- Hide constructor proxies at PostTyper [#23269](https://github.com/scala/scala3/pull/23269) |
| 163 | +- Fix regressions in asSeenFrom introduced in 3.7 [#23438](https://github.com/scala/scala3/pull/23438) |
| 164 | + |
| 165 | +# Contributors |
| 166 | + |
| 167 | +Thank you to all the contributors who made this release possible 🎉 |
| 168 | + |
| 169 | +According to `git shortlog -sn --no-merges 3.7.1..3.7.2` these are: |
| 170 | + |
| 171 | +``` |
| 172 | + 93 Martin Odersky |
| 173 | + 29 Wojciech Mazur |
| 174 | + 22 Som Snytt |
| 175 | + 22 noti0na1 |
| 176 | + 14 Tomasz Godzik |
| 177 | + 13 Hamza Remmal |
| 178 | + 13 Yichen Xu |
| 179 | + 6 EnzeXing |
| 180 | + 5 Jan Chyb |
| 181 | + 5 Matt Bovel |
| 182 | + 3 Oliver Bračevac |
| 183 | + 3 aherlihy |
| 184 | + 3 kasiaMarek |
| 185 | + 2 Alexander |
| 186 | + 2 Dale Wijnand |
| 187 | + 2 Dolphin von Chips |
| 188 | + 2 Georgi Krastev |
| 189 | + 2 Jędrzej Rochala |
| 190 | + 2 Kacper Korban |
| 191 | + 2 Natsu Kagami |
| 192 | + 2 Ondrej Lhotak |
| 193 | + 2 Piotr Chabelski |
| 194 | + 2 Seyon Sivatharan |
| 195 | + 2 Yoonjae Jeon |
| 196 | + 2 Zieliński Patryk |
| 197 | + 1 Guillaume Martres |
| 198 | + 1 Jakub Kozłowski |
| 199 | + 1 Katarzyna Marek |
| 200 | + 1 MatthieuSLR9 |
| 201 | + 1 Ondřej Lhoták |
| 202 | + 1 Tomas Mikula |
| 203 | + 1 anna herlihy |
| 204 | + 1 dependabot[bot] |
| 205 | + 1 rochala |
| 206 | + 1 s2sivath |
| 207 | +``` |
0 commit comments