DIStage v1.0.0-M1 Release Notes

Release Date: 2020-10-18 // over 3 years ago

Previous changes from v0.10.18

  • Izumi

    What is it?

    Izumi (jp. 泉水, spring) is an ecosystem 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. distage-testkit – Hyper-pragmatic pure FP Test framework. Shares heavy resources globally across all test suites; lets you easily swap implementations of component; uses your effect type for parallelism. 🐳 3. distage-framework-docker – A distage extension for using docker containers in tests or for local application runs, comes with example Postgres, Cassandra, Kafka & DynamoDB containers. 🔊 4. LogStage – Automatic structural logs from Scala string interpolations, 💅 5. BIO - A typeclass hierarchy for tagless final style with Bifunctor and Trifunctor effect types. Focused on ergonomics and ease of use with zero boilerplate. 🚚 6. izumi-reflect (moved to zio/izumi-reflect) - Portable, lightweight and kind-polymorphic alternative to scala-reflect's Typetag for Scala, Scala.js, Scala Native and (soon) Dotty ⚡️ 7. IdeaLingua (moved to 7mind/idealingua-v1) – API Definition, Data Modeling and RPC language, optimized for fast prototyping – like gRPC or Swagger, but with a human face. Generates RPC servers and clients for Go, TypeScript, C# and Scala, 🏗 8. 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)
    2. 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 since 0.10.17:


    • 👌 Improved compatibility with Graal Native Image compiler by @pshirshov
    • ➕ Added non-reflective way to define roles via RoleModuleDef & RoleModuleDef#makeRole. Reflective auto-detection of Roles (automatic addition of all inheritors of RoleService/RoleTask to roles list) is now deprecated. Please declare roles explicitly via RoleModuleDef:

      def rolesModule[F[+_, +_]: TagKK]: ModuleDef = new RoleModuleDef { makeRole[LeaderboardRole[F]] }

    • 🛠 Fixed config loader priority: all explicit configs override all reference configs, instead of role references having a higher priority than common config (#1175)


    • 0️⃣ Now full stacktraces are printed by default for all errors during creation of the object graph. This can be disabled by overriding key Boolean @Id("izumi.distage.interpreter.full-stacktraces") in BootstrapModules or setting system property -Dizumi.distage.interpreter.full-stacktraces=false (#1192)
    • 🚚 Backported new ModuleDef ops from 0.11.0 - --(Set), filter, filterBindings, tagged, removeTags, untagged, removed tagwiseMerge

    🐳 distage-framework-docker:

    ✅ distage-testkit:

    • ➕ Added activation axis qualifier to TestConfig#forcedRoots and TestConfig#memoizationRoots. Now it's possible to specify memoization Roots for multiple Activation configurations at once within a single TestConfig. By @Caparow (#1153)


    • ➕ Added BIOExit.map/.leftMap/.flatMap & BIO typeclass instances for BIOExit (#1190)

    🔀 All changes merged since 0.10.17:

    • 🔧 Make printing full stacktraces in PlanInterpreter configurable via BoostrapModules & system properties (#1192)
    • 🚚 Backport new ModuleDef ops from 0.11 - --(Set), filter, filterBindings, tagged, removeTags, untagged, remove tagwiseMerge
    • 🔄 Change axis keys activation rules (#1191)
    • ➕ Add BIOExit.map/.leftMap/.flatMap (#1190)
    • ⚡️ Update zio to 1.0.1 (#1187)
    • 🖨 Print full exception stacktrace wherever possible instead of just getMessage (#1186)
    • ➕ Add activation axis to forced and memoization roots. (#1153)
    • ⚡️ Update magnolia to 0.17.0 (#1180)
    • 🛠 Fix config loader priority: all explicit configs override all reference configs, instead of role references having a higher priority than common config (#1175)
    • 🐳 distage-framework-docker: add default parameters and default convenience object to PostgresFlyWayDocker
    • 🐳 distage-framework-docker: Postgres with FlyWay container. (#1170)
    • ⚡️ Update scalatest to 3.2.1 (#1173)
    • ↪ native-image fixes & workarounds