Skip to content

3.5.0-RC1

Pre-release
Pre-release
Compare
Choose a tag to compare
@github-actions github-actions released this 21 May 13:43

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
  • Add support for Pipelined builds #18880
  • Add support for var in refinements #19982
  • Implement SIP-42 - Support for binary integer literals #19405

Other changes and fixes

Backend

  • Fix Closure span assignment in makeClosure #15841

Default parameters

  • Fix default args lookup for given classes #20256
  • Fix implicit search failure reporting #20261

Derivation

  • Fix infinite loop in Mirror synthesis of unreducible match type #20133

Desugaring

  • Add explanation to checkCaseClassInheritanceInvariant error msg #20141

Exports

  • Add annotations in parameters for exports #20140
  • Fix isAliasType #20195

Implicits

  • Fix implicitNotFound message for type aliases #19343
  • Normalize types before collecting parts determining implicit scope #20077
  • Better error diagnostics under -explain-cyclic #20251
  • Update unreducible match types error reporting #19954
  • Improve ConstraintHandling of SkolemTypes #20175

Incremental Compilation

  • Retain default parameters with export #20167

Inline

  • Fix by-name parameter in beta-reduction #20096
  • Add warning for anonymous inline classes (#16723) #20291
  • Avoid conversion of Unit type into () term #20295
  • Type desugared transparent inline def unapply call in the correct mode #20108
  • Regression: fix compilation performance on Windows #20193
  • Fix inline match on blocks with multiple statements #20125
  • Inline unapplys in the inlining phase #19382
  • Fix outerSelect in Inliner #20313

Linting

  • Fix #20146: attach the original name if there is an import selection for an indent #20163
  • Add regression test for issue 18632 #20308

Match Types

  • Make aliases of MatchAliases normal TypeAliases #19871
  • Fix #19746: Do not follow param term refs in isConcrete. #20015
  • Do match type reduction atPhaseNoLater than ElimOpaque #20017
  • Do not flag match types as Deferred and amend #20077 #20147
  • Always use baseType when constraining patternTp with scrutineeTp #20032
  • Use MirrorSource.reduce result for companionPath #20207
  • Regression: Fix match type extraction of a MatchAlias #20111

Polyfunctions

  • Discard poly-functions when trying to resolve overloading #20181

Presentation Compiler

  • Stabilise returned completions by improving deduplication + extra completions for constructors #19976
  • Fix active param index for empty param lists #20142
  • Delias type members in hover #20173
  • Interactive: handle context bounds in extension construct workaround #20201
  • Fix: prefer non-export definition locations #20252
  • Don't show enum completions in new keyword context #20304
  • Chore: Backport changes for presentation compiler #20345
  • Add custom matchers for completions (fuzzy search for presentation compiler) #19850

Quotes

  • Fix TermRef prefixes not having their type healed #20102
  • Improve reporting in staging about the possible use of an incorrect class loader #20137
  • Introduce MethodTypeKind to quotes reflection API #20249
  • Add quote ASTs to TASTy #20165

Reflection

  • Allow to beta reduce curried function applications in quotes reflect #18121
  • Set the inlining phase in the Context used for checking macro trees #20087
  • Add Symbol.isSuperAccessor to reflection API #13388
  • Stabilize reflect SymbolMethods.isSuperAccessor #20198

Repl

  • Fix validity period of derived SingleDenotations #19983
  • Fix #18383: Never consider top-level imports as unused in the repl. #20310

Reporting

  • Warn if extension receiver already has member #17543
  • Deprecation of case class elements #17911
  • Support src filter in -WConf (Closes #17635) #18783
  • Add note about type mismatch in automatically inserted apply argument #20023
  • Make error reporting resilient to exception thrown while reporting #20158
  • Remove duplicate comma from Matchable selector warning #20159
  • Generalize warnings for top-level calls to Any or AnyRef methods #20312
  • Make CheckUnused not slow. #20321

Rewrites

  • Patch indentation when removing braces (and other bug fixes in -indent -rewrite) #17522
  • Extra check to avoid converting block expressions on the rhs of an in… #20043

Scaladoc

  • Fix scaladoc crash on Windows - illegal path character #20311
  • Scaladoc: improve refined function types rendering #20333
  • Relax font-weight reset #20348

Scala JS

Settings

  • Lift Scala Settings from experimental to stabilized #20199

Tooling

  • Detect macro dependencies that are missing from the classloader #20139
  • Write pipelined tasty in parallel. #20153
  • ConsoleReporter sends INFO to stdout #20328

Transform

  • Fix overloaded default methods test in RefChecks #20218
  • Fix handling of AppliedType aliases in outerPrefix #20190
  • Elide unit binding when beta-reducing #20085

Typer

  • Reduce projections of type aliases with class type prefixes #19931
  • Re-lub also hard union types in simplify #20027
  • Fix #19789: Merge same TypeParamRef in orDominator #20090
  • Allow SAM types to contain match alias refinements #20092
  • Don't dealias when deciding which arguments to defer #20116
  • Avoid the TypeVar.inst trap #20160
  • Avoid crash when superType does not exist after erasure #20188
  • Refine overloading and implicit disambiguation #20084
  • Refactor constant folding of applications #20099
  • Rollback constraints if isSameType failed second direction #20109
  • Suppress "extension method will never be selected" for overrides #20164
  • Allow SAM types to contain multiple refinements #20172
  • Normalize when verifying if TypeTestCasts are unchecked #20258

Experimental Changes

  • Named tuples second implementation #19174
  • Change rules for given prioritization #19300
  • Enable experimental mode when experimental feature is imported #19807
  • Add message parameter to @experimental annotation #19935
  • Implement match type amendment: extractors follow aliases and singletons #20161

Capture Checking

  • Carry and check universal capability from parents correctly #20004
  • Make parameter types of context functions inferred type trees #20155
  • Handle reach capabilities correctly in depedent functions #20203
  • Fix the visibility check in markFree #20221
  • Make inline proxy vals have inferred types #20241
  • CC: Give more info when context function parameters leak #20244
  • Plug soundness hole for reach capabilities #20051
  • Tighten the screws a bit more to seal the soundness hole for reach capabilities #20056
  • Drop retains annotations in inferred type trees #20057
  • Allow @retains arguments to be context functions #20232
  • Fix conversion of this.fld capture refs under separate compilation #20238

Erased definitions

  • Fix "Compiler crash when using CanThrow" #20210
  • Only allow erased parameters in erased definitions #19686

Initialization

  • Deprecate StandardPlugin.init in favor of initialize method taking implicit Context #20330
  • Fix missing changesParents in PostTyper #20062
  • Special case for next field of colon colon in global init checker #20281
  • Extend whitelist in global initialization checker #20290

Macro Annotations

  • Allow macro annotation to transform companion #19677
  • Remove experimental MainAnnotation/newMain (replaced with MacroAnnotation) #19937

Nullability

  • Add flexible types to deal with Java-defined signatures under -Yexplicit-nulls #18112
  • Fix #20287: Add flexible types to Quotes library #20293
  • Add fromNullable to Predef for explicit nulls #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