Skip to content

Releases: scala/scala3

3.8.2-RC1

22 Jan 14:49
e57963a

Choose a tag to compare

3.8.2-RC1 Pre-release
Pre-release

Highlights of the release

  • Support :dep ... to add library dependencies in the Scala REPL, add helpful message to //> using dep "..." #24131
  • Warn if type argument was inferred as union type #24258
  • Upgrade to Scala.js 1.20.2. #24898

Other changes and fixes

Context Functions

  • Inferred Contextual params are less nameable #24381

Desugaring

  • A comprehension with valdef aliases is never a candidate for map elimination. #23448

Experimental: Capture Checking

  • Capture Checking of Lazy Vals #24261
  • Represent read-only with a classifier #24295
  • Fix typing closure blocks where result type refers to a closure parameter. #24299
  • Systematically recompute denotations when needed in rechecker phases #24302
  • Ensure that read-only methods don't use exclusive capabilities #24311
  • Handle capture parameters in dcs #24328
  • Don't prematurely force info of fields with inferred types #24336
  • Disallow fresh caps from parameter bounds in results #24541
  • Avoid box failures and better diagnosis if they come back #24546
  • Freshen all explicit arguments of type applications #24354
  • Optimize and harden isCaptureChecking tests #24439
  • Add Unscoped classifier #24470
  • Optimization: Introduce CompactAnnotation #24679

Experimental: Seperation Checking

  • Changes to Mutable #24352
  • Don't crash when update is used as a modifier outside cc #24378
  • Imply update only for consume methods in Mutable classes #24383
  • Decompose Mutable #24495
  • Add freeze wrapper (2) #24518
  • Make Arrays mutable types under separation checking #24649

Experimental: Explcit Nulls

  • Relax flow typing checks on Flexible Types #24278
  • Do not expose flexible types #24292
  • Do not search contextual function type in union types in general #24393
  • Add jspecify NonNull annotation to NotNullAnnots list #24487

Experimental: Global Initialization

  • Global object init checker gives warning when accessing an object before its super constructor finishes #24349

Annotations

  • Accommodate adapted Scala 2 annotation value #17516
  • Harden Annotation.refersToParamOf #24647
  • Do not allow @targetName on primary constructor too #24682

Coverage

  • Fix issues with Scala.js and coverage #24769
  • Make coverage support incremental compilation #24773
  • Improvement: Try to optimize coverage phase #24925

Enums

  • Lint enum case in outer context #24652

Exports

  • Preserve select of exported member in newExpr #24570

Erasure

  • Fix isJvmAccessible to handle nested protected Java classes #24625

Inline

  • Allow references to erased values in types #24421

Implicits

  • Avoid more constraints in result if trying views #24369

Initialization

  • Skip caret when source is missing in initialization checker #23926

Linting

  • Suppression matches inlined positions #24092
  • Wshadow option recognizes Wall #24469

Nullability

  • Record NotNullInfo for exceptional try-catch #24320

Overloading

  • Ignore selection prototypes when typing type applications #24489
  • Fix varargs overload resolution with wildcard types #24669
  • Fix override checking for Java methods with covariant array #24408

Parser

  • Permit new with trivial end #24331
  • Single line case lambda gets a region #24497
  • Error tree on outdent is zero extent #23796

Pattern Matching

  • Fix false exhaustivity for GADT under separate compilation #23966

Presentation Compiler

  • Create extension method in infer method action #24721
  • Exclude XRayModeHint for synthetics #24722
  • Fix incorrect XRay hint #24738
  • Improve multi-line code message rendering #24723
  • Improvement: Allow passing -explain to the presentation compiler #24740
  • Handle inlined tree in implicit parameter inlay hints #24762

REPL

  • Improve REPL code, echo and exception highlighting with pprint and fansi #24298
  • Replace REPL signal handling with raw mode jline terminal to make Ctrl-C handling work when REPL is a child process #24842
  • Fix "Colon as operator part at beginning of line in REPL" #24942

Reporting

  • Addendum when apply error involves default arg #21133
  • Forward reference error includes line numbers #22534
  • Improve error messages for scope extrusion errors #24318
  • Use a better span for an anonymous class #24640

