Izumi Project

Izumi (jap. ??, 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 ? Staged, transparent and debuggable runtime & compile-time Dependency Injection Framework,
  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 ? 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.

Dependencies

To use Izumi SBT Toolkit add the following into project/build.sbt:

val izumi_version = "0.9.4"

// sbt toolkit
addSbtPlugin("io.7mind.izumi" % "sbt-izumi" % izumi_version)

// This is Izumi Bill of Materials, see below
addSbtPlugin("io.7mind.izumi" % "sbt-izumi-deps" % izumi_version)

You can use izumi’s BOM definitions to import (from sbt-izumi-deps plugin). BOM will insert the correct version automatically:

distage modules:

libraryDependencies ++= Seq(
  Izumi.R.distage_core,    // Core DIStage library
  Izumi.T.distage_testkit, // Testkit for ScalaTest
  Izumi.R.distage_static,  // Compile-time checks & reflection-less mode
  Izumi.R.distage_config,  // Typesafe Config support
  Izumi.R.distage_plugins, // Classpath discovery support
  Izumi.R.distage_roles,   // Roles & Application entrypoint framework
)

logstage modules:

libraryDependencies ++= Seq(
  Izumi.R.logstage_core,   // Core LogStage library
  Izumi.R.logstage_config, // Configure LogStage with Typesafe Config
  Izumi.R.logstage_di,     // LogStage integration with DIStage
  Izumi.R.logstage_rendering_circe, // Write logs as JSON
  Izumi.R.logstage_adapter_slf4j,   // Route Slf4J logs to LogStage
  Izumi.R.logstage_sink_slf4j,      // Route LogStage logs to Slf4J
)

IdeaLingua modules:

// Idealingua Runtime Dependencies (for use with the Idealingua compiler)
libraryDependencies ++= Seq(
  Izumi.R.idealingua_runtime_rpc_http4s
)

Alternatively, you can use the following artifact names and versions:

libraryDependencies ++= Seq(
  "io.7mind.izumi" %% "distage-core" % "0.9.4",
  "io.7mind.izumi" %% "distage-testkit" % "0.9.4" % Test,
  "io.7mind.izumi" %% "distage-static" % "0.9.4",
  "io.7mind.izumi" %% "distage-config" % "0.9.4",
  "io.7mind.izumi" %% "distage-plugins" % "0.9.4",
  "io.7mind.izumi" %% "distage-roles" % "0.9.4",

  "io.7mind.izumi" %% "logstage-core" % "0.9.4",
  "io.7mind.izumi" %% "logstage-config" % "0.9.4",
  "io.7mind.izumi" %% "logstage-di" % "0.9.4",
  "io.7mind.izumi" %% "logstage-adapter-slf4j " % "0.9.4",
  "io.7mind.izumi" %% "logstage-sink-slf4j " % "0.9.4",
  "io.7mind.izumi" %% "logstage-rendering-circe " % "0.9.4",
  
  "io.7mind.izumi" %% "idealingua-v1-runtime-rpc-http4s" % "0.9.4",
)

You can find ScalaDoc API docs here

You can find Izumi on github here

Latest SNAPSHOT documentation here

Credits

YourKit

YourKit supports open source projects with innovative and intelligent tools for monitoring and profiling Java and .NET applications. YourKit is the creator of YourKit Java Profiler YourKit .NET Profiler and YourKit YouMonitor.