Releases: typelevel/fs2
v0.10.0-RC2
For cats 1.0.1 and cats-effect 0.8.
This is the second release candidate for 0.10.0. The API is considered stable at this point and there should be no further API changes (barring a major issue found before the final release).
See the migration guide if you are upgrading from 0.9.
Changes since RC1 include:
v0.10.0-RC1
For cats 1.0.1 and cats-effect 0.8.
This is the first release candidate for 0.10.0. The API is considered stable at this point and there should be no further API changes (barring a major issue found before the final release).
Update: #1070 was found (major issue!!). As a result, Stream#translate
is broken in both RC1 and M11. If you need this, you should stick with M10 until RC2 is available.
Changes since M11 include:
- Changed
Segment#{foreach,foreachChunk}
to return the segment result instead of unit. - Removed
unconsAsync
andAsyncPull
and reimplemented combinators impacted by these removals (#1056 #1057 #1059 #1061 #1066) - Removed introduction of scopes on pull-to-stream boundaries, resulting in higher performance (#1055)
v0.10.0-M11
For cats 1.0.0 and cats-effect 0.7.
Update: #1070 was found (major issue!!). As a result, Stream#translate
is broken in both RC1 and M11. If you need this, you should stick with M10 until RC2 is available.
- Renamed all of the
run
methods onStream
tocompile.something
(see issue links or 0.10 migration guide for more details) (#1017 #1028) - Better support for interruption (#1019)
- New
ByteBuffer
backedChunk
(#1032) - Fixed bug in
Chunk#map
which ignored offset and size in array chunks (#1033) - Added
Eq[Chunk[A]]
instance - Fixed a referential transparency bug in
unconsAsync
(#1037) - Fixed a few bugs in
Segment
where taking or splitting an infinite stream could fail to exit despite exit condition being met (#1039 #1043 #1045) - Fixed a stack overflow error in a stream which alternates between uncons and flatMap (#1035)
- Changed the signature of
Segment#{scan,fold}
so that the segment result is returned (#1040)
v0.10.0-M10
0.10.0-M9
For cats 1.0.0-RC1 and cats-effect 0.5.
*>
has been removed in favor of>>
in order to restore stack safety of recursive pulls (#1001)- Renamed
fail
toraiseError
to be consistent with cats - Renamed
onError
tohandleErrorWith
to be consistent with cats - Changed
Chunk
to no longer be a subtype ofSegment
. Usec.toSegment
orSegment.chunk(c)
to lift aChunk
to aSegment
, or usePull.outputChunk
if outputting a single chunk. Further, all operations onSegment
which force evaluation of one or more values have been put behind the.force
method -- e.g.,s.force.uncons1
,s.force.foreach
. (#1012) - Made sync instances for
Stream
andPull
available implicitly - Reimplemented
Ref
so that it is no longer backed by an actor and always has a value, resulting in huge performance improvements (#1006) - Introduced
Promise
, replacing the functionality unset refs provided - Fixed a bug in
join
where resources were sometimes released too early (#968) - Optimized scope management, resulting in no need for
run*Sync
variants --run
,runFold
, etc. all require only aSync[F]
instance now (#974) - Added
fs2.StreamApp
for defining an application in terms ofStream
(#982) - Added
Stream.fromIterator
(#978) - Added
Stream#repartition
(#985) - Added
unconsAll
toSegment
- Added
Queue#{peek1, timedPeek1}
(#996) - Improved performance of
Chunk#toArray
(#979) - Fixed memory leaks in
compress
andfile
(#999, #992) - Renamed
groupBy
togroupAdjacentBy
(#1004) - Fixed OSGi manifests
Special thanks to contributors:
v0.10.0-M8
For cats 1.0.0-RC1 and cats-effect 0.5.
- Fixed a memory leak reported by @epellizzer where scopes were not being properly garbage collected (#962)
- Fixed a performance issue in
Stream#flatMap
reported by @grindvoll (#958) - Renamed
>>
to*>
in order to be consistent with cats - Fixed a bug where
runSync
was accidentally requiring anEffect
instance instead of aSync
instance - Added
Segment.unfoldChunk
- Changed
Segment#run
so that it requires the output type to beNothing
instead ofUnit
. Usedrain
to drop the output values fs2.async.Ref
constructor is now private -- usefs2.async.ref
orfs2.async.refOf
methods to allocate a ref- Added
scope
method toStream
for manually inserting scope boundary - Added
streamNoScope
method toPull
for converting aPull
to aStream
without inserting a scope boundary - Miscellaneous internal cleanup
v0.10.0-M7
- Changed
translate
so that it no longer requires an implicitEffect[F]
instance and removedtranslateSync
. Modifiedrun
methods onStream
so that they require anEffect[F]
and introduced weaker variants (runSync
,runFoldSync
,runLogSync
, etc) that only require aSync[F]
and fail if they encounter anUnconsAsync
step. - Fixed bug in
dropThrough
where an extra element was dropped if the last element of a segment failed the predicate (#946) - Fixed bug where
zip
and other stream interleaving combinators could result in errors indicating scope is already closed (#945) - Fixed bug in
hash
where chunk offsets were ignored - from @SystemFw (#944) - Added ScalaDoc regarding implicit cats instances for
Stream
- from @jdnavarro (#942) - Added
Segment#flatMapResult
- from @avakhrenev (#940) - Fixed typos in ScalaDoc - from @BenFradet (#938)
- Fixed
NullPointerException
inSegment#flatMap
- from @tscholak (#937) - Added
Stream#observe1
as an alias forevalMap(o => f(o).as(o))
- Changed behavior of
scan
so that it eagerly emits values and matches rx specification - from @avakhrenev (#931) - Replaced internal primitive uses of
Array.ofDim
withnew Array[..]
to avoid class manifest locking - Performance improvements in
fs2.udp
- from @sbuzzard (#927)
v0.10.0-M6
- Added timeout support to many async data structures (
Ref#timedGet
,Queue#{timedEnqueue1,timedDequeue1,timedDequeueBatch}
,Semaphore#{timedDecrement,timedDecrementBy}
) - Added various methods to
Scheduler
includingfixedRate
andfixedDelay
- Added
Scheduler#effect
API for working with time delayed effects - Added
fs2.io.file.watch
API for watching files/directories for changes
v0.10.0-M5
- Upgraded to cats-effect 0.4 and cats 1.0.0-MF
- Added
retry
andattempts
toScheduler
v0.10.0-M4
- Changed
flatMap
onStream
so that recursive flatmaps on singleton streams run in constant memory. - Restored
Pipe.Stepper
andPipe2.Stepper
(which no longer leak memory). Ref#setSync
now correctly sets the value before completing the returned task.- Fixed an intermittent bug with rare stream shapes where an
IllegalArgumentException
was thrown while running a stream with async uncons calls. - Removed the
fs2.time
object and moved its methods toScheduler
. - Added support for shutting down
Scheduler
s on the JVM, where each scheduler is backed by a thread pool.