Releases: typelevel/fs2
v1.0.0
This is the first release of the FS2 1.0.x series. There are a substantial number of changes from 0.10 to 1.0. Primarily, this release provides interoperability with cats-effect 1.0.0. The migration guide contains details on how to migrate from 0.10 to 1.0. In addition to the changes listed in the migration guide, 1.0.0 contains the following notable changes:
- Significantly better performance overall
- Simpler API overall, including much less need for type annotations /
covary
calls - Removal of
Segment
in favor ofChunk
, resulting in both faster and simpler to understand code - Faster and more flexible queues
- Fast, efficient support for fanout via
fs2.concurrent.{Broadcast, Balance}
types along with methods likeStream#broadcast
andStream#balance
- Interop with cats-effect cancelation support (e.g., a compiled stream can be started and then the resulting fiber canceled with all the normal resource finalization guarantees)
- Support for grouping
n
elements in bounded time viagroupWithin
- Stream switching via
switchMap
- Addition of "fallible streams" -- streams which may fail with an error but are otherwise pure. Pure streams are now truly pure -- they cannot fail with an error.
- Flexible stream compilation support, featuring a single API for compilation of pure streams, fallible streams, and effectful streams.
There are also two new modules:
- fs2-reactive-streams - This module is the work of @zainab-ali and was imported from https://github.com/zainab-ali/fs2-reactive-streams. It is now a submodule of the fs2 repository.
- fs2-experimental - This module contains APIs that aren't yet considered stable but might nonetheless be useful. At the present time, this includes the new
PubSub
datatype, which is used internally to implement queues & signals as well as broadcast & balancing support. Library authors: please do not use this module -- it's intended for use in applications only (leaves of the dependency graph) so as to avoid binary compatibility problems. New APIs will incubate here and eventually move to the core module.
Also, note the fs2-scodec module has been removed and ByteVectorChunk
is now in the core module, inside the Chunk
companion object.
This release has been made possible by 32 direct contributors as well as many others who have participated in discussions on the issue tracker, in the Gitter channel, and other project spaces. Thanks to all of you!
git shortlog -sn --no-merges 19f7fcdc.."v1.0.0"
- Michael Pilquist
- Pavel Chlupacek
- Fabio Labella
- Tom Lin
- Adam Chlupacek
- Changlin Li
- Zainab Ali
- Guillaume Martres
- Jose C
- Gabriel Volpe
- Brian P. Holt
- Ross A. Baker
- Sarunas Valaskevicius
- Jakub Kozłowski
- Eike Kettner
- Milan Raulim
- Derek Williams
- Qi Wang
- Rob Norris
- Sam Desborough
- Christopher Davenport
- Yilin Wei
- Zelenya
- Andrzej Sołtysik
- Kenji Yoshida
- Akhtyam Sakaev
- Felix Mulder
- Frank S. Thomas
- Gavin Bisesi
- Kazuhiro Sera
- Keir Lawson
- Luciano Joublanc
- Kevin Walter
v1.0.0-RC2
This is the second release candidate of FS2 1.0.0. This release is binary compatible with FS2 1.0.0-RC1. The only changes are:
- Fixed a bug in
Chunk#toArray
when working with NIO byte buffers (#1275) - Added
dequeueChunk1
andtryDequeueChunk1
methods toQueue
(#1274)
See the release notes for RC1 for more information: https://github.com/functional-streams-for-scala/fs2/releases/tag/v1.0.0-RC1
v1.0.0-RC1
This is the first release candidate of FS2 1.0.0. There are a substantial number of changes from 0.10 to 1.0. Primarily, this release provides interoperability with cats-effect 1.0.0. The migration guide contains details on how to migrate from 0.10 to 1.0. In addition to the changes listed in the migration guide, 1.0.0 contains the following notable changes:
- Significantly better performance overall
- Simpler API overall, including much less need for type annotations /
covary
calls - Removal of
Segment
in favor ofChunk
, resulting in both faster and simpler to understand code - Faster and more flexible queues
- Fast, efficient support for fanout via
fs2.concurrent.{Broadcast, Balance}
types along with methods likeStream#broadcast
andStream#balance
- Interop with cats-effect cancelation support (e.g., a compiled stream can be started and then the resulting fiber canceled with all the normal resource finalization guarantees)
- Addition of "fallible streams" -- streams which may fail with an error but are otherwise pure. Pure streams are now truly pure -- they cannot fail with an error.
- Flexible stream compilation support, featuring a single API for compilation of pure streams, fallible streams, and effectful streams.
There are also two new modules:
- fs2-reactive-streams - This module is the work of @zainab-ali and was imported from https://github.com/zainab-ali/fs2-reactive-streams. It is now a submodule of the fs2 repository.
- fs2-experimental - This module contains APIs that aren't yet considered stable but might nonetheless be useful. At the present time, this includes the new
PubSub
datatype, which is used internally to implement queues & signals as well as broadcast & balancing support. Library authors: please do not use this module -- it's intended for use in applications only (leaves of the dependency graph) so as to avoid binary compatibility problems. New APIs will incubate here and eventually move to the core module.
Also, note the fs2-scodec module has been removed and ByteVectorChunk
is now in the core module, inside the Chunk
companion object.
1.0.0 final is currently scheduled for Friday October 5th, assuming no major issues are found.
This release has been made possible by 32 direct contributors as well as many others who have participated in discussions on the issue tracker, in the Gitter channel, and other project spaces. Thanks to all of you!
git shortlog -sn --no-merges 19f7fcdc.."v1.0.0-RC1"
- Michael Pilquist
- Pavel Chlupacek
- Fabio Labella
- Tom Lin
- Adam Chlupacek
- Changlin Li
- Zainab Ali
- Guillaume Martres
- Jose C
- Gabriel Volpe
- Brian P. Holt
- Ross A. Baker
- Sarunas Valaskevicius
- Jakub Kozłowski
- Eike Kettner
- Milan Raulim
- Derek Williams
- Qi Wang
- Rob Norris
- Sam Desborough
- Christopher Davenport
- Yilin Wei
- Zelenya
- Andrzej Sołtysik
- Kenji Yoshida
- Akhtyam Sakaev
- Felix Mulder
- Frank S. Thomas
- Gavin Bisesi
- Kazuhiro Sera
- Keir Lawson
- Luciano Joublanc
v0.10.6
For cats 1.1.0 and cats-effect 0.10.
This is the seventh release in the 0.10 series. This release is fully backwards compatible with 0.10.0.
Changes include:
- Fixed a bug in merge and concurrently related to finalizer ordering and error propagation (#1187)
- Added
Stream.fromEither
andPull.fromEither
(#1225) - Fixed compilation on Java 9 (#1198)
- Fixed a bug in
Segment
which tested for an empty chunk viaequals
, resulting in surprising performance (#1201) - Added docs to
observe
andobserve1
about their relative performance (#1178) - Fixed a bug in
groupAdjacentBy
(#1163) - Optimized
Chunk.{seq, apply}
(#1159)
Special thanks to contributors:
v0.10.5
For cats 1.1.0 and cats-effect 0.10.
This is the sixth release in the 0.10 series. This release is fully backwards compatible with 0.10.0.
Changes include:
- Fixed a memory leak when combining early termination pulls with infinite / long-lived streams (#1151 #1154 #1155)
- Added
mapAsync
andmapAsyncUnordered
(#1133) - Fixed bug where zipping bracketed streams resulted in error (#1130 #1131 #1134)
- Added
covaryId[F]
to convert from aStream[Id, O]
toStream[F, O]
(#1138) - Added
Functor
andApplicative
instances forSignal
(#1139) - Added
Sink.either
(#1148) - Fixed OSGi metadata (#1127)
Special thanks to contributors:
v0.10.4
For cats 1.1.0 and cats-effect 0.10.
This is the fifth release in the 0.10 series. This release is fully backwards compatible with 0.10.0.
Fixes include:
- Optimized
bracket
andeval_
(#1114) - Fixed a bug in scope management that would result in an exception with message
Outer scope is closed during inner stream startup
(#1121) - Added
evalMapAccumulate
(#1123) - Fixed bug in
Ref#access
(#1125) - Added
.to[C]
syntax for compiling a stream (#1126)
Special thanks to contributors:
v0.10.3
For cats 1.1.0 and cats-effect 0.10.
This is the fourth release in the 0.10 series. This release is fully backwards compatible with 0.10.0.
Fixes include:
- Fixed a bug that would result in a
StackOverflowException
and memory leak for certain stream shapes (#1107) - Fixed a bug that would result in certain streams failing with an exception about a duplicate scope closure (#1096)
- Fixed a bug that would result in a
ClassCastException
when zipping translated streams (#1099) - Improved performance of
Chunk#{take, drop}
(#1105) - Fixed a bug in
observe
that was causing early cleanup of resources (#1106) - Documentation fixes (#1093 #1094)
- Upgraded to latest cats and cats-effect releases
Thanks to contributors:
@AdamChlupacek
@pchlupacek
@SystemFw
@zaneli
@gvolpe
@guersam
@jmcardon
v0.10.2
For cats 1.0.1 and cats-effect 0.8.
This is the third release in the 0.10 series. This release is fully backwards compatible with 0.10.0.
Fixes include:
- Fixed a scope bug where zipping scoped streams could result in an exception (#1083 #1084)
- Fixed a bug in
take
where certain segment shapes could result in more than the requested number of elements (#1089 #1090) - Added more type class instances for
Catenable
(#1085)
Thanks to contributors:
v0.10.1
For cats 1.0.1 and cats-effect 0.8.
This is the second release in the 0.10 series. This release is fully backwards compatible with 0.10.0.
Fixes include:
- Fixed race condition in
Scheduler.effect.delayCancellable
(#1078 #1077) - Added
fs2.async.once
(#1079) - Added new micro-site (#1074)
Thanks to contributors:
v0.10.0
For cats 1.0.1 and cats-effect 0.8.
This is the first official release of the 0.10 series, featuring a direct dependency on cats and cats-effect, significant performance improvements, and a much simpler API.
If upgrading from FS2 0.9, be sure to check out the migration guide for 0.10.
For those that were tracking 0.10 milestones, this build is completely compatible with 0.10.0-RC2.