Skip to content

Releases: 7mind/izumi

1.2.19

14 Jun 13:20
Compare
Choose a tag to compare

fundamentals-bio:

  • Embed ParallelErrorAccumulatingOps into the hierarchy, add syntax. Add traverseAccumErrorsNEList by @neko-kai (#2285)

distage-core

  • Add optional Quasi*/DefaultModule instances for Try/Either under modules.support.unsafe.EitherSupport/TrySupport by @neko-kai (#2286)

Full Changelog: v1.2.18...v1.2.19

1.2.18

09 Jun 21:02
Compare
Choose a tag to compare

logstage-core

  • Logstage: logValues support by @nikita-ty754 (#2272)
    • This adds new method logValues that can be used as a shorthand for logging values without an accompanying message:
      logger.logValues(Info)(a, b, c)
      Will output the same message as
      logger.info(s"$a, $b, $c")
  • LogStage: logMethod support by @nikita-ty754 (#2266)
    • This adds new methods logMethod and logMethodF that will log the arguments and result of a method, or its error if method throws / fails effectfully:
      logger.logMethodF(Info)(f(a, b, c))
      Will output:
      Call to f(a=1, b=2, c=3) => result=6
      
      If method succeeds, or:
      Call to f(a=1, b=2, c=3) => error=IllegalArgumentException: ...
      
      logMethod can also optionally log type parameters and/or implicit parameters of the method:
      logger.logMethodF(Info, printTypes = true, printImplicits = true)(f(a, b, c))
      Call to f[A=Int](a=1, b=2, c=3)(using dummy=scala.DummyImplicit@2e013ba1) => result=6
      

distage-testkit-scalatest

  • Testkit: added shorthand assertIO methods by @YaroslavSagach (#2267)
    • This adds new overloads for assertIO to help with writing assertions using effect results, e.g. now instead of:
      for {
        x <- conjureInt
        _ <- assertIO(x == 2)
       } yield ()
      You may write:
      assertIO(conjureInt)(_ == 2)
      You can also use results of two effects in the predicate:
      assertIO(conjureInt, conjureInt)(_ == _)

distage-core

  • Fix compile-time crash on Scala 3.7+ when using makeTrait or TraitConstructor by @neko-kai (#2275)
  • locator always returns itself on Locator lookups by @pshirshov (#2278)
  • Distage: Added test for trait generation with constructors + sort intersection members by @YaroslavSagach (#2268)

fundamentals-bio

  • BIO: Add Lifecycle.makeUninterruptibleExcept, Semaphore1.lifecycle, Mutex2.lifecycle, TypedError.wrapIfNotThrowable, remove Semaphore1.fromSTM, rename TypedError.apply to TypedError.noMessage, use uninterruptibleExcept instead of bracket in Lifecycle methods by @neko-kai (#2271)
  • Add ParallelErrorAccumulatingOps2, add Panic2#fromSandboxExit, add Applicative2#zip by @neko-kai (#2284)
  • BIO: Add methods fromAttempt and ifThenFail to ApplicativeError2, add unsafe.MaybeSuspend2 by @neko-kai (#2280)
  • fundamentals-bio: In TemporalZio.timeout prevent interruption from arriving during .map(Some(_)) when timeout is used in an uninterruptible section by @neko-kai (#2270)

distage-framework

  • Improved error-free CLI parser by @pshirshov (#2281)
  • distage-framework: Add Option[IzArtifact] @Id("app.artifact") to application boostrap module by @neko-kai (#2279)

New Contributors

Full Changelog: v1.2.17...v1.2.18

1.2.17

28 Mar 19:25
Compare
Choose a tag to compare

distage-core

  • DSL: Fix .addDependency not working with resource bindings. Throw when .modify/.annotateParameter are used on non-function bindings instead of silently creating a mutator. Throw when parameter is not found in .annotateParameter instead of doing nothing. by @neko-kai in #2255
  • Subcontext: add unsafeModify. Open SubcontextImpl class. Rename SubcontextImpl .empty->.initial by @neko-kai in #2225
  • DSL: Added .named methods with optional identifier by @YaroslavSagach in #2264
  • Docs: Locator-private bindings documentation + minor typo fixes by @YaroslavSagach in #2258

distage-framework

  • distage-framework: Enable typesafe-config CONFIG_FORCE_* environment variable config overrides by default by @neko-kai in #2265

Full Changelog: v1.2.16...v1.2.17

1.2.16

28 Nov 18:30
Compare
Choose a tag to compare

distage-framework

  • Fixed a regression in 1.2.13 that caused TerminatingHandler in distage-framework Launchers to exit silently and not print most startup exceptions (cc9c233)

Full Changelog: v1.2.15...v1.2.16

1.2.15

22 Sep 17:01
Compare
Choose a tag to compare

distage-extension-config

  • Fixed a regression in 1.2.13 that surfaced a Scala 3 bug (scala/scala3#21622) that rarely lead to nondeterministic failures in distage-core's make macro (5f9b755)

Full Changelog: v1.2.14...v1.2.15

1.2.14

21 Sep 00:01
Compare
Choose a tag to compare

logstage-core

  • Fixed regression #2190 in 1.2.13 where log level config was ignored for exact class/method matches (8f16253)

Full Changelog: v1.2.13...v1.2.14

1.2.13

18 Sep 23:46
Compare
Choose a tag to compare

logstage-core

  • Better logger config by @pshirshov (#2170)
    • Logging rules now support wildcards (my.package.*.something)
    • ConfigurableLogRouter now supports specifying different sinks for different prefixes (previously it only supported one set of sinks). This can be configured programmatically but not in the config (yet?)

distage-framework

  • Add command-line option --ignore-all-reference-configs/-nc. by @neko-kai (#2187)
  • Fix config override order for common reference configs by @neko-kai (#2186)

distage-extension-config

  • Config comments by @pshirshov (#2173)
    Added ConfigDoc annotation. Attaches a $comment field with the contents of the annotation to
    config's JSON Schema generated by ConfigWriter.

distage-core

  • Cleaner startup failure messages, switched DIKey rendering to scala-styled LTT renderer by @pshirshov (#2175)
  • Binding origin case class by @pshirshov (#2169)

distage-framework-docker

Full Changelog: v1.2.12...v1.2.13

1.2.12

13 Aug 17:59
Compare
Choose a tag to compare

breaking changes

  • #1968 Implement locator-private bindings by @pshirshov (#2162)
    • THIS CHANGE BREAKS COMPATIBILITY WITH PREVIOUS VERSIONS if you have any custom bootstrap modules in your code.

      • Most likely you'll have to mark your custom bindings in BootstrapModuleDefs as exposed to fix compatibility
    • Locator-private instances cannot be seen by inherited locators.
      There are 3 supported modes:

      1. All the bindings are public unless explicitly marked as confined (the old behavior, kept as the default one)
      2. All the bindings are private unless explicitly marked as exposed
      3. Only GC roots are public

      For bootstrap injectors the default behavior is (3). Also, from now on bootstrap planning uses predefined set of roots instead of Roots.Everything, so bootstrap contexts too are now subjected to garbage collection.

      All the bootstrap bindings which you need to be available in the downstream locators must be explicitly marked as exposed. Since there is no way to explicitly define GC roots for the bootstrap injector, it considers all exposed bindings in bootstrap modules to be roots.

new features

  • logstage: Line-level logging configuration by @pshirshov (#2153)
    • Define log levels for specific lines, such as izumi.logstage.sink.ExampleService.start:26,27
  • distage-framework: Platform packages by @pshirshov (#2160)

fixes

  • distage-testkit: Fix unmemoized weak elements of unmemoized sets being forcibly shared across tests by @neko-kai (#2163)
  • distage-extension-config: Fix config merge order, add test by @neko-kai (#2161)
  • logstage: Handle null logger name for acceptable check by @cholmes-axoni (#2145)

other

  • Extract FileLockMutex into fundamentals-bio by @neko-kai (#2158)
  • Downgrade to 3.3.4-RC1 to support Scala 3.3 LTS by @neko-kai (#2154)
  • Speed up Scala 3 macros, no longer create anonymous classes when expanding macros

Full Changelog: v1.2.11...v1.2.12

1.2.11

24 Jun 21:02
Compare
Choose a tag to compare
  • Add ConfigModuleDefNoMeta, a variant of ConfigModuleDef without DIConfigMeta generation by @neko-kai (#2142)
  • BIO: Add FiberLocal2 and FiberRef2 by @neko-kai (#2143)

Full Changelog: v1.2.10...v1.2.11

1.2.10

18 Jun 16:16
Compare
Choose a tag to compare
  • Hotfix: fix a regression in 1.2.9 where ConfTags with similar paths were lost when module was included by @neko-kai (#2136)

Full Changelog: v1.2.9...v1.2.10