# Effectful-2.3.0.0 is now available

**URL:** <https://discourse.haskell.org/t/effectful-2-3-0-0-is-now-available/7582>\
**Category:** Announcements\
**Created:** [September 13, 2023, 8:45pm UTC](https://discourse.haskell.org/t/effectful-2-3-0-0-is-now-available/7582 "2023-09-13T20:45:13Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![arybczak](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.haskell.org/arybczak/32/2527_2.png) [@arybczak](https://discourse.haskell.org/u/arybczak)\
**Post date:** [September 13, 2023, 8:45pm UTC](https://discourse.haskell.org/t/effectful-2-3-0-0-is-now-available/7582/1 "2023-09-13T20:45:13Z")

</div>

Hey everyone,

Today I released [effectful-core-2.3.0.0](https://hackage.haskell.org/package/effectful-core), [effectful-2.3.0.0](https://hackage.haskell.org/package/effectful) and [effectful-plugin-1.1.0.2](https://hackage.haskell.org/package/effectful-plugin).

Highlights:

- Added support for turning an effect handler into an effectful operation via the [Provider](https://hackage.haskell.org/package/effectful-core/docs/Effectful-Provider.html) effect.
- Added support for having multiple effects of the same type in scope via the [Labeled](https://hackage.haskell.org/package/effectful-core/docs/Effectful-Labeled.html) effect.
- Added various `ByteString` related functions to the `FileSystem` effect.
- Added a new `Console` effect for interaction with stdin/stdout.
- Plugin now supports GHC 9.8.

---

<div class="post-metadata">

**Author:** ![tomjaguarpaw](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.haskell.org/tomjaguarpaw/32/1230_2.png) [@tomjaguarpaw](https://discourse.haskell.org/u/tomjaguarpaw)\
**Post date:** [September 13, 2023, 9:38pm UTC](https://discourse.haskell.org/t/effectful-2-3-0-0-is-now-available/7582/2 "2023-09-13T21:38:14Z")

</div>

`Labeled` is interesting. It seems that it brings a particular effect to the “front” so that it’s the default one used for an operation of matching type.

---

<div class="post-metadata">

**Author:** ![FPtje](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.haskell.org/fptje/32/5773_2.png) [@FPtje](https://discourse.haskell.org/u/FPtje)\
**Post date:** [September 14, 2023, 3:30pm UTC](https://discourse.haskell.org/t/effectful-2-3-0-0-is-now-available/7582/3 "2023-09-14T15:30:19Z")

</div>

Great work! I’m excited about the `Provider`: I’ve noticed a pattern where the runner of some effect needs an argument. In some of those cases, that means the runner doesn’t go in the top-level set of runners. With Provider, I could run the runner at top level, and provide the relevant parameter later.

The downside, though, is that this `Provider_ MyEffect MyParameterType` would permeate through most (/all?) uses of the effect. 🤔

I would need to play with it to see where it works well and where it wouldn’t. I’m excited nonetheless!

---

<div class="post-metadata">

**Author:** ![Ambrose](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.haskell.org/ambrose/32/5672_2.png) [@Ambrose](https://discourse.haskell.org/u/Ambrose)\
**Post date:** [September 14, 2023, 7:44pm UTC](https://discourse.haskell.org/t/effectful-2-3-0-0-is-now-available/7582/4 "2023-09-14T19:44:51Z")

</div>

Hm `Provider` is interesting. It seems to be about initializing interpreters if I read right?

I approach that problem slightly differently with `cleff` in my game engine [here](https://gitlab.com/macaroni.dev/mayhem-engine/-/blob/3e6fe0b49d0b5af2f1e4ef5f74721bf61a3d79be/src/Mayhem/Engine/Effects/Expansion.hs#L19). I compose interpreter construction with [bind](https://gitlab.com/macaroni.dev/mayhem-engine/-/blob/3e6fe0b49d0b5af2f1e4ef5f74721bf61a3d79be/src/Mayhem/Console/Jam'22.hs#L61). This composed nicely with Managed, for instance.

I bet I can steal `Provider` a bit and make my thing even better potentially.
