Releases: kubuszok/pipez
Releases · kubuszok/pipez
Ground-up rewrite on Hearth with a new data-transformation DSL, migrated to sbt 2.0 and current Scala/Scala Native
Ground-up rewrite on Hearth with a new data-transformation DSL, migrated to sbt 2.0 and current Scala/Scala Native
Latest
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
readConfigbuilt on Hearth'sDestructuredExpr, deleting the two near-identical Scala 2 / Scala 3 raw-AST walkers (#34) - thread the abstract
Context/Result[_]through codegen as real types, dropping theExpr[Any]+asInstanceOferasure so derivation is now fully typed (#34) - add the new
pipez-dslmodule providing a ready-to-useConvert[From, To]/Convertertype class withconvertInto, plusPatchApplier/patchWithfor 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 theci-*/test-*aliases are registered via thesbt-kubuszokAliaseshelper (#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.kubuszokviacentral.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
- 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
- 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
.enableDiagnosticsoutput
Initial fallback to value and patching implementation
- new
addFallbackToValueconfig - new
value.patchWith(patch)syntax
Better cross-compilation between 2.13 and 3, AnyVal support
- 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@BeanPropertyconversion - product derivation can be recursive with
recursiveDerivationconfig without derivation implicit in scope path: PathinupdateContextwas made by-name param to avoid allocation cost for implementations which don't use it
Hotfix dependency information in build
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
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
TransformerandTransformerFwith 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`
PipeDerivation[Pipe]don't have to be defined asvalin Scala 2 since macro no longer relied on stable path-dependent types- improved documentation for
Pathand mixins withderive - small internal fixes
First release
- 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