Skip to content

Commit 5732dba

Browse files
committed
Release: v1.0.0
1 parent 12696ed commit 5732dba

File tree

4 files changed

+57
-7
lines changed

4 files changed

+57
-7
lines changed

CHANGELOG.md

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
Changelog
2+
=========
3+
4+
v1.0.0 - November 18, 2018
5+
--------------------------
6+
7+
* Support for ordered mapping. Use `ordered_map()` if you need the order of
8+
your outputs to match the order of their inputs. This adds a performance
9+
penalty for the extra bookkeeping required. And you may see additional
10+
performance loss due to head-of-line blocking, depending on your workload(s).
11+
* Switched implementation to use crossbeam_channel, which greatly
12+
[improves performance][1].
13+
* Shrank the API. `map()` and `ordered_map()` return `impl Iterator`, so we
14+
no longer leak the internal `PipelineIter` type(s).
15+
16+
[1]: https://github.com/NfNitLoop/pipeliner/commit/c8b23a04242d6eac91df424022f62a3074c31eb0
17+
18+
19+
v0.1.1 - December 5, 2016
20+
-------------------------
21+
22+
Initial release.
23+
24+
* Used std::sync::mpsc

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "pipeliner"
3-
version = "0.1.1"
3+
version = "1.0.0"
44
authors = ["Cody Casterline <cody.casterline@gmail.com>"]
55
license = "Apache-2.0"
66

README.md

Lines changed: 29 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,33 @@
11
Pipeliner
22
=========
33

4-
Pipeliner is a Rust library which aims to simplify doing multi-threaded work
5-
pipelines on iterators.
4+
Pipeliner is a Rust library to help you create multithreaded work pipelines. You
5+
can choose how many threads each step of the pipeline uses to tune performance
6+
for I/O- or CPU-bound workloads.
67

7-
Take a look at the code examples in the docs here:
8-
https://docs.rs/pipeliner/
8+
The [API docs] contain code examples.
9+
10+
Links
11+
-----
12+
13+
* [API docs]
14+
* [Changelog]
15+
* [Pipeliner] crate on crates.io
16+
17+
[API Docs]: https://docs.rs/pipeliner/
18+
[Changelog]: ./CHANGELOG.md
19+
[Pipeliner]: https://crates.io/crates/pipeliner
20+
21+
Comparison with Rayon
22+
---------------------
23+
24+
[Rayon] is another Rust library for parallel computation. If you're doing purely
25+
CPU-bound work, you may want to try that out to see if it offers better
26+
performance.
27+
28+
Pipeliner, IMHO, offers a simpler interface. That simpler interface makes it
29+
easier to combine parts of a data pipeline that may be I/O-bound and CPU-bound.
30+
Usually in those cases, your bottleneck is I/O, not the speed of your parallel
31+
execution library, so having a nice API may be preferable.
32+
33+
[Rayon]: https://crates.io/crates/rayon

src/lib.rs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,12 @@
99
//! * `panic`s in your worker threads are propagated out of the output
1010
//! Iterator. (No silent loss of data.)
1111
//! * No `unsafe` code.
12-
//!
13-
//! Since `IntoIterator`s implement [Pipeline], you can, for example:
1412
//!
1513
//! ```
14+
//! // Import the Pipeline trait to give all Iterators and IntoIterators the
15+
//! // .with_threads() method:
1616
//! use pipeliner::Pipeline;
17+
//!
1718
//! for result in (0..100).with_threads(10).map(|x| x + 1) {
1819
//! println!("result: {}", result);
1920
//! }

0 commit comments

Comments
 (0)