Skip to content

Releases: scala/scala3

3.4.0-RC3

05 Feb 11:53
Compare
Choose a tag to compare
3.4.0-RC3 Pre-release
Pre-release

Backported fixes

  • Sync language.scala with main and backport "Add tests for context bounds migration" #19515
  • Handle default implicits to context parameters under -3.4-migration #19512

Contributors

Thank you to all the contributors who made this release possible ๐ŸŽ‰

According to git shortlog -sn --no-merges 3.4.0-RC2..3.4.0-RC3 these are:

     4	Paweล‚ Marks
     1	Martin Odersky
     1	Nicolas Stucki

3.4.0-RC2

23 Jan 13:22
Compare
Choose a tag to compare
3.4.0-RC2 Pre-release
Pre-release

Backported fixes

  • Fix expandParam's use of argForParam/isArgPrefixOf. #19412
  • Remove ascriptionVarargsUnpacking as we never used it #19399
  • Make explicit arguments for context bounds an error from 3.5 #19316
  • Avoid generating given definitions that loop #19282
  • Turn given loop prevention on for -source future #19392
  • Fix algorithm to prevent recursive givens #19411

Contributors

Thank you to all the contributors who made this release possible ๐ŸŽ‰

According to git shortlog -sn --no-merges 3.4.0-RC1..3.4.0-RC2 these are:

    15	Martin Odersky
     4	Nicolas Stucki
     3	Paweล‚ Marks
     1	Dale Wijnand
     1	Jan Chyb

3.4.0-RC1

22 Dec 15:25
Compare
Choose a tag to compare
3.4.0-RC1 Pre-release
Pre-release

Highlights of the release

  • Make polymorphic functions more efficient and expressive #17548
  • SIP-56: Better foundations for match types #18262
  • Make SIP 54 (Multi-Source Extension Overloads) a standard feature #17441
  • Value parameter inference for polymorphic lambdas #18041
  • Add @publicInBinary annotation and -WunstableInlineAccessors linting flag #18402
  • Stabilize Quotes defn.PolyFunction #18480
  • Stabilize Quotes Flags.AbsOverride #18482
  • Add -experimental compiler flags #18571
  • Stabilize SIP-53 (quote pattern explicit type variable syntax) #18574
  • Add reflect TypeRepr.dealiasKeepOpaques #18583
  • Add attributes section to TASTy and use it for Stdlib TASTy #18599
  • Error when reading class file with unknown newer jdk version #18618
  • Add support for xsbti.compile.CompileProgress #18739
  • Improve type inference for functions like fold #18780
  • Improve error message for mismatched tasty versions, allow configuration of header unpickler #18828
  • In 3.4 make refutable patterns in a for comprehension an error #18842
  • Disallow use of PolyFunction in user code #18920
  • Store source file in TASTY attributes #18948
  • First step to pipelining support - enable reading Java symbols from TASTy #19074
  • Activate constrainResult fix in 3.4 #19253
  • Parallelise JVM backend - Scala 2 port #15392

Deprecation warnings for old syntax

Other changes and fixes

Backend

  • Count size of parameters for platform limit check #18464
  • Don't emit line number for synthetic unit value #18717
  • Avoid too eager transform of $outer for lhs & accessor rhs #18949
  • Make more anonymous functions static #19251
  • Fix deadlock in initialization of CoreBTypes using Lazy container #19298
  • Fix #18769: Allow HK type args in Java signatures. #18883
  • Loading symbols from TASTy files directly #17594
  • Use dedicated equals method for univerval equality of chars #18770

Erasure

  • Get generic signature of fields entered after erasure from their accessor #19207
  • Detect case where two alternatives are the same after widening ExprTypes #18787
  • Improve erased params logic #18433

Experimental: Capture Checking

  • Fix capture set variable installation in Setup #18885
  • Don't follow opaque aliases when transforming sym info for cc #18929
  • Reset comparersInUse to zero in ContextState.reset #18915
  • Special handling of experimental.captureChecking import #17427
  • Change handling of curried function types in capture checking #18131
  • Fix #18246: correctly compute capture sets in TypeComparer.glb #18254
  • New capture escape checking based on levels #18463
  • A more robust scheme for resetting denotations after Recheck #18534
  • A more flexible scheme for handling the universal capability #18699
  • Fix potential soundness hole when adding references to a mapped capture set #18758
  • Alternative scheme for cc encapsulation #18899
  • Make reach refinement shallow #19171

