Releases: scala/scala3
3.0.0-RC1
Notable Changes
Syntax
- Allow indentation to work inside parens #10969
- Allow new import syntax #11244
- Use
uninitialized
for wildcard initializers #11231 - Add Matchable trait #10670
- Allow leading context parameters in extension methods #10940
Language
- Warn when matching against an opaque type #10664
- Fix #6190: eta-expand companion object if functions are expected #7207
- Fix #8634: Support -release option #10746
- Alternative definition layout of IArray #11329
- Change scheme to implement creator applications #10784
Metaprogramming
- Add
scala.quoted.Expr.unapply
as dual ofExpr.apply
#10580 - Remove
Expr.StringContext.unapply
#10675 - Add reflect
MatchCase
TypeRepr
#10735 - Rename scala.quoted.staging.{Toolbox => Compiler} #11129
- Fix #10863: Make show
AnyKind
ed #10988 - Add ParamClause to allow multiple type param clauses #11074
- Rework reflect Symbol fields API #10705
- Rename
Liftable
toToExpr
andUnliftable
toFromExpr
#10618 - Expand non-transparent macros after Typer #9984
- Rework TastyInspector API to allow inspection of all files #10792
- Rename Not to NotGiven to make its purpose clearer #10720
- Fix #10709: Add missing level check before inlining #10781
Other
- Clean up settings #10655
Contributors
Thank you to all the contributors who made this release possible 🎉
According to git shortlog -sn --no-merges 3.0.0-M3..3.0.0-RC1
these are:
183 Martin Odersky
138 Nicolas Stucki
36 Krzysztof Romanowski
25 Filip Zybała
25 Liu Fengyun
24 Lan, Jian
22 Jamie Thompson
19 Tom Grigg
17 Andrzej Ratajczak
16 Stéphane Micheloud
15 Guillaume Martres
11 Paweł Marks
9 Phil
6 Aleksander Boruch-Gruszecki
6 Jonathan Brachthäuser
6 Natsu Kagami
6 odersky
4 Jasper Moeys
4 Adrien Piquerez
3 Sébastien Doeraene
3 Michał Pałka
3 Albert Chen
2 Alexandre Archambault
2 Som Snytt
2 kenji yoshida
2 Luc Henninger
2 Ayush
2 Raphael Jolly
2 Anatolii Kmetiuk
2 Olivier Blanvillain
2 changvvb
1 ysthakur
1 Ang Hao Yang
1 Ang9876
1 AngAng
1 August Nagro
1 Ciara O'Brien
1 Dale Wijnand
1 Florian Cassayre
1 Florian Schmaus
1 Iltotore
1 Jason Zaugg
1 Julien Richard-Foy
1 Katrix
1 Master-Killer
1 Michael Pilquist
1 Mikael Blomstrand
1 Mike Samuel
1 Philippus
1 Philippus Baalman
1 Rick M
1 Stephane MICHELOUD
1 Timur Abishev
1 Tomas
1 ansvonwa
1 ayush
1 costa100
1 iroha168
1 noti0na1
1 riiswa
1 tanishiking
Reporting Bugs
If you encounter a bug, please open an issue! 🙏
3.0.0-M3
Notable Changes
Language
- Givens without
as
#10538 - Drop
as
in patterns #10565 - Fix #10484: Switch back to old context function closure syntax #10487
- Add Matchable trait #10670
Metaprogramming
- Add
Expr.asTerm
#10694 - Add reflect
MatchCase
TypeRepr
#10735 - Rework reflect Symbol fields API #10705
- Remove
Expr.StringContext.unapply
#10675 - Rename
Liftable
toToExpr
andUnliftable
toFromExpr
#10618 - Remove Unliftable[Unit] #10570
- Remove reflect.LambdaType #10548
- Add
scala.quoted.Expr.unapply
as dual ofExpr.apply
#10580 - Move
Quotes
as last parameter inExprMap.transform
#10519 - Rework reflect Constant API #10753
- Unify quoted.report and reflect.Reporting #10474
- Fix #10359: Add GivenSelector to reflection API #10469
- Rework reflect show API #10661
- Fix #10709: Add missing level check before inlining #10781
Tooling
- [sbt-bridge] Bump Zinc to 1.4.3 and upgrade to CompilerInterface2 #10607
- Scala3doc/community build #10522
- Scripting solution #10491
Other changes
- Rename Not to NotGiven to make its purpose clearer #10720
- Clean up settings #10655
- Introduce
Transparent
flag #10458 - Keep export clause until first transform, use for incremental compilation #10182
Contributors
Thank you to all the contributors who made this release possible 🎉
According to git shortlog -sn --no-merges 3.0.0-M1..3.0.0-M3
these are:
80 Nicolas Stucki
73 Martin Odersky
64 Krzysztof Romanowski
32 Liu Fengyun
28 Aleksander Boruch-Gruszecki
22 Anatolii Kmetiuk
17 Guillaume Martres
17 Sébastien Doeraene
14 Andrzej Ratajczak
13 Tom Grigg
8 Filip Zybała
7 Lan, Jian
5 Olivier Blanvillain
5 Som Snytt
5 Jamie Thompson
4 Stéphane Micheloud
4 Lionel Parreaux
3 Adrien Piquerez
3 Artur Opala
3 Hanns Holger Rutz
3 Michael Pilquist
3 Michał Pałka
3 bishabosha
2 Jonathan Brachthäuser
2 Camila Andrea Gonzalez Williamson
1 Mikael Blomstrand
1 Francois GORET
1 Felix Mulder
1 Raphael Jolly
1 Robert Stoll
1 Ruslan Shevchenko
1 Seth Tisue
1 Eugene Yokota
1 Amadou CISSE
1 Akhtiam Sakaev
1 Martin Duhem
1 Tomasz Godzik
1 Matthew Pickering
1 odersky
Reporting Bugs
If you encounter a bug, please open an issue! 🙏
3.0.0-M2
Notable Changes
Platform
- The standard library was upgraded to Scala 2.13.4, JDK 14 and 15 are now supported. (#10392)
Syntax
- The
@infix
annotation was replaced by aninfix
modifier, the@mixin
annotation was replaced bytransparent
(#10458) - The
@alpha
annotation was renamed to@targetName
and can now be used to define overloads that would normally result in a double definition error (#10149) - Drop extension_ prefix for extension methods (#10128)
- The
Eql
typeclass has been renamedCanEqual
(#10449)
Reflection
Breaking changes
QuoteContext
has been renamedQuotes
(#10432)- Instead of importing
qctx.tasty._
, importquotes.reflect._
(#10442)- In general,
scala.quoted.qctx
was replaced withscala.quoted.quotes
- In general,
rootPosition
is nowPosition.ofMacroExpansion
(#10467)expr.unseal
is nowTerm.of(expr)
term.seal.cast[T]
is nowterm.asExprOf[T]
term.seal
is nowterm.asExpr
(tpe: Type[T]).unseal.tpe
was replaced withTypeRepr.of[T]
(tpe: Type[T]).unseal
was replaced withTypeTree.of[T]
(tpe: Type[T]).show
was replaced withType.show[T]
scala.quoted.Type
does not need to be named (implicitly only)(typeRepr: TypeRepr).seal
is now(typeRepr: TypeRepr).asType
- Owners are now explicit in the reflection API (#10406)
compiletime.code
has been replaced withcompiletime.codeOf
(#10313)- The syntax for type variables in quoted patterns has changed (#10125)
- Added
quotes.reflect.Flags.{Opaque, Open}
- Added constructors for
quotes.reflect.{TypeBoundsTree, WildcardTypeTree}
- Renamed
quotes.reflect.{GivenMatch => SummonFrom}
- Renamed
quotes.reflect.{Projection => TypeProjection}
- Changed constructor and extractor of
quotes.reflect.Lambda
- Removed
quotes.reflect.Context
and replaced with explicitSymbol
owners- In methods of
TreeMap
,TreeAccumulator
andTreeTraverser
- In
ValDef.let
formerlylet
- In
Lambda.apply
- In
etaExpand
- Added
Tree.changeOwner
andSymbol.spliceOwner
- In methods of
- Removed
scala.tasty.Reflection
(now it is insideQuotes
) - Reflection API uses
TypeTest
s instead ofClassTag
s
Additions
- new API:
TypeTest
for safe type tests at runtime (#7555)
Scala.js
- Upgrade to Scala.js 1.3.1 (#10423)
- Implement the
-scalajs-mapSourceURI
option (#10439) - Implement JS exports (#10164)
- Scala.js is now 100% supported
Scala3doc
- Numerous improvements over many PRs, Scala3doc is still not the default documentation tool (this requires setting
useScala3doc := true
), but it is now used to generate the https://dotty.epfl.ch/ website. - For more information on Scala3doc see https://contributors.scala-lang.org/t/scala3doc-doctool-for-scala-3/4477
3.0.0-M1
Notable Changes
Syntax
Fix #9829: Allow as
in place of @
for pattern bindings #9837
Change wildcard given selectors #9949
Keep @Alpha optional #10093
Scala.js
Scala.js: Implement non-native JS classes. #9774
Scala.js: Implement the PrepJSInterop phase, minus exports handling. #9725
Optimization
Port classfile parsing improvements #10037
Semanticdb usability enhancements #9768
Optimize core and frontend #9867
Contributors
Thank you to all the contributors who made this release possible 🎉
According to git shortlog -sn --no-merges 0.27.0-RC1..3.0.0-M1
these are:
171 Martin Odersky
94 Nicolas Stucki
75 Liu Fengyun
62 Aleksander Boruch-Gruszecki
50 Filip Zybała
35 Krzysztof Romanowski
34 Anatolii Kmetiuk
32 Sébastien Doeraene
31 Guillaume Martres
28 Jamie Thompson
20 bishabosha
19 Guillaume Raffin
16 Krzysztof Romanwoski
12 Ruslan Shevchenko
9 Tom Grigg
6 Som Snytt
5 odersky
5 Andrzej Ratajczak
4 Michał Pałka
3 Adrien Piquerez
3 Tudor Voicu
3 noti0na1
2 Krzysztof Bochenek
2 Tudor
2 Raphael Jolly
2 Miles Sabin
1 Vasil Vasilev
1 ansvonwa
1 Greg Zoller
1 felher
1 gzoller
1 zgrybus
1 Fengyun Liu
1 Philippus Baalman
1 Krzysiek Bochenek
1 Tomasz Godzik
1 ysthakur
Reporting Bugs
If you encounter a bug, please open an issue! 🙏
0.27.0-RC1
Notable Changes
Features
- Make Scala.js usable for people #9637
Stability
- Fix #1441: init MODULE$ in #9181
- Improve handling of references to
Object
coming from Java code #9601 - Re-resolve ==, != after expanding opaque types #9583
- fix #9179: ensure enum values are singleton with serialisation #9532
- fix #7227: allow custom toString on enum #9549
Metaprogramming
- Avoid leak of internal implementation in tasty.Reflection #9613
- Redefine quoted.Expr.betaReduce #9469
Performance
- Optimize megaphase #9597
- Cache all memberNamed results #9633
- Parallelize position pickling #9619
- Simplify TypeComparer #9405
- Optimize and simplify SourcePosition handling #9561
Contributors
Thank you to all the contributors who made this release possible 🎉
According to git shortlog -sn --no-merges 0.26.0-RC1..0.27.0-RC1
these are:
118 Martin Odersky
75 Liu Fengyun
65 Nicolas Stucki
27 Sébastien Doeraene
23 Guillaume Martres
16 Jamie Thompson
15 bishabosha
10 Guillaume Raffin
7 Anatolii Kmetiuk
4 Robert Stoll
3 Pavel Shirshov
3 december32
3 odersky
2 ysthakur
1 Niklas Vest
1 Dean Wampler
1 Fengyun Liu
1 John Sullivan
1 Lan, Jian
1 Aleksander Boruch-Gruszecki
1 Ruslan Shevchenko
1 Stefan Zeiger
1 William Narmontas
1 xuwei-k
Reporting Bugs
If you encounter a bug, please open an issue! 🙏
0.26.0
Release Dotty 0.26.0
0.26.0-RC1
Notable Changes
Language & API
Unified extension methods #9255
Allow structural anonymous classes #9201
Add summonAll and constValueTuple #9209
Compiler improvements
Infer missing implicit args in using clause #9347
Change implicit to using #9333
Use new extension syntax in scala.tasty.Reflection #9311
Have a per-run time budget for import suggestions #9167
Contributors
Thank you to all the contributors who made this release possible 🎉
According to git shortlog -sn --no-merges 0.25.0-RC2..0.26.0-RC1
these are:
128 Martin Odersky
53 Nicolas Stucki
30 Sébastien Doeraene
18 Anatolii Kmetiuk
18 Guillaume Raffin
17 Lan, Jian
12 Guillaume Martres
5 Aleksander Boruch-Gruszecki
3 Ruslan Shevchenko
3 odersky
2 Alden Torres
2 Robert Stoll
2 yu-croco
1 Alex Zolotko
1 Kevin Dreßler
1 FabioPinheiro
1 adpi2
1 Matthew Pickering
1 Liu Fengyun
Reporting Bugs
If you encounter a bug, please open an issue! 🙏
0.25.0
Release Dotty 0.25.0
0.25.0-RC2
Merge branch 'master' into 0.25.x
0.25.0-RC1
Release Dotty 0.25.0-RC1