This release brings a few important bug fixes related to ZPool
and ZSTM
as well as some optimizations. It also fixes a binary incompatibility that caused runtime errors when using an older version ZIO Streams together with ZIO 2.1.9.
Important note about ZPool changes
There are 2 fixes / changes to ZPool that might affect the behaviour of an application so users are advised to revise the following in cases of unexpected behaviour after upgrading to ZIO 2.1.10+.
Eager / strict initialization of ZPool's resources
In previous ZIO versions, the initialization of ZPool resources was done lazily in a daemon fiber. e.g., this code would previously print the message, but will now "hang" awaiting for the pool to be initialized to its full size:
ZPool.make(ZIO.never, 10) *> ZIO.debug("Pool initialized")
We believe that this change makes the behaviour of ZPool more predictable (and referentially transparent!) as previously there were no guarantees that the ZPool resources would be initialized during the creation of the pool. However, this might result in the initialization of the pool hanging in cases that the acquisition of the resources itself hangs. Therefore users are advised to consider adding timeouts to the resource initialization effect.
Strict finalization of ZPool resources
In previous versions, it was possible for the ZPool finalizers to be interrupted, which would lead to potential leak of resources (see this issue for more info). Starting with ZIO 2.1.10+, closing a ZPool requires all of the resource finalizers to finish first. As with (1), this might lead to some unexpected behaviour if the finalization of a resource hangs indefinitely, so users are advised to add timeouts to the finalizers of resources used with ZPool.
What's Changed
- Use "unsafe" methods in
Ref.Atomic
by @kyri-petrou in #9155 - Fix ZPool finalizers not running when resource acquisition fails or is interrupted by @kyri-petrou in #9163
- Initialize ZPool to its full size in the calling fiber by @kyri-petrou in #9164
- Install signal handlers when running test suites by @kyri-petrou in #9166
- Ensure ZPool finalizers are run if initialization is interrupted by @kyri-petrou in #9174
- Ensure all FiberId recursive methods are stack safe by @guymers in #9173
- Inherit child fibers created by merged streams by @kyri-petrou in #9180
- Fix assert macro throwing missing method error in Scala 3 by @kyri-petrou in #9183
- Add mapErrorZIO to streams by @cipriansofronia in #9187
- Use reference equality in
ZEnvironment
when applying optimizations by @kyri-petrou in #9207 - Fix binary incompatibility issue in zio v2.1.7+ by @kyri-petrou in #9223
- Attempt to obtain new locks without retrying transaction in ZSTM by @kyri-petrou in #9221
Other changes (CI, dependencies and documentation)
- chore(deps): update dependency @types/react to v18.3.5 by @renovate in #9154
- fix(deps): update dependency postcss to v8.4.42 by @renovate in #9156
- Restyling welcome page by @SvMak in #9112
- fix(deps): update dependency postcss to v8.4.43 by @renovate in #9158
- fix(deps): update dependency postcss to v8.4.44 by @renovate in #9159
- Add zio-apache-parquet to ecosystem community docs by @grouzen in #9157
- fix(deps): update dependency postcss to v8.4.45 by @renovate in #9169
- fix(deps): update dependency @zio.dev/zio-prelude to v1.0.0-rc31 by @renovate in #9171
- Set JDK release version to 11 by @kyri-petrou in #9177
- fix(deps): update dependency @zio.dev/zio-http to v3.0.0 by @renovate in #9190
- Fix logo resolution by @SvMak in #9188
- fix(deps): update dependency postcss to v8.4.47 by @renovate in #9196
- fix(deps): update dependency tailwindcss to v3.4.11 by @renovate in #9192
- fix(deps): update dependency @zio.dev/zio-query to v0.7.6 by @renovate in #9197
- chore(deps): update dependency @types/react to v18.3.6 by @renovate in #9198
- Documentation: Fix The Link to OpenTracing Documentation Page by @khajavi in #9161
- chore(deps): update dependency @types/react to v18.3.7 by @renovate in #9199
- fix(deps): update dependency @zio.dev/zio-http to v3.0.1 by @renovate in #9200
- fix(deps): update dependency @zio.dev/zio-bson to v1.0.7 by @renovate in #9201
- fix(deps): update dependency @zio.dev/zio-schema to v1.5.0 by @renovate in #9204
- fix(deps): update dependency tailwindcss to v3.4.12 by @renovate in #9202
- chore(deps): update dependency @types/react to v18.3.8 by @renovate in #9206
- Remove mention of discontinued tools by @namingbe in #9213
- Typos in zpipeline.md by @dubinsky in #9219
- fix(deps): update dependency tailwindcss to v3.4.13 by @renovate in #9216
- chore(deps): update dependency prettier-plugin-tailwindcss to v0.6.8 by @renovate in #9218
- chore(deps): update dependency @types/react to v18.3.9 by @renovate in #9217
- Doc: Update info about Java versions supported by @guizmaii in #9224
- chore(deps): update dependency @types/react to v18.3.11 by @renovate in #9225
- Doc: Needs to use serviceWithZIO not serviceWith by @fancellu in #9226
- fix(deps): update dependency @zio.dev/zio-lambda to v1.0.5 by @renovate in #9230
- Fix documentation for TestLens#right by @callado4 in #9232