github scala/scala3 3.3.0-RC2

latest releases: 3.3.4-RC4, 3.5.2-RC1, 3.5.1...
pre-release19 months ago

This release is nearly identical to 3.3.0-RC1. The only difference is that 3.3.0-RC1 generated output with incorrect TASTy version.

The following changelog is identical to the changelog of 3.3.0-RC1.

Highlights of the release

  • Stabilize new lazy vals #16614
  • Experimental Macro annotations #16392 #16454 #16534
  • Fix stability check for inline parameters #15511
  • Make fewerBraces a standard feature #16297
  • Add new front-end phase for unused entities and add support for unused imports #16157
  • Implement -Wvalue-discard warning #15975
  • Introduce boundary/break control abstraction. #16612

Other changes and fixes

Annotations

  • Support use-site meta-annotations #16445

Desugaring

  • Reuse typed prefix for applyDynamic and applyDynamicNamed #16552
  • Fix object selftype match error #16441

Erasure

  • Dealias before checking for outer references in types #16525
  • Fix generic signature for type params bounded by primitive #16442
  • Avoid EmptyScope.cloneScope crashing, eg on missing references #16314

GADTs

  • Inline GADT state restoring in TypeComparer #16564
  • Add extension/conversion to GADT selection healing #16638

Incremental compilation

  • Unpickle arguments of parent constructors in Templates lazily #16688

Initialization

  • Fix #16438: Supply dummy args for erroneous parent call in init check #16448

Inline

  • Dealias in ConstantValue, for inline if cond #16652
  • Set Span for top level annotations generated in PostTyper #16378
  • Interpolate any type vars from comparing against SelectionProto #16348
  • Handle binding of beta reduced inlined lambdas #16377
  • Do not add dummy RHS to abstract inline methods #16510
  • Warn on inline given aliases with functions as RHS #16499
  • Support inline overrides in value classes #16523

Java interop

  • Represent Java annotations as interfaces so they can be extended, and disallow various misuses of them #16260

Opaque Types

  • Delay opaque alias checking until PostTyper #16644

Overloading

  • Handle context function arguments in overloading resolution #16511

Parser

  • Improve support for Unicode supplementary characters in identifiers and string interpolation (as in Scala 2) #16278
  • Require indent after colon at EOL #16466
  • Help givens return refined types #16293

Pattern Matching

  • Tweak AvoidMap's derivedSelect #16563
  • Space: Use RHS of & when refining subtypes #16573
  • Freeze constraints in a condition check of maximiseType #16526
  • Restrict syntax of typed patterns #16150
  • Test case to show that #16252 works with transparent #16262
  • Support inline unapplySeq and with leading given parameters #16358
  • Handle sealed prefixes in exh checking #16621
  • Detect irrefutable quoted patterns #16674

Pickling

  • Allow case classes with up to 254 parameters #16501
  • Correctly unpickle Scala 2 private case classes in traits #16519

Polyfunctions

  • Fix #9996: Crash with function accepting polymorphic function type with singleton result #16327

Quotes

  • Remove contents of inline methods #16345
  • Fix errors in explicit type annotations in inline match cases #16257
  • Handle macro annotation suspends and crashes #16509
  • Fix macro annotations spliceOwner #16513

REPL

  • REPL: Fix crash when printing instances of value classes #16393
  • Attempt to fix completion crash #16267
  • Fix REPL shadowing bug #16389
  • Open up for extensibility #16276
  • Don't crash if completions throw #16687

Reflection

  • Fix reflect typeMembers to return all members #15033
  • Deprecate reflect Flags.Static #16568

