Releases: 7mind/izumi
1.2.19
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
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:Will output the same message aslogger.logValues(Info)(a, b, c)
logger.info(s"$a, $b, $c")
- This adds new method
- LogStage: logMethod support by @nikita-ty754 (#2266)
- This adds new methods
logMethod
andlogMethodF
that will log the arguments and result of a method, or its error if method throws / fails effectfully:Will output:logger.logMethodF(Info)(f(a, b, c))
If method succeeds, or:Call to f(a=1, b=2, c=3) => result=6
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
- This adds new methods
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:You may write:for { x <- conjureInt _ <- assertIO(x == 2) } yield ()
You can also use results of two effects in the predicate:assertIO(conjureInt)(_ == 2)
assertIO(conjureInt, conjureInt)(_ == _)
- This adds new overloads for
distage-core
- Fix compile-time crash on Scala 3.7+ when using
makeTrait
orTraitConstructor
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
, removeSemaphore1.fromSTM
, renameTypedError.apply
toTypedError.noMessage
, useuninterruptibleExcept
instead of bracket in Lifecycle methods by @neko-kai (#2271) - Add
ParallelErrorAccumulatingOps2
, addPanic2#fromSandboxExit
, addApplicative2#zip
by @neko-kai (#2284) - BIO: Add methods
fromAttempt
andifThenFail
toApplicativeError2
, addunsafe.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
- @nikita-ty754 made their first contribution in #2272
Full Changelog: v1.2.17...v1.2.18
1.2.17
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
. OpenSubcontextImpl
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
1.2.15
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
1.2.13
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?)
- Logging rules now support wildcards (
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)
AddedConfigDoc
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
- Docker cleanups by @pshirshov (#2174)
Full Changelog: v1.2.12...v1.2.13
1.2.12
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
BootstrapModuleDef
s asexposed
to fix compatibility
- Most likely you'll have to mark your custom bindings in
-
Locator-private instances cannot be seen by inherited locators.
There are 3 supported modes:- All the bindings are public unless explicitly marked as
confined
(the old behavior, kept as the default one) - All the bindings are private unless explicitly marked as
exposed
- 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 allexposed
bindings in bootstrap modules to be roots. - All the bindings are public unless explicitly marked as
-
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
- Define log levels for specific lines, such as
- 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