- [The core library][core-api], which defines the basic types for streams and pulls.
iolibrary][io-api], FS2 bindings for NIO-based file I/O and TCP/UDP networking.
Talks and Presentations
- Declarative Control Flow with fs2 Stream, a talk by Fabio Labella at the Typelevel Summit, celebrated in Boston in March 2018. Slides available at the author’s Github.
- Compose your program flow with Stream, a talk by Fabio Labella at a Klarna tech talk, sometime before March 2018.
- 2018-03-20: Compose your program flow with Stream by Fabio Labella
- FS2 Internals: Performance, a talk by Michael Pilquist at Scale by the Bay, in November 2017. Slides.
- Compositional Streaming with FS2, a talk by Michael Pilquist at Scale by the Bay, November 2016. Slides.
- An introduction to FS2 Streams, a REPL-demo tutorial given by Michael Pilquist for the Scala Toronto Meetup group, on September 2018.
- Introduction to Functional Streams for Scala (FS2), a REPL-demo tutorial on FS2 (version 0.9), given by Michael Pilquist in May of 2016. The tutorial is split in three parts:
Blog Posts and Short Articles
- Inference Driven Design, by Muchael Pilquist, describes some of the tradeoffs in designing the API and the code of FS2, used to work around some of the problems in the Scala compiler.
- Tips for working with FS2, by Pere Villega,
- A streaming library with a superpower: FS2 and functional programming.
Related Academic Research
Related Scala Libraries
- FS2 was originally called Scalaz-Stream.
- Monix defines a special type for lazy, pull-based streaming, called
- ZIO provides a stream type (source code.
- The FP in Scala stream processing library developed for the book FP in Scala
- There are various other iteratee-style libraries for doing compositional, streaming I/O in Scala, notably the
scalaz/iterateepackage and iteratees in Play.
Related Haskell Libraries
Since Haskell is the purely functional lazily-evaluated programming language par excellance, it is no wonder that many of the ideas in FS2 were first tried and developed in there.
- Machines, a Haskell library by Ed Kmett, which spawned
- Reflex, an FRP library in Haskell, by Ryan Trinkle
- Streaming is a recent addition to Haskell streaming libraries. It represents a Stream using a
The Github page for Additional resources lists some of the references above and several older ones, mostly from the