[ANN] Announcing streamly-0.11.0 and streamly-core-0.3.0

Adithya Kumar <[email protected]> Sun, 28 Sep 2025 14:41:06 +0530
Newsgroups gmane.comp.lang.haskell.general
Message-ID <CAMh=VinOZhq0WZY3aobPit2kYgHiE6=EEpjyO8DGRBXu8sSF_w@mail.gmail.com>
--===============6698278977332094753==
Content-Type: multipart/alternative; boundary="000000000000cc8f09063fd8e66b"

--000000000000cc8f09063fd8e66b
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

streamly-0.11.0 and streamly-core-0.3.0
<https://github.com/composewell/streamly> are now available on Hackage. Use=
r
guides
<https://streamly.composewell.com/streamly-0.11.0/Tutorials/why-haskell-str=
eamly.html>,
combined reference and Hoogle search
<https://streamly.composewell.com/search.html?query=3D&ecosystem=3Dstreamly=
-0.11.0-ecosystem.hoo>
across all Streamly ecosystem packages can be found on the Streamly website
<https://streamly.composewell.com/index.html>.

Important features in this release are:

   -

   *Scans with Scanl*: The new Streamly.Data.Scanl
   <https://streamly.composewell.com/haddocks/streamly-core-0.3.0/Streamly-=
Data-Scanl.html>
   module allows you to compose multiple stateful transformations (i.e. sca=
ns)
   on a stream. You can split a stream into multiple constituent streams,
   process each independently, and then merge the results. With
   Streamly.Data.Scanl.Prelude
   <https://streamly.composewell.com/haddocks/streamly-0.11.0/Streamly-Data=
-Scanl-Prelude.html>,
   you can compose concurrent scans i.e. each branch of the split scan can =
run
   in a different thread.
   -

   *New concurrent fold combinators*: Extended Streamly.Data.Fold.Prelude
   <https://streamly.composewell.com/haddocks/streamly-0.11.0/Streamly-Data=
-Fold-Prelude.html>
   with some powerful concurrent fold combinators.
   -

   *Deterministic resource cleanup*: Introduced APIs that guarantee timely
   resource release, eliminating reliance on GC-based cleanup. The library =
now
   offers low-level IO primitives and high-level stream combinators for
   resource management =E2=80=94 everything you can do with resourcet, and =
more, is
   built in.
   -

   *Fair nesting of streams*: Added operations that interleave inner and
   outer streams fairly, ensuring balanced exploration. Particularly powerf=
ul
   for logic programming.
   -

   *Circular buffers*: Added Streamly.Data.RingArray
   <https://streamly.composewell.com/haddocks/streamly-core-0.3.0/Streamly-=
Data-RingArray.html>,
   a high-performance, unboxed circular buffer.
   -

   *File system paths*: Streamly.FileSystem.Path
   <https://streamly.composewell.com/haddocks/streamly-core-0.3.0/Streamly-=
FileSystem-Path.html>
   module leverages streamly arrays, and streams for performance and
   flexibility, provides better safety, and is intended for gradual type sa=
fe
   extensions in future. The type can be directly coerced into OsPath.
   -

   *streamly-text* package provides coercion from the Text type to streamly
   Array type and vice-versa.
   -

   *streamly-fsevents* package provides file system event watch streams
   (fsnotify) =E2=80=94 portable as well as full support for low level OS s=
pecific
   file system event APIs. This was earlier part of the streamly package, n=
ow
   has been split into a separate package.

We=E2=80=99ve made every effort to prevent breaking changes, and the API ha=
s
remained stable since version 0.9.0.

See the following docs for more details:

   - streamly-core changelog
   <https://streamly.composewell.com/streamly-core-0.3.0/Changelog.html>
   and full API diff from streamly-core 0.2.2 to 0.3.0
   <https://streamly.composewell.com/streamly-core-0.3.0/ApiChangelogs/0.2.=
2-0.3.0.html>
   - streamly changelog
   <https://streamly.composewell.com/streamly-0.11.0/Project/Changelog.html=
>
   and full API diff from streamly 0.10.1 to 0.11.0
   <https://streamly.composewell.com/streamly-0.11.0/Project/ApiChangelogs/=
0.10.1-0.11.0.html>

Please visit our blog <https://blog.composewell.com/> for the latest
updates!

--000000000000cc8f09063fd8e66b
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr"><div style=3D"font-family:Verdana,Arial,Helvetica,sans-ser=
if;font-size:10pt"><div><p><a href=3D"https://github.com/composewell/stream=
ly" target=3D"_blank">streamly-0.11.0 and streamly-core-0.3.0</a> are now a=
vailable on Hackage. <a href=3D"https://streamly.composewell.com/streamly-0=
.11.0/Tutorials/why-haskell-streamly.html" target=3D"_blank">User guides</a=
>, <a href=3D"https://streamly.composewell.com/search.html?query=3D&amp;eco=
system=3Dstreamly-0.11.0-ecosystem.hoo" target=3D"_blank">combined referenc=
e and Hoogle search</a> across all Streamly ecosystem packages can be found=
 on the <a href=3D"https://streamly.composewell.com/index.html" target=3D"_=
