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
Blackbox/whitebox separation No No 1 Yes Yes 1
Def macros Yes Yes 1 Yes Yes 1
Macro bundles No No 1 Yes Yes 1
Implicit macros Yes (since 2.10.2) Yes 1 Yes Yes 1
Fundep materialization No Yes 2 Yes Yes 1
Type providers Partial support (see docs) Yes 2 Partial support (see docs) Yes 2
Quasiquotes No Yes 1 Yes Yes 1
Type macros No Discontinued No Discontinued
Untyped macros No Discontinued No Discontinued
Macro annotations 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.

blog comments powered by Disqus