github scala/scala3 3.9.0-RC1

pre-release7 hours ago

Highlights of the release

  • Long Term Support
  • Make into type and modifier stable #26184
  • Remove automatic collection of entry points #25215
  • Scaladoc: support expectations in snippets #25713
  • Restore Automatic-Module-Name in standard library's manifest #26218

Other changes and fixes

Annotations

  • Unify annotation handling for thread-safe & -unsafe lazy vals #24907

Backend

  • Use IndexOutOfBoundsException constructor with Int #24764
  • Emit acceptable Java generic signatures for HKTs #25540
  • Unwrap refined types for Java generic signatures #25626
  • Fix Java signatures for arrays of value classes #25631
  • Fix Java generic signatures for context functions #25632
  • Handle HKT bounds in Java generic signatures #25744
  • Emit nested module classes as static inner classes #26137

Constructors

  • Lambda-owned param ref in ctor incurs no field #23286

Coverage

  • Fix #25624: Scoverage and separation checking failures #25625
  • Scoverage: do not instrument methods that have too large bodies #25629
  • Scoverage & CC interaction: exempt CC nested symbols from @experimental check #25687
  • Coverage + Experimental nested match cases interaction fix #25913
  • Scoverage: fix broken warnings related to tail recursion and infinite loop detection #25941
  • Scoverage: correctly detect curried constructor applications #26048
  • Scoverage: correctly lift wildcard and singleton types #26049
  • Scoverage: refrain from lifting closures for capture calculus compatibility #26067
  • Scoverage: fix lifted type computation for parameterless methods #26069
  • Scoverage: Fix coverage parameterless select qualifier casts #26087

Documentation

  • Sys, concurrent, runtime (1): fill in missing @param, @tparam, and @return tags in Scaladoc comments #25371
  • Collection mutable (2): fill in missing @param, @tparam, and @return tags in Scaladoc comments #25372
  • Collection immutable (3): fill in missing @param, @tparam, and @return tags in Scaladoc comments #25373
  • Collection core (4): fill in missing @param, @tparam, and @return tags in Scaladoc comments #25374
  • Numeric types (5): fill in missing @param, @tparam, and @return tags in Scaladoc comments #25375
  • Array, IArray, Predef, Option (6): fill in missing @param, @tparam, and @return tags in Scaladoc comments #25376
  • Math (7): fill in missing @param, @tparam, and @return tags in Scaladoc comments #25377
  • Quoted, compiletime (8): fill in missing @param, @tparam, and @return tags in Scaladoc comments #25378
  • Jdk (9): fill in missing @param, @tparam, and @return tags in Scaladoc comments #25379
  • Util, io, ref (10): fill in missing @param, @tparam, and @return tags in Scaladoc comments #25380
  • Improve sizeCompare doc #25696
  • Function, Tuple, Product (12): fill in missing @param, @tparam, and @return tags in Scaladoc comments (V2) #25996
  • Improve Scaladoc for Tuple#map #26060
  • Fixed broken URL links. #26064
  • Enable sc:compile for stdlib package scala.annotation #25836
  • Enable sc:compile for stdlib package scala.beans #25837
  • Enable sc:compile for stdlib package scala.collection #25838
  • Enable sc:compile for stdlib package scala.collection.convert #25839
  • Fix secondary constructor capture checking #25841
  • Enable sc:compile for stdlib package scala.collection.generic #25845
  • Enable sc:compile for stdlib package scala.collection.immutable #25855
  • Enable sc:compile for stdlib package scala.collection.mutable #25860
  • Enable sc:compile for stdlib package scala.collection.compat #25861
  • Enable sc:compile for stdlib package scala.compiletime #25862
  • Enable sc:compile for stdlib package scala.concurrent #25867
  • Enable sc:compile for stdlib package scala.io #25868
  • Enable sc:compile for stdlib package scala.jdk #25870
  • Enable sc:compile for stdlib package scala.math #25878
  • Enable sc:compile for stdlib package scala.quoted #25912
  • Enable sc:compile for stdlib package scala.reflect #25915