Scaladoc

  • Allow to additional scalacOptions in Markdown code snippets #24755

Standard Library

  • Enable capture checking on Tuple #24345
  • Update StringOps.padTo implementation #24575
  • Use String.repeat in scala.io.Source #24594
  • Ensure stability of IArray.tapEach #24727

Transform

  • Adjust purity of trait with lazy member #23788

Tuples

  • Fix inconsistent typeSize calculation for TupleN vs recursive pair encodings #24743

Typer

  • Dealias type of type constructor in typedAppliedTypeTree #24522
  • Improve TypeVar instantiation logic #24697
  • Try to instantiate TypeVars inside pt when possible #24231
  • Error instead of crash when generating trees referring to skolems #24380
  • Try to fix callee type inference in typedFunctionValue #24732
  • Fix wildcardArgOK for mixed wildcard/concrete type args #25001

Union types

  • Dealias in isSimpleThrowable check #24744

Quotes

  • Make quotes.reflect.Position.ofMacroExpansion consider -Ymagic-offset-header #24301

Contributors

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

According to git shortlog -sn --no-merges 3.8.1..3.8.2-RC1 these are:

   101 Martin Odersky
    93 Hamza Remmal
    67 Wojciech Mazur
    34 Som Snytt
    24 noti0na1
    16 Rikito Taniguchi
     8 Oliver Bračevac
     7 Kenji Yoshida
     7 Li Haoyi
     7 Matt Bovel
     7 Natsu Kagami
     7 Tomasz Godzik
     7 Yichen Xu
     6 Jan Chyb
     6 Piotr Chabelski
     5 Zieliński Patryk
     5 dependabot[bot]
     4 HarrisL2
     3 Jamie Thompson
     3 Lukas Rytz
     2 Chua Chee Seng
     2 Fengyun Liu
     2 Guillaume Martres
     2 Lluc Santamaria Riba
     2 Sébastien Doeraene
     1 Alex1005a
     1 Bill Venners
     1 Emil Ejbyfeldt
     1 EnzeXing
     1 Evgeny Vereshchagin
     1 Jeon Yoonjae
     1 Lorenzo Gabriele
     1 Seth Tisue
     1 matsu-chara
     1 rjolly
     1 zielinsky
