DIStage v1.0.0-M1 Release Notes

Release Date: 2020-10-18 // over 2 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