|
| 1 | +# Highlights of the release |
| 2 | + |
| 3 | +- Add `@scala.annotation.internal.preview` annotation and `-preview` flag. [#22317](https://github.com/scala/scala3/pull/22317) |
| 4 | +- Make SIP-52 `@publicInBinary` a stable feature in 3.7 [#22591](https://github.com/scala/scala3/pull/22591) |
| 5 | +- Make SIP-58 - `Named Tuples` a stable feature in 3.7 [#22753](https://github.com/scala/scala3/pull/22753) |
| 6 | +- Make SIP-62 - `Better Fors` a preview feature in 3.7 [#22776](https://github.com/scala/scala3/pull/22776) |
| 7 | +- Implement SIP-61 `@unroll` annotation as experimental [#21693](https://github.com/scala/scala3/pull/21693) |
| 8 | +- Upgrade Scala 2 Standard Library to 2.13.16 [#22386](https://github.com/scala/scala3/pull/22386) |
| 9 | +- Upgrade Scala.js to 1.19.0 [#23026](https://github.com/scala/scala3/pull/23026) |
| 10 | +- Upgrade Scala CLI to 1.7.1 [#22843](https://github.com/scala/scala3/pull/22843) |
| 11 | +- Expression Compiler is now part of Scala 3 compiler [#22597](https://github.com/scala/scala3/pull/22597) |
| 12 | +- Quotes API: Added `apply` methods to import selectors [#22457](https://github.com/scala/scala3/pull/22457) |
| 13 | +- Quotes API: Implement experimental `summonIgnoring` method [#22417](https://github.com/scala/scala3/pull/22417) |
| 14 | +- Quotes API: Add class parameters, flags, and privateWithin and annotations to experimental `newClass` methods [#21880](https://github.com/scala/scala3/pull/21880) |
| 15 | +- Experimental: Capture Calculus - Inferring `tracked` modifier [#21628](https://github.com/scala/scala3/pull/21628) |
| 16 | +- Presentation Compiler: Show inferred type on holes in hover [#21423](https://github.com/scala/scala3/pull/21423) |
| 17 | +- JVM Backend: Fix #15736 blocking Scala 3 on Android [#22632](https://github.com/scala/scala3/pull/22632) |
| 18 | +- REPL: add flag to quit after evaluating init script [#22636](https://github.com/scala/scala3/pull/22636) |
| 19 | +- REPL: implement :jar (deprecate :require) [#22343](https://github.com/scala/scala3/pull/22343) |
| 20 | +- Linting: Improvements to -Wunused and -Wconf [#20894](https://github.com/scala/scala3/pull/20894) |
| 21 | +- Implicit parameters warn at call site without `using` keyword [#22441](https://github.com/scala/scala3/pull/22441) |
| 22 | +- Support for dependent case classes [#21698](https://github.com/scala/scala3/pull/21698) |
| 23 | +- Deprecate `Yno-kind-polymorphism` [#22814](https://github.com/scala/scala3/pull/22814) |
| 24 | + |
| 25 | +# Other changes and fixes |
| 26 | + |
| 27 | +## Annotations |
| 28 | + |
| 29 | +- Lift arguments of explicitly constructed annotations [#22553](https://github.com/scala/scala3/pull/22553) |
| 30 | +- Fix copy of annotation on `@main` methods [#22582](https://github.com/scala/scala3/pull/22582) |
| 31 | +- `@publicInBinary` has now effect on secondary constructors [#22630](https://github.com/scala/scala3/pull/22630) |
| 32 | +- Fix mapping of annotations [#22407](https://github.com/scala/scala3/pull/22407) |
| 33 | + |
| 34 | +## Backend: Scala.js |
| 35 | + |
| 36 | +- Emit `js.NewArray` IR nodes when possible. [#22446](https://github.com/scala/scala3/pull/22446) |
| 37 | +- Fix #22794: Emit the definition of Arrays.newArray even though it's a primitive [#22797](https://github.com/scala/scala3/pull/22797) |
| 38 | + |
| 39 | +## Classpath |
| 40 | + |
| 41 | +- Fix empty ClassPath attribute in one or more classpath jars causes crash [#22462](https://github.com/scala/scala3/pull/22462) |
| 42 | + |
| 43 | +## Documentation |
| 44 | + |
| 45 | +- Improve the usage of inclusive language [#22360](https://github.com/scala/scala3/pull/22360) |
| 46 | + |
| 47 | +## Erasure |
| 48 | + |
| 49 | +- Handle type aliases in contextFunctionResultTypeAfter [#21517](https://github.com/scala/scala3/pull/21517) |
| 50 | +- Align erasure of `Array[Nothing]` and `Array[Null]` with Scala 2 [#22517](https://github.com/scala/scala3/pull/22517) |
| 51 | + |
| 52 | +## Desugering |
| 53 | + |
| 54 | +- Under `betterFors` don't drop the trailing `map` if it would result in a different type (also drop `_ => ()`) [#22619](https://github.com/scala/scala3/pull/22619) |
| 55 | + |
| 56 | +## Experimental: Capture Checking |
| 57 | + |
| 58 | +- Canonicalize capture variable subtype comparisons [#22299](https://github.com/scala/scala3/pull/22299) |
| 59 | +- Permit Capture Refs for Uninitialized Type and Term Params in BiTypeMap [#22451](https://github.com/scala/scala3/pull/22451) |
| 60 | +- Fix maximal capability handling and expand aliases [#22341](https://github.com/scala/scala3/pull/22341) |
| 61 | + |
| 62 | +## Experimental: Modularity |
| 63 | + |
| 64 | +- Widen skolem types when adding parent refinements [#22488](https://github.com/scala/scala3/pull/22488) |
| 65 | + |
| 66 | +## Experimental: Global Initialization Checker |
| 67 | + |
| 68 | +- Refactor the abstract domain of global init checker to compile http4s [#22179](https://github.com/scala/scala3/pull/22179) |
| 69 | +- Fix global init checking crash when using a value defined in by-name closure [#22625](https://github.com/scala/scala3/pull/22625) |
| 70 | + |
| 71 | +## Experimentals |
| 72 | + |
| 73 | +- Expand value references to packages to their underlying package objects [#22011](https://github.com/scala/scala3/pull/22011) |
| 74 | + |
| 75 | +## Implicits |
| 76 | + |
| 77 | +- Restrict implicit args to using [#22458](https://github.com/scala/scala3/pull/22458) |
| 78 | + |
| 79 | +## Linting |
| 80 | + |
| 81 | +- Suppress spurious Suppression [#22383](https://github.com/scala/scala3/pull/22383) |
| 82 | +- CheckUnused checks span.exists before testing its parts [#22504](https://github.com/scala/scala3/pull/22504) |
| 83 | +- Don't warn retainedBody [#22510](https://github.com/scala/scala3/pull/22510) |
| 84 | +- Handle Typeable [#22663](https://github.com/scala/scala3/pull/22663) |
| 85 | +- Nowarn public implicit val class params [#22664](https://github.com/scala/scala3/pull/22664) |
| 86 | +- Exclude synthetic this.m, Any.m from import lookup [#22695](https://github.com/scala/scala3/pull/22695) |
| 87 | +- Warn unused member of anonymous class [#22729](https://github.com/scala/scala3/pull/22729) |
| 88 | +- Ignore params to default arg getters [#22749](https://github.com/scala/scala3/pull/22749) |
| 89 | +- Lazy val def member is pattern var [#22750](https://github.com/scala/scala3/pull/22750) |
| 90 | +- Restore resolving prefixes of implicit Ident [#22751](https://github.com/scala/scala3/pull/22751) |
| 91 | +- No warning for parameter of overriding method [#22757](https://github.com/scala/scala3/pull/22757) |
| 92 | +- Dealias before checking for member in lint [#22708](https://github.com/scala/scala3/pull/22708) |
| 93 | +- Warn on bad extensions of aliases [#22362](https://github.com/scala/scala3/pull/22362) |
| 94 | +- Warn universal extensions on opaque types [#22502](https://github.com/scala/scala3/pull/22502) |
| 95 | +- Discourage default arg for extension receiver [#22492](https://github.com/scala/scala3/pull/22492) |
| 96 | +- Rename on import is never wildcard [#22712](https://github.com/scala/scala3/pull/22712) |
| 97 | +- Collect nowarn symbols instead of skipping them [#22766](https://github.com/scala/scala3/pull/22766) |
| 98 | +- Revert unconditional lint of Inlined expansion [#22815](https://github.com/scala/scala3/pull/22815) |
| 99 | + |
| 100 | +## Match Types |
| 101 | + |
| 102 | +- Handle NoType in TypeComparer.disjointnessBoundary [#21520](https://github.com/scala/scala3/pull/21520) |
| 103 | + |
| 104 | +## Named Tuples |
| 105 | + |
| 106 | +- Special case NamedTuple.From for arguments derived from Tuple [#22449](https://github.com/scala/scala3/pull/22449) |
| 107 | +- Generate mirrors for named tuples [#22469](https://github.com/scala/scala3/pull/22469) |
| 108 | +- Two fixes to NamedTuple pattern matching [#22953](https://github.com/scala/scala3/pull/22953) |
| 109 | + |
| 110 | +## Opaque Types |
| 111 | + |
| 112 | +- Fix stack overflow errors when generating opaque type proxies [#22479](https://github.com/scala/scala3/pull/22479) |
| 113 | +- Fix inline proxy generation for opaque types referencing other opaque types [#22381](https://github.com/scala/scala3/pull/22381) |
| 114 | +- Fix opaque types leaking rhs when inlined and found in type params (and a related stale symbol issue) [#22655](https://github.com/scala/scala3/pull/22655) |
| 115 | + |
| 116 | +## Overloading |
| 117 | + |
| 118 | +- Make overload pruning based on result types less aggressive [#21744](https://github.com/scala/scala3/pull/21744) |
| 119 | +- Fail compilation if multiple conflicting top-level private defs/vals are in the same package [#22759](https://github.com/scala/scala3/pull/22759) |
| 120 | + |
| 121 | +## Parser |
| 122 | + |
| 123 | +- Fix annotations being not expected in the middle of an array type by java parser [#22391](https://github.com/scala/scala3/pull/22391) |
| 124 | +- No outdent at eof [#22435](https://github.com/scala/scala3/pull/22435) |
| 125 | +- Allow observing an indent after conditional [#22611](https://github.com/scala/scala3/pull/22611) |
| 126 | +- Correctly detect colon lambda eol indent for optional brace of argument [#22477](https://github.com/scala/scala3/pull/22477) |
| 127 | + |
| 128 | +## Pattern Matching |
| 129 | + |
| 130 | +- Avoid crash in uninhab check in Space [#22601](https://github.com/scala/scala3/pull/22601) |
| 131 | +- Account for named tuples in space subtraction [#22658](https://github.com/scala/scala3/pull/22658) |
| 132 | +- Check exhaustivity of any case class [#22604](https://github.com/scala/scala3/pull/22604) |
| 133 | + |
| 134 | +## Presentation Compiler |
| 135 | + |
| 136 | +- Add enum type param support in sourceSymbol [#18603](https://github.com/scala/scala3/pull/18603) |
| 137 | +- Map name position to desugared version of named context bound [#22374](https://github.com/scala/scala3/pull/22374) |
| 138 | +- Hover and go to definition for named tuples [#22202](https://github.com/scala/scala3/pull/22202) |
| 139 | +- Completions: do not complete package [#20532](https://github.com/scala/scala3/pull/20532) |
| 140 | +- Print parens for single method argument only if a direct tuple type [#21510](https://github.com/scala/scala3/pull/21510) |
| 141 | +- Improvement: use heuristic to figure out `nameSpan` if `pointDelta` too big [#22484](https://github.com/scala/scala3/pull/22484) |
| 142 | +- Fix inferredTypeEdits for symbols [#22485](https://github.com/scala/scala3/pull/22485) |
| 143 | +- Fix: Only fallback to the definition of a synthetic valdef if it is zero extent [#22551](https://github.com/scala/scala3/pull/22551) |
| 144 | +- Better LSP completions inside of backticks [#22555](https://github.com/scala/scala3/pull/22555) |
| 145 | +- Don't search for members in pc info when irrelevant [#22674](https://github.com/scala/scala3/pull/22674) |
| 146 | +- Backport from Metals [#22426](https://github.com/scala/scala3/pull/22426) |
| 147 | +- Backport from Metals [#22491](https://github.com/scala/scala3/pull/22491) |
| 148 | +- Backport from Metals [#22665](https://github.com/scala/scala3/pull/22665) |
| 149 | + |
| 150 | +## Runner |
| 151 | + |
| 152 | +- Upgrade Scala CLI to [1.7.1 highlights](https://github.com/VirtusLab/scala-cli/releases/tag/v1.7.1) |
| 153 | + - Switch to scalameta/scalafmt images of scalafmt 3.9.1+ [#3502](https://github.com/VirtusLab/scala-cli/pull/3502) |
| 154 | + - Support the `--test` command line option for `run` subcommand [#3519](https://github.com/VirtusLab/scala-cli/pull/3519) |
| 155 | + - Support the `--test` command line option for `package` subcommand [#3519](https://github.com/VirtusLab/scala-cli/pull/3519) |
| 156 | + - Detect objects with main class in scripts [#3479](https://github.com/VirtusLab/scala-cli/pull/3479) |
| 157 | + - Support for Scala.js 1.18.2 [#3454](https://github.com/VirtusLab/scala-cli/pull/3454) |
| 158 | + - Support for Scala Native 0.5.7 [#3527](https://github.com/VirtusLab/scala-cli/pull/3527) |
| 159 | + - Add support for running a main method from the test scope [#3502](https://github.com/VirtusLab/scala-cli/pull/3502) |
| 160 | + |
| 161 | +## Quotes |
| 162 | + |
| 163 | +- Add a check for correct Array shape in quotes.reflect.ClassOfConstant [#22033](https://github.com/scala/scala3/pull/22033) |
| 164 | +- Fix issue with static `this` references erroring in quoted code [#22618](https://github.com/scala/scala3/pull/22618) |
| 165 | +- Fix #21721: make case TypeBlock(_,_) not match non-type Block [#21722](https://github.com/scala/scala3/pull/21722) |
| 166 | +- Make Ref.apply() return trees usable in the largest scope possible [#22240](https://github.com/scala/scala3/pull/22240) |
| 167 | +- Make sure Block does not incorrectly match a TypeBlock [#22716](https://github.com/scala/scala3/pull/22716) |
| 168 | +- Do not approximate prefixes when using memberType in reflect API [#22448](https://github.com/scala/scala3/pull/22448) |
| 169 | +- Bring back pattern match exhaustivity checking for macros [#22622](https://github.com/scala/scala3/pull/22622) |
| 170 | + |
| 171 | +## REPL |
| 172 | + |
| 173 | +- REPL: JLine 3.29.0 (was 3.27.1) [#22679](https://github.com/scala/scala3/pull/22679) |
| 174 | +- Repl: emit warning for the `:sh` command [#22694](https://github.com/scala/scala3/pull/22694) |
| 175 | +- Add warning for :kind command [#22572](https://github.com/scala/scala3/pull/22572) |
| 176 | +- Check trailing blank line at EOF for OUTDENT [#22855](https://github.com/scala/scala3/pull/22855) |
| 177 | + |
| 178 | +## Reporting |
| 179 | + |
| 180 | +- Filter help renders box border [#22434](https://github.com/scala/scala3/pull/22434) |
| 181 | +- Register nowarn when inlining [#22682](https://github.com/scala/scala3/pull/22682) |
| 182 | +- Rule out exports of member of the current class [#22545](https://github.com/scala/scala3/pull/22545) |
| 183 | + |
| 184 | +## Standard Library |
| 185 | + |
| 186 | +- Changes in preparation to make `caps.Capability` stable [#22849](https://github.com/scala/scala3/pull/22849) |
| 187 | +- Mitigate change in status of scala.caps [#22956](https://github.com/scala/scala3/pull/22956) |
| 188 | + |
| 189 | +## Scaladoc |
| 190 | + |
| 191 | +- Render `@deprecated` correctly even when named arguments weren't used [#21925](https://github.com/scala/scala3/pull/21925) |
| 192 | +- Remove DRI from Scaladoc warnings [#22330](https://github.com/scala/scala3/pull/22330) |
| 193 | + |
| 194 | +## SemanticDB |
| 195 | + |
| 196 | +- Don't add `()` to semanticdb symbol for java variables [#22573](https://github.com/scala/scala3/pull/22573) |
| 197 | +- Fix compiler crash when using betasty with missing java classfiles [#22599](https://github.com/scala/scala3/pull/22599) |
| 198 | + |
| 199 | +## Transform |
| 200 | + |
| 201 | +- Check only stable qual for import prefix [#22633](https://github.com/scala/scala3/pull/22633) |
| 202 | +- Treat static vals as enclosures in lambdalift [#22452](https://github.com/scala/scala3/pull/22452) |
| 203 | +- Record calls to constructors in lambdaLift [#22487](https://github.com/scala/scala3/pull/22487) |
| 204 | +- Only check logicalOwners for methods, and not for classes, when looking for proxies [#22356](https://github.com/scala/scala3/pull/22356) |
| 205 | +- Add error-checking when fetching rhs of trees from TASTy [#22565](https://github.com/scala/scala3/pull/22565) |
| 206 | + |
| 207 | +## Typer |
| 208 | + |
| 209 | +- Root of Java select must be class or rooted package [#21800](https://github.com/scala/scala3/pull/21800) |
| 210 | +- Check if a prefix is valid before selecting from a type [#22368](https://github.com/scala/scala3/pull/22368) |
| 211 | +- Preserve hard unions in widenSingletons [#22369](https://github.com/scala/scala3/pull/22369) |
| 212 | +- Constructor proxy is restricted if class is protected [#22563](https://github.com/scala/scala3/pull/22563) |
| 213 | +- Constructor companion gets privateWithin [#22627](https://github.com/scala/scala3/pull/22627) |
| 214 | +- Revert lambda cleanup [#22697](https://github.com/scala/scala3/pull/22697) |
| 215 | +- Avoid infinite recursion when looking for suggestions [#22361](https://github.com/scala/scala3/pull/22361) |
| 216 | +- Fix cyclic check, regardless of definition order [#22342](https://github.com/scala/scala3/pull/22342) |
| 217 | +- Avoid inf recursion in provablyDisjointClasses [#22489](https://github.com/scala/scala3/pull/22489) |
| 218 | + |
| 219 | +## Value Classes |
| 220 | + |
| 221 | +- Allow private members when computing the denotation of a NamedType [#22549](https://github.com/scala/scala3/pull/22549) |
| 222 | + |
| 223 | +## Other changes |
| 224 | + |
| 225 | +- Remove locale dependent FileSystemException check [#21633](https://github.com/scala/scala3/pull/21633) |
| 226 | + |
| 227 | +# Contributors |
| 228 | + |
| 229 | +Thank you to all the contributors who made this release possible 🎉 |
| 230 | + |
| 231 | +According to `git shortlog -sn --no-merges 3.6.4..3.7.0` these are: |
| 232 | + |
| 233 | +``` |
| 234 | + 63 Martin Odersky |
| 235 | + 47 Som Snytt |
| 236 | + 33 Adrien Piquerez |
| 237 | + 32 Hamza Remmal |
| 238 | + 29 Wojciech Mazur |
| 239 | + 19 aherlihy |
| 240 | + 19 kasiaMarek |
| 241 | + 16 Jan Chyb |
| 242 | + 13 Dale Wijnand |
| 243 | + 11 Kacper Korban |
| 244 | + 10 EnzeXing |
| 245 | + 9 Sébastien Doeraene |
| 246 | + 7 Guillaume Martres |
| 247 | + 7 Matt Bovel |
| 248 | + 7 Oliver Bračevac |
| 249 | + 7 noti0na1 |
| 250 | + 5 HarrisL2 |
| 251 | + 5 Jamie Thompson |
| 252 | + 5 dependabot[bot] |
| 253 | + 4 Joel Wilsson |
| 254 | + 4 Piotr Chabelski |
| 255 | + 4 Seth Tisue |
| 256 | + 3 Roman Janusz |
| 257 | + 3 anna herlihy |
| 258 | + 2 David Hua |
| 259 | + 2 Tomasz Godzik |
| 260 | + 2 Yichen Xu |
| 261 | + 1 Alec Theriault |
| 262 | + 1 Daisy Li |
| 263 | + 1 Daniel Thoma |
| 264 | + 1 Dmitrii Naumenko |
| 265 | + 1 Felix Herrmann |
| 266 | + 1 He-Pin(kerr) |
| 267 | + 1 João Ferreira |
| 268 | + 1 Jędrzej Rochala |
| 269 | + 1 Katarzyna Marek |
| 270 | + 1 Kenji Yoshida |
| 271 | + 1 Natsu Kagami |
| 272 | + 1 Niklas Fiekas |
| 273 | + 1 Rocco Mathijn Andela |
| 274 | + 1 Vadim Chelyshov |
| 275 | + 1 adpi2 |
| 276 | + 1 fan-tom |
| 277 | + 1 philwalk |
| 278 | + 1 rochala |
| 279 | +``` |
0 commit comments