streaming-concurrency: Concurrency support for the streaming ecosystem

This is a package candidate release! Here you can preview how this package release will appear once published to the main package index (which can be accomplished via the 'maintain' link below). Please note that once a package has been published to the main package index it cannot be undone! Please consult the package uploading documentation for more information.

[maintain] [Publish]

There are two primary higher-level use-cases for this library:

  1. Merge multiple Streams together.

  2. A conceptual Stream-based equivalent to parMap (albeit utilising concurrency rather than true parallelism).

However, low-level functions are also exposed so you can construct your own methods of concurrently using Streams (and there are also non-Stream-specific functions if you wish to use it with other data types).


[Skip to Readme]

Properties

Versions 0.1.0.0, 0.2.0.0, 0.3.0.0, 0.3.0.1, 0.3.1.0, 0.3.1.0, 0.3.1.1, 0.3.1.2, 0.3.1.3
Change log ChangeLog.md
Dependencies base (>=4 && <5), exceptions (>=0.6 && <0.9), lifted-async (>=0.9.3 && <0.10), monad-control (>=1 && <2), stm (>=2.4 && <3), streaming (>=0.1.4.0 && <0.3), streaming-with (>=0.1.0.0 && <0.3), transformers-base [details]
License MIT
Copyright Ivan Lazar Miljenovic
Author Ivan Lazar Miljenovic
Maintainer Ivan.Miljenovic@gmail.com
Category Data, Streaming
Source repo head: git clone https://github.com/haskell-streaming/streaming-concurrency.git
Uploaded by IvanMiljenovic at 2018-03-14T06:17:27Z

Modules

[Index]

Downloads

Maintainer's Corner

For package maintainers and hackage trustees


Readme for streaming-concurrency-0.3.1.0

[back to package description]

streaming-concurrency

Hackage Build Status

Concurrency for the streaming ecosystem

There are two primary higher-level use-cases for this library:

  1. Merge multiple Streams together.

  2. A conceptual Stream-based equivalent to parMap (albeit utilising concurrency rather than true parallelism).

However, low-level functions are also exposed so you can construct your own methods of concurrently using Streams (and there are also non-Stream-specific functions if you wish to use it with other data types).

Conceptually, the approach taken is to consider a typical correspondence system with an in-basket/tray for receiving messages for others, and an out-basket/tray to be later dealt with. Inputs are thus provided into the InBasket and removed once available from the OutBasket.

Thanks and recognition

The code here is heavily based upon -- and borrows the underlying Buffer code from -- Gabriel Gonzalez's pipes-concurrency. It differs from it primarily in being more bracket-oriented rather than providing a spawn primitive, thus not requiring explicit garbage collection.

Another main difference is that the naming of the input and output types has been switched around: pipes-concurrency seems to consider them from the point of view of the supplying/consuming Pipes, whereas here they are considered from the point of view of the Buffer itself.