Skip to content

Releases: scala/scala3

3.8.4-RC1

09 Apr 13:24
e6384e4

Choose a tag to compare

3.8.4-RC1 Pre-release
Pre-release

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 dealiasKeepRefiningAnnots in AvoidMap #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.equals in translating == #25314

Compiler Phases

  • Harden Period creation and use of Run/PhaseId #25484
  • Make Phase.run protected #25366

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 IsIterable scaladoc #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

  • Enhance safe mode #25638
  • Fixes to Safe Mode Checking #25603

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.class in 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 this during 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

  • Fix crashing for context bound type variables in quoted patterns #25286
  • Remove redundant mapOver in fixThisTypeModuleClassReferences [#25440](#254...
Read more

3.8.3

31 Mar 16:29
51b2976

Choose a tag to compare

Release highlights

  • Add support for local coverage on and off with // $COVERAGE-OFF$ and // $COVERAGE-ON$ #24486
  • Deprecate for removal -print-lines compiler setting #25330
  • Add safe mode capture checking extension #25307
  • Port the Scala2 JVM backend optimizer #25165

Other changes and fixes

Desugaring

  • Fix #24997: Avoid unnecessary CHECKCAST in untupled function parameters #25085

Documentation

  • Fix little errors in the API documentation #25241
  • CC Language Reference: Rename cap to any/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
  • 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

  • Skip over JEP 445 compact compilation units #23247
  • Handle MissingType during Erasure phase #24817

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 val statements or for generators" #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 toVector for 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 & Any in hover and signature help #24921

REPL

  • Skip module-info.class files during REPL tab-completion #24838
  • Fix REPL usage of macros loaded via :dep and :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-lines option #24905
  • Don't suggest invisible members of root imports #24999

Runner

  • Bump Scala CLI to v1.12.3 (was v1.12.2) #25365
  • Bump Scala CLI to 1.12.4 (was 1.12.3) #25434

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
  • Docs: Enfo...
Read more

3.8.3-RC3

23 Mar 10:00
b473439

Choose a tag to compare

3.8.3-RC3 Pre-release
Pre-release

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

16 Mar 08:33
ebe5819

Choose a tag to compare

3.8.3-RC2 Pre-release
Pre-release

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 :dep and :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

25 Feb 19:11
4a1b66d

Choose a tag to compare

3.8.3-RC1 Pre-release
Pre-release

Release highlights

  • Add support for local coverage on and off with // $COVERAGE-OFF$ and // $COVERAGE-ON$ #24486
  • Deprecate for removal -print-lines compiler setting #25330

Other changes and fixes

Desugaring

  • Fix #24997: Avoid unnecessary CHECKCAST in untupled function parameters #25085

Documentation

  • Fix little errors in the API documentation #25241
  • CC Language Reference: Rename cap to any/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

  • Skip over JEP 445 compact compilation units #23247
  • Handle MissingType during Erasure phase #24817

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 val statements or for generators" #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 toVector for 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 & Any in hover and signature help #24921

REPL

  • Skip module-info.class files during REPL tab-completion #24838
  • Fix REPL usage of macros loaded via :dep and :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-lines option #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

  • Fix #25208: handle AndType(TermRef, TypeRef) in TreeUnpickler path trees #25209

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...
Read more

3.8.2

24 Feb 17:20
6e95f60

Choose a tag to compare

Highlights of the release

  • Warn if for with many vals and overloaded map #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:
    • New aliases for RC and nightly Scala versions
    • Detailed changelog available in scala-cli release notes for versions: v1.12.0, v1.12.1 and v1.12.2

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
  • 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 @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
  • 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

  • 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
  • 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.padTo implementation #24575
  • Use String.repeat in scala.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 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 skolem...
Read more

3.8.2-RC3

18 Feb 09:30
1aca7f9

Choose a tag to compare

3.8.2-RC3 Pre-release
Pre-release

Backported chnages

  • Add ErrorMessageID to -Winfer-union warnings (#25073) #25249
  • Warn if for with many vals and overloaded map #25090
  • Recognize Nullable annotations 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

12 Feb 10:15
29bb834

Choose a tag to compare

3.8.2-RC2 Pre-release
Pre-release

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

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 🎉