Releases: scala/scala3
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
0.24.0
Release Dotty 0.24.0