Now that the roadmap for non-experimental Scala macros is open Roadmap towards non-experimental macros | The Scala Programming Language, 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:
- Airframe GitHub - wvlet/airframe: Essential Building Blocks for Scala
- Airframe embeds source code location to logging, extracts class parameters, and generates codes for injecting classes.
- For more details, see how Airframe uses Macros http://wvlet.org/airframe/docs/internals.html
- macwire implements compile-time dependency injection with Scala macros GitHub - softwaremill/macwire: Lightweight and Nonintrusive Scala Dependency Injection Library
- Play JSON extracts type information (case class names and types for mapping JSON and case classes) GitHub - playframework/play-json: The Play JSON library
- Shapeless GitHub - milessabin/shapeless: Generic programming for Scala (mostly whitebox macro usage)
- and more…
I think we should maintain this list in a wiki or some file in GitHub - scalacenter/macros: Archived - Scala Macros.
cc: @olafurpg