F-bounds

  • Don't check bounds of Java applications in Java units #18054

GADTs

  • Avoid embedding SelectionProtos in Conversions #17755
  • Freeze constraints while calculating GADT full bounds #18222

Implicits

  • Followup fix to transparent inline conversion #18130
  • Select local implicits over name-imported over wildcard imported #18203
  • Fix how implicit candidates are combined #18321
  • Improve error message about missing type of context function parameter #18788
  • Support implicit arguments before extractor method #18671
  • Tweak convertible implicits fix #18727

Incremental Compilation

  • Make incremental compilation aware of synthesized mirrors #18310

Inference

  • Honour hard unions in lubbing and param replacing #18680

Infrastructure

  • Use -Yscala2-library-tasty to add Scala 2 lib TASTY to scalac (internal only) #18613
  • Rename stdlib-bootstrapped-tasty to scala2-library-tasty #18615
  • Fix #19286: Freeze rubygems-update at < 3.5.0. #19288

Initialization

  • Fix #17997: Handle intersection type as this type of super type #18069
  • Add test for issue #17997 affecting the global object initialization checker #18141
  • Fix i18624 and add test case for it #18859
  • Treat new Array(0) as immutable #19192
  • Fix #18407: Ignore Quote/Slice in init checker #18848
  • Check safe initialization of static objects #16970
  • Pattern match support in checking global objects #18127
  • Fix crash in global object initialization checker when select target has no source #18627
  • Fix warning underlining in global init checker #18668
  • Fix i18629 #18839
  • I18628 #18841
  • Make safe init checker skip global objects #18906
  • Handle local lazy vals properly #18998

Inline

  • Fix regression: inline match crash when rhs uses private inlined methods #18595
  • Add structural classes of dynamicApply before inlining #18766
  • Set missing expansion span for copied inlined node #18229
  • Fix callTrace of inlined methods #18738

Linting

  • Keep tree of type ascriptions of quote pattern splices #18412
  • Fix false positive in WUnused for renamed path-dependent imports #18468
  • Fix false positive in WUnused for renamed path-dependent imports (2) #18617
  • Fix wunused false positive on CanEqual #18641
  • Implement -Xlint:private-shadow, type-parameter-shadow #17622
  • Fix: reversed wconf parsing order to mirror scala 2 #18503
  • Revert Fix false positive in WUnused for renamed path-dependent imports #18514

