From 41f5990b4b1857d5a10fbf8d5409a77015eeacc1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pawe=C5=82=20Marks?= Date: Wed, 20 Dec 2023 17:29:56 +0100 Subject: [PATCH] Add changelog for 3.4.0-RC1 --- changelogs/3.4.0-RC1.md | 466 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 466 insertions(+) create mode 100644 changelogs/3.4.0-RC1.md diff --git a/changelogs/3.4.0-RC1.md b/changelogs/3.4.0-RC1.md new file mode 100644 index 000000000000..79695cad83f9 --- /dev/null +++ b/changelogs/3.4.0-RC1.md @@ -0,0 +1,466 @@ +# Highlights of the release + +- Make polymorphic functions more efficient and expressive [#17548](https://github.com/lampepfl/dotty/pull/17548) +- SIP-56: Better foundations for match types [#18262](https://github.com/lampepfl/dotty/pull/18262) +- Make SIP 54 (Multi-Source Extension Overloads) a standard feature [#17441](https://github.com/lampepfl/dotty/pull/17441) +- Value parameter inference for polymorphic lambdas [#18041](https://github.com/lampepfl/dotty/pull/18041) +- Add `@publicInBinary` annotation and `-WunstableInlineAccessors` linting flag [#18402](https://github.com/lampepfl/dotty/pull/18402) +- Stabilize Quotes `defn.PolyFunction` [#18480](https://github.com/lampepfl/dotty/pull/18480) +- Stabilize Quotes `Flags.AbsOverride` [#18482](https://github.com/lampepfl/dotty/pull/18482) +- Add `-experimental` compiler flags [#18571](https://github.com/lampepfl/dotty/pull/18571) +- Stabilize SIP-53 (quote pattern explicit type variable syntax) [#18574](https://github.com/lampepfl/dotty/pull/18574) +- Add reflect TypeRepr.dealiasKeepOpaques [#18583](https://github.com/lampepfl/dotty/pull/18583) +- Add attributes section to TASTy and use it for Stdlib TASTy [#18599](https://github.com/lampepfl/dotty/pull/18599) +- Error when reading class file with unknown newer jdk version [#18618](https://github.com/lampepfl/dotty/pull/18618) +- Add support for xsbti.compile.CompileProgress [#18739](https://github.com/lampepfl/dotty/pull/18739) +- Improve type inference for functions like fold [#18780](https://github.com/lampepfl/dotty/pull/18780) +- Improve error message for mismatched tasty versions, allow configuration of header unpickler [#18828](https://github.com/lampepfl/dotty/pull/18828) +- In 3.4 make refutable patterns in a for comprehension an error [#18842](https://github.com/lampepfl/dotty/pull/18842) +- Disallow use of PolyFunction in user code [#18920](https://github.com/lampepfl/dotty/pull/18920) +- Store source file in TASTY attributes [#18948](https://github.com/lampepfl/dotty/pull/18948) +- First step to pipelining support - enable reading Java symbols from TASTy [#19074](https://github.com/lampepfl/dotty/pull/19074) +- Activate constrainResult fix in 3.4 [#19253](https://github.com/lampepfl/dotty/pull/19253) +- Parallelise JVM backend - Scala 2 port [#15392](https://github.com/lampepfl/dotty/pull/15392) + +## Deprecation warnings for old syntax + +- `_` type wildcards [#18813](https://github.com/lampepfl/dotty/pull/18813) +- `private[this]` [#18819](https://github.com/lampepfl/dotty/pull/18819) +- `var x = _` [#18821](https://github.com/lampepfl/dotty/pull/18821) +- `with` as a type operator [#18837](https://github.com/lampepfl/dotty/pull/18837) +- `xs: _*` varargs [#18872](https://github.com/lampepfl/dotty/pull/18872) +- trailing `_` to force eta expansion [#18926](https://github.com/lampepfl/dotty/pull/18926) + +# Other changes and fixes + +## Backend + +- Count size of parameters for platform limit check [#18464](https://github.com/lampepfl/dotty/pull/18464) +- Don't emit line number for synthetic unit value [#18717](https://github.com/lampepfl/dotty/pull/18717) +- Avoid too eager transform of $outer for lhs & accessor rhs [#18949](https://github.com/lampepfl/dotty/pull/18949) +- Make more anonymous functions static [#19251](https://github.com/lampepfl/dotty/pull/19251) +- Fix deadlock in initialization of CoreBTypes using Lazy container [#19298](https://github.com/lampepfl/dotty/pull/19298) +- Fix #18769: Allow HK type args in Java signatures. [#18883](https://github.com/lampepfl/dotty/pull/18883) +- Loading symbols from TASTy files directly [#17594](https://github.com/lampepfl/dotty/pull/17594) +- Use dedicated equals method for univerval equality of chars [#18770](https://github.com/lampepfl/dotty/pull/18770) + +## Erasure + +- Get generic signature of fields entered after erasure from their accessor [#19207](https://github.com/lampepfl/dotty/pull/19207) +- Detect case where two alternatives are the same after widening ExprTypes [#18787](https://github.com/lampepfl/dotty/pull/18787) +- Improve erased params logic [#18433](https://github.com/lampepfl/dotty/pull/18433) + +## Experimental: Capture Checking + +- Fix capture set variable installation in Setup [#18885](https://github.com/lampepfl/dotty/pull/18885) +- Don't follow opaque aliases when transforming sym info for cc [#18929](https://github.com/lampepfl/dotty/pull/18929) +- Reset `comparersInUse` to zero in `ContextState.reset` [#18915](https://github.com/lampepfl/dotty/pull/18915) +- Special handling of experimental.captureChecking import [#17427](https://github.com/lampepfl/dotty/pull/17427) +- Change handling of curried function types in capture checking [#18131](https://github.com/lampepfl/dotty/pull/18131) +- Fix #18246: correctly compute capture sets in `TypeComparer.glb` [#18254](https://github.com/lampepfl/dotty/pull/18254) +- New capture escape checking based on levels [#18463](https://github.com/lampepfl/dotty/pull/18463) +- A more robust scheme for resetting denotations after Recheck [#18534](https://github.com/lampepfl/dotty/pull/18534) +- A more flexible scheme for handling the universal capability [#18699](https://github.com/lampepfl/dotty/pull/18699) +- Fix potential soundness hole when adding references to a mapped capture set [#18758](https://github.com/lampepfl/dotty/pull/18758) +- Alternative scheme for cc encapsulation [#18899](https://github.com/lampepfl/dotty/pull/18899) +- Make reach refinement shallow [#19171](https://github.com/lampepfl/dotty/pull/19171) + +## F-bounds + +- Don't check bounds of Java applications in Java units [#18054](https://github.com/lampepfl/dotty/pull/18054) + +## GADTs + +- Avoid embedding SelectionProtos in Conversions [#17755](https://github.com/lampepfl/dotty/pull/17755) +- Freeze constraints while calculating GADT full bounds [#18222](https://github.com/lampepfl/dotty/pull/18222) + +## Implicits + +- Followup fix to transparent inline conversion [#18130](https://github.com/lampepfl/dotty/pull/18130) +- Select local implicits over name-imported over wildcard imported [#18203](https://github.com/lampepfl/dotty/pull/18203) +- Fix how implicit candidates are combined [#18321](https://github.com/lampepfl/dotty/pull/18321) +- Improve error message about missing type of context function parameter [#18788](https://github.com/lampepfl/dotty/pull/18788) +- Support implicit arguments before extractor method [#18671](https://github.com/lampepfl/dotty/pull/18671) +- Tweak convertible implicits fix [#18727](https://github.com/lampepfl/dotty/pull/18727) + +## Incremental Compilation + +- Make incremental compilation aware of synthesized mirrors [#18310](https://github.com/lampepfl/dotty/pull/18310) + +## Inference + +- Honour hard unions in lubbing and param replacing [#18680](https://github.com/lampepfl/dotty/pull/18680) + +## Infrastructure + +- Use -Yscala2-library-tasty to add Scala 2 lib TASTY to scalac (internal only) [#18613](https://github.com/lampepfl/dotty/pull/18613) +- Rename `stdlib-bootstrapped-tasty` to `scala2-library-tasty` [#18615](https://github.com/lampepfl/dotty/pull/18615) +- Fix #19286: Freeze rubygems-update at < 3.5.0. [#19288](https://github.com/lampepfl/dotty/pull/19288) + +## Initialization + +- Fix #17997: Handle intersection type as this type of super type [#18069](https://github.com/lampepfl/dotty/pull/18069) +- Add test for issue #17997 affecting the global object initialization checker [#18141](https://github.com/lampepfl/dotty/pull/18141) +- Fix i18624 and add test case for it [#18859](https://github.com/lampepfl/dotty/pull/18859) +- Treat new Array(0) as immutable [#19192](https://github.com/lampepfl/dotty/pull/19192) +- Fix #18407: Ignore Quote/Slice in init checker [#18848](https://github.com/lampepfl/dotty/pull/18848) +- Check safe initialization of static objects [#16970](https://github.com/lampepfl/dotty/pull/16970) +- Pattern match support in checking global objects [#18127](https://github.com/lampepfl/dotty/pull/18127) +- Fix crash in global object initialization checker when select target has no source [#18627](https://github.com/lampepfl/dotty/pull/18627) +- Fix warning underlining in global init checker [#18668](https://github.com/lampepfl/dotty/pull/18668) +- Fix i18629 [#18839](https://github.com/lampepfl/dotty/pull/18839) +- I18628 [#18841](https://github.com/lampepfl/dotty/pull/18841) +- Make safe init checker skip global objects [#18906](https://github.com/lampepfl/dotty/pull/18906) +- Handle local lazy vals properly [#18998](https://github.com/lampepfl/dotty/pull/18998) + +## Inline + +- Fix regression: inline match crash when rhs uses private inlined methods [#18595](https://github.com/lampepfl/dotty/pull/18595) +- Add structural classes of dynamicApply before inlining [#18766](https://github.com/lampepfl/dotty/pull/18766) +- Set missing expansion span for copied inlined node [#18229](https://github.com/lampepfl/dotty/pull/18229) +- Fix `callTrace` of inlined methods [#18738](https://github.com/lampepfl/dotty/pull/18738) + +## Linting + +- Keep tree of type ascriptions of quote pattern splices [#18412](https://github.com/lampepfl/dotty/pull/18412) +- Fix false positive in WUnused for renamed path-dependent imports [#18468](https://github.com/lampepfl/dotty/pull/18468) +- Fix false positive in WUnused for renamed path-dependent imports (2) [#18617](https://github.com/lampepfl/dotty/pull/18617) +- Fix wunused false positive on CanEqual [#18641](https://github.com/lampepfl/dotty/pull/18641) +- Implement -Xlint:private-shadow, type-parameter-shadow [#17622](https://github.com/lampepfl/dotty/pull/17622) +- Fix: reversed wconf parsing order to mirror scala 2 [#18503](https://github.com/lampepfl/dotty/pull/18503) +- Revert Fix false positive in WUnused for renamed path-dependent imports [#18514](https://github.com/lampepfl/dotty/pull/18514) + +## Macro Annotations + +- Enter missing symbols generated by the MacroAnnotation expansion [#18826](https://github.com/lampepfl/dotty/pull/18826) + +## Match Types + +- Allow Tuple.Head and Tuple.Tail to work with EmptyTuple [#17189](https://github.com/lampepfl/dotty/pull/17189) +- Fix match type reduction with avoided types [#18043](https://github.com/lampepfl/dotty/pull/18043) +- Strip LazyRef before calling simplified, in MT reduction [#18218](https://github.com/lampepfl/dotty/pull/18218) +- Fix MT separate compilation bug [#18398](https://github.com/lampepfl/dotty/pull/18398) +- Do not show deprecation warning for `_` in type match case [#18887](https://github.com/lampepfl/dotty/pull/18887) + +## Nullability + +- Improve logic when to emit pattern type error [#18093](https://github.com/lampepfl/dotty/pull/18093) +- Allow nullability flow typing even in presence of pattern match [#18206](https://github.com/lampepfl/dotty/pull/18206) +- Fix #11967: flow typing nullability in pattern matches [#18212](https://github.com/lampepfl/dotty/pull/18212) +- Fix #18282: consider Predef.eq/ne in nullability flow typing [#18299](https://github.com/lampepfl/dotty/pull/18299) +- Make `this.type` nullable again (unless under -Yexplicit-nulls). [#18399](https://github.com/lampepfl/dotty/pull/18399) + +## Opaque Types + +- Type ascribe trees that require opaque type usage [#18101](https://github.com/lampepfl/dotty/pull/18101) + +## Parser + +- Fix selecting terms using _root_ [#18335](https://github.com/lampepfl/dotty/pull/18335) +- Tweak java getlitch not to skip zero [#18491](https://github.com/lampepfl/dotty/pull/18491) +- Fix i18518 [#18520](https://github.com/lampepfl/dotty/pull/18520) +- Only apply `future` patches on `future-migration` [#18820](https://github.com/lampepfl/dotty/pull/18820) +- Parser simple expression error recovery change from `null` to `???` [#19103](https://github.com/lampepfl/dotty/pull/19103) + +## Pattern Matching + +- Fix syntax and parsing of vararg patterns [#18055](https://github.com/lampepfl/dotty/pull/18055) +- Avoid over widening in SpaceEngine [#18252](https://github.com/lampepfl/dotty/pull/18252) +- Fix regression in exhaustivity of HK types [#18303](https://github.com/lampepfl/dotty/pull/18303) +- Fix missing case in isSubspace, which broke reachablility [#18326](https://github.com/lampepfl/dotty/pull/18326) +- Unsuppress unchecked warnings [#18377](https://github.com/lampepfl/dotty/pull/18377) +- Consider extension methods in Space isSameUnapply [#18642](https://github.com/lampepfl/dotty/pull/18642) +- Fix unreachable warning in deeply nested sealed hierarchy [#18706](https://github.com/lampepfl/dotty/pull/18706) +- Remove unnecessary and recursive Space decomposition [#19216](https://github.com/lampepfl/dotty/pull/19216) +- Prioritise sequence-matches over product-sequence-matches [#19260](https://github.com/lampepfl/dotty/pull/19260) +- Propagate constant in result of inline match [#18455](https://github.com/lampepfl/dotty/pull/18455) +- Disable match anaylsis in inlined trees [#19190](https://github.com/lampepfl/dotty/pull/19190) +- Teach provablyDisjoint about AnyKind [#18510](https://github.com/lampepfl/dotty/pull/18510) +- Warn about unchecked type tests in primitive catch cases [#19206](https://github.com/lampepfl/dotty/pull/19206) +- Reprioritise seq-match over product-seq-match [#19277](https://github.com/lampepfl/dotty/pull/19277) +- Fix exhaustivity due to separate TypeVar lambdas [#18616](https://github.com/lampepfl/dotty/pull/18616) + +## Presentation Compiler + +- Support completions for extension definition parameter [#18331](https://github.com/lampepfl/dotty/pull/18331) +- Fix: Don't collect map, flatMap, withFilter in for-comprehension [#18430](https://github.com/lampepfl/dotty/pull/18430) +- Bugfix: Catch exception from the compiler for broken shadowed pickles [#18502](https://github.com/lampepfl/dotty/pull/18502) +- Bugfix: highlight for enum type params [#18528](https://github.com/lampepfl/dotty/pull/18528) +- Bugfix: No signature help for local methods [#18594](https://github.com/lampepfl/dotty/pull/18594) +- Bugfix: add `moduleClass` imported symbols in `IndexedContext` [#18620](https://github.com/lampepfl/dotty/pull/18620) +- Bugfix: Named args completions with default values [#18633](https://github.com/lampepfl/dotty/pull/18633) +- Fix: match completions for type aliases [#18667](https://github.com/lampepfl/dotty/pull/18667) +- Bugfix: add multiline comment completion [#18703](https://github.com/lampepfl/dotty/pull/18703) +- Bugfix: Backticked named arguments [#18704](https://github.com/lampepfl/dotty/pull/18704) +- Bugfix: [metals] Case completions for tuple type [#18751](https://github.com/lampepfl/dotty/pull/18751) +- Completions should prepend, not replace as it is for Scala 2 [#18803](https://github.com/lampepfl/dotty/pull/18803) +- Bugfix: rename end marker [#18838](https://github.com/lampepfl/dotty/pull/18838) +- Presentation compiler: Bugfix for semantic tokens and synthetic decorations [#18955](https://github.com/lampepfl/dotty/pull/18955) +- Show documentation for value forwarders in completions [#19200](https://github.com/lampepfl/dotty/pull/19200) +- Bugfix: Document highlight on class constructors [#19209](https://github.com/lampepfl/dotty/pull/19209) +- Bugfix: Completions for extension methods with name conflict [#19225](https://github.com/lampepfl/dotty/pull/19225) + +## Polyfunctions + +- Check user defined PolyFunction refinements [#18457](https://github.com/lampepfl/dotty/pull/18457) +- Support polymorphic functions with erased parameters [#18293](https://github.com/lampepfl/dotty/pull/18293) +- Use `PolyFunction` instead of `ErasedFunction` [#18295](https://github.com/lampepfl/dotty/pull/18295) + +## Quotes + +- Support type variable with bounds in quoted pattern [#16910](https://github.com/lampepfl/dotty/pull/16910) +- Add new EXPLICITtpt to TASTy format [#17298](https://github.com/lampepfl/dotty/pull/17298) +- Inhibit typer to insert contextual arguments when it is inside arguments of HOAS patterns [#18040](https://github.com/lampepfl/dotty/pull/18040) +- Compile quote patterns directly into QuotePattern AST [#18133](https://github.com/lampepfl/dotty/pull/18133) +- Add missing span to synthesized product mirror [#18354](https://github.com/lampepfl/dotty/pull/18354) +- Improve non-static macro implementation error message [#18405](https://github.com/lampepfl/dotty/pull/18405) +- Fix scala 2 macros in traits with type parameters [#18663](https://github.com/lampepfl/dotty/pull/18663) +- Patch `underlyingArgument` to avoid mapping into modules [#18923](https://github.com/lampepfl/dotty/pull/18923) +- Fallback erasing term references [#18731](https://github.com/lampepfl/dotty/pull/18731) +- Fix ignored type variable bound warning in type quote pattern [#18199](https://github.com/lampepfl/dotty/pull/18199) +- Splice hole with singleton captures [#18357](https://github.com/lampepfl/dotty/pull/18357) +- Fix macros with erased arguments [#18431](https://github.com/lampepfl/dotty/pull/18431) +- Deprecate 3-arg `FunctionClass` constructor [#18472](https://github.com/lampepfl/dotty/pull/18472) +- Deprecate `Quotes` `{MethodType,TermParamClause}.isErased` [#18479](https://github.com/lampepfl/dotty/pull/18479) +- Avoid crashes on missing positions [#19250](https://github.com/lampepfl/dotty/pull/19250) + +## Reflection + +- Add reflect.ValOrDefDef [#16974](https://github.com/lampepfl/dotty/pull/16974) +- Check New tree for ill-formed module instantiations [#17553](https://github.com/lampepfl/dotty/pull/17553) +- Add reflect `TypeLambda.paramVariances` [#17568](https://github.com/lampepfl/dotty/pull/17568) +- Make check flags for `newMethod`, `newVal` and `newBind` in Quotes API less restrictive [#18217](https://github.com/lampepfl/dotty/pull/18217) +- Normalise mirrorType for mirror Synthesis [#19199](https://github.com/lampepfl/dotty/pull/19199) +- Add reflect `defn.FunctionClass` overloads [#16849](https://github.com/lampepfl/dotty/pull/16849) +- Stabilize reflect flag `JavaAnnotation` [#19267](https://github.com/lampepfl/dotty/pull/19267) +- Stabilize reflect `paramVariance` [#19268](https://github.com/lampepfl/dotty/pull/19268) + +## Reporting + +- Take into account the result type of inline implicit conversions unless they are transparent [#17924](https://github.com/lampepfl/dotty/pull/17924) +- Check if a fatal warning issued in typer is silenced, before converting it into an error [#18089](https://github.com/lampepfl/dotty/pull/18089) +- Elide companion defs to a `object` extending `AnyVal` [#18451](https://github.com/lampepfl/dotty/pull/18451) +- Add regression test for issue i18493 [#18497](https://github.com/lampepfl/dotty/pull/18497) +- Add better explanation to error message [#18665](https://github.com/lampepfl/dotty/pull/18665) +- Better error message when accessing private members [#18690](https://github.com/lampepfl/dotty/pull/18690) +- Improve message for discarded pure non-Unit values [#18723](https://github.com/lampepfl/dotty/pull/18723) +- Better error message when a pattern match extractor is not found. [#18725](https://github.com/lampepfl/dotty/pull/18725) +- Give "did you mean ...?" hints also for simple identifiers [#18747](https://github.com/lampepfl/dotty/pull/18747) +- Better error for definition followed by keyword [#18752](https://github.com/lampepfl/dotty/pull/18752) +- Better explain message for 'pattern expected' [#18753](https://github.com/lampepfl/dotty/pull/18753) +- Improve failure message of enum `fromOrdinal`/`valueOf` [#19182](https://github.com/lampepfl/dotty/pull/19182) +- Fix type mismatch error confusion between types with same simple name [#19204](https://github.com/lampepfl/dotty/pull/19204) +- Add hint for nested quotes missing staged `Quotes` [#18755](https://github.com/lampepfl/dotty/pull/18755) +- Better error messages for missing commas and more [#18785](https://github.com/lampepfl/dotty/pull/18785) +- Fix imported twice error messages [#18102](https://github.com/lampepfl/dotty/pull/18102) +- Improve error message for inaccessible types [#18406](https://github.com/lampepfl/dotty/pull/18406) +- Future migration warning for `with` type operator [#18818](https://github.com/lampepfl/dotty/pull/18818) +- Improve assertion error message for `Apply` and `TypeApply` [#18700](https://github.com/lampepfl/dotty/pull/18700) +- Shorten traces for TypeMismatch errors under -explain [#18742]( +- Improve `with` in type migration warning [#18852](https://github.com/lampepfl/dotty/pull/18852) +hub.com/lampepfl/dotty/pull/18742) +- Future migration warning for alphanumeric infix operator [#18908](https://github.com/lampepfl/dotty/pull/18908) +- Make sure that trace is shown correctly in the presence of invalid line numbers [#18930](https://github.com/lampepfl/dotty/pull/18930) +- Add migration warning for XML literals in language future [#19101](https://github.com/lampepfl/dotty/pull/19101) +- Avoid diagnostic message forcing crashing the compiler [#19113](https://github.com/lampepfl/dotty/pull/19113) +- Make sure that the stacktrace is shown with `-Ydebug-unpickling` [#19115](https://github.com/lampepfl/dotty/pull/19115) +- Improve `asExprOf` cast error formatting [#19195](https://github.com/lampepfl/dotty/pull/19195) +- Do not warn on underscore wildcard type in pattern [#19249](https://github.com/lampepfl/dotty/pull/19249) + +## Scala-JS + +- Fix #18658: Handle varargs of generic types in `JSExportsGen`. [#18659](https://github.com/lampepfl/dotty/pull/18659) + +## Scaladoc + +- Fix incorrect comment parser used in nightly scaladoc [#18523](https://github.com/lampepfl/dotty/pull/18523) + +## SemanticDB + +- Export diagnostics (including unused warnings) to SemanticDB [#17835](https://github.com/lampepfl/dotty/pull/17835) +- Bugfix: Incorrect semanticdb span on Selectable [#18576](https://github.com/lampepfl/dotty/pull/18576) +- Bugfix: in semanticdb make synthetic apply disambiguator consistent w/ Scala 2 implicit [#17341](https://github.com/lampepfl/dotty/pull/17341) + +## Standard Library + +- Intrinsify `constValueTuple` and `summonAll` [#18013](https://github.com/lampepfl/dotty/pull/18013) +- Fix #18609: Add language.`3.4` and language.`3.4-migration`. [#18610](https://github.com/lampepfl/dotty/pull/18610) + +## TASTy format + +- Eliminate FromJavaObject from TASTy of Java sources [#19259](https://github.com/lampepfl/dotty/pull/19259) +- Add new HOLETYPES to TASTy format [#17225](https://github.com/lampepfl/dotty/pull/17225) +- Add capture checking attributes to TASTy [#19033](https://github.com/lampepfl/dotty/pull/19033) +- Add TASTyInfo abstraction [#19089](https://github.com/lampepfl/dotty/pull/19089) +- Add UTF8 abstraction in the TASTy format [#19090](https://github.com/lampepfl/dotty/pull/19090) + +## Tooling + +- Don't add explanation twice [#18779](https://github.com/lampepfl/dotty/pull/18779) +- ExtractDependencies uses more efficient caching [#18403](https://github.com/lampepfl/dotty/pull/18403) +- Introduce the SourceVersions 3.4 and 3.4-migration; make 3.4 the default. [#18501](https://github.com/lampepfl/dotty/pull/18501) +- Bugfix: Completions for named args in wrong order [#18702](https://github.com/lampepfl/dotty/pull/18702) +- Align unpickled Scala 2 accessors encoding with Scala 3 [#18874](https://github.com/lampepfl/dotty/pull/18874) +- Reinterpret Scala 2 case accessors `xyz$access$idx` [#18907](https://github.com/lampepfl/dotty/pull/18907) +- Presentation-compiler: Add synthetic decorations [#18951](https://github.com/lampepfl/dotty/pull/18951) +- Add compilation unit info to `ClassSymbol` [#19010](https://github.com/lampepfl/dotty/pull/19010) +- Make sure that patches for 3.0 are also applied in later versions [#19018](https://github.com/lampepfl/dotty/pull/19018) + +## Transform + +- Also consider @targetName when checking private overrides [#18361](https://github.com/lampepfl/dotty/pull/18361) +- Teach PostTyper to handle untupled context closures [#17739](https://github.com/lampepfl/dotty/pull/17739) +- Properly dealias tuple types when specializing [#18724](https://github.com/lampepfl/dotty/pull/18724) +- Fix condition in prefixIsElidable to prevent compiler crash [#18924](https://github.com/lampepfl/dotty/pull/18924) +- Fix #18816: Transfer the span of rewired `This` nodes in `fullyParameterizedDef`. [#18840](https://github.com/lampepfl/dotty/pull/18840) +- List(...) optimization to avoid intermediate array [#17166](https://github.com/lampepfl/dotty/pull/17166) +- Make Array.apply an intrinsic [#18537](https://github.com/lampepfl/dotty/pull/18537) +- Add missing span to extension method select [#18557](https://github.com/lampepfl/dotty/pull/18557) + +## Tuples + +- Handle TupleXXL in match analysis [#19212](https://github.com/lampepfl/dotty/pull/19212) +- Add `reverse` method to `NonEmptyTuple` [#13752](https://github.com/lampepfl/dotty/pull/13752) +- Refine handling of pattern binders for large tuples [#19085](https://github.com/lampepfl/dotty/pull/19085) +- Introduce `Tuple.ReverseOnto` and use it in `Tuple.reverse` [#19183](https://github.com/lampepfl/dotty/pull/19183) + +## Typeclass Derivation + +- Consider all parents when checking access to the children of a sum [#19083](https://github.com/lampepfl/dotty/pull/19083) + +## Typer + +- Fix logic when comparing var/def bindings with val refinements [#18049](https://github.com/lampepfl/dotty/pull/18049) +- Fix variance checking in refinements [#18053](https://github.com/lampepfl/dotty/pull/18053) +- Fix accessibleType for package object prefixes [#18057](https://github.com/lampepfl/dotty/pull/18057) +- Refix avoid GADT casting with ProtoTypes [#18085](https://github.com/lampepfl/dotty/pull/18085) +- Avoid shadowing by private definitions in more situations [#18142](https://github.com/lampepfl/dotty/pull/18142) +- Refine infoDependsOnPrefix [#18204](https://github.com/lampepfl/dotty/pull/18204) +- Fix spurious subtype check pruning when both sides have unions [#18213](https://github.com/lampepfl/dotty/pull/18213) +- Reimplement support for type aliases in SAM types [#18317](https://github.com/lampepfl/dotty/pull/18317) +- Fix adaptation of constants to constant type aliases [#18360](https://github.com/lampepfl/dotty/pull/18360) +- Issue "positional after named argument" errors [#18363](https://github.com/lampepfl/dotty/pull/18363) +- Deprecate `ops.long.S` [#18426](https://github.com/lampepfl/dotty/pull/18426) +- Tweak selection from self types [#18467](https://github.com/lampepfl/dotty/pull/18467) +- Use the unwidened type when casting structural calls [#18527](https://github.com/lampepfl/dotty/pull/18527) +- Fix #18649: Use loBound of param types when materializing a context function. [#18651](https://github.com/lampepfl/dotty/pull/18651) +- Identify structural trees on Match Type qualifiers [#18765](https://github.com/lampepfl/dotty/pull/18765) +- Tweak approximation of type variables when computing default types [#18798](https://github.com/lampepfl/dotty/pull/18798) +- Admit parametric aliases of classes in parent typing [#18849](https://github.com/lampepfl/dotty/pull/18849) +- Also add privateWithin when creating constructor proxies [#18893](https://github.com/lampepfl/dotty/pull/18893) +- Revert part of `Simplify defn.FunctionOf.unapply` [#19012](https://github.com/lampepfl/dotty/pull/19012) +- Check @targetName when subtyping Refined Types [#19081](https://github.com/lampepfl/dotty/pull/19081) +- Record failures to adapt application arguments [#18269](https://github.com/lampepfl/dotty/pull/18269) +- Improve handling of AndTypes on the LHS of subtype comparisons [#18235](https://github.com/lampepfl/dotty/pull/18235) +- Allow inferred parameter types always, when eta-expanding [#18771](https://github.com/lampepfl/dotty/pull/18771) +- Fix failing bounds check on default getter [#18419](https://github.com/lampepfl/dotty/pull/18419) +- Use constructor's default getters in case class synthetic `apply` methods [#18716](https://github.com/lampepfl/dotty/pull/18716) +- Keep qualifier of Ident when selecting setter [#18714](https://github.com/lampepfl/dotty/pull/18714) +- Retract SynthesizeExtMethodReceiver mode when when going deeper in overloading resolution [#18759](https://github.com/lampepfl/dotty/pull/18759) +- Constant fold all the number conversion methods [#17446](https://github.com/lampepfl/dotty/pull/17446) +- Refine criterion when to widen types [#17180](https://github.com/lampepfl/dotty/pull/17180) +- Run all MatchType reduction under Mode.Type [#17937](https://github.com/lampepfl/dotty/pull/17937) +- Force consistent MT post-redux normalisation, disallow infinite match types [#18073](https://github.com/lampepfl/dotty/pull/18073) +- Fix #17467: Limit isNullable widening to stable TermRefs; remove under explicit nulls. [#17470](https://github.com/lampepfl/dotty/pull/17470) +- Disallow naming the root package, except for selections [#18187](https://github.com/lampepfl/dotty/pull/18187) +- Contextual varargs parameters [#18186](https://github.com/lampepfl/dotty/pull/18186) +- Encode the name of the attribute in Selectable.selectDynamic [#18928](https://github.com/lampepfl/dotty/pull/18928) +- Remove linearization requirement for override ref checks from java classes [#18953](https://github.com/lampepfl/dotty/pull/18953) +- Fix type inferencing (constraining) regressions [#19189](https://github.com/lampepfl/dotty/pull/19189) +- Repeated params must correspond in override [#16836](https://github.com/lampepfl/dotty/pull/16836) +- Convert SAM result types to function types [#17740](https://github.com/lampepfl/dotty/pull/17740) +- Disallow `infix` objects [#17966](https://github.com/lampepfl/dotty/pull/17966) +- Fix hasMatchingMember handling NoDenotation [#17977](https://github.com/lampepfl/dotty/pull/17977) +- Fix: disallow toplevel infix definitions for vals, vars, givens, methods and implicits [#17994](https://github.com/lampepfl/dotty/pull/17994) +- Curried methods are not valid SAM methods [#18110](https://github.com/lampepfl/dotty/pull/18110) +- Fix #17115: Try to normalize while computing `typeSize`. [#18386](https://github.com/lampepfl/dotty/pull/18386) +- Add default arguments to derived refined type [#18435](https://github.com/lampepfl/dotty/pull/18435) +- Handle dependent context functions [#18443](https://github.com/lampepfl/dotty/pull/18443) +- Fix variance loophole for private vars [#18693](https://github.com/lampepfl/dotty/pull/18693) +- Avoid crash arising from trying to find conversions from polymorphic singleton types [#18760](https://github.com/lampepfl/dotty/pull/18760) +- Allow inner classes of universal traits [#18796](https://github.com/lampepfl/dotty/pull/18796) +- Prevent crash when extension not found [#18830](https://github.com/lampepfl/dotty/pull/18830) + +# Contributors + +Thank you to all the contributors who made this release possible 🎉 + +According to `git shortlog -sn --no-merges 3.3.1..3.4.0-RC1` these are: + +``` + 458 Martin Odersky + 291 Nicolas Stucki + 132 Fengyun Liu + 118 Dale Wijnand + 77 Jamie Thompson + 69 Sébastien Doeraene + 49 Paweł Marks + 32 Chris Kipp + 27 Guillaume Martres + 26 Rikito Taniguchi + 21 Yichen Xu + 19 EnzeXing + 14 Szymon Rodziewicz + 13 Lucas Leblanc + 12 Jakub Ciesluk + 12 Jędrzej Rochala + 12 Katarzyna Marek + 11 Carl + 10 David Hua + 9 Florian3k + 9 Wojciech Mazur + 8 Eugene Flesselle + 8 ghostbuster91 + 7 Hamza Remmal + 7 Ondrej Lhotak + 7 Quentin Bernet + 6 Jan Chyb + 6 Julien Richard-Foy + 6 Kacper Korban + 6 Seth Tisue + 5 Lorenzo Gabriele + 5 Matt Bovel + 5 Som Snytt + 5 Yuito Murase + 5 dependabot[bot] + 3 David + 3 Lucas + 3 Pascal Weisenburger + 3 Tomasz Godzik + 2 Aleksander Rainko + 2 Decel + 2 Guillaume Raffin + 2 Ondřej Lhoták + 2 Oron Port + 2 danecek + 2 rochala + 1 Adam Dąbrowski + 1 Aleksey Troitskiy + 1 Arnout Engelen + 1 Ausmarton Zarino Fernandes + 1 Bjorn Regnell + 1 Daniel Esik + 1 Eugene Yokota + 1 François Monniot + 1 Jakub Cieśluk + 1 John Duffell + 1 John M. Higgins + 1 Justin Reardon + 1 Kai + 1 Kisaragi + 1 Lucas Nouguier + 1 Lukas Rytz + 1 LydiaSkuse + 1 Martin Kucera + 1 Martin Kučera + 1 Matthew Rooney + 1 Matthias Kurz + 1 Mikołaj Fornal + 1 Nicolas Almerge + 1 Preveen P + 1 Shardul Chiplunkar + 1 Stefan Wachter + 1 philippus + 1 q-ata + 1 slim +```