|
| 1 | +# Release highlights |
| 2 | + |
| 3 | +- Standardize on `-Vprint:...` (still support `-Xprint:...` as alias) [#22828](https://github.com/scala/scala3/pull/22828) |
| 4 | + |
| 5 | +# Other changes and fixes |
| 6 | + |
| 7 | +## Desugaring |
| 8 | + |
| 9 | +- Fix #23224: Optimize simple tuple extraction [#23373](https://github.com/scala/scala3/pull/23373) |
| 10 | + |
| 11 | +## Enums |
| 12 | + |
| 13 | +- Make hashcode of enum items stable [#23218](https://github.com/scala/scala3/pull/23218) |
| 14 | + |
| 15 | +## Erasure |
| 16 | + |
| 17 | +- Replace erased class modifiers with Erased base traits [#23447](https://github.com/scala/scala3/pull/23447) |
| 18 | +- Bring back part of PruneErasedDefs [#23466](https://github.com/scala/scala3/pull/23466) |
| 19 | + |
| 20 | +## Experimental: Capture Checking |
| 21 | + |
| 22 | +- Fix parsing crash for update in later phases [#23390](https://github.com/scala/scala3/pull/23390) |
| 23 | +- Implement boxing for singleton type arguments [#23418](https://github.com/scala/scala3/pull/23418) |
| 24 | +- Expand Capability types also in arguments of Capability classes [#23427](https://github.com/scala/scala3/pull/23427) |
| 25 | +- Adjustments to the capability trilogy [#23428](https://github.com/scala/scala3/pull/23428) |
| 26 | +- Set context owner to the method for `paramsToCap` [#23436](https://github.com/scala/scala3/pull/23436) |
| 27 | +- Flatten nested capture sets in retainedElementsRaw [#23571](https://github.com/scala/scala3/pull/23571) |
| 28 | +- Fix well-formed test for capabilities [#23393](https://github.com/scala/scala3/pull/23393) |
| 29 | +- Add restricted capabilities `x.only[C]` [#23485](https://github.com/scala/scala3/pull/23485) |
| 30 | +- Rely on hidden sets for use checking [#23580](https://github.com/scala/scala3/pull/23580) |
| 31 | + |
| 32 | +## Experimental: Seperation Checking |
| 33 | + |
| 34 | +- Make separation checking controlled by language import [#23560](https://github.com/scala/scala3/pull/23560) |
| 35 | + |
| 36 | +## Experimental: Erased Definitions |
| 37 | + |
| 38 | +- Refactorings and fixes to erased definition handling [#23404](https://github.com/scala/scala3/pull/23404) |
| 39 | + |
| 40 | +## Experimental: Explicit Nulls |
| 41 | + |
| 42 | +- Add quick fix to remove unnecessary .nn [#23461](https://github.com/scala/scala3/pull/23461) |
| 43 | +- Add `stableNull` annotation to force tracking mutable fields [#23528](https://github.com/scala/scala3/pull/23528) |
| 44 | + |
| 45 | +## Experimental: Global Initialization |
| 46 | + |
| 47 | +- Rewrite resolveThis in global init checker [#23282](https://github.com/scala/scala3/pull/23282) |
| 48 | +- Fix errors in the global initialization checker when compiling bootstrapped dotty [#23429](https://github.com/scala/scala3/pull/23429) |
| 49 | +- Fix error in product-sequence match in global init checker [#23480](https://github.com/scala/scala3/pull/23480) |
| 50 | + |
| 51 | +## Experimental: Into |
| 52 | + |
| 53 | +- Fix isConversionTargetType test [#23401](https://github.com/scala/scala3/pull/23401) |
| 54 | + |
| 55 | +## Experimental: Modularity |
| 56 | + |
| 57 | +- Refinements to skolemizaton [#23513](https://github.com/scala/scala3/pull/23513) |
| 58 | + |
| 59 | +## Experimental: Unroll |
| 60 | + |
| 61 | +- Enable UnrollDefinitions phase in REPL frontend phases [#23433](https://github.com/scala/scala3/pull/23433) |
| 62 | + |
| 63 | +## Extension Methods |
| 64 | + |
| 65 | +- Avoid forcing extension on check of local select [#23439](https://github.com/scala/scala3/pull/23439) |
| 66 | + |
| 67 | +## Implicits |
| 68 | + |
| 69 | +- Refine implicit search fallbacks for better ClassTag handling [#23532](https://github.com/scala/scala3/pull/23532) |
| 70 | + |
| 71 | +## Inline |
| 72 | + |
| 73 | +- Fix Symbol.info remapping in TreeTypeMap [#23432](https://github.com/scala/scala3/pull/23432) |
| 74 | +- Fail not inlined inline method calls early [#22925](https://github.com/scala/scala3/pull/22925) |
| 75 | +- Fix inline export forwarder generation regression [#23126](https://github.com/scala/scala3/pull/23126) |
| 76 | + |
| 77 | +## Linting |
| 78 | + |
| 79 | +- Consider setter of effectively private var [#23211](https://github.com/scala/scala3/pull/23211) |
| 80 | +- Add accessible check for import usage [#23348](https://github.com/scala/scala3/pull/23348) |
| 81 | +- Check OrType in interpolated toString lint [#23365](https://github.com/scala/scala3/pull/23365) |
| 82 | +- Use result of lambda type of implicit in CheckUnused [#23497](https://github.com/scala/scala3/pull/23497) |
| 83 | + |
| 84 | +## Match Types |
| 85 | + |
| 86 | +- Fix: #23261 Distinguish 0.0 and -0.0 in ConstantType match types [#23265](https://github.com/scala/scala3/pull/23265) |
| 87 | + |
| 88 | +## Named Tuples |
| 89 | + |
| 90 | +- Skip bypassing unapply for scala 2 case classes to allow for single-element named tuple in unapply [#23603](https://github.com/scala/scala3/pull/23603) |
| 91 | + |
| 92 | +## Parser |
| 93 | + |
| 94 | +- Enforce `-new-syntax` under `-language:future` [#23443](https://github.com/scala/scala3/pull/23443) |
| 95 | +- Disallow Scala 2 implicits under `-source:future` [#23472](https://github.com/scala/scala3/pull/23472) |
| 96 | + |
| 97 | +## Pattern Matching |
| 98 | + |
| 99 | +- Fix problems in checking that a constructor is uninhabited for exhaustive match checking [#23403](https://github.com/scala/scala3/pull/23403) |
| 100 | + |
| 101 | +## Pickling |
| 102 | + |
| 103 | +- Don't force annotation unpickling when testing for SilentIntoAnnot [#23506](https://github.com/scala/scala3/pull/23506) |
| 104 | +- Drop invalid assumption from TastyUnpickler [#23353](https://github.com/scala/scala3/pull/23353) |
| 105 | + |
| 106 | +## Printer |
| 107 | + |
| 108 | +- Print update modifier when printing update method definitions [#23392](https://github.com/scala/scala3/pull/23392) |
| 109 | + |
| 110 | +## Positions |
| 111 | + |
| 112 | +- Compare span points in pathTo to determine best span [#23581](https://github.com/scala/scala3/pull/23581) |
| 113 | +- Add line number magic comment support [#23549](https://github.com/scala/scala3/pull/23549) |
| 114 | + |
| 115 | +## Presentation Compiler |
| 116 | + |
| 117 | +- Port Inlay hints for name parameters [#23375](https://github.com/scala/scala3/pull/23375) |
| 118 | +- Fix: Simplify infer type for apply [#23434](https://github.com/scala/scala3/pull/23434) |
| 119 | +- Fix: Inconsistent annotation tooltips [#23454](https://github.com/scala/scala3/pull/23454) |
| 120 | +- Fix adjust type when already exists [#23455](https://github.com/scala/scala3/pull/23455) |
| 121 | +- Exclude named parameters inlay hints for java defined [#23462](https://github.com/scala/scala3/pull/23462) |
| 122 | +- Fix: StringIndexOutOfBoundsException in presentation compiler's hasColon method [#23498](https://github.com/scala/scala3/pull/23498) |
| 123 | +- Add InferredMethodProvider for automatic method signature generation [#23563](https://github.com/scala/scala3/pull/23563) |
| 124 | +- Fix completions for Quotes [#23619](https://github.com/scala/scala3/pull/23619) |
| 125 | +- Handle default arguments in named parameters for inlay hints [#23641](https://github.com/scala/scala3/pull/23641) |
| 126 | + |
| 127 | +## Quotes |
| 128 | + |
| 129 | +- Skip splice level checking for `<refinement>` symbols [#22782](https://github.com/scala/scala3/pull/22782) |
| 130 | +- Fix stale top level synthetic package object being used in later runs [#23464](https://github.com/scala/scala3/pull/23464) |
| 131 | +- Emit an error for quoted pattern type variable after `new` [#23618](https://github.com/scala/scala3/pull/23618) |
| 132 | +- Fix issue with certain polyfunctions not properly matching in macros [#23614](https://github.com/scala/scala3/pull/23614) |
| 133 | +- Check PCP of constructor calls on the type [#7531](https://github.com/scala/scala3/pull/7531) |
| 134 | + |
| 135 | +## Reflection |
| 136 | + |
| 137 | +- Quotes reflect: sort the typeMembers output list and filter out non-members [#22876](https://github.com/scala/scala3/pull/22876) |
| 138 | + |
| 139 | +## Reporting |
| 140 | + |
| 141 | +- Add an explainer to the DoubleDefinition error [#23470](https://github.com/scala/scala3/pull/23470) |
| 142 | +- Suppress warnings in comprehensions with 22+ binds [#23590](https://github.com/scala/scala3/pull/23590) |
| 143 | +- Unhelpful error message when trying to use named extraction, when not matching case class or named tuple [#23354](https://github.com/scala/scala3/pull/23354) |
| 144 | +- Improve error message for conflicting definitions [#23453](https://github.com/scala/scala3/pull/23453) |
| 145 | +- `-Yprofile-trace` properly report macro splicing source [#23488](https://github.com/scala/scala3/pull/23488) |
| 146 | +- `-Yprofile-trace` profiles all inline calls [#23490](https://github.com/scala/scala3/pull/23490) |
| 147 | + |
| 148 | +## Rewrites |
| 149 | + |
| 150 | +- Patch empty implicit parens on error recovery [#22835](https://github.com/scala/scala3/pull/22835) |
| 151 | +- Rewrite underscore with optional space [#23525](https://github.com/scala/scala3/pull/23525) |
| 152 | + |
| 153 | +## Scaladoc |
| 154 | + |
| 155 | +- Scaladoc: fixes and improvements to context bounds and extension methods [#22156](https://github.com/scala/scala3/pull/22156) |
| 156 | +- Encode path of class [#23503](https://github.com/scala/scala3/pull/23503) |
| 157 | + |
| 158 | +## SemanticDB |
| 159 | + |
| 160 | +- Bugfix: Also save infos in semanticdb [#23587](https://github.com/scala/scala3/pull/23587) |
| 161 | + |
| 162 | +## Transform |
| 163 | + |
| 164 | +- Handle multiple type parameter lists in value class methods [#23516](https://github.com/scala/scala3/pull/23516) |
| 165 | +- Check path of module prefix for tailrec [#23491](https://github.com/scala/scala3/pull/23491) |
| 166 | + |
| 167 | +## Tuples |
| 168 | + |
| 169 | +- Normalize tuple types in var args seq literals and classOf instances [#23465](https://github.com/scala/scala3/pull/23465) |
| 170 | + |
| 171 | +## Typer |
| 172 | + |
| 173 | +- Fix #22922: Add TypeParamRef handling in isSingletonBounded [#23501](https://github.com/scala/scala3/pull/23501) |
| 174 | +- Fix this references everywhere in dependent function types [#23514](https://github.com/scala/scala3/pull/23514) |
| 175 | +- Don't approximate a type using `Nothing` as prefix [#23531](https://github.com/scala/scala3/pull/23531) |
| 176 | +- Support cleanup actions in class completers [#23515](https://github.com/scala/scala3/pull/23515) |
| 177 | +- Fix regressions in asSeenFrom introduced in 3.7 [#23438](https://github.com/scala/scala3/pull/23438) |
| 178 | +- Use correct owner in eta expansion [#7564](https://github.com/scala/scala3/pull/7564) |
| 179 | +- Fix irrefutability checking in `for` with untupling [#23273](https://github.com/scala/scala3/pull/23273) |
| 180 | +- Fix missing members reporting for var setters [#23476](https://github.com/scala/scala3/pull/23476) |
| 181 | +- Guard against invalid prefixes in argForParam [#23508](https://github.com/scala/scala3/pull/23508) |
| 182 | +- Add missing case to TypeComparer [#23550](https://github.com/scala/scala3/pull/23550) |
| 183 | + |
| 184 | +# Contributors |
| 185 | + |
| 186 | +Thank you to all the contributors who made this release possible 🎉 |
| 187 | + |
| 188 | +According to `git shortlog -sn --no-merges 3.7.2..3.7.3-RC1` these are: |
| 189 | + |
| 190 | +``` |
| 191 | + 80 Martin Odersky |
| 192 | + 56 Hamza Remmal |
| 193 | + 22 Wojciech Mazur |
| 194 | + 20 noti0na1 |
| 195 | + 18 Yichen Xu |
| 196 | + 16 Som Snytt |
| 197 | + 14 Jan Chyb |
| 198 | + 9 Matt Bovel |
| 199 | + 7 EnzeXing |
| 200 | + 6 Guillaume Martres |
| 201 | + 5 Sébastien Doeraene |
| 202 | + 5 aherlihy |
| 203 | + 4 Zieliński Patryk |
| 204 | + 3 Oliver Bračevac |
| 205 | + 3 Tomasz Godzik |
| 206 | + 2 Alexander |
| 207 | + 2 Mikołaj Fornal |
| 208 | + 2 Piotr Chabelski |
| 209 | + 2 Seyon Sivatharan |
| 210 | + 1 Alex1005a |
| 211 | + 1 HarrisL2 |
| 212 | + 1 Jan |
| 213 | + 1 Jentsch |
| 214 | + 1 Jędrzej Rochala |
| 215 | + 1 Katarzyna Marek |
| 216 | + 1 Marc GRIS |
| 217 | + 1 Martin Duhem |
| 218 | + 1 Patryk Zieliński |
| 219 | + 1 Przemysław Sajnóg |
| 220 | + 1 Seth Tisue |
| 221 | + 1 Wessel W. Bakker |
| 222 | + 1 bingchen-li |
| 223 | + 1 kijuky |
| 224 | +``` |
0 commit comments