macros

Roadmap

EXPERIMENTAL

Eugene Burmako

At the moment, we don’t plan to introduce new reflection- or macro-related features in Scala 2.12, so the functionality of Scala 2.12 and Paradise 2.12 is going to be the same as Scala 2.11 and Paradise 2.11 modulo bugfixes and stability improvements.

Feature-wise, our main effort is currently targetted at scala.meta, the new foundation for metaprogramming Scala, which is simpler, more robust and much more suitable for portability than the current system based on scala.reflect. We hope that one day scala.meta will supersede scala.reflect and become the new standard way of doing metaprogramming in Scala.

Feature Scala 2.10 Paradise 2.10 Scala 2.11 Paradise 2.11 Scala 2.12 Paradise 2.12
Blackbox/whitebox separation No No 1 Yes Yes 1 Yes Yes 1
Def macros Yes Yes 1 Yes Yes 1 Yes Yes 1
Macro bundles No No 1 Yes Yes 1 Yes Yes 1
Implicit macros Yes (since 2.10.2) Yes 1 Yes Yes 1 Yes Yes 1
Fundep materialization Yes (since 2.10.5) 3 Yes 2 Yes Yes 1 Yes Yes 1
Type providers Partial support (see docs) Yes 2 Partial support (see docs) Yes 2 Partial support (see docs) Yes 2
Quasiquotes No Yes 1 Yes Yes 1 Yes Yes 1
Type macros No No No No No No
Untyped macros No No No No No No
Macro annotations No Yes 2 No Yes 2 No Yes 2

1 This feature doesn't bring a compile-time or a runtime dependency on macro paradise. This means that neither compiling against your bytecode that uses this feature, nor running this bytecode requires the macro paradise plugin to be present on classpath.

2 This feature brings a compile-time, but not a runtime dependency on macro paradise. This means that compiling against your bytecode that uses this feature will need the plugin to be added to your users' builds, however running this bytecode or results of macro expansions produced by this bytecode doesn't need additional classpath entries.

3 Only works under -Yfundep-materialization.

blog comments powered by Disqus