blank">Streamly
website</a>.<br></p><p>Important features in this release are:<br></p><ul><=
li><p style=3D"margin-top:0px"><b>Scans with <code>Scanl</code></b>: The ne=
w <a href=3D"https://streamly.composewell.com/haddocks/streamly-core-0.3.0/=
Streamly-Data-Scanl.html" target=3D"_blank">Streamly.Data.Scanl</a> module =
allows you to compose multiple stateful transformations (i.e.
scans) on a stream. You can split a stream into multiple constituent
streams, process each independently, and then merge the results. With <a hr=
ef=3D"https://streamly.composewell.com/haddocks/streamly-0.11.0/Streamly-Da=
ta-Scanl-Prelude.html" target=3D"_blank">Streamly.Data.Scanl.Prelude</a>,
you can compose concurrent scans i.e. each branch of the split scan can
run in a different thread.<br></p></li><li><p style=3D"margin-top:0px"><b>N=
ew concurrent fold combinators</b>: Extended <a href=3D"https://streamly.co=
mposewell.com/haddocks/streamly-0.11.0/Streamly-Data-Fold-Prelude.html" tar=
get=3D"_blank">Streamly.Data.Fold.Prelude</a> with some powerful concurrent=
 fold combinators.<br></p></li><li><p style=3D"margin-top:0px"><b>Determini=
stic resource cleanup</b>: Introduced APIs that guarantee
timely resource release, eliminating reliance on GC-based cleanup. The
library now offers low-level IO primitives and high-level stream
combinators for resource management =E2=80=94 everything you can do with <c=
ode>resourcet</code>, and more, is built in.<br></p></li><li><p style=3D"ma=
rgin-top:0px"><b>Fair nesting of streams</b>: Added operations that interle=
ave inner
and outer streams fairly, ensuring balanced exploration. Particularly
powerful for logic programming.<br></p></li><li><p style=3D"margin-top:0px"=
><b>Circular buffers</b>: Added <a href=3D"https://streamly.composewell.com=
/haddocks/streamly-core-0.3.0/Streamly-Data-RingArray.html" target=3D"_blan=
k">Streamly.Data.RingArray</a>,
a high-performance, unboxed circular buffer.<br></p></li><li><p style=3D"ma=
rgin-top:0px"><b>File system paths</b>: <a href=3D"https://streamly.compose=
well.com/haddocks/streamly-core-0.3.0/Streamly-FileSystem-Path.html" target=
=3D"_blank">Streamly.FileSystem.Path</a> module leverages streamly arrays, =
and streams for performance and
flexibility, provides better safety, and is intended for gradual type
safe extensions in future. The type can be directly coerced into OsPath.<br=
></p></li><li><p style=3D"margin-top:0px"><b>streamly-text</b> package prov=
ides coercion from the <code>Text</code> type to
streamly <code>Array</code> type and vice-versa.<br></p></li><li><p style=
=3D"margin-top:0px"><b>streamly-fsevents</b> package provides file system e=
vent watch streams
(fsnotify) =E2=80=94 portable as well as full support for low level OS
specific file system event APIs. This was earlier part of the streamly
package, now has been split into a separate package.<br></p></li></ul><p>We=
=E2=80=99ve made every effort to prevent breaking changes, and the API has =
remained
stable since version 0.9.0.<br></p><p>See the following docs for more detai=
ls:<br></p><ul><li><a href=3D"https://streamly.composewell.com/streamly-cor=
e-0.3.0/Changelog.html" target=3D"_blank">streamly-core
changelog</a> and <a href=3D"https://streamly.composewell.com/streamly-core=
-0.3.0/ApiChangelogs/0.2.2-0.3.0.html" target=3D"_blank">full API diff from=
 streamly-core 0.2.2 to
0.3.0</a><br></li><li><a href=3D"https://streamly.composewell.com/streamly-=
0.11.0/Project/Changelog.html" target=3D"_blank">streamly
changelog</a> and <a href=3D"https://streamly.composewell.com/streamly-0.11=
.0/Project/ApiChangelogs/0.10.1-0.11.0.html" target=3D"_blank">full API dif=
f from streamly 0.10.1 to
0.11.0</a><br></li></ul><p>Please visit our <a href=3D"https://blog.compose=
well.com/" target=3D"_blank">blog</a> for the latest updates!<br></p></div>=
</div><br></div>

--000000000000cc8f09063fd8e66b--

--===============6698278977332094753==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

_______________________________________________
Haskell mailing list -- [email protected]
To unsubscribe send an email to [email protected]

--===============6698278977332094753==--