Skip to content

Releases: typelevel/fs2

v2.0.0

10 Sep 19:12
Compare
Choose a tag to compare

This is the first release of the 2.0 series, featuring support for Cats 2.0.0 and Cats Effect 2.0.0.

This release is NOT binary compatible nor source compatible with the 1.0 series. The breaking source changes between 1.0 and 2.0 are relatively minor in the fs2-core JAR but the fs2-io JAR has some significant changes. See release notes of 1.1.0-M1 and 1.1.0-M2 releases for more details.

This is the final release of what was the 1.1 milestone series. As of this release, FS2 is using semantic versioning, following the major.minor.micro naming convention. Future 2.x releases will be binary compatible with all other releases in 2 series.

This release is built for Scala 2.11, 2.12, and 2.13.

Since 1.1.0-M2, the following changes have occurred:

  • Removed resource constructors that supported explicit / manual cancelation and added s.pull.headOrError (#1603)
  • Added s.pull.lastOrError (#1609)
  • Added unfoldLoop and unfoldLoopEval (#1594)
  • Added onFinalizeWeak, bracketWeak, bracketCaseWeak, and scope operations (#1593)
  • Added Stream.evals and Stream.evalSeq (#1596 #1582)
  • Additional internal performance improvements (#1597)

Please see release notes for 1.1.0-M1 and 1.1.0-M2 for additional changes since 1.0.5.

For a full list of changes in 2.0.0, see: https://github.com/functional-streams-for-scala/fs2/pulls?q=is%3Apr+milestone%3A2.0.0+is%3Aclosed

git shortlog -sn --no-merges "v1.1.0-M2".."v2.0.0"
    15  Michael Pilquist
     5  Christopher Davenport
     4  Scala Steward
     1  Diego E. Alonso-Blas
     1  Jakub Kozłowski
     1  Paul Cleary

The full list of contributors since 1.0.5:

➜  git shortlog -sn --no-merges "v1.0.5".."v2.0.0"
    48  Michael Pilquist
    20  Scala Steward
    13  Diego E. Alonso-Blas
     7  shn-amn
     7  AdrianRaFo
     6  Christopher Davenport
     5  Jakub Kozłowski
     5  Ikrom
     4  Yannick Heiber
     4  Luka Jacobowitz
     4  GabrielAsman
     2  zakolenko
     2  Diego E. Alonso Blas
     2  Fabio Labella
     2  Tim Fisken
     1  Luis Miguel Mejía Suárez
     1  Lucas Satabin
     1  Andrew Bushmin
     1  Vitaly Lavrov
     1  Georgi Krastev
     1  heraklos
     1  Bjørn Madsen
     1  Paul Cleary

v1.1.0-M2

06 Sep 05:03
Compare
Choose a tag to compare
v1.1.0-M2 Pre-release
Pre-release

This is the second milestone release for FS2 1.1.0. The fs2-core project is almost fully backwards compatible with the previous releases in the 1.0.x series but it depends on cats-effect 2.0.0-RC2, which has a few small API changes.

Most importantly, this release revamps the bracketing/scoping mechanism to more closely align with expectations. Specifically, resources are now promptly released immediately after the bracket in which they were acquired -- for example, Stream.bracket(r)(f) ++ s now guarantees that f is run before s is evaluated. As a result of this change, the scope method on Stream has been removed. When upgrading, it can safely be deleted. For (much) more detail, see #1574.

This release is built for Scala 2.11, 2.12, and 2.13. The milestone cycle will be very short, with a final release coming right after cats-core 2.0 and cats-effect 2.0, likely in about a week.

The following notable changes are included:

  • Changed resource finalization behavior to be as eager as possible (#1574)
  • Added Stream.evals and Stream.evalSeq (#1582)
  • Added significant new functionality to fs2.io.file package (#1540 #1541)
  • Added support for new socket options (#1549)
  • Changed Chunk#scanLeft to match stdlib behavior (#1544)
  • Improved type inference of Stream.fromIterator (#1536)
  • More type class instances for Chunk (#1517)
  • Added combinators for working with scodec-bits (#1514)
  • Changed Pull#stream to require result to to be Unit (#1512)
  • Added fs2.io.file.tail for tailing a file (#1506)
  • Added Stream#compile.toMap for compiling a stream to a map (#1509)
  • Changed internals of Stream for memory efficiency (#1528)

For a full list of changes in 1.1.0, see: https://github.com/functional-streams-for-scala/fs2/pulls?q=is%3Apr+milestone%3A1.1.0+is%3Aclosed

Thanks to the following contributors:

git shortlog -sn --no-merges "v1.1.0-M1".."v1.1.0-M2"
    15  Scala Steward
    14  Michael Pilquist
    12  Diego E. Alonso-Blas
     7  shn-amn
     5  Ikrom
     4  Jakub Kozłowski
     4  Luka Jacobowitz
     4  Yannick Heiber
     4  GabrielAsman
     2  Fabio Labella
     2  Tim Fisken
     2  Diego E. Alonso Blas
     2  zakolenko
     1  Luis Miguel Mejía Suárez
     1  Georgi Krastev
     1  Lucas Satabin
     1  Andrew Bushmin

v1.1.0-M1

13 Jun 00:45
Compare
Choose a tag to compare
v1.1.0-M1 Pre-release
Pre-release

This is the first milestone release for FS2 1.1.0. The fs2-core project is almost fully backwards compatible with the previous releases in the 1.0.x series but it depends on cats-effect 2.0.0-M4, which has a few small API changes, and methods that took a blocking ExecutionContext have been updated to now take the new cats.effect.Blocker type. The fs2-io project is not backwards compatible but the changes are all mechanical.

This release is built for Scala 2.11, 2.12, and 2.13. The milestone cycle will be short, with a final release coming right after cats-core 2.0 and cats-effect 2.0.

The following changes are included:

  • Replaced all usages of blocking ExecutionContexts with cats.effect.Blocker (#1508)
  • Updated TCP and UDP packages to use safely constructed {tcp/udp}.SocketGroup objects instead of relying on implicit unsafe AsynchronousChannelGroup and AsynchronousSocketGroup values. Additionally, sockets are created via methods on SocketGroup now. (#1497)
  • Addressed a few places in fs2.io.file package that did blocking / OS calls via F.delay instead of via a Blocker (also #1497)
  • Added isOpen method to file.io.tcp.Socket (#1289)

For help with upgrading, see the changes to the tests and docs in #1508 and #1497.

For a full list of changes, see: https://github.com/functional-streams-for-scala/fs2/pulls?q=is%3Apr+milestone%3A1.1.0+is%3Aclosed

Thanks to the following contributors:

git shortlog -sn --no-merges "v1.0.5".."v1.1.0-M1"
    19  Michael Pilquist
     7  AdrianRaFo
     1  Bjørn Madsen
     1  Christopher Davenport
     1  Scala Steward

v1.0.5

10 Jun 19:48
Compare
Choose a tag to compare

This release is fully backwards compatible with previous releases in the 1.0.x series. This release is built for Scala 2.11 and 2.12. The forthcoming 1.1.x series will support 2.11, 2.12, and 2.13. The following changes are included:

  • Added Chunk#toNel (#1422)
  • Added fs2.io.toInputStreamResource (#1425)
  • Added printing sinks that do blocking IO on blocking context (#1427)
  • Added Stream#rechunkRandomly (#1428)
  • Made Resource compilation cancelable (#1429)
  • Added chunkMin combinator (#1438)
  • Added FunctionK instances for Stream and Pull (#1440)
  • Updated Stream.emits to avoid calling size (#1442)
  • Added dual constructors for fs2.concurrent (#1444)
  • Fixed subscriber unregister under heavy load (#1466)
  • Changed fs2.concurrent package to ensure internal calls to size are O(1) and not O(n) (#1468)
  • Avoid execution function twice in mapFilter (#1486)
  • Fixed a bug in parJoin with error propagation (#1492)
  • Added Stream#translateInterrupt (#1443 #1495)
  • Modified OutputStream support to eagerly flush (#1496)
  • Fixed a few offset bugs in handling byte arrays (#1499)
  • Updated text.utf8Decode to handle UTF-8 byte order marks (#1501)

For a full list of changes, see: https://github.com/functional-streams-for-scala/fs2/pulls?q=is%3Apr+milestone%3A1.0.5+is%3Aclosed

Thanks to the following contributors:

git shortlog -sn --no-merges "v1.0.4".."v1.0.5"
    27  Michael Pilquist
     9  gchew
     8  Scala steward
     7  Tim McIver
     6  Fabio Labella
     6  Travis Brown
     5  Arnau Abella Gassol
     4  Alex Berezovskiy
     4  Chris Davenport
     3  Ross A. Baker
     2  Adam Chlupacek
     2  Diego E. Alonso-Blas
     2  Dmitry Polienko
     2  Akhtyam Sakaev
     2  Christopher Davenport
     1  wedens
     1  Brian P. Holt
     1  Damien Bailly
     1  Gabriel Volpe
     1  Jakub Kozłowski
     1  Mark Tomko
     1  Mike Gibson
     1  Oleg Pyzhcov
     1  Paulius Imbrasas
     1  Piotr Gabara
     1  Scala Steward
     1  Seth Tisue
     1  Thrasos Thrasyvoulou
     1  erlangxk
     1  rhong

v1.0.4

01 Mar 13:25
Compare
Choose a tag to compare

This release is fully backwards compatible with previous releases in the 1.0.x series. The following changes are included:

  • eval nodes are now interruptible (#1419)
  • Added MonoidK instance for Stream (#1418)
  • Simplified internal handling of resource finalization (#1417)
  • Added FunctorFilter instances for Stream and Chunk (#1416)
  • Updated Chunk APIs on 2.13 to use scala.collection.Seq to avoid differing APIs on 2.12/2.13 (#1413)
  • Fixed a bug in groupWithin where empty groups were emitted (#1404 #1405)
  • Added scanMap and scanMonoid to Stream (#1403)

Note: because of #1417, in some rare cases, finalizers may be run later than they were in previous releases. This is normally okay but if you run in to an issue where the delay in finalization causes a problem, you can insert a manual scope on the stream (via s.scope) to restore the early finalization behavior. Take a look at the commits on #1417 for a couple of examples of this -- specifically, the TCP/UDP tests.

For a full list of changes, see: https://github.com/functional-streams-for-scala/fs2/pulls?q=is%3Apr+milestone%3A1.0.4+is%3Aclosed

Thanks to the following contributors:

git shortlog -sn --no-merges "v1.0.3".."v1.0.4"
    39  amarrella
    20  Michael Pilquist
     5  Fabio Labella
     2  Tamer Abdulradi
     1  Jakub Kozłowski
     1  Alessandro Marrella
     1  Scala steward
     1  Sebastian Bruckner
     1  Brian P. Holt

v1.0.3

29 Jan 12:37
Compare
Choose a tag to compare

This is the second release of the FS2 1.0.x series. This release is fully backwards compatible with previous releases in the 1.0.x series. The following changes are included:

  • Added Scala 2.13.0-M5 support (#1378)
  • Deprecated Sink. Use Pipe as a replacement for the Sink alias. The various methods on the Sink companion object have moved to methods on Stream. (#1386)
  • Added gzip compression/decompression (#1387)
  • Added the ability to compile a stream to a resource (#1388)
  • Fixed the append mode in io.file.writeAll (#1371)
  • Added Stream#repeatN (#1369)

For a full list of changes, see: https://github.com/functional-streams-for-scala/fs2/milestone/18?closed=1

Thanks to the following contributors:

git shortlog -sn --no-merges "v1.0.2".."v1.0.3"
    15  Michael Pilquist
    13  Diego E. Alonso-Blas
    12  Fabio Labella
     5  Scala steward
     3  Daniel Spiewak
     3  Gabriel Volpe
     1  Michal
     1  Joe Ferris
     1  Tim McIver
     1  Yannick Heiber
     1  fabio-labella

v0.10.7

12 Dec 14:27
Compare
Choose a tag to compare

This is the eighth release of FS2 0.10. It is binary compatible with all previous releases in 0.10. The only change is a fix for #1297 back ported from 1.0.

v1.0.2

04 Dec 17:15
Compare
Choose a tag to compare

This is the third release in the 1.0 series. This release addresses an incompatibility where FS2 1.0.1 would throw NoSuchMethodErrors when run on Java 8. Otherwise, this release is identical to 1.0.1.

Fixed:

  • Java 8 compatibility (#1357)

v1.0.1

03 Dec 16:49
Compare
Choose a tag to compare

This is the second release of the FS2 1.0.x series. This is a bug fix release and is fully backwards compatible with 1.0.0. The following fixes are included:

  • Upgraded to cats 1.5.0 and cats-effect 1.1.0
  • Changed fs2.io.{tcp,udp} packages to use Concurrent[F] and ContextShift[F] instead of ConcurrentEffect[F] (#1322 #1356)
  • Changed Stream#map to always be lazy (#1335)
  • Improved performance of Queue#dequeue1 (#1302)
  • Added bracketCancellable (#1317)
  • Fixed leak in groupWithin (#1312)
  • Fixed stall in parEvalMap (#1311)
  • Fixed leak in Queue#get (#1308)
  • Added metered combinator (#1294)
  • Added spawn combinator (#1291)

For a full list of changes, see: https://github.com/functional-streams-for-scala/fs2/issues?utf8=✓&q=is%3Aclosed+milestone%3A1.0.1+

Thanks to the following contributors:

git shortlog -sn --no-merges "v1.0.0".."v1.0.1"
    33  Michael Pilquist
    11  Diego E. Alonso-Blas
    11  fabio-labella
     9  Scala steward
     3  Vladimir Pavkin
     3  Jakub Kozłowski
     2  Viktor Lövgren
     2  Christopher Poenaru
     2  Pierre Ricadat
     1  Luciano
     1  Diego E. Alonso Blas
     1  Fabio Labella
     1  Igor Tovstopyat-Nelip
     1  Karol Czulkowski
     1  Ajay Chandran
     1  Pavel Chlupacek
     1  dd

v1.0.0

05 Oct 14:38
Compare
Choose a tag to compare

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 of Chunk, 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 like Stream#broadcast and Stream#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 via groupWithin
  • 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