0.10.0
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.
Major Changes in distage
since 0.9.17:
- Removed dependency on runtime scala-reflect
- Type comparisons now use LightTypeTag from
izumi-reflect
(fundamentals-reflection) instead ofscala-reflect
TypeTag resulting in greatly improved stability, better runtime performance and faster compile-time - All constructors are now generated at compile-time
- Moved constructor derivation strategies
ClassConstructor
,TraitConstructor
&FactoryConstructor
fromdistage-static
todistage-core
.
- Type comparisons now use LightTypeTag from
distage-core
is now available for Scala.js- Documentation has been rewritten
distage-extension-config
has been rewritten without runtime reflection.distage-testkit-scalatest
improved test reporting & integration with SBTdistage-framework-docker
added support for networks, addedno-copy
option for docker mounts- Added syntax for binding an implementation to multiple interfaces:
make[ImplXYZ].aliased[TraitX].aliased[TraitY].aliased[TraitZ]
Major Changes in fundamentals-bio
since 0.9.17:
- Moved time & sleep-related methods to a new
BIOTemporal
typeclass aboveBIOAsync
- Fixed implicit priorities for conversions into
cats-effect
typeclasses
All merged PRs:
- Update docker-java to 3.2.0-rc2 (#765)
- Izumi 0.10: Remove runtime reflection (#741)
- Update sbt-mdoc to 2.0.3 (#766)
- Fix #374 derive higher-kinded Tags from other even-higher kinded Tags (#768)
- Merge
distage-framework-api
intodistage-framework
(#769) - Compute hashcode only based on short type name (#770)
- Move docker support to distage-framework, move Activation & PruningPlanMergingPolicy to distage-core, document AxisTags (#774)
- Do not generate constructor for
make[X]
ifmake[X]
is followed by.from[Y]
(#775) - Fix #367 Very rough de-cake of RuntimeDIUniverse (#776)
- Move old testkit to distage-legacy-testkit (#777)
- Update scala-collection-compat to 2.1.3 (#783)
- Update sbt to 1.3.5 (#784)
- Update classgraph to 4.8.59 (#786)
- Fix Tag resolution inside nested type lambdas (such as BIO BlockingIO/BlockingIO3) (#792)
- Fix cats conversions type inference & implicit priority (#793)
- Update slf4j-api, slf4j-simple to 1.7.30 (#785)
- Fix cats conversion priorities on 2.13; fix BlockingIO.apply (#794)
- Cache composite PluginSources in distage-testkit (#795)
- Really fix cats conversions priority by making all implicit result types disjoint (#796)
- test envs revisited (#799)
- Fix Scalatest test output (#800)
- Update sbt-pgp to 2.0.1 (#788)
- Add LogIO.apply(CustomContext), rename IzLogger.withMapAsCustomContext->withCustomContext (#801)
- Revert "Fix Scalatest test output (#800)"
- Bug/802 scalatest (#803)
- Fix Scalatest test output R2 (#800)
- Update sbt-mdoc to 2.1.0 (#805)
- Update fastparse to 2.2.2 (#804)
- Rename ConcreteConstructor -> ClassConstructor (#809)
- Update sbt-mdoc to 2.1.1 (#811)
- Fix factories with type parameters, with arguments of the same type and with mixed assisted/non-assisted methods (#810)
- Feature/weak reference memoization (#807)
- Update classgraph to 4.8.60 (#813)
- Fix singleton type resolution in LightTypeTag (#816)
- Regard abstract type members in current trait as weak and correctly require implicit Tags for them in TagMacro (#817)
- Feature/docker mount (#815)
- Remove outdated logstage docs (#818)
- Build distage-core for Scala.js (#791)
- Fix running individual tests under IDEA / non-sbt ScalatestRunner – scan classpath for tests only under sbt (#822)
- distage-testkit: fix running test name pattern tests in sbt (#823)
- Update scalatest to 3.1.0 (#824)
- Adopt scalafmt (#748)
- Fix #812 Support abstract classes in TraitConstructor (#825)
- feature/docker-networks (#819)
- Fix #826 Return type parameter constraints for cats Resource conversions in ModuleDefDSL (#827)
- Improve error message when user tries to create a constructor for a type parameter without
AnyConstructor
context bound (#828) - distage-testkit: Restrict overloading in
in
for non-effectful tests toUnit
&Assertion
(#829) - Add ability to abstract over
@Id
and@With
annotations using type aliases (#830) - Fix #753 Change syntax for binding to multiple interfaces. Now
make[X].aliasTo[I1].aliasTo[I2].aliasTo[I3]
(#831) - fundamentals-reflection: precompute LightTypeTag hashCode at compile-time (#832)
- Rename
aliasTo
toaliased
(#833) - In
make
DSL, allow.named
&.tagged
after.from
(#834) - Add DIResourceBase#useEffect; rename DIResource.Cats->FromCats,Zio->FromZIO (#835)
- Add an
@impl
annotation to document that a trait is used as an Auto-Trait or an Auto-Factory (#836) - Replace PluginSource with PluginConfig (#837)