github scala/scala3 3.5.1

2 hours ago

Highlights of the release

  • Add sources of synthetic classes to sources jar #20904

Other changes and fixes

Annotations

  • Preventing compilation of a @tailrec method when it does not rewrite, but an inner method does #20143
  • #20145 - bugfix when a return tailrec is called inside a val def. #20652

Backend

  • Fix EnclosingMethod for lifted anonfun #20558
  • Emit switch bytecode when matching unions of a switchable type #20411
  • Fix deterministically adding additional interfaces #20593
  • Emit generatedNonLocalClass in backend when callback is not enabled #21186

Documentation

  • Avoid jpath in example #20775
  • Chore: Fix doc link in clauseInterleaving docstring #20590
  • Chore: fix doc link in namedTuples docstring #20770

Erasure

  • Don't re-balance AndTypes arising from supertypes #20400

GADTs

  • Harden GADT constraint handling to survive illegal F-bounds #20325

Inferencing

  • Adapt toInstantiate in interpolateTypeVars to consider #20399 #20426

Infrastructure

  • Update addToBackportingProject.scala #20461
  • Simple scripts to run non-bootstrapped compiler after 'sbt buildQuick' #19894
  • Bump from 3.4.0 to 3.5.0-RC1 for MiMA #20404
  • Set reference version to 3.5.0-RC4 #21175
  • Bring back windows performance improvements #20423
  • Bump scalacenter/sbt-dependency-submission from 2 to 3 #20440
  • Fix incorrect paths to sha256 check sum files in release workflow #20709
  • Bump VirtusLab/scala-cli-setup from 1.3.2 to 1.4.0 #20906

Inline

  • Mark genSJSIR as disabled (rather than non-runnable) when no -scalajs. #20815
  • Map over refs of ImportTypes in TypeMap #20837

Initialization

  • More principled filtering of abstract values in initialization check #20548

Match Types

  • TryCompiletimeConstantFold in disjointnessBoundary #20168

Pattern Matching

  • Fix #20372: Check pattern match exhaustivity in inlined code #20403

Presentation Compiler

  • Add pattern completion for unapply contexts #20274
  • Bugfix: Exclude newer LSP4j, which is built on JDK 11 #20771
  • Chore: Bump mtags to latest stable #20442
  • Weekly metals backport #20542
  • Port pc find references from metals #20544

Quotes

  • Add regression test for issue 20309 #20387

REPL

  • Only consider methods with 0 parameters in valueOf #20543

Reflection

  • Fix erasure crash for Inlined rhs of a context function closure #20398
  • Fix #20458: do not expose ClassInfo in quotes reflect widenTermRefByName #20468

Reporting

  • Fix error message on setter with wrong type #20444
  • Add a specific error message for local final defs #20557
  • Explain unresolvable references better #20477
  • Add error code to diagnostics about unused code #19780
  • Better error diagnostics for illegal match cases #20905

Runner

  • Bump scala-cli to 1.4.1 + drop old cli management #21234
  • Bump scala-cli to 1.4.3 #21338

Scaladoc

  • Fix handling of right associative extension methods across scaladoc and printers #20467

Specification

  • Add binary lits to syntax summaries #19551

Settings

  • Enhance help message for language flag #20247
  • Accept legacy language features #20454
  • Set default source version to 3.5 #20435

Tooling

  • Improve source positions emited for synthetic unit in if-conditions #20431
  • Adjust the API name entry for nested classes #20279
  • Fix declaring product of straight-to-jar compilation #20592

Transform

  • Correct Java signature for value classes appearing in type arguments #20463

Typer

  • Retry constraint.replace after constraint.updateEntry #20399
  • Add special handling for comparisons with Singleton types #20474
  • Reinstantiate restriction to transparent inline methods #20371
  • Add regression test for #20288 fixed in #20527 #20857
  • Fix isEffectivelySingleton #20486
  • Fall back to direct subtype comparison at the end in dropIfSuper and dropIfSub #20523
  • Mark AppliedType cachedSuper valid Nowhere when using provisional args #20527
  • Fix healAmbiguous to compareAlternatives with disambiguate = true #21372

Experimentqal Changes

Capture Checking

  • Fix soundness hole of forgotten reach capabilities #20524
  • Drop @capability annotations #20396
  • Fix symbol reference retrivial for scala.caps.Caps #20493
  • Refactor adaptBoxed #20525
  • Fix error related to reaches when using scala2-library-cc-tasty #20528

Named tuples

  • Make NamedTuple.Empty an alias to NamedTuple #20502
  • Move NamedTuple methods to separate scope. re-export #20504
  • WidenDealias before extracting namedTupleElementTypes #20505
  • Improve type inference for literal named tuples #20497
  • Fix issue #20267 with regression test #20506
  • Only set AppliedType#validSuper after AppliedType#cachedSuper #20553
  • Fix NamedTuple selection on an unstable prefix #20455
  • Allow apply adaptation on Selectable with Fields #20489

Contributors

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

According to git shortlog -sn --no-merges 3.5.0..3.5.1 these are:

    82  Martin Odersky
    29  Wojciech Mazur
    22  Hamza REMMAL
    16  Jamie Thompson
    15  Eugene Flesselle
    14  Hamza Remmal
    13  noti0na1
     9  Katarzyna Marek
     7  Fengyun Liu
     7  Jan Chyb
     6  Dale Wijnand
     6  Guillaume Martres
     5  Som Snytt
     4  dependabot[bot]
     3  Adrien Piquerez
     3  Derek Wickern
     3  Matt Bovel
     3  OlegYch
     2  Florian3k
     2  Kacper Korban
     2  Lucy Martin
     2  Paweł Marks
     2  Tomasz Godzik
     1  Arnout Engelen
     1  Eugene Yokota
     1  João Ferreira
     1  Kasper Kondzielski
     1  Lucas Nouguier
     1  Lukas Rytz
     1  Mikołaj Fornal
     1  Nafer Sanabria
     1  Natsu Kagami
     1  Seth Tisue
     1  Sébastien Doeraene

Don't miss a new scala3 release

NewReleases is sending notifications on new releases.