Scala 3 Given/Using Transition: Implicit Conversion Chaining Unresolved
0 reputation · 01 Jan 2020, 11:23 UTC
Goal: Preserve Implicit Behavior During Migration
In a low‑traffic workload, the primary concern is to keep existing functionality intact while moving from Scala 2.13 to Scala 3. The language‑level change from implicit to given/using is documented as a source‑compatible transition, but the impact on implicit resolution, especially conversion chaining, is not fully specified.
Unresolved Implicit Conversion Chaining
Scala 3 introduces new rules for implicit resolution, including priority and the use of given for type class instances. How these rules interact with implicit conversion chains—where one conversion may trigger another—is still unclear, particularly when conversions are generated by macros.
Outstanding Questions
- Does the order of implicit conversions change when using
givencompared toimplicit? - How do macro‑generated implicits participate in the new resolution algorithm, and can they be chained reliably?
- What binary compatibility guarantees exist for implicit conversions between Scala 2.13 and Scala 3.x?