diff --git a/changelogs/3.5.0-RC1.md b/changelogs/3.5.0-RC1.md new file mode 100644 index 000000000000..4cbc2aa1d668 --- /dev/null +++ b/changelogs/3.5.0-RC1.md @@ -0,0 +1,254 @@ +# Highlights of the release + +- Bundle scala-cli in scala command (For RC1 requires JVM 17, further RCs will use native launchers) +- Introduce Best Effort compilation options [#17582](https://github.com/lampepfl/dotty/pull/17582) +- Add support for Pipelined builds [#18880](https://github.com/lampepfl/dotty/pull/18880) +- Add support for `var` in refinements [#19982](https://github.com/lampepfl/dotty/pull/19982) +- Implement SIP-42 - Support for binary integer literals [#19405](https://github.com/lampepfl/dotty/pull/19405) + +# Other changes and fixes + +## Backend + +- Fix Closure span assignment in makeClosure [#15841](https://github.com/lampepfl/dotty/pull/15841) + +## Default parameters + +- Fix default args lookup for given classes [#20256](https://github.com/lampepfl/dotty/pull/20256) +- Fix implicit search failure reporting [#20261](https://github.com/lampepfl/dotty/pull/20261) + +## Derivation + +- Fix infinite loop in Mirror synthesis of unreducible match type [#20133](https://github.com/lampepfl/dotty/pull/20133) + +## Desugaring + +- Add explanation to checkCaseClassInheritanceInvariant error msg [#20141](https://github.com/lampepfl/dotty/pull/20141) + +## Exports + +- Add annotations in parameters for exports [#20140](https://github.com/lampepfl/dotty/pull/20140) +- Fix isAliasType [#20195](https://github.com/lampepfl/dotty/pull/20195) + +## Implicits + +- Fix implicitNotFound message for type aliases [#19343](https://github.com/lampepfl/dotty/pull/19343) +- Normalize types before collecting parts determining implicit scope [#20077](https://github.com/lampepfl/dotty/pull/20077) +- Better error diagnostics under -explain-cyclic [#20251](https://github.com/lampepfl/dotty/pull/20251) +- Update unreducible match types error reporting [#19954](https://github.com/lampepfl/dotty/pull/19954) +- Improve ConstraintHandling of SkolemTypes [#20175](https://github.com/lampepfl/dotty/pull/20175) + +## Incremental Compilation + +- Retain default parameters with `export` [#20167](https://github.com/lampepfl/dotty/pull/20167) + +## Inline + +- Fix by-name parameter in beta-reduction [#20096](https://github.com/lampepfl/dotty/pull/20096) +- Add warning for anonymous inline classes (#16723) [#20291](https://github.com/lampepfl/dotty/pull/20291) +- Avoid conversion of `Unit` type into `()` term [#20295](https://github.com/lampepfl/dotty/pull/20295) +- Type desugared `transparent inline def unapply` call in the correct mode [#20108](https://github.com/lampepfl/dotty/pull/20108) +- Regression: fix compilation performance on Windows [#20193](https://github.com/lampepfl/dotty/pull/20193) +- Fix inline match on blocks with multiple statements [#20125](https://github.com/lampepfl/dotty/pull/20125) +- Inline `unapply`s in the inlining phase [#19382](https://github.com/lampepfl/dotty/pull/19382) +- Fix outerSelect in Inliner [#20313](https://github.com/lampepfl/dotty/pull/20313) + +## Linting + +- Fix #20146: attach the original name if there is an import selection for an indent [#20163](https://github.com/lampepfl/dotty/pull/20163) +- Add regression test for issue 18632 [#20308](https://github.com/lampepfl/dotty/pull/20308) + +## Match Types + +- Make aliases of `MatchAlias`es normal `TypeAlias`es [#19871](https://github.com/lampepfl/dotty/pull/19871) +- Fix #19746: Do not follow param term refs in `isConcrete`. [#20015](https://github.com/lampepfl/dotty/pull/20015) +- Do match type reduction atPhaseNoLater than ElimOpaque [#20017](https://github.com/lampepfl/dotty/pull/20017) +- Do not flag match types as `Deferred` and amend #20077 [#20147](https://github.com/lampepfl/dotty/pull/20147) +- Always use baseType when constraining patternTp with scrutineeTp [#20032](https://github.com/lampepfl/dotty/pull/20032) +- Use `MirrorSource.reduce` result for `companionPath` [#20207](https://github.com/lampepfl/dotty/pull/20207) +- Regression: Fix match type extraction of a MatchAlias [#20111](https://github.com/lampepfl/dotty/pull/20111) + +## Polyfunctions + +- Discard poly-functions when trying to resolve overloading [#20181](https://github.com/lampepfl/dotty/pull/20181) + +## Presentation Compiler + +- Stabilise returned completions by improving deduplication + extra completions for constructors [#19976](https://github.com/lampepfl/dotty/pull/19976) +- Fix active param index for empty param lists [#20142](https://github.com/lampepfl/dotty/pull/20142) +- Delias type members in hover [#20173](https://github.com/lampepfl/dotty/pull/20173) +- Interactive: handle context bounds in extension construct workaround [#20201](https://github.com/lampepfl/dotty/pull/20201) +- Fix: prefer non-export definition locations [#20252](https://github.com/lampepfl/dotty/pull/20252) +- Don't show enum completions in new keyword context [#20304](https://github.com/lampepfl/dotty/pull/20304) +- Chore: Backport changes for presentation compiler [#20345](https://github.com/lampepfl/dotty/pull/20345) +- Add custom matchers for completions (fuzzy search for presentation compiler) [#19850](https://github.com/lampepfl/dotty/pull/19850) + +## Quotes + +- Fix TermRef prefixes not having their type healed [#20102](https://github.com/lampepfl/dotty/pull/20102) +- Improve reporting in staging about the possible use of an incorrect class loader [#20137](https://github.com/lampepfl/dotty/pull/20137) +- Introduce MethodTypeKind to quotes reflection API [#20249](https://github.com/lampepfl/dotty/pull/20249) +- Add quote ASTs to TASTy [#20165](https://github.com/lampepfl/dotty/pull/20165) + +## Reflection + +- Allow to beta reduce curried function applications in quotes reflect [#18121](https://github.com/lampepfl/dotty/pull/18121) +- Set the inlining phase in the Context used for checking macro trees [#20087](https://github.com/lampepfl/dotty/pull/20087) +- Add Symbol.isSuperAccessor to reflection API [#13388](https://github.com/lampepfl/dotty/pull/13388) +- Stabilize reflect `SymbolMethods.isSuperAccessor` [#20198](https://github.com/lampepfl/dotty/pull/20198) + +## Repl + +- Fix validity period of derived SingleDenotations [#19983](https://github.com/lampepfl/dotty/pull/19983) +- Fix #18383: Never consider top-level `import`s as unused in the repl. [#20310](https://github.com/lampepfl/dotty/pull/20310) + +## Reporting + +- Warn if extension receiver already has member [#17543](https://github.com/lampepfl/dotty/pull/17543) +- Deprecation of case class elements [#17911](https://github.com/lampepfl/dotty/pull/17911) +- Support src filter in -WConf (Closes #17635) [#18783](https://github.com/lampepfl/dotty/pull/18783) +- Add note about type mismatch in automatically inserted apply argument [#20023](https://github.com/lampepfl/dotty/pull/20023) +- Make error reporting resilient to exception thrown while reporting [#20158](https://github.com/lampepfl/dotty/pull/20158) +- Remove duplicate comma from Matchable selector warning [#20159](https://github.com/lampepfl/dotty/pull/20159) +- Generalize warnings for top-level calls to Any or AnyRef methods [#20312](https://github.com/lampepfl/dotty/pull/20312) +- Make CheckUnused not slow. [#20321](https://github.com/lampepfl/dotty/pull/20321) + +## Rewrites + +- Patch indentation when removing braces (and other bug fixes in `-indent -rewrite`) [#17522](https://github.com/lampepfl/dotty/pull/17522) +- Extra check to avoid converting block expressions on the rhs of an in… [#20043](https://github.com/lampepfl/dotty/pull/20043) + +## Scaladoc + +- Fix scaladoc crash on Windows - illegal path character [#20311](https://github.com/lampepfl/dotty/pull/20311) +- Scaladoc: improve refined function types rendering [#20333](https://github.com/lampepfl/dotty/pull/20333) +- Relax font-weight reset [#20348](https://github.com/lampepfl/dotty/pull/20348) + +## Scala JS + +- Optimize main.js [#20093](https://github.com/lampepfl/dotty/pull/20093) + +## Settings + +- Lift Scala Settings from experimental to stabilized [#20199](https://github.com/lampepfl/dotty/pull/20199) + +## Tooling + +- Detect macro dependencies that are missing from the classloader [#20139](https://github.com/lampepfl/dotty/pull/20139) +- Write pipelined tasty in parallel. [#20153](https://github.com/lampepfl/dotty/pull/20153) +- ConsoleReporter sends INFO to stdout [#20328](https://github.com/lampepfl/dotty/pull/20328) + +## Transform + +- Fix overloaded default methods test in RefChecks [#20218](https://github.com/lampepfl/dotty/pull/20218) +- Fix handling of AppliedType aliases in outerPrefix [#20190](https://github.com/lampepfl/dotty/pull/20190) +- Elide unit binding when beta-reducing [#20085](https://github.com/lampepfl/dotty/pull/20085) + +## Typer + +- Reduce projections of type aliases with class type prefixes [#19931](https://github.com/lampepfl/dotty/pull/19931) +- Re-lub also hard union types in simplify [#20027](https://github.com/lampepfl/dotty/pull/20027) +- Fix #19789: Merge same TypeParamRef in orDominator [#20090](https://github.com/lampepfl/dotty/pull/20090) +- Allow SAM types to contain match alias refinements [#20092](https://github.com/lampepfl/dotty/pull/20092) +- Don't dealias when deciding which arguments to defer [#20116](https://github.com/lampepfl/dotty/pull/20116) +- Avoid the TypeVar.inst trap [#20160](https://github.com/lampepfl/dotty/pull/20160) +- Avoid crash when superType does not exist after erasure [#20188](https://github.com/lampepfl/dotty/pull/20188) +- Refine overloading and implicit disambiguation [#20084](https://github.com/lampepfl/dotty/pull/20084) +- Refactor constant folding of applications [#20099](https://github.com/lampepfl/dotty/pull/20099) +- Rollback constraints if `isSameType` failed second direction [#20109](https://github.com/lampepfl/dotty/pull/20109) +- Suppress "extension method will never be selected" for overrides [#20164](https://github.com/lampepfl/dotty/pull/20164) +- Allow SAM types to contain multiple refinements [#20172](https://github.com/lampepfl/dotty/pull/20172) +- Normalize when verifying if TypeTestCasts are unchecked [#20258](https://github.com/lampepfl/dotty/pull/20258) + +# Experimental Changes + +- Named tuples second implementation [#19174](https://github.com/lampepfl/dotty/pull/19174) +- Change rules for given prioritization [#19300](https://github.com/lampepfl/dotty/pull/19300) +- Enable experimental mode when experimental feature is imported [#19807](https://github.com/lampepfl/dotty/pull/19807) +- Add message parameter to `@experimental` annotation [#19935](https://github.com/lampepfl/dotty/pull/19935) +- Implement match type amendment: extractors follow aliases and singletons [#20161](https://github.com/lampepfl/dotty/pull/20161) + +## Capture Checking + +- Carry and check universal capability from parents correctly [#20004](https://github.com/lampepfl/dotty/pull/20004) +- Make parameter types of context functions inferred type trees [#20155](https://github.com/lampepfl/dotty/pull/20155) +- Handle reach capabilities correctly in depedent functions [#20203](https://github.com/lampepfl/dotty/pull/20203) +- Fix the visibility check in `markFree` [#20221](https://github.com/lampepfl/dotty/pull/20221) +- Make inline proxy vals have inferred types [#20241](https://github.com/lampepfl/dotty/pull/20241) +- CC: Give more info when context function parameters leak [#20244](https://github.com/lampepfl/dotty/pull/20244) +- Plug soundness hole for reach capabilities [#20051](https://github.com/lampepfl/dotty/pull/20051) +- Tighten the screws a bit more to seal the soundness hole for reach capabilities [#20056](https://github.com/lampepfl/dotty/pull/20056) +- Drop retains annotations in inferred type trees [#20057](https://github.com/lampepfl/dotty/pull/20057) +- Allow @retains arguments to be context functions [#20232](https://github.com/lampepfl/dotty/pull/20232) +- Fix conversion of this.fld capture refs under separate compilation [#20238](https://github.com/lampepfl/dotty/pull/20238) + +## Erased definitions + +- Fix "Compiler crash when using CanThrow" [#20210](https://github.com/lampepfl/dotty/pull/20210) +- Only allow erased parameters in erased definitions [#19686](https://github.com/lampepfl/dotty/pull/19686) + +## Initialization + +- Deprecate `StandardPlugin.init` in favor of `initialize` method taking implicit Context [#20330](https://github.com/lampepfl/dotty/pull/20330) +- Fix missing changesParents in PostTyper [#20062](https://github.com/lampepfl/dotty/pull/20062) +- Special case for next field of colon colon in global init checker [#20281](https://github.com/lampepfl/dotty/pull/20281) +- Extend whitelist in global initialization checker [#20290](https://github.com/lampepfl/dotty/pull/20290) + +## Macro Annotations + +- Allow macro annotation to transform companion [#19677](https://github.com/lampepfl/dotty/pull/19677) +- Remove experimental `MainAnnotation`/`newMain` (replaced with `MacroAnnotation`) [#19937](https://github.com/lampepfl/dotty/pull/19937) + +## Nullability + +- Add flexible types to deal with Java-defined signatures under -Yexplicit-nulls [#18112](https://github.com/lampepfl/dotty/pull/18112) +- Fix #20287: Add flexible types to Quotes library [#20293](https://github.com/lampepfl/dotty/pull/20293) +- Add fromNullable to Predef for explicit nulls [#20222](https://github.com/lampepfl/dotty/pull/20222) + + +# Contributors + +Thank you to all the contributors who made this release possible 🎉 + +According to `git shortlog -sn --no-merges 3.4.2..3.5.0-RC1` these are: + +``` + 137 Martin Odersky + 51 Eugene Flesselle + 32 Jamie Thompson + 25 Nicolas Stucki + 22 Sébastien Doeraene + 18 noti0na1 + 16 Matt Bovel + 12 Guillaume Martres + 9 Paweł Marks + 9 Yichen Xu + 8 Jan Chyb + 7 Hamza REMMAL + 6 Jędrzej Rochala + 6 Som Snytt + 5 Fengyun Liu + 5 dependabot[bot] + 3 Mikołaj Fornal + 2 Aviv Keller + 2 EnzeXing + 2 Wojciech Mazur + 1 Chris Pado + 1 Filip Zybała + 1 Georgi Krastev + 1 Hamza Remmal + 1 Jisoo Park + 1 Katarzyna Marek + 1 Lucas Nouguier + 1 Lucy Martin + 1 Ola Flisbäck + 1 Pascal Weisenburger + 1 Quentin Bernet + 1 Raphael Jolly + 1 Stephane Bersier + 1 Tomasz Godzik + 1 Yoonjae Jeon + 1 aherlihy + 1 rochala + 1 willerf +```