0.10.1
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:
- distage – Transparent and debuggable Dependency Injection framework for Pure FP Scala,
- logstage – Automatic structural logs from Scala string interpolations,
- 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,
- 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)
- 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 needproduceUnsafe
behavior, useInjector().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, useConsoleSink(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, useConsoleSink(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)