-
Notifications
You must be signed in to change notification settings - Fork 525
Description
This is a general meta-issue to aggregate the overall project of getting a version of Shapeless 2 working on Dotty.
Goals
- Rough source-compatibility with the Shapeless 2.x versions of any constructs which can be meaningfully expressed on Dotty
- Full source-compatibility with the Scala 2.13 variants of the same construct in the same release. In other words, it should be possible to move from 2.13 to 3.0 simply by swapping
scalaVersionfor any code which exclusively uses the supported constructs
Non-Goals
- Perfect binary compatibility with the 2.x line (though, the closer to this we can get, the better)
- Ports of less-used constructs, particularly those which are impossible to render on Dotty
Requirements
Each of these should be split out into a separate issue:
-
Generic -
HList -
Coproduct - Polymorphic functions
Comments and opinions very much desired on all of the above!
To be clear, I'm well aware that most of this is covered by out-of-the-box functionality in Dotty (and shapeless 3 is a nice layer on top of that). However, any project which is cross-publishing between Scala 2 and Scala 3 will benefit considerably from this type of functionality. Additionally, cross-publication is a special case of migration, and any project which is using shapeless already will either need something like this, or it will need to recreate this type of functionality on their own for bespoke cross-building (i.e. what Circe had to do).