Releases: scalalandio/chimney
v1.9.0
v2.0.0-M2
Important
Since Chimney got affected by 3.7.0 change in givens resolution we had to analyze the possible ways of fixing the issue.
While there is a temporary workaround the proper fix requires releasing a new major version of the library, which ideally would commit to a new Scala 3 LTS. In the meantime, a milestone 2.0.0 release series is planned. All bug fixes and issues would be still implemented on stable version, and then ported to 2.0.0 milestones, until a proper release could be made.
To make maintanance of 2 lines easier, we extracted
chimney-macro-commonsto a separate repository and decoupled its lifecycle from Chimney's lifecycle - the code is used only in macros and no other library seem to rely on it, so binary incompatible changes to chimney-macro-commons (mandating major version update) should not affect anyone, and it should be safe to just increase minor version of Chimney when updating macro commons.This release is the second milestone of 2.0.0 series.
Changelog (including 2.0.0-M1):
- rewrite API to not rely on the pattern that breaks in 3.7.0 (#713 for Scala 3.7+, #753 for Scala 2.13.17+)
- cleanup the API (#712, #713)
- remove deprecated
withCoproductmethods - remove
.toPartialResultsince.asResultis available (since 0.8.5) - rework internal type-level config representation (which should not be used directly, but which has to be publicly visible to work)
- remove
__mergeResultNullablemethod (which was documented to not be used but which was publicly visible, or at least package visible due to historical reasons) - fix typo in Protobuf support trait name
- make
com.google.protobuf.ByteStringandcom.google.protobuf.ByteValueTotallyBuildIterables (which are more flexible than just conversion to underlying type) - remove unneeded implicits from java-collections
Maps' implementation signatures
- remove deprecated
Contains all features/bugfixes added since 2.0.0-M1 (1.8.1, 1.8.2).
v1.8.2
Changelog:
- make Chimney work with
exported types by @ETCHKILI (#758, fixed in scalalandio/chimney-macro-commons#21 and #759) - thank you for your contribution!
v1.8.1
v2.0.0-M1
Important
Since Chimney got affected by 3.7.0 change in givens resolution we had to analyze the possible ways of fixing the issue.
While there is a temporary workaround the proper fix requires releasing a new major version of the library, which ideally would commit to a new Scala 3 LTS. In the meantime, a milestone 2.0.0 release series is planned. All bug fixes and issues would be still implemented on stable version, and then ported to 2.0.0 milestones, until a proper release could be made.
To make maintenance of 2 lines easier, we extracted
chimney-macro-commonsto a separate repository and decoupled its lifecycle from Chimney's lifecycle - the code is used only in macros and no other library seem to rely on it, so binary incompatible changes to chimney-macro-commons (mandating major version update) should not affect anyone, and it should be safe to just increase minor version of Chimney when updating macro commons.This release is the first milestone of 2.0.0 series.
Changelog:
- rewrite API to not rely on the pattern that breaks in 3.7.0 (#713)
- cleanup the API (#712, #713)
- remove deprecated
withCoproductmethods - remove
.toPartialResultsince.asResultis available (since 0.8.5) - rework internal type-level config representation (which should not be used directly, but which has to be publicly visible to work)
- remove
__mergeResultNullablemethod (which was documented to not be used but which was publicly visible, or at least package visible due to historical reasons) - fix typo in Protobuf support trait name
- make
com.google.protobuf.ByteStringandcom.google.protobuf.ByteValueTotallyBuildIterables (which are more flexible than just conversion to underlying type) - remove unneeded implicits from java-collections
Maps' implementation signatures
- remove deprecated
v1.8.0
Important
Since Chimney got affected by 3.7.0 change in givens resolution we had to analyze the possible ways of fixing the issue.
While there is a temporary workaround the proper fix requires releasing a new major version of the library, which ideally would commit to a new Scala 3 LTS. In the meantime, a milestone 2.0.0 release series is planned. All bug fixes and issues would be still implemented on stable version, and then ported to 2.0.0 milestones, until a proper release could be made.
To make maintanance of 2 lines easier, we extracted
chimney-macro-commonsto a separate repository and decoupled its lifecycle from Chimney's lifecycle - the code is used only in macros and no other library seem to rely on it, so binary incomptible changes to chimney-macro-commons (mandating major version update) should not affect anyone, and it should be safe to just increase minor version of Chimney when updating macro commons.This release is the first using a new chimney-macro-commons version.
Changelog:
- failed derivation reports more detailed paths to nested failed transformation (#694)
- deprecate methods removed in 2.0.0 (#735)
- extracted
chimney-macro-commonsto the separate repository (#710) - documentation:
- added cheatsheets section
- describe workaround for change in 3.7.0 givens resolution (#715)
- describe why changes in 3.7.0 affects Chimney and how it will be addressed in Chimney 2.0.0 (#722)
- added dependabot action by @xuwei-k (#728) - thank you for your first contribution!
v1.7.3
Changelog:
- cache some intermediate results during the macro expansion (#691) - feedback (improvement, no change, regression) is appreciated!
- more examples in documentation (#693)
- explanation why some usages lead to infinite recursion
- usage of
Transformer.derive/Transformer.define - examples of overrides with
Options/Eithers/collections - examples of updating
Optiontypes when the patch is decoded JSON
v1.7.2
Changelog:
- fix regression in
Patchers by @hughsimpson (#687) - update Scala 3 to 3.3.5
- update scala-collection.compat to 2.13.0
v1.7.1
Changelog:
- bugfixes
- increased test coverage for semiautomatic derivation methods and fixed a bug in Scala 3 implementation of
TransformerDefinition.withFallbackFrom(#685) - enabling macro debugging for a single derivation (rather than globally) is no longer treated as an override changing behavior of some cases (#682)
- fix some rename edge cases broken by 1.6.0 refactor (#683, fixed in #684)
- increased test coverage for semiautomatic derivation methods and fixed a bug in Scala 3 implementation of
- updated documentation
- expanded section on
chimney-macro-commons(#681) - updated Ducktape section, thanks to the first contrubution of @arainko! (the author of Ducktape) (#679)
- fixed typos in DESIGN.md, thanks to the first contribution of @civilizeddev! (#680)
- expanded section on
v1.7.0
This big release bring some long-awaited features: transformations, which take more than 1 case class as input (well, not only case classes 😄 ) and improved Patchers which handle: recursive patching, overriding values.
Changelog:
- merging transformations - now it's possible to start transformation DSL with 1 value, and keep adding more values as "fallbacks", so that if the field is not found in the first one, it will be looked for in the second, then third, etc, effectively allowing us to merge several input values into 1 output value (#115, fixed in #614)
- this includes merging several tuples into 1
- and merging several
Options orEithers usingorElse(opt-in) - and merging several collections using
++(opt-in) - and more!
- added policies for checking if some source field was not used during transformation, or that some target sealed trait subtype was not matched - (#248, fixed in #614)
- we can set Chimney to fail compilation until we mark some source field explicitly not-used, ditto for sealed subtype
- rewritten
Patchers as specialized merging transformations (#538, fixed in #614)- this allowed us to make
Patchers recursive (fixing #119) - and take implicit
Patcherin nested fields (fixing #133) - and made it east to add
withFieldConst,withFieldComputedandwithFieldomputedFromtoPatchers (fixing #134) - and, combined with policies, allowed us to ignore some fields in
Patchersand updating from another instance of the same type (fixing #161 and #57)
- this allowed us to make
- additionally we added (opt-in!) support for using implicit conversions and
<:<during derivation (#667) - added support for generating transformation out of implicit
F ~> Gin Cats integration (#666) - improved
withFieldComputedFromto handle more expected cases (#660) - added/expanded a few sections in our documentation (#657)
- explained how to define transformers between
Stringand enums - how to avoid using nested
.into.transformwhen we need only 1 - the common issue of how to change the naming convention when decoding JSON and then using Chimney
- expanded Cats section on examples with
parMapNand similar - updated Ducktape comparison
- explained how to define transformers between
- updated Scala 2.13 to 2.13.16, Scala.js to 1.18.1
With this release I feel that all of my personal ambitions for Chimney has been realized.