Skip to content

Releases: 7mind/izumi

0.9.13

29 Nov 13:25
Compare
Choose a tag to compare

Docker containers can now be declared as test dependencies / Resources in distage-testkit:

object PostgresDocker extends ContainerDef {
  val primaryPort: DockerPort = DockerPort.TCP(5432)

  override def config: Config = {
    ContainerConfig(
      image = "library/postgres:latest",
      ports = Seq(primaryPort),
      reuse = true,
    )
  }
}

Dependencies can be declared between docker containers:

object DockerPlugin extends DockerContainerModule[zio.Task] with PluginDef {
  // this container will start once `DynamoContainer` is up and running
  make[PostgresDocker.Container].fromResource {
    PostgresDocker.make[zio.Task]
      .dependOnDocker(DynamoDocker)
  }
}

Use in test:

class DBTest extends DistageBIOSpecScalatest[zio.IO] {
  "postgres docker" should {
     "respond to queries" in {
        (doobie: Transactor[zio.Task], pg: PostgresDocker.Container) =>
          doobie.trans.apply(sql"select 1")
     }
  }
}

fundamentals-reflection:

  • Shade boopickle dependency (#737)
  • Fix LightTypeTag bug resolve prefixes of annotated types

fundamentals-bio:

  • Add BIOAsync.parTraverse, parTraverse_, parTraverseN_ (1ed31c1)

distage:

  • Docker resources (#732) by @pshirshov
  • Move CatsDIEffectModule from distage-model to distage-roles (07d3ddd)
  • Add IdentityDIEffectModule (004af1c)

distage-testkit:

  • distage-testkit: Run tests in parallel, add DIEffectAsync (499f765)
  • distage-testkit: Configure test class-wide options in SpecConfig (ff9a801)

dependency updates:

  • Update zio-interop-cats to 2.0.0.0-RC8 (#734)
  • Update zio to 1.0.0-RC17 (#733)
  • Update classgraph to 4.8.54 (#736)
  • Update sbt-scoverage to 1.6.1 (#738)

0.9.12

21 Nov 12:44
Compare
Choose a tag to compare

fundamentals-bio:

  • Implicit conversions from BIOAsync/BIOFork to cats-effect Async/Concurrent (#729)
  • Add BIOAsync.fromFuture, .fromFutureJava (#730)
  • BIOPrimitives.mkLatch now only creates BIOPromise[Unit] (c76c52a)

distage:

  • Fix #727 Add RoleAppLauncher implementation for BIO, independent of cats.LiftIO (#731)

0.9.12-M2

15 Nov 15:05
Compare
Choose a tag to compare
0.9.12-M2 Pre-release
Pre-release

distage:

Added new ModuleDef syntax bind for binding a single implementation to multiple interfaces:

new ModuleDef {
  bind[ImplXYZ]
    .to[X]
    .to[Y]("special")
    .to[Z]
  make[User]
}

where User:

// User doesn't have to know that both X and Y
// are the same instance of ImplXYZ, it only knows
// of separate interfaces
class User(
  x: X,
  y: Y @Id("special"),
) {
  ...
}

Desugaring:

  bind[ImplXYZ]
    .to[X]
    .to[Y]("special")
    .to[Z]

<=>

  make[ImplXYZ]
  make[X].using[ImplXYZ]
  make[Y].named("special").using[ImplXYZ]
  make[Z].using[ImplXYZ]
  • Binding implementation to multiple interfaces (#652)

0.9.12-M1

15 Nov 15:02
Compare
Choose a tag to compare
0.9.12-M1 Pre-release
Pre-release

fundamentals-bio:

Now BIO* typeclass syntax is available in scope everywhere where a BIO* type is imported. You can start chaining transformations immediately:

import izumi.functional.bio.{BIOMonad, BIOPrimitives, F}

def adder[F[+_, +_]: BIOMonad: BIOPrimitives](i: Int): F[Nothing, Int] =
  F.mkRef(0).flatMap(ref => ref.update(_ + i) *> ref.get)

flatMap and *> extension methods are available automatically, No syntax import is necessary.

All changes:

  • Zero-import BIO syntax via implicit punning (#587)
  • Workaround scala/bug#11803 - move all BIO* classes to package object (#726)
  • trifunctorize BIOFork to BIOFork3 (#726)
  • move bio.BIO.catz cats converstions to bio.catz
  • Suspend error argument in BIO.fromOption; remove Remove BIO.fromOption variant that returns F[Unit, A] (has been unused so far) (#721)
  • Reduce amount of implicit conversions in scope by inheriting syntax classes (#722)
  • Add BIOError.tapError (62aa18c)

distage:

logstage:

  • slf4j bridge filters out null throwables (264fe5b)

idealingua:

dependency updates:

  • Update jawn-parser to 0.14.3 (#723)

0.9.11

07 Nov 17:38
Compare
Choose a tag to compare

fundamentals-reflection:

  • Fix slow LightTypeTag caching impl, enable caching by default during compile (#715)

distage:

  • Add support for ZManaged in DIResource: DIResource.fromZIO/.toZIO, support direct binding of ZManaged in make[X].fromResource
  • better set key disambiguation (#713)

logstage:

  • Add LogstageZIO.withDynamicContext (#720)
  • logstage: make LogIO inherit from UnsafeLogIO, this makes LogIO contain all logger methods; add UnsafeLogIO#acceptable method to check the current log level (#719)

idealingua:

  • Derive Codec in IRTWithCirce instead of an Encoder/Decoder pair (#718)

dependency updates:

  • Update classgraph to 4.8.53 (#717)

0.9.10

04 Nov 00:29
Compare
Choose a tag to compare

fundamentals-reflection:

  • Enable caching for runtime LightTypeTag creation by default (#712)

fundamentals-bio:

  • Change Clock.Standard to object

dependency updates

  • Update sbt-mdoc to 2.0.0 (#711)
  • update scalameta to 4.2.5
  • Update zio-interop-cats to 2.0.0.0-RC7 (#709)
  • Update zio to 1.0.0-RC16 (#706)
  • Update slf4j-api, slf4j-simple to 1.7.29 (#710)

0.9.9

28 Oct 20:01
Compare
Choose a tag to compare

fundamentals-bio, fundamentals-platform:

  • Move Clock, Entropy, Identity, IzUUID from fundamentals-platform to fundamentals-bio (#705)

0.9.8

26 Oct 22:30
Compare
Choose a tag to compare

fundamentals-bio:

  • Add BIOAsync.repeatUntil
  • fundamentals-bio: Add BIOPrimitives (BIORef, BIOPromise, BIOSemaphore)

distage:

  • Merge distage-static into distage-core (#704)
  • distage-roles: move *Impls to companion object (#701)
  • Set element binding keys are now disambiguated during construction, not during planning (#696)
  • Re-add PartialOrder, Eq, Hash instances for ModuleBase

fundamentals-platform:

  • move CodePosition package to fundamentals.language

dependency updates:

  • Update circe-core, circe-literal, ... to 0.12.3 (#703)
  • Update sbt-izumi, sbt-izumi-deps to 0.0.39 (#702)
  • Update classgraph to 4.8.52 (#700)

0.9.7

17 Oct 22:28
Compare
Choose a tag to compare

fundamentals-reflection:

  • Add Strong LTag summoner in fundamentals-reflection (#692)
    LTag is available only for types that are fully known, same as TypeTag and opposed to WeakTypeTag/LTag.Weak
  • Add support for Literal Types (#697)
  • Fix StackOverflowError when comparing types of form A.type where { object A extends A; trait A }

distage:

  • Fix ClassCastException in ResourceRewriter when subtypes of AutoCloseable were added as Set members and subsequently rewritten to DIResource (#695)
  • Rename DIResource.Flatten/FlattenCats to DIResource.Of/OfCats (#694)
  • DIResource.FromAutoCloseable is now covariant
  • Fix assertion failed "TypeTag cannot be migrated to different mirror" (#685)

dependency updates:

  • Update zio to 1.0.0-RC15 (#690)
  • Update zio-interop-cats to 2.0.0.0-RC6 (#693)

Lightweight Reflection

14 Aug 00:35
Compare
Choose a tag to compare

This release introduced preliminary implementation of Lightweight Scala Reflection (Macro RTTI).
You may find more details in our blog