Highlights of the release
- Partial Fix #21242: Add REPL init script setting #22206
- Update asm to patched 9.7.1 #22250
- REPL: Add back
:silent
command #22248 - Do not lift annotation arguments #22035 and #22046
- Scala 2 forwardport:
-Yprofile-trace
#19897
Other changes and fixes
Annotations
- Make sure symbols in annotation trees are fresh before pickling #22002
- Fix Java parsing of annotations on qualified types #21867
- Rename
InlineCopier
toConservativeTreeCopier
, use it inTypeMap
s #21941 - Consider all arguments in Annotations.refersToParamOf #22001
Backend
- Flag class file collision as error #19332
- Backend computes line number from source of position #21763
CI
- In CI, use new standard scala/cla-checker action #22203
- Cancel stale CI executions when CI is re-triggered in the same branch/PR #21974
- Drop support for old experimental in community-build #21729
Coverage
- Fix coverage serialization when encountering macro suspension #22303
Dependencies
Desugaring
Documentation
- Fix: typo in documentation for Tuple.zip #22313
- Copyright 2025 #22326
- Documentation only: update Example code linked to obsolete content in macros-spec.md #22256
- Doc fix, removed repeated use of the word with #21915
- Fix typos #21913
Enums
- Add type parameters derived from enum to default param getters of enum cases #22157
Extension Methods
Infrastructure
- Improve, document and group versioning code in
Build.scala
#21837 - Fix: drop jackson-module-scala from CB #22353
- Fix inductive-implicits benchmark #22007
- Remove tests/pos-with-compiler-cc from VSCode ignored files #22198
- Bump webrick from 1.8.2 to 1.9.1 in /docs/_spec #22066
- Fix Windows OS detection in TraceNameManglingTest #21937
- Don't warn for deprecated Thread.getId() calls in
ChromeTrace
#21831 - Improvement: Remove workaround for Bloop and update docs #21842
- Ensure ChromeTraceTest event timestamps are emitted in correct invervals #21911
- Remove tests/pos-with-compiler-cc #21956
- Shade scalajs.ir under dotty.tools #21765
Implicits
- Rollback constraints in compareAppliedTypeParamRef #22339
- Apply implicit conversion from derived Conversion instance defined as implicit rather than given #21785
Imports
- Allow imports nested in packagings to shadow #21539
Inline
- Fix inline reduction for CaseDef guards with asInstanceOf #22305
- Avoid using the current denotation in NamedType.disambiguate #21414
Linting
- Append instead of prepending import selectors for the current scope when collecting them in CheckUnused #22314
- Allow discarding "Discarded non-Unit" warnings with
: Unit
#21927 - Disallow open modifier on objects #21922
- Only count associated files of direct members of package objects in dropStale #22190
Metaprogramming
- Rethrow SuspendExceptions caught in CodeGen phase #22009
- Extend compiletime.testing.typechecks with certain transform phases #21185
Match Types
- Fix #21841: Check more that an
unapplySeq
on aNonEmptyTuple
is valid. #22366 - Type avoidance in MT bound inference #22142
Nullability
Parser
- Fix: don't consider
into
as a soft-modifier #21924 - Fix: Allow
as
as an infix type in non context bound types #21849 - Undo patch of double-block apply #21982
Pattern Matching
- (Re-)Drop inaccessible subclasses from refineUsingParent #21930
- Fix #21914: Don't project nested wildcard patterns to nullable #21934
- Fix use of class terms in match analysis #21848
- Fix provablyDisjoint handling enum constants with mixins #21876
- Do not consider uninhabited constructors when performing exhaustive match checking #21750
Pickling
Presentation Compiler
- Use new infer expected type for singleton complations #21421
- Fix presentation compiler testcases #22253
- Fix match error in keyword completions #22138
- Add test cases project for presentation compiler #22101
- Improvement: Update mtags to 1.4.1 and backport remaining changes #21859
- Backport changes for the presentation compiler from Metals #21756
Quotes
- Fix tupleTypeFromSeq for XXL tuples #21782
- Do not bring forward symbols created in transform and backend phases #21865
- Fix #20471: owners of top-level symbols in cached quoted code being incorrect #21945
- Fix for macro annotation that resolves macro-based implicit crashing the compiler #20353
- Allow macro annotations to recover from suspension #21969
REPL
- REPL: JLine: follow recommendation to use JNI, not JNA; also JLine 3.27.1 (was 3.27.0) #22205
- Fix #9879: allow top-level opaque type definitions in REPL #21753
Reflection
- Do not return java outline dummy constructor in
primaryConstructor
#22104
Reporting
- Normalise the types for Type Mismatch Error (E007) #22337
- Do not warn about expected missing positions in quotes.reflect.Symbol #21677
- Add missing error messages to asserts in QuotesImpl #21852
- Don't point to the compiler backlog when a compiler plugin phase crashes #21887
- Nowarn extension matching nonpublic member #21825
- Fix: better error messages when an enum derives from AnyVal #22236
Scaladoc
- [ISSUE-#19208] If scaladocs on file protocol don't do SPA routing. #22013
- Fix scaladoc graph highlight background color in dark mode #21814
SemanticDB
- Extract semanticDB for lifted definitions #21856
Specification
- Align the spec to allow the marker #22323
- Fix #20271: Bring for comprehension spec up to date. #21702
- Spec: Integrate the specification for match types. #22164
Settings
- Limit exposure to ConcurrentModificationException when sys props are replaced or mutated #22180
Tooling
- Connect the input to the compiler in
sbt
#22336 - Ensure to escape characters before constructing JSON profile trace #21872
- Fix: correctly print literal types in the refined printer #22351
Transform
- Attempt to beta reduce only if parameters and arguments have same shape #21970
- Fix enclosingClass from returning refinement classes #21411
- Fix #22226: Use
classOf[BoxedUnit]
for Unit array inArrayConstructors
. #22238 - Fix typo in
allTermArguments
#21836
Typer
- Fixes for isLegalPrefix change #22241
- Resolve name when named imp is behind wild imps #21888
- Do not crash when typing a closure with unknown type, since it can occur for erroneous input #21178
- Allow autotupling if fn's param is a type param #21741
- Fix ctx implicits under case unapplySeq #21748
- Avoid using ExplainingTypeComparer in regular code #21583
- Avoid erasure/preErasure issues around Any in transformIsInstanceOf #21647
- Remove tvars introduced while testing normalizedCompatible #21466
Miscellaneous
- Replace deprecated AnyRefMap #22230
Contributors
Thank you to all the contributors who made this release possible 🎉
According to git shortlog -sn --no-merges 3.3.5..3.3.6-RC1 these are:
63 Tomasz Godzik
30 Dale Wijnand
26 Wojciech Mazur
20 noti0na1
15 Hamza Remmal
15 Matt Bovel
10 Jan Chyb
9 Kacper Korban
6 Som Snytt
4 Sébastien Doeraene
3 HarrisL2
3 Jamie Thompson
3 Martin Odersky
3 Seth Tisue
3 kasiaMarek
2 Friendseeker
2 João Ferreira
2 Kenji Yoshida
2 Natsu Kagami
2 Pascal Weisenburger
2 dependabot[bot]
1 Adrien Piquerez
1 Alden Torres
1 Alexander
1 Georgi Krastev
1 Guillaume Martres
1 Jentsch
1 Lunfu Zhong
1 Mathias
1 Michał Pałka
1 Oleg Zenzin
1 Oliver Bračevac
1 friendseeker
1 philippus
1 tgodzik
1 xiaoshihou