Projects using black-box def macros

Now that the roadmap for non-experimental Scala macros is open http://scala-lang.org/blog/2017/10/09/scalamacros.html, we eventually need to migrate existing projects that depend on black-box def macros at least for Scala 2.14 according to the current plan.

Migration is always a pain (as we’ve already seen that in migration from sbt-0.13 to sbt-1.0, but it’s done successfully). However, if we aware of necessary changes and missing features in the upcoming macros before the migration, I believe it can mitigate the pain.

So I’d like to create a list of Scala projects that are extensively using Scala Macros, especially black-box def macros. I hope this kind of list will be useful to collect use-cases and find essential macro features for these projects.

Projects using Scala black-box def macros:

I think we should maintain this list in a wiki or some file in https://github.com/scalacenter/macros.

cc: @olafurpg

1 Like

@xerial Did you mean whitebox macros instead of blackbox macros? I think the plan is to keep support for blackbox macros altogether, while removing most of the whitebox macro functionality.

I think another good idea would be to have a gitter channel where people can interact, that would be something like scala/macros.

1 Like

Personally speaking I’m not relying on white-box macros so much, so here I’m focusing on black-box macros here because white-box macro discussion is already there Whitebox def macros

My point is even if the functionality of the black-box macros will be maintained, interface change might happen for better language design (and I think this should occur if it will be more usable). Then cross-building Scala 2.12, 2.13, and 2.14 (with new macros) will be necessary for a while. During the migration, we will be able to find some potential problems in the new design. So I think having a list like https://github.com/sbt/sbt/wiki/sbt-1.x-plugin-migration is good.

Yes. Having a gitter channel would work as well.

I think most of Shapeless’ macros are whitebox, actually.

1 Like

Added that note in the above list. Thanks

Thank you for starting this thread @xerial! Great idea.

I have created an open Wiki in the scalacenter/macros repo: https://github.com/scalacenter/macros/wiki/Projects-using-scala-reflect-def-macros The wiki publicly editable, so please feel free to add projects to the list.

We have a gitter channel https://gitter.im/scalacenter/macros-contributors which is quite empty right now. The channel is primarily meant for contributors to the macro engine. If you’d like to get involved, please say hi!

Currently, most of the ongoing effort is related to establishing compiler integrations with scalac/dotc. I hope most of the basic work related to that will be done by around Christmas. The actual public API for macro writers is still undecided so there is nothing yet for library authors to try out.

1 Like

Added singleton-ops https://github.com/fthomas/singleton-ops

1 Like