Releases: scala/scala3
3.8.2-RC1
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
updateonly 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
@targetNameon 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
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
-explainto 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.padToimplementation #24575 - Use
String.repeatinscala.io.Source#24594 - Ensure stability of
IArray.tapEach#24727
Transform
- Adjust purity of trait with lazy member #23788
Tuples
- Fix inconsistent
typeSizecalculation forTupleNvs recursive pair encodings #24743
Typer
- Dealias type of type constructor in
typedAppliedTypeTree#24522 - Improve TypeVar instantiation logic #24697
- Try to instantiate TypeVars inside
ptwhen 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.ofMacroExpansionconsider-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
`...
3.8.1
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
forcomprehensions 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
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
runtimeCheckeda standard feature #23262 - SIP-62: Make
better-forsa stable feature #23630 - Preview SIP-71: Make
intopreview 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.Purenon-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.Puretransparent #23914 - Make
scala.caps.Capabilitynon-experimental #23507 - Check conformance to
scala.caps.Pureupper 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-tastyis 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
- Allow into on enums #23795
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.samExpansionNotNeededto 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-librarydoes not contain .class or .tasty files #24714 - Ensure that
scala3-libraryartifacts 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
compilationUnitInfoofTastyLoaderlazy #24604 - Strip CC annotations in TypeMap when CC is not enabled #24556
Pickling
- Cleanup the type of
UnApplytrees in posttyper #24259
Presentation Compiler
- Make sure that we can query tree.source #24123
- Add unsafe RawPresentationCompiler implementation [...
3.8.0-RC6
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
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
@uncheckedOverrideannotation for definitions that may override #24545 - Update
BackendUtils.classfileVersionMap#23954 - Fix REPL interrupt instrumentation conditional #24837
- Refine
TypeErasure.samExpansionNotNeededto check parent traits if SAM is covered #24843 - Ensure that
scala3-libraryartifacts 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
Backported changes
- Bump Scala CLI to 1.11.0 (was 1.10.1) and
coursierto 2.1.25-M21 (was 2.1.25-M19) #24739 - Suggest runtimeChecked in warning/error messages #24672
- Ensure
scala3-librarydoes 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#8376and 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
distprojects 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
Backported changes
- Fix #24599: Remove
| Nullfrom 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.stdLibPatchespackage #24587 - Do not add
scala.util.Propertiesas 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
compilationUnitInfoofTastyLoaderlazy #24604 - Make
scala.Predefcapture 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
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.Unitin 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-sjsproject #24450 - Allow to compile
scala.AnyValwith 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
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
runtimeCheckeda standard feature #23262 - SIP-62: Make
better-forsa stable feature #23630 - Preview SIP-71: Make
intopreview 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.Pureto caps and make it non-experimental #23745 - Make
scala.caps.Puretransparent #23914 - Make
scala.caps.Capabilitynon-experimental #23507 - Check conformance to
scala.caps.Pureupper 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-tastyis 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
- Allow into on enums #23795
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
UnApplytrees 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
RefinedandTypeProjectionTypeTrees #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_legacyandMainGenericRunner#24244 - Drop
-runand-replinMainGenericCompiler#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
@consumeas theconsumemodifier #23754 - Do not render
consume updateinscaladoc#23760
Scala.js
- Upgrade to Scala.js 1.20.1. #23884
-...
3.7.4
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 -replfor 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
derivesFromfalse negative inprovablyDisjointClasses#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
IdenttoThisin 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 valparameter 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
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
ClassTagwhen building a multidimensionalArray#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