Reporting

  • Suppress follow-on errors for erroneous import qualifiers #16658
  • Fix order in which errors are reported for assignment to val #16660
  • Fix class name in error message #16635
  • Make refined type printing more source compatible #16303
  • Add error hint on local inline def used in quotes #16572
  • Fix Text wrapping #16277
  • Fix -Wunused:import registering constructor <init> instead of its owner (also fix false positive for enum) #16661
  • Fix #16675 : -Wunused false positive on case class generated method, due to flags used to distinguish case accessors. #16683
  • Fix #16680 by registering Ident not containing a symbol #16689
  • Fix #16682: CheckUnused missed some used symbols #16690
  • Fix the non-miniphase tree traverser #16684

Scala-JS

  • Fix #14289: Accept Ident refs to js.native in native member rhs. #16185

Standard Library

  • Add CanEqual instance for Map #15886
  • Refine Tuple.Append return type #16140

TASTy format

  • Make it a fatal error if erasure cannot resolve a type #16373

Tooling

  • Add -Yimports compiler flag #16218
  • Allow BooleanSettings to be set with a colon #16425

Transform

  • Avoid stackoverflow in ExplicitOuter #16381
  • Make lazy vals run on non-fallback graal image - remove dynamic reflection #16346
  • Patch to avoid crash in #16351 #16354
  • Don't treat package object's <init> methods as package members #16667
  • Space: Refine isSubspace property & an example #16574

Typer

  • Drop requirement that self types are closed #16648
  • Disallow constructor params from appearing in parent types for soundness #16664
  • Don't search implicit arguments in singleton type prefix #16490
  • Don't rely on isProvisional to determine whether atoms computed #16489
  • Support signature polymorphic methods (MethodHandle and VarHandle) #16225
  • Prefer parameterless alternatives during ambiguous overload resolution #16315
  • Fix calculation to drop transparent classes #16344
  • Test case for issue 16311 #16317
  • Skip caching provisional OrType atoms #16295
  • Avoid cyclic references due to experimental check when inlining #16195
  • Track type variable dependencies to guide instantiation decisions #16042
  • Two fixes to constraint solving #16353
  • Fix regression in cyclic constraint handling #16514
  • Sharpen range approximation for applied types with capture set ranges #16261
  • Cut the Gordian Knot: Don't widen unions to transparent #15642
  • Fix widening logic to keep instantiation within bounds #16417
  • Skip ambiguous reference error when symbols are aliases #16401
  • Avoid incorrect simplifications when updating bounds in the constraint #16410
  • Take @targetName into account when resolving extension methods #16487
  • Improve ClassTag handling to avoid invalid ClassTag generation and inference failure #16492
  • Fix extracting the elemType of a union of arrays #16569
  • Make sure annotations are typed in expression contexts #16699
  • Throw a type error when using hk-types in unions or intersections #16712

Contributors

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

According to git shortlog -sn --no-merges 3.2.2..3.3.0-RC1 these are:

   225 Martin Odersky
    73 Dale Wijnand
    58 Szymon Rodziewicz
    54 Nicolas Stucki
    48 Kamil Szewczyk
    48 Paul Coral
    30 Paweł Marks
    28 Florian3k
    28 Yichen Xu
    14 Guillaume Martres
     8 Fengyun Liu
     8 Michał Pałka
     7 Chris Birchall
     7 rochala
     6 Kacper Korban
     6 Sébastien Doeraene
     6 jdudrak
     5 Seth Tisue
     5 Som Snytt
     5 nizhikov
     4 Filip Zybała
     4 Jan Chyb
     4 Michael Pollmeier
     4 Natsu Kagami
     3 Jamie Thompson
     2 Alex
     2 Anatolii Kmetiuk
     2 Dmitrii Naumenko
     2 Lukas Rytz
     2 adampauls
     2 yoshinorin
     1 Alexander Slesarenko
     1 Chris Kipp
     1 Guillaume Raffin
     1 Jakub Kozłowski
     1 Jan-Pieter van den Heuvel
     1 Julien Richard-Foy
     1 Kenji Yoshida
     1 Philippus
     1 Szymon R
     1 Tim Spence
     1 s.bazarsadaev

Don't miss a new scala3 release

NewReleases is sending notifications on new releases.