|
| 1 | +# Highlights of the release |
| 2 | + |
| 3 | +- Bundle scala-cli in scala command (For RC1 requires JVM 17, further RCs will use native launchers) |
| 4 | +- Introduce Best Effort compilation options [#17582](https://github.com/lampepfl/dotty/pull/17582) |
| 5 | +- Add support for Pipelined builds [#18880](https://github.com/lampepfl/dotty/pull/18880) |
| 6 | +- Add support for `var` in refinements [#19982](https://github.com/lampepfl/dotty/pull/19982) |
| 7 | +- Implement SIP-42 - Support for binary integer literals [#19405](https://github.com/lampepfl/dotty/pull/19405) |
| 8 | + |
| 9 | +# Other changes and fixes |
| 10 | + |
| 11 | +## Backend |
| 12 | + |
| 13 | +- Fix Closure span assignment in makeClosure [#15841](https://github.com/lampepfl/dotty/pull/15841) |
| 14 | + |
| 15 | +## Default parameters |
| 16 | + |
| 17 | +- Fix default args lookup for given classes [#20256](https://github.com/lampepfl/dotty/pull/20256) |
| 18 | +- Fix implicit search failure reporting [#20261](https://github.com/lampepfl/dotty/pull/20261) |
| 19 | + |
| 20 | +## Derivation |
| 21 | + |
| 22 | +- Fix infinite loop in Mirror synthesis of unreducible match type [#20133](https://github.com/lampepfl/dotty/pull/20133) |
| 23 | + |
| 24 | +## Desugaring |
| 25 | + |
| 26 | +- Add explanation to checkCaseClassInheritanceInvariant error msg [#20141](https://github.com/lampepfl/dotty/pull/20141) |
| 27 | + |
| 28 | +## Exports |
| 29 | + |
| 30 | +- Add annotations in parameters for exports [#20140](https://github.com/lampepfl/dotty/pull/20140) |
| 31 | +- Fix isAliasType [#20195](https://github.com/lampepfl/dotty/pull/20195) |
| 32 | + |
| 33 | +## Implicits |
| 34 | + |
| 35 | +- Fix implicitNotFound message for type aliases [#19343](https://github.com/lampepfl/dotty/pull/19343) |
| 36 | +- Normalize types before collecting parts determining implicit scope [#20077](https://github.com/lampepfl/dotty/pull/20077) |
| 37 | +- Better error diagnostics under -explain-cyclic [#20251](https://github.com/lampepfl/dotty/pull/20251) |
| 38 | +- Update unreducible match types error reporting [#19954](https://github.com/lampepfl/dotty/pull/19954) |
| 39 | +- Improve ConstraintHandling of SkolemTypes [#20175](https://github.com/lampepfl/dotty/pull/20175) |
| 40 | + |
| 41 | +## Incremental Compilation |
| 42 | + |
| 43 | +- Retain default parameters with `export` [#20167](https://github.com/lampepfl/dotty/pull/20167) |
| 44 | + |
| 45 | +## Inline |
| 46 | + |
| 47 | +- Fix by-name parameter in beta-reduction [#20096](https://github.com/lampepfl/dotty/pull/20096) |
| 48 | +- Add warning for anonymous inline classes (#16723) [#20291](https://github.com/lampepfl/dotty/pull/20291) |
| 49 | +- Avoid conversion of `Unit` type into `()` term [#20295](https://github.com/lampepfl/dotty/pull/20295) |
| 50 | +- Type desugared `transparent inline def unapply` call in the correct mode [#20108](https://github.com/lampepfl/dotty/pull/20108) |
| 51 | +- Regression: fix compilation performance on Windows [#20193](https://github.com/lampepfl/dotty/pull/20193) |
| 52 | +- Fix inline match on blocks with multiple statements [#20125](https://github.com/lampepfl/dotty/pull/20125) |
| 53 | +- Inline `unapply`s in the inlining phase [#19382](https://github.com/lampepfl/dotty/pull/19382) |
| 54 | +- Fix outerSelect in Inliner [#20313](https://github.com/lampepfl/dotty/pull/20313) |
| 55 | + |
| 56 | +## Linting |
| 57 | + |
| 58 | +- Fix #20146: attach the original name if there is an import selection for an indent [#20163](https://github.com/lampepfl/dotty/pull/20163) |
| 59 | +- Add regression test for issue 18632 [#20308](https://github.com/lampepfl/dotty/pull/20308) |
| 60 | + |
| 61 | +## Match Types |
| 62 | + |
| 63 | +- Make aliases of `MatchAlias`es normal `TypeAlias`es [#19871](https://github.com/lampepfl/dotty/pull/19871) |
| 64 | +- Fix #19746: Do not follow param term refs in `isConcrete`. [#20015](https://github.com/lampepfl/dotty/pull/20015) |
| 65 | +- Do match type reduction atPhaseNoLater than ElimOpaque [#20017](https://github.com/lampepfl/dotty/pull/20017) |
| 66 | +- Do not flag match types as `Deferred` and amend #20077 [#20147](https://github.com/lampepfl/dotty/pull/20147) |
| 67 | +- Always use baseType when constraining patternTp with scrutineeTp [#20032](https://github.com/lampepfl/dotty/pull/20032) |
| 68 | +- Use `MirrorSource.reduce` result for `companionPath` [#20207](https://github.com/lampepfl/dotty/pull/20207) |
| 69 | +- Regression: Fix match type extraction of a MatchAlias [#20111](https://github.com/lampepfl/dotty/pull/20111) |
| 70 | +- Revert "Approximate MatchTypes with lub of case bodies, if non-recursive" in 3.5.0 [#21266](https://github.com/scala/scala3/pull/21266) |
| 71 | + |
| 72 | +## Polyfunctions |
| 73 | + |
| 74 | +- Discard poly-functions when trying to resolve overloading [#20181](https://github.com/lampepfl/dotty/pull/20181) |
| 75 | + |
| 76 | +## Presentation Compiler |
| 77 | + |
| 78 | +- Stabilise returned completions by improving deduplication + extra completions for constructors [#19976](https://github.com/lampepfl/dotty/pull/19976) |
| 79 | +- Fix active param index for empty param lists [#20142](https://github.com/lampepfl/dotty/pull/20142) |
| 80 | +- Delias type members in hover [#20173](https://github.com/lampepfl/dotty/pull/20173) |
| 81 | +- Interactive: handle context bounds in extension construct workaround [#20201](https://github.com/lampepfl/dotty/pull/20201) |
| 82 | +- Fix: prefer non-export definition locations [#20252](https://github.com/lampepfl/dotty/pull/20252) |
| 83 | +- Don't show enum completions in new keyword context [#20304](https://github.com/lampepfl/dotty/pull/20304) |
| 84 | +- Chore: Backport changes for presentation compiler [#20345](https://github.com/lampepfl/dotty/pull/20345) |
| 85 | +- Add custom matchers for completions (fuzzy search for presentation compiler) [#19850](https://github.com/lampepfl/dotty/pull/19850) |
| 86 | + |
| 87 | +## Quotes |
| 88 | + |
| 89 | +- Fix TermRef prefixes not having their type healed [#20102](https://github.com/lampepfl/dotty/pull/20102) |
| 90 | +- Improve reporting in staging about the possible use of an incorrect class loader [#20137](https://github.com/lampepfl/dotty/pull/20137) |
| 91 | +- Introduce MethodTypeKind to quotes reflection API [#20249](https://github.com/lampepfl/dotty/pull/20249) |
| 92 | +- Add quote ASTs to TASTy [#20165](https://github.com/lampepfl/dotty/pull/20165) |
| 93 | + |
| 94 | +## Reflection |
| 95 | + |
| 96 | +- Allow to beta reduce curried function applications in quotes reflect [#18121](https://github.com/lampepfl/dotty/pull/18121) |
| 97 | +- Set the inlining phase in the Context used for checking macro trees [#20087](https://github.com/lampepfl/dotty/pull/20087) |
| 98 | +- Add Symbol.isSuperAccessor to reflection API [#13388](https://github.com/lampepfl/dotty/pull/13388) |
| 99 | +- Stabilize reflect `SymbolMethods.isSuperAccessor` [#20198](https://github.com/lampepfl/dotty/pull/20198) |
| 100 | + |
| 101 | +## Repl |
| 102 | + |
| 103 | +- Fix validity period of derived SingleDenotations [#19983](https://github.com/lampepfl/dotty/pull/19983) |
| 104 | +- Fix #18383: Never consider top-level `import`s as unused in the repl. [#20310](https://github.com/lampepfl/dotty/pull/20310) |
| 105 | + |
| 106 | +## Reporting |
| 107 | + |
| 108 | +- Warn if extension receiver already has member [#17543](https://github.com/lampepfl/dotty/pull/17543) |
| 109 | +- Deprecation of case class elements [#17911](https://github.com/lampepfl/dotty/pull/17911) |
| 110 | +- Support src filter in -WConf (Closes #17635) [#18783](https://github.com/lampepfl/dotty/pull/18783) |
| 111 | +- Add note about type mismatch in automatically inserted apply argument [#20023](https://github.com/lampepfl/dotty/pull/20023) |
| 112 | +- Make error reporting resilient to exception thrown while reporting [#20158](https://github.com/lampepfl/dotty/pull/20158) |
| 113 | +- Remove duplicate comma from Matchable selector warning [#20159](https://github.com/lampepfl/dotty/pull/20159) |
| 114 | +- Generalize warnings for top-level calls to Any or AnyRef methods [#20312](https://github.com/lampepfl/dotty/pull/20312) |
| 115 | +- Make CheckUnused not slow. [#20321](https://github.com/lampepfl/dotty/pull/20321) |
| 116 | +- Bring back ambiguity filter when we report an implicit not found error [#20368](https://github.com/scala/scala3/pull/20368) |
| 117 | +- Treat 3.5-migration the same as 3.5 for a warning about implicit priority change [#20436](https://github.com/scala/scala3/pull/20436) |
| 118 | +- Priority warning fix alternative [#20487](https://github.com/scala/scala3/pull/20487) |
| 119 | +- Use final result type to check selector bound [#20989](https://github.com/scala/scala3/pull/20989) |
| 120 | +- Refine implicit priority change warnings [#21045](https://github.com/scala/scala3/pull/21045) |
| 121 | +- Backport "Fix healAmbiguous to compareAlternatives with disambiguate = true" to 3.5.0 [#21344](https://github.com/scala/scala3/pull/21344) |
| 122 | + |
| 123 | +## Rewrites |
| 124 | + |
| 125 | +- Patch indentation when removing braces (and other bug fixes in `-indent -rewrite`) [#17522](https://github.com/lampepfl/dotty/pull/17522) |
| 126 | +- Extra check to avoid converting block expressions on the rhs of an in… [#20043](https://github.com/lampepfl/dotty/pull/20043) |
| 127 | + |
| 128 | +## Scaladoc |
| 129 | + |
| 130 | +- Fix scaladoc crash on Windows - illegal path character [#20311](https://github.com/lampepfl/dotty/pull/20311) |
| 131 | +- Scaladoc: improve refined function types rendering [#20333](https://github.com/lampepfl/dotty/pull/20333) |
| 132 | +- Relax font-weight reset [#20348](https://github.com/lampepfl/dotty/pull/20348) |
| 133 | + |
| 134 | +## Scala JS |
| 135 | + |
| 136 | +- Optimize main.js [#20093](https://github.com/lampepfl/dotty/pull/20093) |
| 137 | + |
| 138 | +## Settings |
| 139 | + |
| 140 | +- Lift Scala Settings from experimental to stabilized [#20199](https://github.com/lampepfl/dotty/pull/20199) |
| 141 | + |
| 142 | +## Tooling |
| 143 | + |
| 144 | +- Detect macro dependencies that are missing from the classloader [#20139](https://github.com/lampepfl/dotty/pull/20139) |
| 145 | +- Write pipelined tasty in parallel. [#20153](https://github.com/lampepfl/dotty/pull/20153) |
| 146 | +- ConsoleReporter sends INFO to stdout [#20328](https://github.com/lampepfl/dotty/pull/20328) |
| 147 | +- Bundle scala-cli in scala command [#20351](https://github.com/scala/scala3/pull/20351) |
| 148 | +- Adapt the workflow to release on SDKMAN! [#20535](https://github.com/scala/scala3/pull/20535) |
| 149 | +- Adapt the release workflow to SIP-46 [#20565](https://github.com/scala/scala3/pull/20565) |
| 150 | +- Release .zip instead of .tar.gz for windows in sdkman [#20630](https://github.com/scala/scala3/pull/20630) |
| 151 | +- SIP 46 - read classpath from file, remove lib directory in distribution [#20631](https://github.com/scala/scala3/pull/20631) |
| 152 | +.gz for windows in sdkman [#20630](https://github.com/scala/scala3/pull/20630) |
| 153 | +- Bump scala-cli to 1.4.0 [#20859](https://github.com/scala/scala3/pull/20859) |
| 154 | +- Add --skip-cli-updates by default to the scala command [#20900](https://github.com/scala/scala3/pull/20900) |
| 155 | +- Use pathing jars in cli commands [#21121](https://github.com/scala/scala3/pull/21121) |
| 156 | +- expand classpath of pathing jars in scala_legacy command [#21160](https://github.com/scala/scala3/pull/21160) |
| 157 | +- emit generatedNonLocalClass in backend when callback is not enabled [#21186](https://github.com/scala/scala3/pull/21186) |
| 158 | + |
| 159 | +## Transform |
| 160 | + |
| 161 | +- Fix overloaded default methods test in RefChecks [#20218](https://github.com/lampepfl/dotty/pull/20218) |
| 162 | +- Fix handling of AppliedType aliases in outerPrefix [#20190](https://github.com/lampepfl/dotty/pull/20190) |
| 163 | +- Elide unit binding when beta-reducing [#20085](https://github.com/lampepfl/dotty/pull/20085) |
| 164 | + |
| 165 | +## Typer |
| 166 | + |
| 167 | +- Reduce projections of type aliases with class type prefixes [#19931](https://github.com/lampepfl/dotty/pull/19931) |
| 168 | +- Re-lub also hard union types in simplify [#20027](https://github.com/lampepfl/dotty/pull/20027) |
| 169 | +- Fix #19789: Merge same TypeParamRef in orDominator [#20090](https://github.com/lampepfl/dotty/pull/20090) |
| 170 | +- Allow SAM types to contain match alias refinements [#20092](https://github.com/lampepfl/dotty/pull/20092) |
| 171 | +- Don't dealias when deciding which arguments to defer [#20116](https://github.com/lampepfl/dotty/pull/20116) |
| 172 | +- Avoid the TypeVar.inst trap [#20160](https://github.com/lampepfl/dotty/pull/20160) |
| 173 | +- Avoid crash when superType does not exist after erasure [#20188](https://github.com/lampepfl/dotty/pull/20188) |
| 174 | +- Refine overloading and implicit disambiguation [#20084](https://github.com/lampepfl/dotty/pull/20084) |
| 175 | +- Refactor constant folding of applications [#20099](https://github.com/lampepfl/dotty/pull/20099) |
| 176 | +- Rollback constraints if `isSameType` failed second direction [#20109](https://github.com/lampepfl/dotty/pull/20109) |
| 177 | +- Suppress "extension method will never be selected" for overrides [#20164](https://github.com/lampepfl/dotty/pull/20164) |
| 178 | +- Allow SAM types to contain multiple refinements [#20172](https://github.com/lampepfl/dotty/pull/20172) |
| 179 | +- Normalize when verifying if TypeTestCasts are unchecked [#20258](https://github.com/lampepfl/dotty/pull/20258) |
| 180 | +- Avoid stacked thisCall contexts [#20488](https://github.com/scala/scala3/pull/20488) |
| 181 | +- fix issue 20901: etaCollapse context bound type [#20910](https://github.com/scala/scala3/pull/20910) |
| 182 | +- Fix symbol reference retrivial of `scala.caps.Caps` [#20493](https://github.com/scala/scala3/pull/20493) |
| 183 | + |
| 184 | +# Experimental Changes |
| 185 | + |
| 186 | +- Named tuples second implementation [#19174](https://github.com/lampepfl/dotty/pull/19174) |
| 187 | +- Change rules for given prioritization [#19300](https://github.com/lampepfl/dotty/pull/19300) |
| 188 | +- Enable experimental mode when experimental feature is imported [#19807](https://github.com/lampepfl/dotty/pull/19807) |
| 189 | +- Add message parameter to `@experimental` annotation [#19935](https://github.com/lampepfl/dotty/pull/19935) |
| 190 | +- Implement match type amendment: extractors follow aliases and singletons [#20161](https://github.com/lampepfl/dotty/pull/20161) |
| 191 | +- Avoid forcing whole package when using -experimental [#20409](https://github.com/scala/scala3/pull/20409) |
| 192 | + |
| 193 | +## Capture Checking |
| 194 | + |
| 195 | +- Carry and check universal capability from parents correctly [#20004](https://github.com/lampepfl/dotty/pull/20004) |
| 196 | +- Make parameter types of context functions inferred type trees [#20155](https://github.com/lampepfl/dotty/pull/20155) |
| 197 | +- Handle reach capabilities correctly in depedent functions [#20203](https://github.com/lampepfl/dotty/pull/20203) |
| 198 | +- Fix the visibility check in `markFree` [#20221](https://github.com/lampepfl/dotty/pull/20221) |
| 199 | +- Make inline proxy vals have inferred types [#20241](https://github.com/lampepfl/dotty/pull/20241) |
| 200 | +- CC: Give more info when context function parameters leak [#20244](https://github.com/lampepfl/dotty/pull/20244) |
| 201 | +- Plug soundness hole for reach capabilities [#20051](https://github.com/lampepfl/dotty/pull/20051) |
| 202 | +- Tighten the screws a bit more to seal the soundness hole for reach capabilities [#20056](https://github.com/lampepfl/dotty/pull/20056) |
| 203 | +- Drop retains annotations in inferred type trees [#20057](https://github.com/lampepfl/dotty/pull/20057) |
| 204 | +- Allow @retains arguments to be context functions [#20232](https://github.com/lampepfl/dotty/pull/20232) |
| 205 | +- Fix conversion of this.fld capture refs under separate compilation [#20238](https://github.com/lampepfl/dotty/pull/20238) |
| 206 | + |
| 207 | +## Erased definitions |
| 208 | + |
| 209 | +- Fix "Compiler crash when using CanThrow" [#20210](https://github.com/lampepfl/dotty/pull/20210) |
| 210 | +- Only allow erased parameters in erased definitions [#19686](https://github.com/lampepfl/dotty/pull/19686) |
| 211 | + |
| 212 | +## Initialization |
| 213 | + |
| 214 | +- Deprecate `StandardPlugin.init` in favor of `initialize` method taking implicit Context [#20330](https://github.com/lampepfl/dotty/pull/20330) |
| 215 | +- Fix missing changesParents in PostTyper [#20062](https://github.com/lampepfl/dotty/pull/20062) |
| 216 | +- Special case for next field of colon colon in global init checker [#20281](https://github.com/lampepfl/dotty/pull/20281) |
| 217 | +- Extend whitelist in global initialization checker [#20290](https://github.com/lampepfl/dotty/pull/20290) |
| 218 | + |
| 219 | +## Macro Annotations |
| 220 | + |
| 221 | +- Allow macro annotation to transform companion [#19677](https://github.com/lampepfl/dotty/pull/19677) |
| 222 | +- Remove experimental `MainAnnotation`/`newMain` (replaced with `MacroAnnotation`) [#19937](https://github.com/lampepfl/dotty/pull/19937) |
| 223 | + |
| 224 | +## Nullability |
| 225 | + |
| 226 | +- Add flexible types to deal with Java-defined signatures under -Yexplicit-nulls [#18112](https://github.com/lampepfl/dotty/pull/18112) |
| 227 | +- Fix #20287: Add flexible types to Quotes library [#20293](https://github.com/lampepfl/dotty/pull/20293) |
| 228 | +- Add fromNullable to Predef for explicit nulls [#20222](https://github.com/lampepfl/dotty/pull/20222) |
| 229 | + |
| 230 | + |
| 231 | +# Contributors |
| 232 | + |
| 233 | +Thank you to all the contributors who made this release possible 🎉 |
| 234 | + |
| 235 | +According to `git shortlog -sn --no-merges 3.4.2..3.5.0` these are: |
| 236 | + |
| 237 | +``` |
| 238 | + 153 Martin Odersky |
| 239 | + 53 Eugene Flesselle |
| 240 | + 41 Jamie Thompson |
| 241 | + 29 Wojciech Mazur |
| 242 | + 25 Nicolas Stucki |
| 243 | + 22 Sébastien Doeraene |
| 244 | + 18 noti0na1 |
| 245 | + 16 Matt Bovel |
| 246 | + 13 Guillaume Martres |
| 247 | + 11 Paweł Marks |
| 248 | + 10 Hamza REMMAL |
| 249 | + 9 Yichen Xu |
| 250 | + 8 Jan Chyb |
| 251 | + 7 Hamza Remmal |
| 252 | + 7 Som Snytt |
| 253 | + 6 Jędrzej Rochala |
| 254 | + 5 Fengyun Liu |
| 255 | + 5 dependabot[bot] |
| 256 | + 3 Mikołaj Fornal |
| 257 | + 2 Aviv Keller |
| 258 | + 2 EnzeXing |
| 259 | + 1 Chris Pado |
| 260 | + 1 Filip Zybała |
| 261 | + 1 Georgi Krastev |
| 262 | + 1 Jisoo Park |
| 263 | + 1 Katarzyna Marek |
| 264 | + 1 Lucas Nouguier |
| 265 | + 1 Lucy Martin |
| 266 | + 1 Ola Flisbäck |
| 267 | + 1 Pascal Weisenburger |
| 268 | + 1 Quentin Bernet |
| 269 | + 1 Raphael Jolly |
| 270 | + 1 Seth Tisue |
| 271 | + 1 Stephane Bersier |
| 272 | + 1 Tomasz Godzik |
| 273 | + 1 Yoonjae Jeon |
| 274 | + 1 aherlihy |
| 275 | + 1 rochala |
| 276 | + 1 willerf |
| 277 | +
|
| 278 | +``` |
0 commit comments