github scala/scala3 3.6.2

latest releases: 3.3.5-RC1, 3.6.3-RC1
9 days ago

Highlights of the release

  • Stabilise SIP-47 (Adding Clause Interleaving to method definitions) #20861
  • Stabilise SIP-64 (New syntax of givens and context bounds) #21668
  • Context Bounds for Polymorphic Functions #21643
  • Switch mapping of context bounds to using clauses in 3.6 #21257
  • Enable betterMatchTypeExtractors in >= 3.6 #21198
  • Require named arguments for java defined annotations #21329
  • Refine the bounds of the Tuple.Filter type lambda predicate .. #21286
  • Add an infix shorthand for Tuple.{Append, Concat} #21288
  • Add .msi artifacts to release assets #21834
  • Implement SIP-62 as experimental - For comprehension improvements #20522
  • Implement SIP-57 as experimental - add runtimeChecked method and annotation #20987

Other changes and fixes

Annotations

  • Tighten java annot value parsing #21650

Erasure

  • Fixes IllegalAccessError with Java package protected class #21362

Experimental: Capture Checking

  • Fix setup of CapSet arguments. #21309
  • Check all top-level covariant capture sets in checkNotUniversal #21428
  • Charge also dcs of local reaches to capture set of enclosing method #21443
  • No need to unbox if expected type is LhsProto #21508
  • Treat more closure parameter types as inferred #21583
  • Existential Capabilities #20566
  • Fixes for cleanup retains scheme #21350
  • Improve Contains handling #21361
  • Expand Capability types T to T^ only if no explicit capture set is given #21375
  • Tighten closure extractor in TreeInfo #21621

Experimental: Global Initialization

  • Analyze object when selecting from package #21511
  • Fix bug in init checker while compiling scodec-bits community project #21574

Experimental: Named Tuples

  • Finalize named tuples #21710
  • Move NamedTuple.head to NamedTupleDecomposition #21308
  • Move NonEmptyTuple members into Tuple #21291
  • Migration rewrites for infix arguments interpreted as named tuples #21949
  • Make named tuples a standard feature #21680
  • Make named tuples an experimental feature again #22045

Experimental: Explicit Nulls

  • Fix #21392: Adjust canComparePredefined(Nothing, T) in explicit nulls #21504
  • Add tracking of NotNullInfo for Match, Case, Try trees (fix #21380) #21389

Experimentals

  • [experimental feature] Support HOAS pattern with type variables for quote pattern matching #18271

Exports

  • Re-use attachment in exportForwarders to handle ambiguous overloads #21518
  • Allow export statements in AnyVal #21653

Extension Methods

  • Make right assoc ext method fwd refs error #21641

Inline

  • Fix: throw an error before assigning ErrorType when expanding constValue #21364

Implicits

  • Fix prioritization of givens over implicits #21226

JVM Backend

  • Backend computes line number from source of position #21763

Linting

  • CheckUnused checks type param annotations #20549

Match Types

  • Fix #21295: Restrict provablyDisjoint with Nothings in invariant type params. #21891
  • Do not propagate TypeErrors of ops from TypeComparer#tryAlso #21070
  • Fix #21402: Always allow type member extraction for stable scrutinees in match types. #21700
  • Add a 3.6-migration warning for MT lubbing #21336
  • Always interpret underscores inside patterns as type bounds #21718

Opaque Types

  • Capture the kse3 issue in test cases and close it #21260

Parser

  • Guard against recursive lower bounds in constraints #21587
  • Handle old given syntax where identifier and type are seperated by new line #21957
  • Fix: Allow as as an infix type in non context bound types #21849
  • Revised given syntax #21208
  • Make context bounds for poly functions a standard feature #22019

Pattern Matching

  • Optimise SpaceEngine.signature #21791
  • Fix a bundle of patmat issues #21000

Pickling

  • Some fixes for AnnotatedTypes mapping #19957

Polyfunctions

  • Fix: Check if a PolyFunction TypeTree has no ByName parameters #21671

Presentation Compiler

  • Add regression test for issue 18726 #20318
  • Remove artificial CURSOR added to code in the completions #20899
  • Fix autoimports with using directives #21590

Quotes

  • Handle suspension due to macro call in arbitrary phases #21651
  • Have a better error message when healing types #21711
  • Bound TypeRepr by Matchable in Quotes #21377
  • Expr#show: Don't crash when the expression contains an unsupported type (like a SkolemType) #20494

Reflection

  • Add the possibility to create a typeSymbol in the Quotes API #20347
  • Fix stale symbols connected to lazy vals in macros #21559

Reporting

  • Add better error reporting for inlined non-immutable paths #21639
  • Only replace new errors by warnings under -migration #21289
  • Warn when named tuples resemble assignments #21823

REPL

  • REPL: JLine 3.27.0 (was 3.25.1) #21752
  • Ignore best effort settings in repl and update docs #21540

Rewrites

  • Remove empty argument lists for classes with only context bounds #21513
  • Fix rewrite logic for old <function> _ syntax #21715
  • Remove the -rewrite option for typechecks methods in Quotes #21547
  • Add migration rewrite for non-named arguments in Java annotations #21397

Runner

Scaladoc

  • Only trim one newline when preprocessing the content of a markdown code snippet #21519
  • Filter opaque modifier from object documentation #21640
  • Bump Inkuire version to fix it for the new Scala versions #21611

Standard Library

  • Scala 2.13.15 (was .14) #21648
  • Define binary symbolic compiletime ops as infix #21683

Transform

  • Fix treatment of separately compiled @native methods in FirstTransform #21593
  • Three fixes to SAM type handling #21596
  • Always rewrite empty List() to Nil #21689
  • Add support for clauseInterleaving in JVM generic signatures #21709

Typeclass Derivation

  • Nicer error message in case a derived method has an explicit term param #21332

Typer

  • Calm param autotupling for overloads #21552
  • Survive inaccessible types when computing implicit scope #21589
  • Avoid cyclic errors forcing default arg types #21597
  • Allow autotupling if fn's param is a type param #21741
  • Fix extending protected nested java classes #21857
  • Fix incorrect caching with dependent method parameters #21699

Contributors

Thank you to all the contributors who made this release possible 🎉

According to git shortlog -sn --no-merges 3.5.2..3.6.2 these are:

   128  Martin Odersky
    53  Wojciech Mazur
    44  Dale Wijnand
    35  Hamza REMMAL
    33  Kacper Korban
    31  Eugene Flesselle
    22  Hamza Remmal
    11  Katarzyna Marek
    10  Matt Bovel
     9  noti0na1
     9  rochala
     8  Jamie Thompson
     8  Jan Chyb
     7  Adrien Piquerez
     7  Som Snytt
     7  Sébastien Doeraene
     7  dependabot[bot]
     6  Yichen Xu
     5  EnzeXing
     5  Guillaume Martres
     4  Fengyun Liu
     4  kasiaMarek
     3  Martin Duhem
     3  Oliver Bracevac
     3  Piotr Chabelski
     2  Aleksander Rainko
     2  David Hua
     2  Florian3k
     2  HarrisL2
     2  Joel Wilsson
     2  Jędrzej Rochala
     2  Kenji Yoshida
     1  Eugene Yokota
     1  Kavin Satheeskumar
     1  Lorenzo Gabriele
     1  Michel Charpentier
     1  Ondrej Lhotak
     1  Raphael Jolly
     1  Tomasz Godzik
     1  Yuito Murase
     1  crunchyfrog
     1  philippus

Don't miss a new scala3 release

NewReleases is sending notifications on new releases.