diff --git a/changelogs/3.6.0-RC1.md b/changelogs/3.6.0-RC1.md new file mode 100644 index 000000000000..31cfbdc698ac --- /dev/null +++ b/changelogs/3.6.0-RC1.md @@ -0,0 +1,175 @@ +# Highlights of the release + +- Stabilise SIP-47 (Adding Clause Interleaving to method definitions) [#20861](https://github.com/scala/scala3/pull/20861) +- Implement SIP-57 - add runtimeChecked method and annotation [#20987](https://github.com/scala/scala3/pull/20987) +- Implement SIP-62 - For comprehension improvements [#20522](https://github.com/scala/scala3/pull/20522) +- Implement SIP-64 as non-experimental [#21668](https://github.com/scala/scala3/pull/21668) +- Make named tuples a standard feature [#21680](https://github.com/scala/scala3/pull/21680) +- Switch mapping of context bounds to using clauses in 3.6 [#21257](https://github.com/scala/scala3/pull/21257) +- Require named arguments for java defined annotations [#21329](https://github.com/scala/scala3/pull/21329) + +# Other changes and fixes + +## Annotations + +- Tighten java annot value parsing [#21650](https://github.com/scala/scala3/pull/21650) + +## Dependencies + +- REPL: JLine 3.27.0 (was 3.25.1) [#21752](https://github.com/scala/scala3/pull/21752) +- Scala 2.13.15 (was .14) [#21648](https://github.com/scala/scala3/pull/21648) + +## Erasure + +- Fixes IllegalAccessError with Java package protected class [#21362](https://github.com/scala/scala3/pull/21362) + +## Experimental: Capture Checking + +- Existential Capabilities [#20566](https://github.com/scala/scala3/pull/20566) +- Fix setup of CapSet arguments. [#21309](https://github.com/scala/scala3/pull/21309) +- Check all top-level covariant capture sets in checkNotUniversal [#21428](https://github.com/scala/scala3/pull/21428) +- Charge also dcs of local reaches to capture set of enclosing method [#21443](https://github.com/scala/scala3/pull/21443) +- No need to unbox if expected type is LhsProto [#21508](https://github.com/scala/scala3/pull/21508) +- Treat more closure parameter types as inferred [#21583](https://github.com/scala/scala3/pull/21583) +- Fixes for cleanup retains scheme [#21350](https://github.com/scala/scala3/pull/21350) +- Improve Contains handling [#21361](https://github.com/scala/scala3/pull/21361) +- Expand Capability types T to T^ only if no explicit capture set is given [#21375](https://github.com/scala/scala3/pull/21375) +- Tighten closure extractor in TreeInfo [#21621](https://github.com/scala/scala3/pull/21621) + +## Experimental: Strict Equality + +- Fix #21392: Adjust `canComparePredefined(Nothing, T)` in explicit nulls [#21504](https://github.com/scala/scala3/pull/21504) +- Add tracking of NotNullInfo for Match, Case, Try trees (fix #21380) [#21389](https://github.com/scala/scala3/pull/21389) + +## Experimental: Modularity + +- Revised given syntax [#21208](https://github.com/scala/scala3/pull/21208) + +## Experimental: Global Initialization + +- Analyze object when selecting from package [#21511](https://github.com/scala/scala3/pull/21511) +- Fix bug in init checker while compiling scodec-bits community project [#21574](https://github.com/scala/scala3/pull/21574) + +## Experimentals + +- [experimental feature] Support HOAS pattern with type variables for quote pattern matching [#18271](https://github.com/scala/scala3/pull/18271) + +## Exports + +- Re-use attachment in exportForwarders to handle ambiguous overloads [#21518](https://github.com/scala/scala3/pull/21518) +- Allow export statements in AnyVal [#21653](https://github.com/scala/scala3/pull/21653) + +## Extension Methods + +- Make right assoc ext method fwd refs error [#21641](https://github.com/scala/scala3/pull/21641) + +## Inline + +- Fix: throw an error before assigning ErrorType when expanding constValue [#21364](https://github.com/scala/scala3/pull/21364) + +## Implicits + +- Fix prioritization of `given`s over `implicit`s [#21226](https://github.com/scala/scala3/pull/21226) + +## JVM backend + +- Backend computes line number from source of position [#21763](https://github.com/scala/scala3/pull/21763) + +## Linting + +- CheckUnused checks type param annotations [#20549](https://github.com/scala/scala3/pull/20549) + +## Library + +- Finalize named tuples [#21710](https://github.com/scala/scala3/pull/21710) + +## Match Types + +- Enable betterMatchTypeExtractors in >= 3.6 [#21198](https://github.com/scala/scala3/pull/21198) +- Do not propagate `TypeError`s of ops from `TypeComparer#tryAlso` [#21070](https://github.com/scala/scala3/pull/21070) +- Fix #21402: Always allow type member extraction for stable scrutinees in match types. [#21700](https://github.com/scala/scala3/pull/21700) +- Add a 3.6-migration warning for MT lubbing [#21336](https://github.com/scala/scala3/pull/21336) +- Always interpret underscores inside patterns as type bounds [#21718](https://github.com/scala/scala3/pull/21718) + +## Opaque Types + +- Capture the kse3 issue in test cases and close it [#21260](https://github.com/scala/scala3/pull/21260) + +## Parser + +- Guard against recursive lower bounds in constraints [#21587](https://github.com/scala/scala3/pull/21587) + +## Pattern Matching + +- Fix a bundle of patmat issues [#21000](https://github.com/scala/scala3/pull/21000) + +## Pickling + +- Some fixes for AnnotatedTypes mapping [#19957](https://github.com/scala/scala3/pull/19957) + +## Polyfunctions + +- Fix: Check if a PolyFunction TypeTree has no ByName parameters [#21671](https://github.com/scala/scala3/pull/21671) + +## Presentation Compiler + +- Add regression test for issue 18726 [#20318](https://github.com/scala/scala3/pull/20318) +- Remove artificial `CURSOR` added to code in the completions [#20899](https://github.com/scala/scala3/pull/20899) +- Fix autoimports with using directives [#21590](https://github.com/scala/scala3/pull/21590) + +## Quotes + +- Handle suspension due to macro call in arbitrary phases [#21651](https://github.com/scala/scala3/pull/21651) +- Have a better error message when healing types [#21711](https://github.com/scala/scala3/pull/21711) +- Bound TypeRepr by Matchable in Quotes [#21377](https://github.com/scala/scala3/pull/21377) +- Expr#show: Don't crash when the expression contains an unsupported type (like a SkolemType) [#20494](https://github.com/scala/scala3/pull/20494) + +## Reflection + +- Add the possibility to create a typeSymbol in the Quotes API [#20347](https://github.com/scala/scala3/pull/20347) +- Fix stale symbols connected to lazy vals in macros [#21559](https://github.com/scala/scala3/pull/21559) + +## Reporting + +- Add better error reporting for inlined non-immutable paths [#21639](https://github.com/scala/scala3/pull/21639) +- Only replace *new* errors by warnings under `-migration` [#21289](https://github.com/scala/scala3/pull/21289) + +## REPL + +- Ignore best effort settings in repl and update docs [#21540](https://github.com/scala/scala3/pull/21540) + +## Rewrites + +- Remove empty argument lists for classes with only context bounds [#21513](https://github.com/scala/scala3/pull/21513) +- Fix rewrite logic for old ` _` syntax [#21715](https://github.com/scala/scala3/pull/21715) +- Remove the `-rewrite` option for `typechecks` methods in Quotes [#21547](https://github.com/scala/scala3/pull/21547) +- Add migration rewrite for non-named arguments in Java annotations [#21397](https://github.com/scala/scala3/pull/21397) + +## Scaladoc + +- Only trim one newline when preprocessing the content of a markdown code snippet [#21519](https://github.com/scala/scala3/pull/21519) +- Filter opaque modifier from object documentation [#21640](https://github.com/scala/scala3/pull/21640) +- Bump Inkuire version to fix it for the new Scala versions [#21611](https://github.com/scala/scala3/pull/21611) + +## Standard Library + +- Move `NamedTuple.head` to `NamedTupleDecomposition` [#21308](https://github.com/scala/scala3/pull/21308) +- Define binary symbolic compiletime ops as `infix` [#21683](https://github.com/scala/scala3/pull/21683) + +## Transform + +- Fix treatment of separately compiled @native methods in FirstTransform [#21593](https://github.com/scala/scala3/pull/21593) +- Three fixes to SAM type handling [#21596](https://github.com/scala/scala3/pull/21596) +- Always rewrite empty List() to Nil [#21689](https://github.com/scala/scala3/pull/21689) +- Add support for clauseInterleaving in JVM generic signatures [#21709](https://github.com/scala/scala3/pull/21709) + +## Typeclass Derivation + +- Nicer error message in case a `derived` method has an explicit term param [#21332](https://github.com/scala/scala3/pull/21332) + +## Typer + +- Calm param autotupling for overloads [#21552](https://github.com/scala/scala3/pull/21552) +- Survive inaccessible types when computing implicit scope [#21589](https://github.com/scala/scala3/pull/21589) +- Avoid cyclic errors forcing default arg types [#21597](https://github.com/scala/scala3/pull/21597) +- Fix incorrect caching with dependent method parameters [#21699](https://github.com/scala/scala3/pull/21699)