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|
|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