Enums

  • Adjust error on bad enum #23080
  • Preserve Java enum semantics for explicit java.lang.Enum inheritance #25658

Erasure

  • Preserve erased flags on synthetic context-function parameters #25751
  • Fix #24653: Erase aliases of Unit as result type to void. #26192

Expression Compiler

  • Fix expression evaluation in debugger under -old-syntax #26096

Extension Methods

  • Fix: #24765 SAM conversion for extension method from self-based types #25637

Implicits

  • Fixes #24914 Treat equivalent candidates as divergent in implicit search #25910
  • Disallow implicit conversion to AnyRef again. #26210

Incremental Compilation

  • Support zinc invalidation for type arguments in macro calls #23900
  • Ignore annotations no longer on the classpath in ExtractAPI #25889
  • Fixes #21383 enable Mode.ReadPositions when reading annotation trees #25911

Inline

  • [OpenCB Project Fix] Fixes #26015: Start of NoSpan in adaptToArgs fallBack #26017

Lambda Lift

  • Fixes #25943: Track super-calls as call edges in LambdaLift #26029

Linting

  • Improve unused check of variable in assignment body #24685
  • Warn about dollars in names of definitions unless backticked #24690
  • Use precise type for x in case x @ (_: A, _: B), take 2 #26161

Opaque Types

  • Fix crash on invalid opaque type in package #26118

Parser

  • Fix span of xml literal #15635
  • Warn if name of empty template has trailing colon #23907
  • Warn dubious negative literal syntax #24163
  • Fix "Compiler crashes when illegal signature of applyDynamic is used " #24974
  • Check ascription in valdef pattern #25597
  • Parse Java annotations on wildcard type arguments #26187

Pattern Matching

  • Make sealed abstract java classes exhaustive checkable #25788

Pickling

Presentation Compiler

  • Bugfix: Fix issue with empty name throwing exceptions #25752
  • Improvement: improve perfomance of the presentation compiler #25769
  • Bugfix: Don't add square braces in context bounds #25798
  • Bugfix: Show hover on derives clause #25804
  • Fix warnings in presentation-compiler #25827
  • Improvement: Add -Wunused:all to presentation-compiler #26113

Quotes

  • Check that Closures refer to anonymous functions under -Xcheck-macros #26050
  • Consistently use xCheckMacroAssert in QuotesImpl #26053

REPL

  • CC & REPL: restore :type, :doc, and tab completions #25789
  • Avoid JLine warning about CompletingParsedLine #25917
  • Mostly fix REPL in sbt #25925
  • Fix REPL silently exiting after first user input #25969
  • Relax typer position assert in interactive mode #26130

Reporting

  • Use context.outers instead of owner chain to find class for suspicious top-level resolution #20717
  • Feat: Add actionable diagnostic for missing members #23572
  • Include span of bad args if multiline #25699

Scala-JS

  • Tolerate empty paths in JSPositions conversion #26140

Scaladoc

  • Avoid NPE in Scaladoc signatures on JDK 25 #25779
  • Scaladoc: fix 'occured' -> 'occurred' typos in user-visible error strings #25805
  • Fix scaladoc checkErrorCodeSnippets #25942

Standard Library

  • Optimize the standard library in bootstrapped compilation #25689
  • Change lower bound of Option.orNull to nullable #25733
  • Use unchecked on some pattern matches #25762
  • Remove self reference in Conversion class and add impure conversion test #25931
  • Fix potential NPE in BoxesRunTime.equalsCharObject #25958
  • Safer equalsNumChar #25962
  • Fixes #25702: Avoid AnyClass fallback in requiredClass #26010
  • Fix 26026: restore type parameter of Option.orNull #26027
  • Fix mismatch between wrapArray and wrapArrayMethodName #26162

