Highlights of the release
Other changes and fixes
Annotations
- Avoid crashing for an inlined Java annot with a default value #27095
- Support
Symbolname in@deprecatedName#27048 - Reject
@throwson non-methods and constructors #27064 - Check whether annotation constructors are deprecated #27049
JVM Backend
- Optimize and simplify
ScalaPrimitives#27142 - Stop capturing a
ContextinPostProcessor#26328 - Use the right context when loading symbols during gensig #27031
- Encapsulate CallGraph and Inliner #26320
Coverage
- Coverage: unescape when deserializing #27127
Documentation
- Tweak doc warnings #26855
- Fix typo in
->ScalaDoc #26979 - Doc: clarify behavior of line-related functions #27047
Exports
- Fix generic signature of exported module accessors #27046
- Improve error messages for export statements #27186
Implicits
- Reset typer state on issueErrors #23556
Incremental Compilation
- Fix
Symbol.copyignoring its compilation unit argument #27162
Inline
- Error out when primaryConstructor params are used out of scope in macros #27100
- Fix #26958 recover call skolem nested in a sibling inline proxy's type #26966
- In inlined code, try to preserve SkolemTypes generated from outer inline calls #26915
- Also call avoidingType when using the custom unpackProxiesFromResultType during inlining #26893
JDK
- ClassfileParser: Compute permitted symbols lazily to avoid cyclic refs #27129
Parser
- Parser: do not create empty integer literals #27126
Pattern Matching
- Fix pattern matching on sealed Java classes with unavailable member types #27069
- Avoid trivially true branch for the last arm of an exhaustive match #27070
Performance
- Use String as the SourceFile content type #26846
- Micro-optimizations, mostly focused on allocations #27077
- Avoid some instances of boxing #26939
Presentation Compiler
- Add small performance improvements to the presentation compiler #27083
- Fix version completion detection after a trailing colon #27035
Quotes
- Fix macro typecheck when source content is not available #27195
- Fix crash pickling a quote as an inline argument (in different source) #27039
- Also dealias transparent types when dealiasing opaques in typedSplice #26984
- Fix stale symbol error caused by currentSymbol.isStaticOwner call #26962
- Fix how DefDef references are recorded when checking macros #27263
REPL
- Parser: allow incomplete files when return type is missing #27175
- Feat(repl): add resource directives and a :resource command #27073
- Fix(repl): keep session state when using :jar and :dep #27072
- Don't try to flexify type lambdas in
FlexibleType.make#27057 - Don't warn about flexible types in REPL wrapper objects #27058
- Fix(repl): do not reuse a resN name that is still in use #26974
- Fix(repl): -Xrepl-interrupt-instrumentation:local instrumenting nothing #26960
- Remove uses of unsafeNulls from the REPL #26954
- Update JLine patch version #27059
Reporting
- Warn when catching
Errors #26794 - Make coverage skip message an info #27028
- Improve message for ambiguous negative literal #27037
- Warn on
synchronizedfor Java value classes #27128 - Add forgotten stripNull to #27128 #27147
SBT Bridge
- Signal dependencyPhaseCompleted after dependencies are sent #27135
- Send dependencies of Java sources to zinc under
-Xjava-tasty#27137 - Pipelining: wait for queued early TASTy before ending a run #27141
- Report JDK classes under -release as binary dependencies #27132
- Omit the empty package from names of Java classes reported to zinc #27136
Scala JS
- Fix crash boxing Scala.js (+ Scala2) value class to Object #27082
- Scala.js: Prepare for minimal Wasm modules. #26990
Scaladoc
- Scaladoc: pass classpath to tasty inspector via ctx #27167
- Fix Javadoc anchors built from flexible types #27060
Scripting
- Close the Source used to validate target scripts #27188
Settings
- Fix MainGenericCompiler -D property parsing #27025
Standard Library
Transform
- LambdaLift: look for outer params in all owners #27029
Tuples
- Restore TupleXXL generic signatures for tuples longer than 22 #27120
Typeclass Derivation
- Support derivation for self-based type classes #26719
Typer
- Fixes for Java inherited statics #27178
- Don't lose type aliases under annotations in
suppressInto#27085
Experimental: Capture Checking
- Make levelOK look at core capabilities #27170
Experimental: Explicit Nulls
- Drop null pattern warning #26967
- Fix isNullableClassAfterErasure for Null under AnyVal #26971
- Fix Java record unapply crash under explicit nulls #26975
- Fix #26994 : make isNotNull true for this and super #26996
- Represent FlexibleType using AppliedType #27004
- Cast pattern matcher throwaway plan to type check under explicit nulls #27052
- Add missing stripNulls to overload resolution of wildcard arguments #27053
Experimentals
- Expected type of literal is behind feature flag #27124
Contributors
Thank you to all the contributors who made this release possible 🎉
According to git shortlog -sn --no-merges 3.10.0..3.10.1-RC1 these are:
63 Solal Pirelli
16 Wojciech Mazur
12 Ondřej Lhoták
11 dependabot[bot]
9 Jan Chyb
8 Jakub Warchoł
8 Rikito Taniguchi
6 Lukas Rytz
6 Matt Bovel
6 Piotr Chabelski
5 Bartłomiej Kozak
5 Martin Odersky
5 Som Snytt
4 Jamie Thompson
4 Kenji Yoshida
4 Mikołaj Fornal
4 Sébastien Doeraene
3 TATSUNO “Taz” Yasuhiro
3 Tomasz Godzik
3 Yao Xu
2 Chua Chee Seng
2 David Barri
2 Guillaume Martres
2 James You
2 Oron Port
2 cui fliter
1 Anatolii Kmetiuk
1 Jędrzej Rochala
1 Natsu Kagami
1 Oliver Bračevac
1 Ondrej Lhotak
1 Piotr Paradziński
1 Puerco
1 Zieliński Patryk
1 myetcd
1 noti0na1