Releases: scala/scala3
3.8.4-RC1
Highlights of the release
- Bump Scala CLI to 1.12.5 and Coursier to 2.1.25-M24 #25592
Other changes and fixes
Annotations
- Also copy param annots at mixin #24916
- Named arg may be deprecatedName #21588
- Use
dealiasKeepRefiningAnnotsinAvoidMap#25609
Backend
- Do not simplify isInstanceOf if unrelated types might be subtypes at run-time #25535
- Port more Scala2 tests + some mixin improvements #25573
- Use
Objects.equalsin translating==#25314
Compiler Phases
Context Functions
- Fix crash when processing path dependent context functions using HKTs #25530
Coverage
- Fix #25555: Preserve singleton precision during scoverage lifting #25556
- Fixes #25482: Ensure package transformation properly handles language imports in InstrumentCoverage #25546
- Scoverage: do not instrument erased values. #25298
Default parameters
- Fix named arguments evaluation order with by-name parameters #25161
- Typer: remove by-name lifting and replace default-getter args with fresh syms #25502
Documentation
- Error mentions bad _1 selector #25616
- Document Scala compiler error codes #24734
- Fix capture checking doc links in language.scala #25498
- Docs: apply snippet compiler on new types reference docs #19513
- Remove outdated comment in value classes #25428
- Update
IsIterablescaladoc #24692
Enums
- Make enum apply ascriptions inferred types #25562
Experimental: Capture Checking
- Distribute capture set into and-type on RHS of comparison #25509
- Fix global capabilities support in scaladoc #25563
- Improve capture-error precision for lambdas #25583
- Make result types of hoisted superArg defs InferredTypes #25577
- Transform result any to fresh in Setup.transformSym #25584
- Propagate expected types when rechecking match return expressions #25580
- Drop assertion in toFunctionType #25628
- Delay normalization of capture sets of vals and defs #25640
- Fluidify explicit self types for non-CC classes #25639
- Add missing TypeMap in Setup: FreshCapToResult #25648
- Fixes for capture checking case class methods #25278
- Don't add capture variables for type arguments with pure upper bounds #25316
- Two fixes for #25251 #25488
- Fixed #25430: Add missing CaptureChecked flag during ExpandSAMs #25443
- Fix accessibility check for any's in static objects #25582
- Disallow type parameters in OnlyCapability annotations #25496
- Capture check
Try#25072 - Make Capability types have implied capture sets for new #25346
Experimental: Safe Mode
Extension Methods
- Accept using right associative parameters #24766
- Better handling of illegal trees in
extension#25368
GADTs
- Also trust TypeTest when there is a Bind #24568
Implicits
- Deprecation when inferring implicit from non-accessible companion #25516
- Fix missing deprecation warning for implicit in non-accessible companion #25608
- Update migration message #25627
Inline
- Enhance constant-folding during inlining #24431
- Ensure the inline match scrutinee type conforms to the recalculated type #24988
- Do not update Symbol defTrees when retyping after Inlining #23870
- Inlines: decide sealing against original target, while using widened type as cast destination #25448
- Do not generate access proxies for locally defined protected defs #25056
- Avoid useless scrutinee proxy vals in inline match reduction #25279
Linting
- Match apply in PolyFunction for override #25505
- Value discard checks inline call for exemption #25554
- Introduce error message ids for shadow warnings #25101
Match Types
- Restore MatchTypeNoCases warning with correct source position #25470
Named Tuples
- Fix Ycheck crash from singleton tuple selects after specialization #25331
- Fix #23621: make named tuples exhaustive checkable #25267
Nullability
- Patch to allow interop with XMLBuilder and -Yexplicit-nulls #25221
- Be honest about the nullability of ConsoleReporter.reader and SourcePosition.outer. #25561
Opaque Types
- Treat synthetic casts as pure #25126
Overloading
- Pretype args before skipping clause of overloaded application #23012
Parser
- Fix #20063: Java leading annotation parsing #25503
- Observe outdent also for type cases and type blocks in quotes #25519
- Fix: import resolution for Java #25537
- Fix #25456: parser crash on polymorphic context bound #25623
- Accept
primitive.classin annotations #25363 - InCase has indent width of case #25295
- Don't automatically insert OUTDENT before COMMA #25501
- Add "did you mean to use parentheses/a block" when finding a complex expression on the RHS of an infix operator #25099
Pattern Matching
- Clean desugaring of simple tuple assignments #25010
- Extend caching in the space engine beyond local context #23483
- Prevent from getting children in case of non-sealed private #25359
- Use MatchCaseUnreachable #24829
- Fix wrong exhaustive check with sequence wildcard on case class with custom unapply #24260
- Try expanding case class to the product of its fields #25454
Positions
- Preserve span of
thisduring statification of trait constructors #25354
Presentation Compiler
- Improvement: Add fallbacks in non critical places for presentation compiler #25483
- Improvement: Use method type if it's available #25641
- Bugfix: Fix wrong type in InferredType code action #25469
- Fix & feat: improvements in selection ranges #25290
- Fix: ignore implicit apply for signature help #25294
- Bugfix: remove stale top-level symbols between runs #25317
Quotes
3.8.3
Release highlights
- Add support for local coverage on and off with
// $COVERAGE-OFF$and// $COVERAGE-ON$#24486 - Deprecate for removal
-print-linescompiler setting #25330 - Add safe mode capture checking extension #25307
- Port the Scala2 JVM backend optimizer #25165
Other changes and fixes
Desugaring
Documentation
- Fix little errors in the API documentation #25241
- CC Language Reference: Rename
captoany/fresh#25057
Enums
- Deprecate override class, improve checks #24828
- Fix Java enum forwarders to pull from companion on initialization #24361
Experimental: Capture Checking
- Rename caps.cap to caps.any #24923
- Track global capabilities #24883
- Treat local mutable vars as capabilities #24815
- Fix Crashes when Capture-set Parameters Conflict with Terms #25029
- Replace "cannot be included in" by "cannot flow into" in error messages #25155
- CC: Add field captures to self-type constraints #24984
- Add uses clauses for templates #24857
- Drop special code paths for objects #24881
- Do not consider generated getters to be
update def#24906 - Under cc, mark inferred type arguments to inline methods with an
@inferredannotation #25175 - Handle call-by-name types in bad locations under cc #25154
- Fixes for global capabilities #25123
- Warn if reach capability in result will likely cause leakage #24860
- Make
<fluid>decorations replace existing capture sets #25012 - Make TypeMaps in Setup work correctly for
fresh#24985 - For a limited time, also recognize caps.cap #25076
- Fix closure typing #25014
- Map class capture sets via as-seen-from with prefix of created types #24830
- Drop SafeMode attribute in Tasty #25357
- Fix @assumeSafe addition in safe mode #25364
- Disallow @assumeSafe under safe mode #25462
Experimental: Modularity
- Fix nested desugaring of applied constructor types #25288
Exports
- Add ctor proxies before exports #24884
Inline
- Make containsOuterRefsAnywhere follow aliases #25214
- Find annotation args in inline expansion #24895
- Also substitute symbols in case bindings symbols #24849
JDK
JVM Backend
- Simplify JVM interface list emission, remove a mini-phase #25203
- Don't generate bridge methods for inaccessible Java package-private methods #25166
- Revise isLocalToCompilationUnit #24856
- Enforce JVM UTF-8 string limits in the backend #25300
- Fix class super-call invokespecial owner #25437
Linting
- Extension check handles hiBound of opaque type #25172
- Distrust tree pos for patvar lint #25043
- Move second CheckUnused after pattern matcher #25114
- Unused lint ignores args to ctor of enclosing class #24768
- Check inline expansion for exclusion #23019
Metaprogramming
- Fix: Fix incremental compilation of (some unquoted) macros #24969
Named Tuples
- Don't try checking for ambiguous single-element tuples when in types #24910
- Fix "NamedTuple type in match is parsed as named pattern" #24929
- Fix "Named pattern matching doesn't work in
valstatements orforgenerators" #24928 - Fix false exhaustivity warning for pattern returning NamedTuple #23362
Overloading
- Prefer non-extension to extension #24943
Parser
- Check seen for TypeParamRef in TypeSizeAccumulator #25264
- End of new expr never shrinks #25253
- Use
toVectorfor XML literal sequences #23221
Pattern Matching
- Emit unchecked warnings for trait patterns #24962
Presentation Compiler
- Bugfix: inline value false-positive shadowing with lambda params #25140
- Test hover on backticked identifiers with whitespace #25142
- Inlining interpolated variables #25144
- Bugfix: treat self types as parent types #25167
- Feat(pc): add closing labels inlay hints #25178
- Coursier dependency imports should have lexicographic ordering #21592
- Bugfix: Fix various minor presentation compiler issues #25256
- Fix negative activeParameter in signature help #24945
- Closes #7532: Parameter hints not working for functions #23854
- Fix opaque types displayed as
Nothing & Anyin hover and signature help #24921
REPL
- Skip
module-info.classfiles during REPL tab-completion #24838 - Fix REPL usage of macros loaded via
:depand:jar#25312 - Make REPL type echo-ing use partially qualified names where made possible by imports #24850
- Force REPL to not evaluate LazyList #25444
Reporting
- Check -Werror on summarize #25096
- Fixes #24233: Remove misleading JDK compatibility hint for TASTy errors #25171
- Ignore resetting if preferPrevious #24991
- Enhance WInferUnion to not warn propagated explicit union types #25280
- Improve diagnostic message for unnecessary trailing underscore in eta-expansion #25285
- More descriptive "not found" message when type/term exists with the expected term/type name #24959
- Warn on Scala 2 auto-apply if loosely nullary #24811
- Fix printing references to nested objects #25086
- Add error note for type mismatch involving blocks without last expression #25181
- Drop
-print-linesoption #24905 - Don't suggest invisible members of root imports #24999
Runner
Rewrites
- Accommodate ArrowAssoc in infix named arg migration #25255
Scaladoc
3.8.3-RC3
Backported chnages
- Fix issues with Scala JS and the presentation compiler #25550
- Enforce JVM UTF-8 string limits in the backend #25300
- Fix class super-call invokespecial owner #25437
- Port the Scala2 optimizer #25165
Contributors
Thank you to all the contributors who made this release possible 🎉
According to git shortlog -sn --no-merges 3.8.3-RC2..3.8.3-RC3 these are:
49 Solal Pirelli
3 Wojciech Mazur
1 Rikito Taniguchi
1 Tomasz Godzik
3.8.3-RC2
Backported changes
- Bump Scala CLI to v1.12.3 (was v1.12.2) #25365
- Bump Scala CLI to 1.12.4 (was 1.12.3) #25434
- Fix Java enum forwarders to pull from companion on initialization #24361
- Fix issues in presentation compiler when using Scala JS #25450
- Add safe mode #25307
- Drop SafeMode attribute in Tasty #25357
- Fix @assumeSafe addition in safe mode #25364
- Disallow @assumeSafe under safe mode #25462
- Don't enable compact annotations under 2.13. #25419
- Don't absolutize sources outside of the sourceroot in TASTy #25429
- Docs: Enforce links checks in the generated docs #25425
- Preserve insertion order when balancing And/OrType #25361
- Improve ref check of constructors #24342
- Force REPL to not evaluate LazyList #25444
- Fix REPL usage of macros loaded via
:depand:jar#25312
Contributors
Thank you to all the contributors who made this release possible 🎉
According to git shortlog -sn --no-merges 3.8.3-RC1..3.8.3-RC2 these are:
16 Wojciech Mazur
12 Martin Odersky
10 Solal Pirelli
2 Tomasz Godzik
1 Piotr Chabelski
1 Som Snytt
3.8.3-RC1
Release highlights
- Add support for local coverage on and off with
// $COVERAGE-OFF$and// $COVERAGE-ON$#24486 - Deprecate for removal
-print-linescompiler setting #25330
Other changes and fixes
Desugaring
Documentation
- Fix little errors in the API documentation #25241
- CC Language Reference: Rename
captoany/fresh#25057
Enums
- Deprecate override class, improve checks #24828
- Fix Java enum forwarders to pull from companion on initialization #24361
Experimental: Capture Checking
- Rename caps.cap to caps.any #24923
- Track global capabilities #24883
- Treat local mutable vars as capabilities #24815
- Fix Crashes when Capture-set Parameters Conflict with Terms #25029
- Replace "cannot be included in" by "cannot flow into" in error messages #25155
- CC: Add field captures to self-type constraints #24984
- Add uses clauses for templates #24857
- Drop special code paths for objects #24881
- Do not consider generated getters to be
update def#24906 - Under cc, mark inferred type arguments to inline methods with an @inferred annotation #25175
- Handle call-by-name types in bad locations under cc #25154
- Fixes for global capabilities #25123
- Warn if reach capability in result will likely cause leakage #24860
- Make
<fluid>decorations replace existing capture sets #25012 - Make TypeMaps in Setup work correctly for
fresh#24985 - For a limited time, also recognize caps.cap #25076
- Fix closure typing #25014
- Map class capture sets via as-seen-from with prefix of created types #24830
Experimental: Modularity
- Fix nested desugaring of applied constructor types #25288
Exports
- Add ctor proxies before exports #24884
Inline
- Make containsOuterRefsAnywhere follow aliases #25214
- Find annotation args in inline expansion #24895
- Also substitute symbols in case bindings symbols #24849
JDK
JVM Backend
- Simplify JVM interface list emission, remove a mini-phase #25203
- Don't generate bridge methods for inaccessible Java package-private methods #25166
- Revise isLocalToCompilationUnit #24856
Linting
- Extension check handles hiBound of opaque type #25172
- Distrust tree pos for patvar lint #25043
- Move second CheckUnused after pattern matcher #25114
- Unused lint ignores args to ctor of enclosing class #24768
- Check inline expansion for exclusion #23019
Metaprogramming
- Fix: Fix incremental compilation of (some unquoted) macros #24969
Named Tuples
- Don't try checking for ambiguous single-element tuples when in types #24910
- Fix "NamedTuple type in match is parsed as named pattern" #24929
- Fix "Named pattern matching doesn't work in
valstatements orforgenerators" #24928 - Fix false exhaustivity warning for pattern returning NamedTuple #23362
Overloading
- Prefer non-extension to extension #24943
Parser
- Check seen for TypeParamRef in TypeSizeAccumulator #25264
- End of new expr never shrinks #25253
- Use
toVectorfor XML literal sequences #23221
Pattern Matching
- Emit unchecked warnings for trait patterns #24962
Presentation Compiler
- Bugfix: inline value false-positive shadowing with lambda params #25140
- Test hover on backticked identifiers with whitespace #25142
- Inlining interpolated variables #25144
- Bugfix: treat self types as parent types #25167
- Feat(pc): add closing labels inlay hints #25178
- Coursier dependency imports should have lexicographic ordering #21592
- Bugfix: Fix various minor presentation compiler issues #25256
- Fix negative activeParameter in signature help #24945
- Closes #7532: Parameter hints not working for functions #23854
- Fix opaque types displayed as
Nothing & Anyin hover and signature help #24921
REPL
- Skip
module-info.classfiles during REPL tab-completion #24838 - Fix REPL usage of macros loaded via
:depand:jar#25312 - Make REPL type echo-ing use partially qualified names where made possible by imports #24850
Reporting
- Check -Werror on summarize #25096
- Fixes #24233: Remove misleading JDK compatibility hint for TASTy errors #25171
- Ignore resetting if preferPrevious #24991
- Enhance WInferUnion to not warn propagated explicit union types #25280
- Improve diagnostic message for unnecessary trailing underscore in eta-expansion #25285
- More descriptive "not found" message when type/term exists with the expected term/type name #24959
- Warn on Scala 2 auto-apply if loosely nullary #24811
- Fix printing references to nested objects #25086
- Add error note for type mismatch involving blocks without last expression #25181
- Drop
-print-linesoption #24905 - Don't suggest invisible members of root imports #24999
Rewrites
- Accommodate ArrowAssoc in infix named arg migration #25255
Scaladoc
- Init MacroClassLoader in scaladoc #25141
- Scaladoc Overload Method Link Fix #25156
- Fix duplicate member entries in Scaladoc generation #24712
- Scaladoc Tests for CC #25277
- Skip generation of API pages when building reference docs #25153
Standard Library
- Remove incorrect equals implementations from ArrayBuilder #25205
- Use StringBuilder intead of StringBuffer in Regex #24576
- Update
StringOps.*implementation #24786
Tooling
- Fix behavior of
-Ydump-sbt-inc#25125
Typer
- Never widen constant type on selector type in matches #25197
Quotes
Contributors
Thank you to all the contributors who made this release possible 🎉
According to git shortlog -sn --no-merges 3.8.2..3.8.3-RC1 these are:
80 Martin Odersky
46 Wojciech Mazur
26 Som Snytt
11 Li Haoyi
10 Tomasz G...
3.8.2
Highlights of the release
- Warn if
forwith many vals and overloadedmap#25090 - Support
:dep ...to add library dependencies in the Scala REPL #24131 - Upgrade to Scala.js 1.20.2. #24898
- Bump Scala CLI to v1.12.2 (was 1.11.0) #25217:
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
- Recognize Nullable annotations in explicit nulls #25237
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
- Cast inline call results to result type, not method type #25111
- Fix "Compiler crash when calling another file's inline def that uses a private constructor" #24941
Implicits
- Avoid more constraints in result if trying views #24369
Initialization
- Skip caret when source is missing in initialization checker #23926
JVM Backend
- Preserve singleton types for final val aliases to Java enum constants #24980
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
- Fix "REPL dependency on scala-parallel-collections doesn't work" #25064
- Fix "Still can't use scala-parallel-collections in REPL via :dep" #25092
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
- Add ErrorMessageID to -Winfer-union warnings (#25073) #25249
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
TASTy
- Pickle CompactAnnotations as regular annotations #25213
- Drop spurious applies in unpickler and inliner #25201
Transform
- Adjust purity of trait with lazy member #23788
Tuples
- Fix inconsistent
typeSizecalculation forTupleNvs recursive pair encodings #24743
Typer
3.8.2-RC3
Backported chnages
- Add
ErrorMessageIDto-Winfer-unionwarnings (#25073) #25249 - Warn if
forwith many vals and overloadedmap#25090 - Recognize
Nullableannotations in explicit nulls #25237
Contributors
Thank you to all the contributors who made this release possible 🎉
According to git shortlog -sn --no-merges 3.8.2-RC2..3.8.2-RC3 these are:
3 noti0na1
3 Wojciech Mazur
1 Som Snytt
3.8.2-RC2
Backported chnages
- Bump Scala CLI to v1.12.2 (was v1.11.0) & coursier to 2.1.25-M23 (was 2.1.25-M21) #25217
- Pickle CompactAnnotations as regular annotations #25213
- Drop spurious applies in unpickler and inliner #25201
- Preserve singleton types for final val aliases to Java enum constants #24980
- Avoid NPE when calling hashCode on a value class wrapping null #25110
- Cast inline call results to result type, not method type #25111
- Fix "Compiler crash when calling another file's inline def that uses a private constructor" #24941
- Fix "REPL dependency on scala-parallel-collections doesn't work" #25064
- Fix "Still can't use scala-parallel-collections in REPL via :dep" #25092
Contributors
Thank you to all the contributors who made this release possible 🎉
According to git shortlog -sn --no-merges 3.8.2-RC1..3.8.2-RC2 these are:
7 Wojciech Mazur
2 Li Haoyi
2 Martin Odersky
1 Lukas Rytz
1 Matt Bovel
1 Som Snytt
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 🎉