Transform

  • Find correct type when generating the generic signature of trait fields #25543
  • Remove questionable transform of Select from SelectStatic #25620
  • Resurrect some Scala 2 tests for generic signatures #25736
  • Emit generic signatures for all trait fields #25780
  • Fix generic signatures of forwarders containing value classes #25879
  • Generic signature fixes #25880
  • Fix crash during generic signature emission for inner classes of type aliases #26202

Typeclass Derivation

  • Fix synthesis of mirrors for GADT with dependent type parameters #26080

Typer

  • Change typeOfArg to take TypedArg instead of Arg #25418
  • Make Constant construction type-directed #25869
  • Fix #25894: break cross-unit cyclic export on partial recompile #25900
  • Fixes #24056 Dealias value class types in structural access #25907
  • Fixes #20010 Avoid crash on missing TASTy class references #25908
  • Fixes #24719 Fix LazyAnnotation.tree reentrance in Namer.addChild #25909
  • Fixes for 2 code quality findings #25960
  • Fixes #25856: Position not set crash in implicit search during import qualifier #26032
  • Preserve type info when lifting stable arguments #26063

Value Classes

  • Replicate value class erasure binary compat hack in GenericSignatures #25775

Experimental: Capture Checking

  • Enable sc:compile for scala.util Package #25651
  • Make tests for capability parents of Array class more robust #25695
  • Refine isStatic test in SafeRefs.isSafe #25708
  • Go back to explicit @retains instead of uses_init in stdlib #25719
  • Change syntax of what was uses_init #25720
  • Several fixes to the handling of static objects and recheckIdent #25770
  • Fix #25388: Enhance safe check for synthetic annotations #25883
  • Keep annotations when converting in Setup to dependent function #25891
  • Properly solve capture set during box adaptation #25902
  • Make parameter types of some closures explicit #25967
  • Clarify use-capset test #25976
  • Drop SharedCapability exception in subsumes #26078
  • Tighten check of field classifiers #26085
  • Don't assume classes with self aliases to be pure. #26097

Experimental: Erased definitions

  • Fix bridge generation when erased precedes a non-erased parameter #25923
  • Fix bridge typing when erased precedes a non-erased parameter #26047

Experimental: Explicit Nulls

  • Fix issue with flexifying unions from Java symbols under explicit-nulls #25808

Experimetnal: Safe Mode

  • Assume safe IllegalArgumentException and NoSuchElementException #25859

Experimental: Strict Equality

  • Enable strictEqualityPatternMatching behaviour for non-case objects #25850
  • Fixes #25979: Fix strictEqualityPatternMatching with GADTs #25980

Contributors

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

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

    95	Solal Pirelli
    60	Martin Odersky
    32	Som Snytt
    25	Matt Bovel
    25	Wojciech Mazur
    23	Oliver Bračevac
    19	Claude
    17	Chua Chee Seng
    16	Piotr Chabelski
    15	Anatolii Kmetiuk
    12	Bill Venners
    11	Tomasz Godzik
     7	Patryk Zieliński
     6	Li Haoyi
     6	dependabot[bot]
     6	noti0na1
     5	Jan Chyb
     4	Jamie Thompson
     4	Oron Port
     4	Rikito Taniguchi
     4	Sébastien Doeraene
     3	Emil Ejbyfeldt
     3	Yichen Xu
     2	Alex Archambault
     2	HarrisL2
     2	Jakub Warchoł
     2	Seth Tisue
     1	Bartłomiej Kozak
     1	Guillaume Martres
     1	Hamza Remmal
     1	Jeon Yoonjae
     1	Kasper Kondzielski
     1	Matthias Berndt
     1	Matthias Kurz
     1	Ondrej Lhotak
     1	Ondřej Lhoták
     1	Sai Asish Y
     1	Sylvain Kuchen
     1	lalala194
     1	pgilliar

Don't miss a new scala3 release

NewReleases is sending notifications on new releases.