Skip to content

0.10.0

Compare
Choose a tag to compare
@neko-kai neko-kai released this 28 Jan 15:31
· 2036 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.

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 of scala-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 from distage-static to distage-core.
  • 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 SBT
  • distage-framework-docker added support for networks, added no-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 above BIOAsync
  • 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 into distage-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] if make[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 to Unit & 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 to aliased (#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)