Macro Annotations

  • Enter missing symbols generated by the MacroAnnotation expansion [#18826](https://git...
Read more

3.3.2-RC1

19 Dec 16:05
Compare
Choose a tag to compare
3.3.2-RC1 Pre-release
Pre-release

Highlights of the release

  • Improvements to code coverage (detailed list below)
  • Add Stable Presentation Compiler #17528

Other changes and fixes

Backend

  • Make sure synthetic apply methods are generated in deterministic order #18210

Coverage

  • Only lift inner expressions when lifting repeated Typed arguments #18424
  • Fix: scoverage statement's line number should be 1-base #18932
  • Do not lift applications of context functions #18498
  • Don't lift the argument of a synchronized block in scoverage #16941
  • Fix the issue with coverage inside of a TypeApply #18420
  • Coverage: mark case bodies as branches; don't ignore branches with synthetic spans #18437

Documentation

  • Compiler plugin Scaladoc: document phase requirement #18394

Exports

  • Refine override exclude criterion for export forwarders #17590

Incremental Compilation

  • Fix overcompilation due to unstable context bound desugaring #18280

Inline

  • Don't generate a super accessor for an inline method call #17598

Linting

  • Wunused: Only use type treverser for checking refinements in refined type trees #17929

Parser

Pattern Matching

  • Properly refine type of inlined unapply pattern #18292

Presentation Compiler

  • Bugfix: suggest correct arg name completions for lambda expressions #18379
  • Improvement: print better bracket suffix in completion item label #18380
  • Fix presentation compiler autoimports, update presentation compiler dependencies #18264
  • Update scala3-presentation-compiler to 39e349e #18296
  • Update presentation compiler with changes from PR 5287 #18301
  • Update presentation compiler to a829a6a #18347
  • Bugfix: highlight enum cases correctly #18362

Quotes

  • Do not beta-reduce/eta-expand pattern splices with contextual function types #18198
  • XcheckMacro types of Block expression and Apply/TypeApply function #18242
  • Fix owner of splices in class statements #18359
  • Handle macro dependencies through class of this #18396
  • Add missing span in QuoteMatcher #18178
  • Fix stale symbol crashes in some path depended types in macro contexts #18077
  • Simplify avoidance of local types of Hole #17571

Reporting

  • Detail "not a constant type" message #17626
  • Suggest imports for the expected type of the underlying implicit not found error #17976
  • Fix: report correct location on a repeat modifier #17982
  • Warn when calling synchronized on AnyVal #18021
  • Fix compile error message in wildcard exports #18189
  • Improve parameter type inference error messaging #18190
  • Don't report warnings in migration when performing rewrites #15589
  • Fix crash reporter, units and phases #17754
  • Omit more prefixes in non-package module printing #17758
  • Fix pretty printer to handle using and erased modifier #17952
  • Add -Yprint-tasty compiler flag #17986
  • Add actionable item to PatternMatchExhaustivity diagnostic #18314

Scaladoc

  • Fix: -no-link-warnings does not work #17028
  • Fix: Validation for API link #17099
  • Scaladoc: type rendering fixes and improvements #17213
  • Feat: Add a custom icon #17241
  • Fix: Correction of the siteRoot path #17297
  • Fix: Correct the navigation to anchor #17910
  • Fix: Style for wiki syntax #18079
  • Fix NoSuchElementException in scaladoc #18184

SemanticDB

  • Check for primary constructor in namePresentInSource #18325
  • Add -semanticdb-text compiler option #18307

Typer

  • Fix pattern generation in "ordinal" mirror method #17570
  • Fix superType of SuperType #17574
  • Avoid crash in erasure when reference cannot be emitted #18056
  • Disallow overloading from breaking stable patterns #18327
  • Fix widen types before checking an implicit view exists #18719
  • Properly handle SAM types with wildcards #18201
  • Handle recursion in collectParts #18214
  • Allow eta-expansion of inline defs #18249
  • Stable names for lambda lifted methods #18281

Contributors

Thank you to all the contributors who made this release possible ๐ŸŽ‰

According to git shortlog -sn --no-merges 3.3.1..3.3.2-RC1 these are:

    37 Nicolas Stucki
    36 Paweล‚ Marks
    28 Chris Kipp
    15 Sรฉbastien Doeraene
    13 Lucas Leblanc
    13 Martin Odersky
    12 Guillaume Martres
    10 Dale Wijnand
    10 Jamie Thompson
     8 ghostbuster91
     6 Florian3k
     5 Kacper Korban
     4 Jฤ™drzej Rochala
     4 Katarzyna Marek
     4 Quentin Bernet
     3 Jan Chyb
     3 Lucas
     3 Matt Bovel
     3 Seth Tisue
     2 Julien Richard-Foy
     2 Wojciech Mazur
     1 Aleksey Troitskiy
     1 Arnout Engelen
     1 Bjorn Regnell
     1 Eugene Yokota
     1 Justin Reardon
     1 Kisaragi
     1 Martin Kuฤera
     1 Matthew Rooney
     1 Matthias Kurz
     1 Ondrej Lhotak
     1 Rikito Taniguchi
     1 Stefan Wachter
     1 Yuito Murase
     1 rochala

3.3.1

07 Sep 21:35
Compare
Choose a tag to compare

Highlights of the release

  • Support records in JavaParsers #16762
  • Port JVM backend refactor from Scala 2 #15322

Other changes and fixes

Backend

  • Disallow mixins where super calls bind to vals #16908
  • Fix #15107: Avoid re-emitting a LineNumber after only LabelNodes. #16813

Coverage

  • Fix #17042: Preserve the shape of secondary ctors in instrumentCoverage. #17111

Default parameters

  • Dupe fix when finding default arg getters #17058

Documentation

  • Fix: ensure syntax blocks for ebnf are marked as such #16837

Erasure

  • Handle @companionClass and @companionMethod meta-annotations #17091

Extension Methods

  • Support extension methods imported from different objects #17050

GADTs

  • Fix tuple member selection so it works with GADT healing #16766
  • Fix upper bound constraints, that are higher-kinded #16744
  • Split out immutable GadtConstraint #16602

Implicits

  • Improve subtyping check for not yet eta-expanded higher kinded types #17139
  • Harden tpd.Apply/TypeApply in case of errors #16887
  • Try to be more subtle when inferring type parameters of class parents #16896
  • Include P in the implicit scope of P.this.type #17088

Incremental Compilation

  • Fix under-compilation when the method type in a SAM changes #16996

Infrastructure

  • Set reference version to 3.3.0-RC6 #17504
  • Fix #17119: Download Coursier from GitHub directly #17141

Inline

  • Remove NamedArg from inlined arguments #17228
  • Don't generate a Select for a TermRef with NoPrefix #16754
  • Prepare bodies of inline forwarders eagerly #16757
  • Do not remove inline method implementations until PruneErasedDefs #17408

Java Interop

  • ClassfileParser: allow missing param names (for JDK 21) #17536

Linting

  • Improve -Wunused: locals, privates with unset vars warning #16639 #17160
  • Fix wunused false positive when deriving alias type #17157
  • Port -Wnonunit-statement setting for dotty #16936

Match Types

  • Normalize match type usage during implicit lookup #17457
  • Fix #13757: Explicitly disallow higher-kinded scrutinees of match types. #17322
  • Fix match type reduction with wildcard type arguments #17065
  • Fix check whether classtag can be generated for match types #16708

Parser

  • Allow lines starting with . to fall outside previous indentation widths #17056

Pattern Matching

  • Fix #11541: Specialize ClassTag[T] in exhaustivity check #17385
  • Check outer class prefixes in type projections when pattern matching #17136
  • Make unchecked cases non-@unchecked and non-unreachable #16958
  • Fix #16899: Better handle X instanceOf P where X is T1 | T2 #17382

Pickling

  • ClassfileParser: Avoid cycle when accessing companion in inner class lookup #16882

Polyfunctions

  • Fix type aliases in beta-reduction of polyfunctions #17054

Quotes

  • Register paramProxy and thisProxy in Quote type #17541
  • Only check newVal/newMethod privateWithin on -Xcheck-macros #17437
  • Unencode quote and splice trees #17342
  • Correctly type Expr.ofTupleFromSeq for arity > 22 #17261
  • Use TermRef to distinguish distinct Type[T] instances #17205
  • Check level consistency of SingletonTypeTree as a type #17209
  • Fix splice type variable pattern detection #17048
  • Avoid creation of @SplicedType quote local refrences #17051
  • Dealias type references when healing types in quotes #17049
  • Replace quoted type variables in signature of HOAS pattern result #16951
  • Beta-reduce directly applied PolymorphicFunction #16623
  • Use Object.toString for quoted.{Expr, Type} #16663
  • Fix Splicer.isEscapedVariable #16838
  • Fix references to class members defined in quotes #17107
  • Handle pickled forward references in pickled expressions #16855
  • Fix #16615 - crashes of path dependent types in spliced Type.of #16773
  • Disallow local term references in staged types #16362
  • Refactor level checking / type healing logic #17082
  • Dealias quoted types when staging #17059
  • Fix quotes with references to path dependent types #17081
  • Make arguments order in quote hole deterministic #17405
  • Only transform the body of the quote with QuoteTransformer #17451
  • Place staged type captures in Quote AST #17424
  • Add SplicePattern AST to parse and type quote pattern splices #17396

Reflection

  • -Xcheck-macros: add hint when a symbol in created twice #16733
  • Assert that symbols created using reflect API have correct privateWithin symbols #17352
  • Fix reflect.LambdaType type test #16972
  • Improve New/Select -Ycheck message #16746
  • Improve error message for CyclicReference in macros #16749
  • Add reflect defn.FunctionClass overloads #16849

REPL

  • Always load REPL classes in macros including the output directory #16866

Reporting

  • Improve missing argument list error #17126
  • Improve implicit parameter error message with aliases #17125
  • Improve "constructor proxy shadows outer" handling #17154
  • Clarify ambiguous reference error message #16137
  • Hint about forbidden combination of implicit values and conversions #16735
  • Attach explanation message to diagnostic message #16787
  • Propagate implicit search errors from implicit macros #16840
  • Detail UnapplyInvalidReturnType error message #17167
  • Add way to debug -Xcheck-macros tree checking #16973
  • Enrich and finesse compiler crash reporting #17031
  • Allow @implicitNotFound messages as explanations #16893
  • Include top-level symbols from same file in outer ambiguity error #17033
  • Do not issue deprecation warnings when declaring deprecated case classes #17165

Scala-JS

  • Fix #17344: Make implicit references to this above dynamic imports explicit. #17357
  • Fix #12621: Better error message for JS trait ctor param. #16811
  • Fix #16801: Handle Closure's of s.r.FunctionXXL. #16809
  • Fix #17549: Unify...
Read more

3.3.1-RC7

30 Aug 05:56
Compare
Choose a tag to compare
3.3.1-RC7 Pre-release
Pre-release

Backported fixes

  • Tweak selection from self types #18467
  • Revert "Add reflect defn.FunctionClass overloads" #18473

Contributors

Thank you to all the contributors who made this release possible ๐ŸŽ‰

According to git shortlog -sn --no-merges 3.3.1-RC6..3.3.1-RC7 these are:

     3	Paweล‚ Marks
     1	Martin Odersky

3.3.1-RC6

25 Aug 13:56
Compare
Choose a tag to compare
3.3.1-RC6 Pre-release
Pre-release

Backported fixes

  • Refine infoDependsOnPrefix #18204
  • FDo not compute protoFormal if param.tpt is empty #18288
  • Revert "Normalize match type usage during implicit lookup" #18440

Contributors

Thank you to all the contributors who made this release possible ๐ŸŽ‰

According to git shortlog -sn --no-merges 3.3.1-RC5..3.3.1-RC6 these are:

     3	Paweล‚ Marks
     2	Martin Odersky
     1	Nicolas Stucki

3.3.1-RC5

10 Aug 14:54
Compare
Choose a tag to compare
3.3.1-RC5 Pre-release
Pre-release

Backported fixes

  • Heal stage inconsistent prefixes of type projections #18239
  • Fix regression #17245: Overloaded methods with ClassTags #18286
  • Disallow taking singleton types of packages again #18232
  • A slightly more conservative version of #14218 #18352
  • Record failures to adapt application arguments #18269
  • Fix regression in exhaustivity of HK types #18303

Contributors

Thank you to all the contributors who made this release possible ๐ŸŽ‰

According to git shortlog -sn --no-merges 3.3.1-RC4..3.3.1-RC5 these are:

     5 Dale Wijnand
     2 Martin Odersky
     2 Paweล‚ Marks
     1 Jan Chyb
     1 Nicolas Stucki

3.3.1-RC4

11 Jul 15:03
Compare
Choose a tag to compare
3.3.1-RC4 Pre-release
Pre-release

Backported fixes

  • Revert "Include top-level symbols from same file in outer ambiguity error" #17438

Contributors

Thank you to all the contributors who made this release possible ๐ŸŽ‰

According to git shortlog -sn --no-merges 3.3.1-RC3..3.3.1-RC4 these are:

     2 Paweล‚ Marks
     1 Nicolas Stucki

3.3.1-RC3

06 Jul 09:58
Compare
Choose a tag to compare
3.3.1-RC3 Pre-release
Pre-release

Backported fixes

  • Add clause for protected visibility from package objects #18134

Contributors

Thank you to all the contributors who made this release possible ๐ŸŽ‰

According to git shortlog -sn --no-merges 3.3.1-RC2..3.3.1-RC3 these are:

     2 Paweล‚ Marks
     1 Martin Odersky