@mpilquist mpilquist released this Oct 5, 2018 · 21 commits to series/1.0 since this release

Assets 2

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