3.1.2
Forward compatibility improvements
- Enable generation of TASTy files readable for older compilers #14156
General improvements
- Add eval (-e) expression evaluation to command line #14263
- Format compiler crash stack traces #14269
- Improve typer traces #14270
- Add -Xmacro-settings option and API #14234
- Add reflect TypeRepr.substituteTypes #13166
- Expand compiletime.ops #13400
- Cache isSubspace for a 3000% speedup #13637
- lint trivially self-recursive extension methods #13709
- add
printTypesAndErasure
test main method to compare typer and erasure #13745 - Warning for infinite recursive lazy vals #13749
- Provide scala.home setting for scripts #13759
- Improve message when -Xmax-inlines limit reached #13783
- Add append operator to Tuple #13786
- Allow passing any JMH option to scala3-bench #13787
- Warn on lossy conversion of literals & constants #13792
- Consider minTargetVersion as always supported #13811
- Add -Xmacro-check for Block constructors #13824
- Navigate the AST within AnnotatedType and ImportType #13834
- Refine handling of CanThrow capabilities #13866
- Indicate name of classfile where leaky mapping of existential type happens #13879
- Refine treatment of TypeBounds in patterns #13881
- Impose implicit search limit #13886
- Better handling of multiple exceptions for saferExceptions #13914
- Complete when importing same symbol multiple times #13972
- Implement :settings in the REPL #13982
- Fixes and improvements to trace logging #13984
- Fail compilation of attempting a 0-arity product extraction #14029
- Traverse the types to find experimental references #14047
- Retain HasDefaultParams flag on export. #14051
- Also consider private symbols in implicit scope of type #14054
- Allow return in tailrec position #14067
- Make outer references Java-synthetic #14084
- Add Reflect
TypeRepr.typeArgs
#14088 - Reject empty target names #14090
- Use =>> instead of => for printing a LambdaTypeTree #14107
- REPL: Add compiler options to :reset #14139
- Add hint on -Xcheck-macro scope extrusion failure #14203
- Support quoted PolyFunction #14222
- Update wording of uninitialized value error to be grammatically correct #14292
- Rename
-Yscala-release
,-release
and-Xtarget
settings to make them more consistent #14606
Scaladoc
- Fix missing known subtypes #13794
- Markdown preprocessor #13140
- Add source position for errors from doc-root-content file #13908
- Fix double implicit modifier #13909
- Fix links to unexisting types sites #13917
- Add support for tables in wiki syntax #13933
- Improve features parity with old scaladoc/docs.scala-lang #13954
- Add missing styles to snippets that are not Scala #13959
- Fix filtering extensions. Better support for exports #14125
SemanticDB
Bug fixes
- Fix #13855: Chaining Match Types fails at value level #14354
- Fix #12260: Add underscore to match type syntax #12261
- Fix #11861 - hash nested calls to inline definitions #12931
- Avoid shadowing of name 'name' #13442
- Fix #13633: Can't reduce match types inside a type alias #13635
- Fix erased context function types #13736
- Widen qualifier skolems #13748
- Change order of proxy evaluation when inlining #13755
- Fix init checker on secondary constructor parameter access #13776
- Add missing @experimental in Tuples #13778
- Fix improper usage of constrained breaking type inference #13779
- Fix error message when deriving an obstract type #13812
- Handles Nothing when synthesizing CanEqual #13828
- Fix #13026: No longer print VBAR and padding in the middle of the message #13829
- Solves dotc assertion error on (non-sensical?) parameter type. #13769 #13830
- Fix missing code-completion on standalone annotations #13831
- Fix comparing
AnyVal | Null
toNull
and selecting inUnsafeNulls
#13837 - Fix error summary printed twice #13843
- Detect opaque aliases in inline val types #13857
- Fix
@experimental @main
methods #13858 - Fix #13860: Ignore bridges when looking for a default getter's attached method. #13870
- Add missing position when expanding error #13872
- Try to instantiate type variables in tryInsertImplicitOnQualifier #13884
- Fix crasher for missing integer argument on command line #13894
- Fix messages leaking via suspended messages #13911
- Don't lift try-catch statements that are already in local functions #13944
- Initialize quote cache on tasty inspector run #13953
- Tighten product match logic in irrefutable check #13962
- Fix Mirror.Product for type lambdas #14003
- Sound type avoidance (hopefully!) #14026
- Fix REPL clashing with CWD artefacts #14021
- Don't retypecheck erroneous arguments when fixing function #14043
- Fix #13994: initialise inline ctx in lateEnter #14050
- Inline inlined private methods before checking accessibility #14049
- Handle hoisted super arguments correctly in
elimByName
#14057 - Check variance of RHS of opaque type #14058
- Don't insert INDENT/UNINDENT without anything in between #14066
- Don't generate illegal types when clarifying implicit errors #14068
- Allow import
<ident>
to show completions #14069 - Bypass eligible caches for implicit search under GADT constraints #14072
- Fix passing jvm options #14073
- Harden erasure of PolyFunction apply's #14075
- Test for non-open classes warning #14079
- Avoid field/field clashes #14081
- Fix reachability of unapplySeq of non-List sequences #14112
- Check for splices in quoted macro parameters #14117
- Fix reachability by retaining spaces of Prod params #14118
- Extract GADT constraints from wildcard type arguments #14132
- Fix
derivedPolyProto
to use the correct result type #14148 - Remove reflect TypeApply TypeVars #14201
- Clear temp var for captured var expr to permit GC #14205
- Re-type implicit candidate if expected type is context function #14219
- Adapt generic tuples to be able to access members #14242
- Fix Scala.JS source map URIs #14243
- Disallow erased inline definitions #14250
- Fix #7512: Normalize type arguments before instantiation #14259
- Disallow bottom types in erased implementations #14267
- Fix
checkNoModuleClash
& avoid types with less precision loss #14274 - Parse splices inside quoted patterns as patterns #14277
- Make initialization checker see through synthetic applys #14283
- Fix byte code generation for by-name parameters #14310
- Avoid misleading error message #14331
- Set context when reporting summonInline errors #14405
- Fix #14541: Problem running
@main
methods with command line arguments #14543 - Check defined in src for cache in companion #14557
Contributors
Thank you to all the contributors who made this release possible 🎉
According to git shortlog -sn --no-merges 3.1.1..3.1.2
these are:
57 Martin Odersky
44 Nicolas Stucki
28 Dale Wijnand
20 Paweł Marks
18 Jamie Thompson
16 Andrzej Ratajczak
16 Filip Zybała
16 Guillaume Martres
15 Michał Pałka
10 Olivier Blanvillain
9 Som Snytt
8 Matt Bovel
7 Fengyun Liu
7 Tomasz Godzik
6 danicheg
6 Sébastien Doeraene
6 Gagandeep Kalra
6 oronpo
5 Seth Tisue
5 Arman Bilge
4 Stephane MICHELOUD
4 noti0na1
3 Phil
3 adampauls
3 ghostbuster91
3 Eric Torreborre
2 Matthieu Bovel
2 philwalk
2 Kacper Korban
2 Ruslan Shevchenko
2 Oron Port
2 Chris Kipp
1 Andrzej Ressel
1 Anatolii Kmetiuk
1 Arthur Sengileyev
1 Cédric Chantepie
1 Denis Zolkin
1 Georgi Krastev
1 Hugo van Rijswijk
1 Jakob Odersky
1 Julien Richard-Foy
1 Kien Dang
1 Natsu Kagami
1 Ondrej Lhotak
1 Ondřej Lhoták
1 Rikito Taniguchi
1 SDSR
1 Tom Grigg
1 Yang, Bo
1 comcx
1 kenji yoshida
1 mzcu
1 soronpo
1 Łukasz Wroński
1 Adrien Piquerez
Reporting Bugs
If you encounter a bug, please open an issue! 🙏