Skip to content

v0.8.0

Compare
Choose a tag to compare
@MateuszKubuszok MateuszKubuszok released this 12 Oct 10:07
· 749 commits to master since this release

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)
  • 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 vals 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 with TransformerConfiguration (#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)
  • 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 oneofs in #331, see oneof fields for details
    • improved support for Java Beans - solved #110 and #175
    • Transformer type class was split into Transformer and Transformer.AutoDerived, similarly PartialTransformer, 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.