`...
Read more

3.8.1

22 Jan 14:22
88438e2

Choose a tag to compare

Highlights of the release

Scala 3.8.1 is a hotfix release for 3.8.0.
It addresses runtime regressions found after the 3.8.0 artifacts were released, specifically JVM linkage errors affecting a small subset of Scala 2 specialized types and members.

Additional regressions

The following regressions still present in 3.8.1 will be addressed in a forthcoming 3.8.2 hotfix release:

  • Some for comprehensions have incorrect behavior at runtime (#24673)
  • Certain code involving calls to certain parts of the Java standard library fail to compile (#25133)

Cautious users may wish to wait for 3.8.2.

Fixed regressions

  • Revert addition of new base trait to ReturnThrowable #24975
  • Use uninlined version of Scala 2 standard-library in ScalaLibraryPlugin #25008
  • Add missing specialized method in NumericRange #25020
  • Correct the list of files to copy from Scala 2 #25033

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

3.8.0

22 Jan 14:20
73ecd48

Choose a tag to compare

Please use Scala 3.8.1
Version 3.8.0 was published with runtime regressions.

Highlights of the release

  • Require JDK 17+ #24146
  • Add explicit null checks to Scala 3 Standard Library #23566
  • Add capture-checking to Scala 3 Standard Library #23688
  • Add capture-checking to Scala 2 collections #23769
  • Extract REPL to be its own artifact #24243
  • SIP-57: Make runtimeChecked a standard feature #23262
  • SIP-62: Make better-fors a stable feature #23630
  • Preview SIP-71: Make into preview feature #24090
  • Experimental SIP-67: Strict equality pattern matching #23803
  • Experimental SIP-70: Allow multiple spreads in function arguments #23855
  • Experimental SIP-75: Allow single-line lambdas after : #23821
  • Experimental: Match if sub cases #23786
  • Support JDK 26 #24430
  • Make scala.caps.Pure non-experimental #23745
  • Allow annotations to annotate themselves #24447
  • Changed indicator for LTS/Next series indicator in pom.xml #24709

Other changes and fixes

Annotations

  • Emit deprecation warnings when a symbol is annotated by a deprecated annotation #23906
  • Deprecate scala.annotation.elidable #23913
  • Deprecate scala.annotation.transparentTrait #23116

Experimental: Capture Checking

  • Make scala.caps.Pure transparent #23914
  • Make scala.caps.Capability non-experimental #23507
  • Check conformance to scala.caps.Pure upper bound only under cc #23784
  • Widen type parameters before box adaptation #23809
  • Level checking: distinguish between certain capset vars with same owner #24077
  • Implement FreshCap Handling for Classes and Objects #24136
  • Skip capture sets in checkNoPrivateLeaks and drop them in posttyper when cc is not enabled #23886
  • Changes around reaches and uses #23584
  • Revise capability hierarchy and fix classifiers #23656
  • Improve closure typing #23700
  • Better printing of capabilities in error messages #23701
  • More improvements to error messages #23721
  • CC Language Ref Polishings #23762
  • CC Language Reference Improvements v2 #23818
  • Changes in CC around classes, constructors, this #23874
  • Various fixes and simplifications #23881
  • Simplify Level Checking and Fix Errors #23934
  • Introduce precise refined types #24154
  • Fix unsoundness in APPLY and SELECT rules #24159
  • Fixes for mutability #24205
  • Implement inheritance condition for Mutable types #24253
  • Don't add cap when creating instances of capability classes. #24256
  • Changes to Fresh and Separation Checking #24112
  • Avoid blowup of compute times for ill-formed retains #24564
  • Fix apply rule #24273

Experimental: Explicit Nulls

  • Only nullify tasty if Yflexify-tasty is set; Refine FlexibleType nullification rules #23938
  • Apply flexible types to files compiled without explicit nulls #23386
  • Fix NotNullInfo in multi-case match #23864
  • Fix captureWildcards with FlexibleType #24070
  • Do not assume left is non-null if another branch is null in splitLast #24325
  • Fix #24440: Do not check public flexible types on artifact symbols or inside anonymous classes #24471

Experimental: Global Initalization

  • Modelling assigning to null in the global object initialization checker #23858
  • Fix global init checker unexpected by name #23859
  • Fix selection on safe value in the global object initialization checker #23860
  • Re-design Env of the global object init checker #24107

Experimental: Into

Experimental: Modularity

  • Simpler inference for tracked #22972

Implicits

  • Only check seen for LazyRef for TypeSizeAccumulator #20459
  • Derived members succeed other givens in cycle test #23898

JVM Backend

  • Fix generic signatures for mixin forwarders conflicting type parameter names #24567
  • Look at the underlying of a TermRef for a getter #24565
  • Refine parameter adaptation logic for arrays #23591
  • Fix #24573: Add stricter checks for platform SAM compatibility #24624
  • Only rename method type params shadowing enclosing class type params #24684
  • Update BackendUtils.classfileVersionMap #23954
  • Refine TypeErasure.samExpansionNotNeeded to check parent traits if SAM is covered #24843

Linting

  • Drill through type lambda for tree symbol #23699
  • Warn unused masking imports, remove obsolete unused options #23757
  • Unused lint does not rewrite suppressed warnings #24055
  • Check for synthetic case methods in unused lint #24239
  • CheckUnused examines type of Apply #24465
  • Suggest runtimeChecked in warning/error messages #24672
  • Parameter name can be masked in import #24635

Match Types

  • Prioritize tree type over proto type when typing Binds #24175

Metaprogramming

  • Warn about encoded pkg obj names #22707

Named Tuples

  • Prohibit selection of tuples with members named apply. #24191
  • Add an Ordering given instance for named tuples #23379
  • Named tuple toMap extension method #23827

Opaque Types

  • Prevent opaque types leaking from transparent inline methods #23792
  • Make opaque types decomposable #24068

Packaging

  • Ensure scala3-library does not contain .class or .tasty files #24714
  • Ensure that scala3-library artifacts are empty #24816
  • Actively remove Scala 2 pickles and emit synthetic TASTy attribute for copied stdlib .class files #24846

Parser

  • Make consume a soft modifier #23755

Pattern Matching

  • Fix false exhaustivity warning for seq match #23968
  • Use upper bound of abstract types in exhaustivity checking #23909

Performance

  • Make compilationUnitInfo of TastyLoader lazy #24604
  • Strip CC annotations in TypeMap when CC is not enabled #24556

Pickling

  • Cleanup the type of UnApply trees in posttyper #24259

Presentation Compiler

  • Make sure that we can query tree.source #24123
  • Add unsafe RawPresentationCompiler implementation [...
Read more

3.8.0-RC6

09 Jan 10:53
10c27cf

Choose a tag to compare

3.8.0-RC6 Pre-release
Pre-release

Backported changes

  • Actively remove Scala 2 pickles and emit synthetic TASTy attribute for copied stdlib .class files #24846
  • Deprecate MapOps.KeySet, replace with private (and more performant) strict/lazy KeySet implementations #24767

Contributors

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

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

    17  Wojciech Mazur
     5  Natsu Kagami
     1  Hamza Remmal

3.8.0-RC5

04 Jan 17:56
29b4485

Choose a tag to compare

3.8.0-RC5 Pre-release
Pre-release

Backported changes

  • Synchronize standard library sources with Scala 2.13.18 #24788
  • Use up-to-date sources of Scala 2.13 stdlib when patching Scala 3 bytecode #24855
  • Add @uncheckedOverride annotation for definitions that may override #24545
  • Update BackendUtils.classfileVersionMap #23954
  • Fix REPL interrupt instrumentation conditional #24837
  • Refine TypeErasure.samExpansionNotNeeded to check parent traits if SAM is covered #24843
  • Ensure that scala3-library artifacts are empty #24816

Contributors

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

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

    21  Wojciech Mazur
     3  Lukas Rytz
     2  Kenji Yoshida
     1  Evgeny Vereshchagin
     1  Li Haoyi

3.8.0-RC4

24 Dec 13:33
86fc338

Choose a tag to compare

3.8.0-RC4 Pre-release
Pre-release

Backported changes

  • Bump Scala CLI to 1.11.0 (was 1.10.1) and coursier to 2.1.25-M21 (was 2.1.25-M19) #24739
  • Suggest runtimeChecked in warning/error messages #24672
  • Ensure scala3-library does not contain .class or .tasty files #24714
  • Fix #24573: Add stricter checks for platform SAM compatibility #24624
  • Fix #24440: Do not check public flexible types on artifact symbols or inside anonymous classes #24471
  • Tweak type for tryParameterless #24716
  • Fix apply rule #24273
  • Work around sbt#8376 and re-enable shapeless-3 community build #24709
  • Parameter name can be masked in import #24635
  • Only rename method type params shadowing enclosing class type params #24684
  • Make style-only changes to doc comments for the standard library. #24754
  • Restore dist projects required for Scala runners #24775
  • Update to new wildcard syntax in library scaladoc #24751
  • Move into to preview in the language reference #24704

Contributors

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

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

    13  Wojciech Mazur
     6  Rikito Taniguchi
     3  noti0na1
     2  Piotr Chabelski
     2  Som Snytt
     1  Jamie Thompson
     1  Kenji Yoshida
     1  Oliver Bračevac

3.8.0-RC3

04 Dec 20:28
76644fb

Choose a tag to compare

3.8.0-RC3 Pre-release
Pre-release

Backported changes

  • Fix #24599: Remove | Null from implicit BigDecimal conversion similar to BigInt #24600
  • Fix #24571: Handling nullable types in convertTo for adapting number constants to target number types #24580
  • Fix #24547: Strip inferred retains annotation from Macro/inline call trees #24560
  • Allow annotations to annotate themselves #24447
  • Allow to generate the documentation of the stdlib #24574
  • Avoid blowup of compute times for ill-formed retains #24564
  • Cleanups and source compatibility improvements for repl.AbstractFileClassLoader #24514
  • Deprecate the content of the scala.runtime.stdLibPatches package #24587
  • Do not add scala.util.Properties as the Main-Class in the Manifest #24540
  • Drop -Yno-stdlib-patches #24477
  • Fix generic signatures for mixin forwarders conflicting type parameter names #24567
  • Look at the underlying of a TermRef for a getter #24565
  • Make compilationUnitInfo of TastyLoader lazy #24604
  • Make scala.Predef capture checked #24643
  • Refine parameter adaptation logic for arrays #23591
  • Strip CC annotations in TypeMap when CC is not enabled #24556

Contributors

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

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

    22  Hamza Remmal
    12  Wojciech Mazur
     6  noti0na1
     3  Matt Bovel
     2  Martin Odersky
     1  Oliver Bračevac

3.8.0-RC2

27 Nov 12:30
ee83e1b

Choose a tag to compare

3.8.0-RC2 Pre-release
Pre-release

Backported changes

  • Upgrade ASM to 9.9 for JDK 26 support #24430
  • Bump Scala CLI to 1.10.1 (was 1.10.0) #24448
  • Add missing -language:experimental.* settings #24513
  • Indicate deprecated option aliases #24359
  • Fix #24456: Cleanup the info of a Bind symbol in posttyper #24490
  • Ignore selection prototypes when typing type applications #24489
  • Revert "do not patch the implicit scope of scala.Unit in Scala.js" #24475
  • CheckUnused examines type of Apply #24465
  • Have the correct properties when testing Scala.js #24463
  • Make Java defined functions nullary when we override them #24461
  • Add missing mapSourceURI for scala-library-sjs project #24450
  • Allow to compile scala.AnyVal with Scala 3 #24406

Contributors

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

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

     7  Hamza Remmal
     4  Wojciech Mazur
     2  Martin Odersky
     2  Som Snytt
     1  Piotr Chabelski
     1  Seth Tisue
     1  noti0na1

3.8.0-RC1

19 Nov 13:09
73533c2

Choose a tag to compare

3.8.0-RC1 Pre-release
Pre-release

Highlights of the release

  • Require JDK 17+ #24146
  • Scala Standard Library is now compiled and published using Scala 3
  • Add explicit null checks to Scala 3 Standard Library #23566
  • Add capture-checking to Scala 3 Standard Library #23688
  • Add capture-checking to Scala 2 collections #23769
  • Extract REPL to be its own artifact #24243
  • SIP-57: Make runtimeChecked a standard feature #23262
  • SIP-62: Make better-fors a stable feature #23630
  • Preview SIP-71: Make into preview feature #24090
  • Experimental SIP-67: Strict equality pattern matching #23803
  • Experimental SIP-70: Allow multiple spreads in function arguments #23855
  • Experimental SIP-75: Allow single-line lambdas after : #23821
  • Experimental: Match if sub cases #23786

See the release thread on contributors.scala-lang.org for additional comments

Other changes and fixes

Annotations

  • Emit deprecation warnings when a symbol is annotated by a deprecated annotation #23906
  • Deprecate scala.annotation.elidable #23913
  • Deprecate scala.annotation.transparentTrait #23116

Experimental: Capture Checking

  • Move scala.caps.Pure to caps and make it non-experimental #23745
  • Make scala.caps.Pure transparent #23914
  • Make scala.caps.Capability non-experimental #23507
  • Check conformance to scala.caps.Pure upper bound only under cc #23784
  • Widen type parameters before box adaptation #23809
  • Level checking: distinguish between certain capset vars with same owner #24077
  • Implement FreshCap Handling for Classes and Objects #24136
  • Skip capture sets in checkNoPrivateLeaks and drop them in posttyper when cc is not enabled #23886
  • Changes around reaches and uses #23584
  • Revise capability hierarchy and fix classifiers #23656
  • Improve closure typing #23700
  • Better printing of capabilities in error messages #23701
  • More improvements to error messages #23721
  • CC Language Ref Polishings #23762
  • CC Language Reference Improvements v2 #23818
  • Changes in CC around classes, constructors, this #23874
  • Various fixes and simplifications #23881
  • Simplify Level Checking and Fix Errors #23934
  • Introduce precise refined types #24154
  • Fix unsoundness in APPLY and SELECT rules #24159
  • Fixes for mutability #24205
  • Implement inheritance condition for Mutable types #24253
  • Don't add cap when creating instances of capability classes. #24256
  • Changes to Fresh and Separation Checking #24112

Experimental: Explicit Nulls

  • Only nullify tasty if Yflexify-tasty is set; Refine FlexibleType nullification rules #23938
  • Apply flexible types to files compiled without explicit nulls #23386
  • Fix NotNullInfo in multi-case match #23864
  • Fix captureWildcards with FlexibleType #24070
  • Do not assume left is non-null if another branch is null in splitLast #24325

Experimental: Global Initalization

  • Modelling assigning to null in the global object initialization checker #23858
  • Fix global init checker unexpected by name #23859
  • Fix selection on safe value in the global object initialization checker #23860
  • Re-design Env of the global object init checker #24107

Experimental: Into

Experimental: Modularity

  • Simpler inference for tracked #22972

Implicits

  • Only check seen for LazyRef for TypeSizeAccumulator #20459
  • Derived members succeed other givens in cycle test #23898

Linting

  • Drill through type lambda for tree symbol #23699
  • Warn unused masking imports, remove obsolete unused options #23757
  • Unused lint does not rewrite suppressed warnings #24055
  • Check for synthetic case methods in unused lint #24239

Match Types

  • Prioritize tree type over proto type when typing Binds #24175

Metaprogramming

  • Warn about encoded pkg obj names #22707

Named Tuples

  • Prohibit selection of tuples with members named apply. #24191
  • Add an Ordering given instance for named tuples #23379
  • Named tuple toMap extension method #23827

Opaque Types

  • Prevent opaque types leaking from transparent inline methods #23792
  • Make opaque types decomposable #24068

Parser

  • Make consume a soft modifier #23755

Pattern Matching

  • Fix false exhaustivity warning for seq match #23968
  • Use upper bound of abstract types in exhaustivity checking #23909

Pickling

  • Cleanup the type of UnApply trees in posttyper #24259

Presentation Compiler

  • Make sure that we can query tree.source #24123
  • Add unsafe RawPresentationCompiler implementation #24133

Reporting

  • Fix span of private this warning #23947
  • Improve printing of strings #22945
  • Better grouping of explanations in error messages #24155
  • Better error message: reassignment to val #24184

Reflection

  • Add missing apply constructors for Refined and TypeProjection TypeTrees #23837

REPL

  • Use PPrint to handle printing of REPL output values #23849
  • Invoke pprint reflectively #24119
  • Consider rendering prefix when pretty printing values in the REPL #24118
  • Trap Ctrl-C in the REPL: if no command is running clear the prompt, if some command is running ask for confirmation before exiting #24127
  • Re-implement Ammonite's Ctrl-C interruption for Scala REPL via bytecode instrumentation #24194
  • Remove pipes from multi-line REPL prompts #24307
  • Reintroduce reflective REPL pprint call. #24353

Scala Runner

  • Drop scala_legacy and MainGenericRunner #24244
  • Drop -run and -repl in MainGenericCompiler #24289
  • Bump Scala CLI to v1.10.0 (was v1.9.1) and Coursier to v2.1.25-M19 (was 2.1.24) #24362

Scaladoc

  • Add FlexibleType support for scaladoc #23320
  • Render @consume as the consume modifier #23754
  • Do not render consume update in scaladoc #23760

Scala.js

  • Upgrade to Scala.js 1.20.1. #23884
    -...
Read more

3.7.4

11 Nov 15:03
40be760

Choose a tag to compare

Highlights of the release

  • Bump Scala CLI to v1.9.1 (was v1.9.0) #23962
  • Make coverage more similar to the one in Scala 2 #23722

Deprecations for removal

  • Deprecate scala_legacy/MainGenericRunner/scalac -run/scalac -repl for removal #24267

Other changes and fixes

Context Functions

  • Explain no expansion of ContextFunction0 #23844

Experimental: Capture Checking

  • Fix #23737: Update superCallContext to include dummy capture parameters in scope #23740
  • Fix separation checking for function results #23927
  • Simple enhancement for pattern matching with capturing types #23524
  • Don't check bounds in match type cases at CC #23738

Experimental: Explicit Nulls

  • Add warnings for inferred flexible types in public methods and fields #23880

Exports

  • Refine isEffectivelyFinal to avoid no-owner crash #23675

Implicits

  • Fix LiftToAnchors for higher-kinded type applications #23672
  • Fix implicit scope liftToAnchors for parameter lower bounds #23679

Linting

  • Invent given pattern name in for comprehension #23121
  • Unused var message mentions unread or unset #23719
  • Lint function arrow intended context function #23847
  • Always traverse Inlined.call in linter #24043
  • Ignore warnings when compiletime.testing is imported #24036
  • Lint avoids revisiting Inlined.call #24277
  • Register no elements for lint after inlining #24279
  • Use enclosing enclosingInlineds for empty call #24281
  • Exclude synthetic opaque proxy from lint #24264

Match Types

  • Fix derivesFrom false negative in provablyDisjointClasses #23834

Parser

  • Improve message for nested package missing braces #23816
  • Fix: Allow postfix setters under language.postfixOps #23775
  • Fix Java record varargs field accessor #24172

Pattern Matching

  • Fix: do not transform Ident to This in PostTyper anymore #23899
  • Call inhabited for AppliedType recursively #23964
  • Fix false unreachable case warning #23800
  • Add subtype-based fallback in inferPrefixMap and recalculate constraints after application #23771

Presentation Compiler

  • Additional completions for using clause #23647
  • Completions - do not add [] for ... derives TC@@ #23811
  • Improve symbol order in completions provided by the presentation compiler #23888
  • Porting XRayModeHints #23891
  • Go to definition and hover for named args in pattern match #23956
  • Fix parameter untupling for named tuples (#23440) #24152
  • Fix possible SuspendException thrown when using macros #24174
  • Fix completions for named tuples #24169

Reporting

  • Do not discard amended format when f-interpolator warns #23697
  • Mention named givens in double def explainer #23833
  • Compute the right span for abstract error messages #23853
  • Add quick fix to add .nn #23598
  • Add addendum to private val parameter variance error message #23876
  • Fix compiler crash with -Ymagic-offset-header #24124

Rewrites

  • Deduplicate patches before applying them to sources #24215

Scaladoc

  • Indicate optional parameters with = ... #23676
  • Scaladoc Support for Capture & Separation Checking #23607
  • Capture Calcuclus: don't eagerly drop caps on parameters #23759
  • Fix rendering of function-type aliases #24042

SemanticDB

  • Add context parameters to SemanticDB synthetics #23381
  • Include synthetic apply in semanticdb #23629

Tuples

  • Fix: make vals created in desugaring of n-ary lambdas non-synthetic #23896

Typer

  • Prevent crash in SAM conversion with mismatched arity #23877
  • Handle assertion error in TyperState #23665
  • Correctly require a ClassTag when building a multidimensional Array #23902
  • Make isExactlyNothing and isExactlyAny work for And/OrTypes #24016

Contributors

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

According to git shortlog -sn --no-merges 3.7.3..3.7.4 these are:

    23  Wojciech Mazur
    16  Som Snytt
    11  noti0na1
     6  Martin Odersky
     5  Eugene Flesselle
     4  Hamza Remmal
     4  Natsu Kagami
     4  Oliver Bračevac
     4  Seyon Sivatharan
     3  Piotr Chabelski
     3  Tomasz Godzik
     3  Yoonjae Jeon
     3  dependabot[bot]
     2  Jan Chyb
     2  Kacper Korban
     2  Katarzyna Marek
     2  Li Haoyi
     2  Matt Bovel
     2  aherlihy
     1  Florian3k
     1  HarrisL2
     1  Martin Duhem
     1  Paweł Perłakowski
     1  Vadim Chelyshov
     1  Yichen Xu
     1  Zieliński Patryk
     1  katrinafyi
     1  vder
     1  zielinsky