v0.8.0
The final and stable release of 0.8.0. The reasons to update (if you are still on 0.7.x or earlier) are:
- full feature parity between Scala 2.12, 2.13 and 3, JVM, Scala.js and Scala Native - each feature works on each version and platform!
- better support for Protobufs and Java's build-in types (added Java's enums and collections!, customizations can be used with Java Beans!)
- added ability to log the whole macro derivation logic!
- a lot of bugfixes
That and more described in a new, better documentation!
Changelog since 0.7.x:
-
0.8.0:
- refreshed documentation (#395, fixed in #396) - see https://chimney.readthedocs.io/en/stable/
- in case you need to access old docs - Read the Docs host versioned documentation so you can access all previous versions up to 0.5.0
- add Java's enum support (#393 using work spearheaded by @koiuo) and integration for Java's collections (#391) (fixes #86)
- add ScalaPB build-in types integartions (#394, fixed in #390)
- started checking MiMa for backward compatibility (#385, checks since 0.8.0-RC1)
- fix a bug with parsing type information (#397)
- refreshed documentation (#395, fixed in #396) - see https://chimney.readthedocs.io/en/stable/
-
0.8.0-RC1:
- enabled
-Xcheck-macros
check on Scala 3 and fixed discovered errors (#346 fixed by #351) - big thanks to @jchyb! - re-enabled
-Xfatal-warnings
(fixed in #373) - re-enabled compilation error message format check on Scala 3 (#354) - in 0.8.0-M1 error messages were present but there were slight differences between Scala 2 and 3, now errors message format are aligned: format of type printing and names of
val
s generated inside macro are consistent between Scala versions - allow searching for vals/lazy vals/defs inheritend for parent classes/traits (#144 fixed by #374 )
- in order to limit amount of stable releases with breaking changes (0.8.0-M1 already had to introduce such changes, therfore 0.7.x -> 0.8.0 is already such a release, but we want to avoid the need to release 0.9.0 immediatelly after) some planned changes (which broke binary compatibility but usually NOT source compatibility) were already added to this release
- Patchers can use
PatcherConfiguration
the same way as Transformers withTransformerConfiguration
(#190 fixed by #355) - since nested paths in
withField*
methods are planned necessary changes in API to make it possible were made (#377 unblocking #358 in the future) - an alternative to
import dsl.*
was introduced allowing users to use only semiautomatic versioning (#166 fixed by #357)
- Patchers can use
- enabled
-
0.8.0-M1:
- major refactor-rewrite to enable further library development in #325
- added initial Scala 3 support - solved #201 in #325 - great thanks to @jchyb whose continuous help us removing one blocker after another, without him this release would come out much, much later!
- detailed list of related tasks is available at scala-3 milestone
- this is a milestone release precisely because due to the rewrites - all feedback is welcome!
- hid internal helpers from polluting the DSL in #334
- added ability to preview macros and log the derivation logic in #317 - see debugging macros for details
- improved support for Protobuf
oneof
s in #331, see oneof fields for details - improved support for Java Beans - solved #110 and #175
Transformer
type class was split intoTransformer
andTransformer.AutoDerived
, similarlyPartialTransformer
, see migration-to-0.8 to read how it could affect you- default values (when enabled) are no longer used as fallback if there is field from which value can be converted but transformation cannot be resolved - solved #200
- locally defined implicits are no longet ignored in some cases - solved #207
- removed deprecated features: lifter transformers and unsafeGet, see migrating from lifted if you haven't done it yet
- added MiMa checks to sbt configuration - in #329 solving #252 thanks to @RayanRal!
Greatest thanks to @jchyb for helping us again unblock the works on the 0.8.0, his consultations were critical.