Zio Prelude Versions Save

A lightweight, distinctly Scala take on functional abstractions, with tight ZIO integration

v1.0.0-RC9

2 years ago

This release contains support for ZIO 2.0.0-RC1.

v1.0.0-RC8

2 years ago

This release reverts the changes to the encoding to ZPure in the previous relate candidate. We will explore other ways to continue to improve the ergonomics of ZPure. This release also contains various bug fixes and improvements to the new smart types functionality.

What's Changed

  • Revert ZPure Changes (#807) @adamgfraser
  • Adds Associative.intercalate and ForEach.intercalate (#798) @SimY4
  • Implement ZValidation.partition (#799) @adamgfraser
  • ZValidation: add get, getOrElse, getOrElseWith (#802) @sideeffffect
  • Add better newtype errors for scala 2 (#792) @kitlangton
  • Better error message when forgetting "inline" in Scala 3 Newtype (#790) @kitlangton
  • Fix subtype creation issue (#787) @kitlangton
  • Fix label name in autoupdate.yaml (#784) @sideeffffect
  • Improve Scala Steward config (#782) @sideeffffect
  • [RFC] Lattice foundation (#353) @sideeffffect
  • WIP: Begin Newtype fix (#778) @kitlangton
  • Run tests on 8 as the main Java version (#773) @sideeffffect
  • Implement ZValidation.noneOrFail (#767) @adamgfraser

v1.0.0-RC7

2 years ago

This update is packed with several new features!

First, smart types are getting better thanks to work by @jorge-vasquez-2301 and @kitlangton. Assertions about smart types are now checked at compile time instead of runtime, which means you find out about issues earlier and don't have to deal with that possibility of failure in the rest of your code.

Second, ZPure is getting improved type inference. You shouldn't have to specify the state type anymore if you are not using it, which eliminates the need to specify type parameters in some cases.

Third ZIO Prelude no longer depends on ZIO Test. This means some operators that relied on ZIO Test assertions no longer exist, but these can be replaced with variants that take a normal predicate. This creates a stronger separation between test and production code and makes it even easier to get started with ZIO Prelude.

With these changes we believe we have the features we want for a 1.0 release, other than automatic derivation of functional abstractions which could potentially be added later. Following the release of ZIO 2.0 will be putting the final polish on the library to prepare for a 1.0 release.

As always, please let us know your feedback and thank you for your support.

Notable Changes

  • Rename Refined -> Smart Newtype (#768) @kitlangton
  • Scala 3.1 (#763) @sideeffffect
  • Align Order of Type Parameters in ZPure.modify (#758) @adamgfraser
  • Seal Not (#753) @adamgfraser
  • Make Unit An Identity For State (#608) @adamgfraser
  • Remove ZIO Test Dependency (#743) @adamgfraser
  • Implement Newtype.derive (#742) @adamgfraser
  • Refinement upgrades (#739) @kitlangton
  • Scalafmt 3 (#735) @sideeffffect
  • Run +publishLocal in CI (#733) @sideeffffect
  • Fix doc building (#730) @sideeffffect
  • Remove duplicate builds from ci.yml (#729) @sideeffffect
  • Enable fatal-warnings (#727) @sideeffffect
  • Implement NonEmptyList.fromNonEmptyChunk (#722) @adamgfraser
  • Implement zipAllWith (#717) @adamgfraser
  • Add zio-2 branch as to be built on push (#723) @sideeffffect
  • use the correct map to fold over in the example (#721) @olambo
  • Refined Refinement (#718) @kitlangton
  • Implement ForEach#partitionMap (#713) @adamgfraser
  • Test on Java 17 (#712) @sideeffffect
  • Add Scaladoc For Debug (#710) @adamgfraser
  • Add render method to Debug (#708) @sideeffffect
  • Skip publishing examples (#707) @jorge-vasquez-2301
  • Add support for Refined types (#649) @jorge-vasquez-2301

v1.0.0-RC6

2 years ago

This release contains substantially enhanced documentation along with other improvements.

Notable Changes

  • Rename Validation#failChunk to Validation#failNonEmptyChunk (#702) @adamgfraser
  • run doc on all Scala versions in CI (#700) @sideeffffect
  • Preserve Errors After Restoring Environment (#699) @adamgfraser
  • New validation constructors (#697) @AleGlowa
  • Update debug.md (#690) @phderome
  • Implement Max and Min Extension Methods (#682) @adamgfraser
  • Add Documentation (#664) @adamgfraser
  • Add Duration (ZIO and Scala) instances to the Associative, Equal and Debug hierarchy (#687) @sideeffffect
  • Implement Validation.fromOptionWith (#685) @adamgfraser
  • Remove Identity Instances For Max And Min (#684) @adamgfraser
  • Implement Bigint and BigDecimal Instances (#683) @adamgfraser
  • Implement IArrayDebug (#678) @adamgfraser
  • Implement ArrayDebug (#671) @adamgfraser
  • Delete HashIdentityBoth and HashIdentityEither (#670) @adamgfraser
  • Add NonEmptySetCommutativeEither plus small improvements (#676) @sideeffffect
  • Add AssociativeEither Instances (#669) @adamgfraser
  • Publish for scalajs on scala 3 (#674) @roald-di
  • Upgrade ZIO Version (#673) @adamgfraser
  • Basic doc phantom types + samples for validations (#665) @domdorn
  • Implement CommutativeIdentity (#667) @adamgfraser
  • Miscellaneous Cleanups (#666) @adamgfraser
  • add foldMapM to ForEach (#656) @felher
  • ParSeq: Then distributes over Both even in the presence of Empty (#655) @sideeffffect
  • mention reduceIdentity in the comment of fold on ForEach (#654) @felher
  • rename groupBy to groupByNonEmpty on ForEach (#653) @felher
  • [ZPure] Properly handle clearLogOnError when the whole computation fails (#648) @ghostdogpr
  • [ZPure] Implement clearLogOnError and keepLogOnError (#647) @ghostdogpr
  • Scala Native: only compile tests on test (#637) @sideeffffect
  • Update to Scala 2.13.6 (#636) @sideeffffect
  • Remove unnecessary parentheses (#635) @kazchimo
  • Return Same Collection Type In ZValidation.CollectAllPar (#632) @adamgfraser

v1.0.0-RC5

3 years ago

This release contains support for Scala 3.

Notable Changes

  • Upgrade to Final Version of Scala 3 (#633) @adamgfraser
  • Make zio/zlayer IdentityBoth (#627) @regiskuckaertz
  • Add more URLayer and URManaged AssociativeCompose instances (#612) @sideeffffect

v1.0.0-RC4

3 years ago

This release contains support for Scala 3.0.0-RC3. It also makes ZValidation its own data type, implements additional operators, and renames some existing operators to more domain specific names to give the best possible experience for handling the possibility of multiple errors. In particular, ZValidation.collectAll is now ZValidation.validate and ZValidation.foreach is now ZValidation.validateWith. The existing operator names are still available as extension methods through ForEach.

Notable Changes

  • Scala 3.0.0-RC3 (#609) @sideeffffect
  • Remove Error by putting into Warning Log (#591) @nbenns
  • Scala 3.0.0-RC2 (#602) @sideeffffect
  • Add helper methods to NonEmpty* our collections (#577) @sideeffffect
  • Add ZValidation#toEitherUnordered (returning NonEmptyMultiSet) (#582) @sideeffffect
  • provide ZValidation.flatten (#584) @phderome
  • Update comment in ZValidation.scala (#583) @phderome
  • Use d for the Debug interpolator (#581) @sideeffffect
  • Use Domain Specific Names For Validation Operators (#580) @adamgfraser
  • Add ZPure#refineOrDie (#554) @sideeffffect
  • Implement ZSet#forEach (#576) @adamgfraser
  • Debug interpolator (#565) @sideeffffect
  • Lazy error for fromPredicateWith methods (#579) @poslegm
  • ZValidation#toZIO via Cause (#578) @sideeffffect
  • Use NonEmptyChunk in ZValidation (#575) @adamgfraser
  • Add ZValidation#{mapErrorAll, mapLogAll, toEitherWith} (#574) @sideeffffect
  • Add Additional Operators To ZValidation (#573) @adamgfraser
  • Implement ZValidation (#558) @adamgfraser
  • fromPredicate* arguments switched for better type inference (#572) @poslegm

v1.0.0-RC3

3 years ago

This release contains a fix for a bug regarding the composition of state when using error handlers in ZPure. It also contains a new module with type class instances for parallel collections from the scala-parallel-collections library. Upgrading is recommended for all users.

Notable Changes

  • Add some instances for Parallel collections @sideeffffect (#509)
  • Restore State After Failure In ZPure @adamgfraser (#571)
  • Update Microsite with additional resources @baldram (#569)
  • Work around bad type inference of our extension methods @sideeffffect (#560)
  • Use ## instead of hashCode for Hash.default @sideeffffect (#562)
  • final AnySyntax @sideeffffect (#561)
  • Add ZPure#toZio @sideeffffect (#553)
  • Bring back Validation.fromPredicate @sideeffffect (#537)
  • Initial Work To Support Recursion Schemes @adamgfraser (#513)
  • Fix Type Signature in ConstForEach Implementation @adamgfraser (#545)
  • Implement Const @adamgfraser (#544)
  • Fix Equal diagram image @sideeffffect (#534)
  • Implement ZPure#mapErrorCause @adamgfraser (#533)
  • Diagrams page contains images and is linked to from the side bar @sideeffffect (#532)

v1.0.0-RC2

3 years ago

This release brings support for the latest version of Scala 3 and Scala Native as well as smart constructor variants of NewTypeF and SmartTypeF, build out of the arrow hierarchy under AssociativeCompose, additional documentation, and further generalization of ZPure.

In particular, ZPure now includes a W type parameter representing a logging effect and allow accumulating errors similar to the way ZIO does with Cause. "Parallel" operators such as zipWithPar will perform both computations and accumulate errors, as with the previous behavior of Validation#zipWithPar. The full set errors that occurred can be exposed and transformed using operators like the ones on ZIO such as foldCauseM. Validation is now a type alias for ZPure.

Your feedback is greatly appreciated!

Notable Changes

  • Add URIO instances for the AssociativeCompose family @sideeffffect (#525)
  • add timeout to ci @softinio (#531)
  • Add License @adamgfraser (#524)
  • Add Higher Arity Variants Of ZPure#zipWith and Pure#zipWithPar Operators @adamgfraser (#523)
  • Scala 2.13.4 for Mergify config @sideeffffect (#521)
  • Fix website @sideeffffect (#518)
  • Replace CircleCI with Github actions @mijicd (#516)
  • Upgrade Scala Native to 0.4.0 @sideeffffect (#515)
  • Make Scala 2.13 the default @sideeffffect (#514)
  • Add Variants For Running ZPure Values @adamgfraser (#510)
  • Add any value @sideeffffect (#508)
  • ZIO 1.0.4 @sideeffffect (#507)
  • Document the Type Class hierarchies with chart: AssociativeFlatten @sideeffffect (#501)
  • Test floating point instances with tolerance @sideeffffect (#500)
  • Rename name collisions @kitlangton (#504)
  • Upgrade Scala to 2.12.13, sbt-scalafix to 0.9.25 and sbt-mdoc to 2.2.16 @sideeffffect (#498)
  • Further Generalize ZPure @adamgfraser (#461)
  • Use suitable associativity for arrow-like operators @sideeffffect (#494)
  • Rename AssertionK -> AssertionF @sideeffffect (#493)
  • Silencer: remove unused silent @sideeffffect (#495)
  • AssociativeCompose: add Application, Both, Either and diagram @sideeffffect (#358)
  • Rationalize law testing -- drop redundant tests of instances @sideeffffect (#489)
  • Sketch of NewtypeSmartF and SubtypeSmartF @sideeffffect (#486)
  • Implement ZPure#provideSome @adamgfraser (#487)
  • Add PartialOrd @sideeffffect (#239)
  • Implement SafeFunction @adamgfraser (#471)
  • Standardize names for CommutativeBoth functions @sideeffffect (#474)
  • Adopt the new IntelliJ import order @sideeffffect (#470)
  • Remove Effect Type Classes @adamgfraser (#469)
  • Remove unnecessary methods from *Both and *Either hierarchy @sideeffffect (#466)
  • Add withFilter to ZPure @sideeffffect (#465)
  • ZPure filter methods #375 @arnoldlacko (#464)
  • ZPure methods 'join', 'negate', 'none' and 'unit' #375 @arnoldlacko (#463)
  • Don't test Scala Native, only compile @sideeffffect (#460)
  • Order sbt plugins @sideeffffect (#459)
  • Add AssociativeBoth.compose @joroKr21 (#454)
  • Simplify Algebra of ZPure @adamgfraser (#436)
  • Bring back benchmarks to sbt @sideeffffect (#458)
  • Make ScalaJS (and Native) easily excludable @sideeffffect (#457)
  • Implement foldLeftM and foldRightM @adamgfraser (#440)
  • Add head method on ZPure @bmarinovic (#456)
  • Add Traversable.compose @joroKr21 (#452)
  • Added ZPure 'repeat*' methods #375 @arnoldlacko (#448)
  • Rationalize BuildHelper @sideeffffect (#439)
  • new ZPure constructor 'modifyEither' @arnoldlacko (#445)
  • Add right family methods to ZPure (#375) @atrianac (#443)
  • Use IntelliJ's default order for Organize Imports @sideeffffect (#441)
  • Fix sbt configuration for experimental @sideeffffect (#438)
  • Add Experimental Module @adamgfraser (#434)
  • make environment in ZPure scope correctly @felher (#435)
  • Add diagram for AssociativeBoth typeclass (#324) @OldKosherCheese (#422)
  • Update Node.js to the latest LTS version @sideeffffect (#433)
  • Use anyInt instead of anyString as much as possible, JavaScript seems slow with it @sideeffffect (#430)
  • Adding multiply to Associative, Identity, Inverse @shankarshastri (#420)
  • Port ZIO#reject methods into ZPure @landlockedsurfer (#429)
  • AssociativeEither diagram @ernestochero (#418)
  • Add zpure companion obj methods @bmarinovic (#425)
  • CircleCI: Rationalize the build matrix @sideeffffect (#426)
  • Port ZIO#left methods into ZPure @zalbia (#419)
  • Initial support for scala-native @vigoo (#423)
  • Adding repeat and repeatOption to Identity And Associative @shankarshastri (#396)
  • #375 'some*' family of methods for ZPure @arnoldlacko (#409)
  • Mergify: add Scala.js builds @sideeffffect (#416)
  • Build on scalajs @mschuwalow (#410)
  • Add asState to ZPure (#408) @bmarinovic (#415)
  • Install JRE, hopefully fixes issues of using wrong Java version @sideeffffect (#414)
  • Use CanFail and NeedsEnv For ZPure (#401) @spoltier (#406)
  • ZIO inspired ZPure methods - orElse* family (#375) @bmarinovic (#405)
  • Add fproduct and fproductLeft to Covariant @Porcupine96 (#397)
  • Implement composition for invariant/covariant/contravariant functors @GrigoriyDmitriev (#404)
  • Adding ZivariantSyntax to prelude package @shankarshastri (#399)
  • Add mapParN And tupleParN for CommutativeBoth @shankarshastri (#400)
  • Add instances for Commutative, Idempotent for Min[BigDecimal], Max[BigDecimal], Prod[BigDecimal], and Sum[BigDecimal] @shankarshastri (#394)
  • Fix Publishing Of Website @adamgfraser (#377)
  • Syntax to reduce associative elements in a parallel manner @sideeffffect (#352)
  • Small improvements to the *Both and *Either hierarchies @sideeffffect (#365)
  • AssociativeBothTupleOps @sideeffffect (#355)
  • Ord: Add eqConsistencyLaw @sideeffffect (#354)
  • Derive (Associative/Identity)Both from Covariant and (Associative/Identity)Flatten @sideeffffect (#339)
  • Start using release-drafter @sideeffffect (#338)
  • Remove ThrowableHash out of implicit scope @sideeffffect (#350)
  • Functions A => A form a Monoid @sideeffffect (#357)
  • Add diagram for the Associative hierarchy @sideeffffect (#337)

v1.0.0-RC1

3 years ago

Initial release.