github scala/scala3 3.8.4-RC1

pre-release12 hours ago

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

Reflection

  • Fix Select.copy in reflect API losing DerivedName for default getters #25269
  • Do not expose ClassInfo in memberType in reflect API #24922

Reporting

  • Force conditional warnings when configured #25552
  • Suppressions before finalize #25576
  • Use dollar-free param names in stub implementations #25646
  • Fix #24711: Use dot notation for Java nested types in error messages #24919
  • Use deprecatedOverriding message #25439
  • Improve message for misplaced using #15624
  • Use other tree for actual symbol of Assign #22869

REPL

  • Allow global language imports in REPL and snippet compiler #25458
  • Fix all REPL tests when production behavior is enabled #25449
  • Add setting to control REPL print height #25560

Rewrites

  • Fix incorrect rewrite of expr _ when expr has a function type #25457

Runner

  • Fix for #22443: prevent stty from being called when not running in a terminal #22444

Scala.js

  • Fix #25342: Transfer methodsAllowingJSAwait to forcefully inlined methods. #25344

Scaladoc

  • Use <sup> tags for exponents in Scaladoc comments #25645
  • Do not hide when a class or a trait extends Any #25403
  • Do not generate documentation for AnyVal, it exists now #25399
  • Ability to hide snippets from the documentation #25411
  • Update scaladoc signature for given methods #25325
  • Fetch the right kind for synthesised definitions #25405
  • Scaladoc: Take title from sidebar.yml into account #18997

SemanticDB

  • Encapsulate SemanticDB package, unify symbol and document printing #25084
  • Better refinement symbols in semanticDB #18604

Standard Library

  • Array.range trusts NumericRange.count #24878
  • Chore: optimize lazy val with power of two. #22428

Syntax

  • Check protected parent constructor accesses only occurs in child constructors #25511
  • Fix protected constructor access #25523

Tooling

  • Fix MSI installer reporting wrong Scala version on Windows #25591

Transform

  • Always encode in derived name #23478

Tuples

  • Normalize tuple types when typing patterns #25335
  • Rewrite Desugar.makePatDef to fix typing issues and be more understandable #24972

Typeclass Derivation

  • Fix #23043: spurious package conflict from non-class directories #25441
  • Also checkRefinement for Singleton mirror #24080

Typer

  • Preserve pattern, use tuple type when optimizing #25566
  • Detect InsertedApply on Apply to break synthetic apply loops, not just Select #25463
  • Fail self-recursive deferred given impl #22595
  • Use TypeComparer.constValue in TypeEval #24718
  • Add the transparent flag to java.lang.Object #25394

Contributors

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

According to git shortlog -sn --no-merges 3.8.3..3.8.4-RC1 these are:

    87	Solal Pirelli
    67	Martin Odersky
    31	Som Snytt
    12	Hamza Remmal
    10	Matt Bovel
     9	Oliver Bračevac
     9	Wojciech Mazur
     8	Jan Chyb
     8	Piotr Chabelski
     8	Rikito Taniguchi
     8	Tomasz Godzik
     8	dependabot[bot]
     7	Yichen Xu
     7	noti0na1
     6	Jakub Warchoł
     5	Emil Ejbyfeldt
     4	Kenji Yoshida
     3	Anatolii Kmetiuk
     3	HarrisL2
     3	Lukas Rytz
     3	Sébastien Doeraene
     2	110416
     2	James You
     2	Matt Dziuban
     2	Ondřej Lhoták
     2	Patryk Zieliński
     2	Ruslan Shevchenko
     1	Aviral Garg
     1	Bbn08
     1	Eugene Flesselle
     1	Harrishan Raveendran
     1	He-Pin(kerr)
     1	Jakub Cieśluk
     1	Jeon Yoonjae
     1	Li Haoyi
     1	Mark Hammons
     1	Natsu Kagami
     1	Oliver Marienfeld
     1	Piotr Paradziński
     1	Vadim Chelyshov
     1	philwalk

Don't miss a new scala3 release

NewReleases is sending notifications on new releases.