Skip to content

0.10.1

Compare
Choose a tag to compare
@neko-kai neko-kai released this 30 Jan 15:56
· 1986 commits to develop since this release

Izumi

What is it?

Izumi (jp. 泉水, spring) is a set of independent libraries and frameworks allowing you to significantly increase productivity of your Scala development.

including the following components:

  1. distage – Transparent and debuggable Dependency Injection framework for Pure FP Scala,
  2. logstage – Automatic structural logs from Scala string interpolations,
  3. idealingua – API Definition, Data Modeling and RPC Language, optimized for fast prototyping – like gRPC, but with a human face. Currently generates servers and clients for Go, TypeScript, C# and Scala,
  4. Opinionated SBT plugins (moved to 7mind/sbtgen) – Reduces verbosity of SBT builds and introduces new features – inter-project shared test scopes and BOM plugins (from Maven)
  5. Percept-Plan-Execute-Repeat (PPER) – a pattern that enables modeling very complex domains and orchestrate deadly complex processes a lot easier than you're used to.

Changes in distage:

  • Remove 22 arguments limit on class & trait constructors (#865)
  • Factories can now be generated from abstract classes with parameters (FactoryConstructor) (#865)
  • Relax typeclass requirements for DIResource for DIResource.liftF & DIResource.LiftF, now they need only Applicative/BIOApplicative, not Sync/BIO (#863)
  • Deprecate Injector#produceUnsafe, use lifecycle-aware .produce instead. If you really need produceUnsafe behavior, use Injector().produce(_).unsafeGet() (#862)
  • Fix #854 move all macro implementations into separate objects to prevent leaking references to scala-reflect (#859)
  • Fix #869 workaround circe-config Boolean codec issue in logstage config circe/circe-config#12 (#871)
  • Injector reboot API (#852)

Changes in distage-testkit-scalatest:

  • Enhanced parallel test reporting - reporting delay is now per-suite, not global (workaround for Intellij scalatest reporter incorrectly nesting parallel test cases) (#848)
  • Fixed generated junit test reports under sbt (#861)

Changes in logstage:

  • logstage: Deprecate ConsoleSink.json because it requires an obscure wildcard import, use ConsoleSink(LogstageCirceRenderingPolicy()) (#867)

Changes in idealingua:

  • Websocket client API is now wrapped in F (#847)

Merged PRs:

  • Fix #853 Drop max 22 parameters restriction on class & trait constructors (#865)
  • Fix #869 workaround circe-config Boolean codec issue in logstage config circe/circe-config#12 (#871)
  • logstage: Deprecate ConsoleSink.json because it requires an obscure wildcard import, use ConsoleSink(LogstageCirceRenderingPolicy()) (#867)
  • Improve documentation, document Bootloader (#866)
  • Compare original function in Provider.equals (#864)
  • logstage codec: macro infrastructure (#851)
  • Introduce DIApplicative, relax requirements for DIResource methods (now liftF & LiftF need only Applicative, not Sync or BIO) (#863)
  • Deprecate Injector#produceUnsafe (#862)
  • preserve reporters, as they should be suite based (#861)
  • Fix #854 move all macro implementations into separate objects to prevent leaking references to scala-reflect (#859)
  • generailized injector reboot support (#852)
  • replaced unit with monoIO (#847)
  • dealias types in constructor macros & ensure equality for generated singleton-type constructors (#850)
  • distage-testkit scalatest sbt-runner workaround: remove restrictions on scanned packages (#849)
  • distage-testkit: Enhance parallel test reporting, ensure all exceptions are caught (#848)
  • Add ProviderMagnet.ap, fix incorrect return type in ProviderMagnet.zip (#844)

Dependency updates

  • Update sbt-izumi to 0.0.47 (#860)
  • Update sbt-unidoc to 0.4.3 (#870)
  • Update http4s-blaze-client, ... to 0.21.0-RC2 (#858)
  • Update docker-java to 3.2.0-rc3 (#857)
  • Update jawn-parser to 1.0.0 (#841)
  • Update fastparse to 2.2.3 (#838)
  • Update sbt to 1.3.7 (#840)