Shapeless 2.3.5
Now available for Scala 2.11, 2.12 and 2.13 on the JVM, Scala.js 1.5 and Scala Native 0.4 🎉
Many thanks to all contributors ❤️
What's new
This release backports a lot of changes that have been brewing for a while in the 2.4.0 milestone,
including new features, bug fixes and performance improvements that preserve binary compatibility.
Feature enhancements
- Conversions between nested pairs and HLists (#701 by @mgzuber)
- Add bindFirst and curried methods for Poly (#708 by @Atry)
- make Tagged a universal trait so tagging value classes works (#801 by @kwark)
- Make Inject respect covariance (#804 by @jdrphillips)
- Support for Annotation[Option[A], T] (#867 by @guersam)
- Expose CaseClassMacros as blackbox (#977 by @joroKr21)
- Make KeyTag extend Any so we can tag value classes (#1015 by @joroKr21)
- Add support for type annotations (issue #922) (#925 by @pgrandjean)
- Add support to extract all variable or type annotations (issue #1051) (#1058 by @pgrandjean)
Performance improvements
- Improve implicit search times for Filter, FilterNot, Union, Intersection (#682 by @aryairani)
- Removed allocation in object Tag (#705 by @Arneball)
- Replace anonymous classes created by macros with instance helpers (#970 by @joroKr21)
- Optimize SelectRange typeclass derivation (#969 by @Ssstlis)
- Shortcut for static constructors (#1147 by @joroKr21)
Bug fixes
- Fix Lazy for tagged types (#797 by @joroKr21)
- Loosen Typeable restriction (#900 by @jeremyrsmith)
- Fix Typeable.describe for symbolic names (#945 by @joroKr21)
- Fix Typeable for inner classes (#798 by @joroKr21)
- Avoid creating Typeable for general type projections (#803 by @joroKr21)
- Make Typeable macros not dependent on default Predef presence (#861 by @MateuszKubuszok)
- Tighten fieldsOf and isCaseAccessorLike (#972 by @joroKr21)
- Constrain tuple syntax with IsTuple (#979 by @joroKr21)
- Add missing asInstanceOf call (#984 by @joroKr21)
- Add mkAttributedRef specialized for SingleType (#994 by @joroKr21)
- Fixed some scoping issues with Generic Coproducts (#765 by @joroKr21)
Documentation and Refactoring
- Add note about erasure to HMap (#982 by @joroKr21)
- Add docs (#1032 by @kazchimo)
- Fix #609 - add type annotation (#987 by @joroKr21)
Binary compatibility
This version is verified backwards binary compatible with 2.3.4 and should be backwards compatible with older 2.3 releases.
- Shapeless is using an epoch.major.minor versioning scheme (referred to as "PVP" in sbt)
- Binary compatibility of macros is not guaranteed because they execute at compile time and are not loaded at runtime
- Shapeless is only backwards compatible, not forwards compatible