Skip to content

Releases: kubuszok/pipez

Ground-up rewrite on Hearth with a new data-transformation DSL, migrated to sbt 2.0 and current Scala/Scala Native

26 Jun 18:04
fea63fd

Choose a tag to compare

The first pipez release in over three years, and a complete rebuild. The macro layer has been re-implemented from scratch on top of Hearth, the cross-compiled (Scala 2.13 + 3) macro toolkit, and the build has been moved to sbt 2.0 and the current Scala / Scala.js / Scala Native toolchains. This release also drops the historical v tag prefix.

  • rewrite the whole Scala 2.13 + 3 derivation on top of Hearth 0.4.0, replacing the hand-rolled per-platform macro layer (#33)
  • unify the config-DSL parser into a single shared readConfig built on Hearth's DestructuredExpr, deleting the two near-identical Scala 2 / Scala 3 raw-AST walkers (#34)
  • thread the abstract Context / Result[_] through codegen as real types, dropping the Expr[Any] + asInstanceOf erasure so derivation is now fully typed (#34)
  • add the new pipez-dsl module providing a ready-to-use Convert[From, To] / Converter type class with convertInto, plus PatchApplier / patchWith for patches (import pipez.dsl.*)
  • migrate the build to sbt 2.0.0 (requires JDK 17+) using the org-wide sbt-2.0 recipe; %%% is gone (sbt 2.0's %% is platform-aware) and the ci-* / test-* aliases are registered via the sbt-kubuszok Aliases helper (#35)
  • update Scala to 2.13.18 and 3.8.4, and Scala Native to the 0.5.x series (artifacts now native0.5); Scala.js and JVM remain supported (#35)
  • publish under com.kubuszok via central.sonatype.com (Sonatype Central)
  • note: TransformerF (the Chimney type class pipez mirrors) is now marked deprecated upstream; the README documents an intended path of deprecating it in 0.7.0 and removing it in 0.8.0

Fixed bug in Scala 3 and ommits diagnostics generation if it's disabled

09 Jan 21:11

Choose a tag to compare

  • fix issue #27
  • skip generation of diagnostics messages if diagnostics flag is disabled (should speed up derivation a bit)
  • skip analyzing java.lang.Object methods, scala.Product methods, as well as case class-generated methods to speed up field matching
  • update Scala.js to 1.12.0
  • update Scala Native to 0.4.9

Updated Scala versions

09 Nov 22:13

Choose a tag to compare

  • updates Scala 2.13 to 2.13.10 - Scala 2.13.9 is advised to be skipped due to binary incompatibility
  • updates Scala 3 to 3.2.1
  • updates Scala Native to 0.4.8
  • adds best-effort syntax coloring in .enableDiagnostics output

Initial fallback to value and patching implementation

05 Oct 12:12

Choose a tag to compare

  • new addFallbackToValue config
  • new value.patchWith(patch) syntax

Better cross-compilation between 2.13 and 3, AnyVal support

29 Sep 10:16

Choose a tag to compare

  • support for AnyVal <=> primitive conversion
  • support for Scala 3 enum <=> Scala 2 sealed hierarchy conversion (with exception of 2.13 JS, there is a bug there)
  • support for Scal3 @BeanProperty<=> Scala 2 @BeanProperty conversion
  • product derivation can be recursive with recursiveDerivation config without derivation implicit in scope
  • path: Path in updateContext was made by-name param to avoid allocation cost for implementations which don't use it

Hotfix dependency information in build

05 Oct 12:14

Choose a tag to compare

Due to bug(?) in sbt plugin published artifacts had a wrong, non-existing dependency. This release fixes this.

More configation options from Chimney, JS and Native

24 Sep 00:41

Choose a tag to compare

This release have a broken dependencies, it is advised to use 0.3.1+!

  • support for case class <=> tuple derivation
  • configuration options:
    • enable fallback on default values when no other source is available
  • initial version of a DSL that presents how derivation could be used to implement functionality of Transformer and TransformerF with error aggregation and path to failed value from Chimney
  • cross compilation with Scala JS and Scala Native (for 3 only)

PipeDerivation don't have to be defined as `val`

19 Sep 21:23

Choose a tag to compare

  • PipeDerivation[Pipe] don't have to be defined as val in Scala 2 since macro no longer relied on stable path-dependent types
  • improved documentation for Path and mixins with derive
  • small internal fixes

First release

09 Sep 09:24

Choose a tag to compare

  • support for case class/java bean => case class/java bean derivation
  • support for ADT => ADT derivation
  • configuration options:
    • added field
    • renamed field
    • custom in field -> out field pipe
    • case insensitive field name matching
    • added subtype
    • renamed subtype
    • custom in subtype -> out subtype pipe
    • case insensitive subtype name matching
    • enable derivation diagnostics: settings used, resolution, generated code, derivation time
  • Scala 2.13.8 and 3.2.0