Skip to content

Commit ddb1cf4

Browse files
author
James Gober
committed
Milestone Update v0.8.0
1 parent 5d01a0b commit ddb1cf4

16 files changed

Lines changed: 1111 additions & 10 deletions

CHANGELOG.md

Lines changed: 41 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,45 @@ the project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html
66

77
## [Unreleased]
88

9+
## [0.8.0] - 2026-05-19
10+
11+
Examples and guide release. Pure documentation and example
12+
expansion. No public API changes from `0.7.0`.
13+
14+
### Added
15+
16+
- 8 runnable examples under `examples/`:
17+
- `basic` - smallest map/filter pipeline.
18+
- `batching` - count-triggered batching with `BatchPolicy`.
19+
- `windowing` - tumbling rollup with a deterministic clock.
20+
- `dead_letter` - `try_map` + `.dead_letter(sink)` for failure
21+
routing.
22+
- `threaded` - `ThreadedDriver` via `Pipeline::run_threaded`.
23+
- `custom_driver` - implementing the `Driver` trait, wrapping
24+
`SyncDriver` with timing instrumentation.
25+
- `custom_source` - implementing `Source` for a stateful
26+
Fibonacci producer.
27+
- `etl` - multi-stage ETL with `ErrorPolicy::Continue`,
28+
enrichment lookup, batching, and a counting sink.
29+
- `[[example]]` entries in `Cargo.toml` with
30+
`required-features = ["std"]` for all eight.
31+
- `docs/GUIDE.md` - 11-section user guide covering the mental
32+
model, all closure adapters, custom stage / source / sink /
33+
driver implementations, batching, windowing, error policies,
34+
dead-letter routing, picking a driver, and common pitfalls.
35+
- `README.md` gains a Quick start snippet and a Documentation
36+
section linking to the guide, API reference, REPS, benches,
37+
and examples directory.
38+
- `docs/README.md` updated to index the new documentation.
39+
40+
### Notes
41+
42+
- All 8 examples build cleanly under
43+
`cargo clippy --all-targets --all-features -- -D warnings` and
44+
run end-to-end with the expected output.
45+
- No changes to `src/` or `tests/`; this release is documentation
46+
and examples only. Existing 73 tests continue to pass.
47+
948
## [0.7.0] - 2026-05-19
1049

1150
Driver trait release. Closes the third (and last) deferral from
@@ -262,7 +301,8 @@ public surface.
262301
`.dev/` planning structure (DIRECTIVES, ROADMAP, PROMPTS).
263302
- Crate name reserved on crates.io.
264303

265-
[Unreleased]: https://github.com/jamesgober/pipe-io/compare/v0.7.0...HEAD
304+
[Unreleased]: https://github.com/jamesgober/pipe-io/compare/v0.8.0...HEAD
305+
[0.8.0]: https://github.com/jamesgober/pipe-io/compare/v0.7.0...v0.8.0
266306
[0.7.0]: https://github.com/jamesgober/pipe-io/compare/v0.6.0...v0.7.0
267307
[0.6.0]: https://github.com/jamesgober/pipe-io/compare/v0.5.0...v0.6.0
268308
[0.5.0]: https://github.com/jamesgober/pipe-io/compare/v0.4.0...v0.5.0

Cargo.lock

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 33 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "pipe-io"
3-
version = "0.7.0"
3+
version = "0.8.0"
44
edition = "2021"
55
rust-version = "1.75"
66
readme = "README.md"
@@ -50,3 +50,35 @@ lto = "thin"
5050
name = "pipeline"
5151
harness = false
5252
required-features = ["std"]
53+
54+
[[example]]
55+
name = "basic"
56+
required-features = ["std"]
57+
58+
[[example]]
59+
name = "batching"
60+
required-features = ["std"]
61+
62+
[[example]]
63+
name = "windowing"
64+
required-features = ["std"]
65+
66+
[[example]]
67+
name = "dead_letter"
68+
required-features = ["std"]
69+
70+
[[example]]
71+
name = "threaded"
72+
required-features = ["std"]
73+
74+
[[example]]
75+
name = "custom_driver"
76+
required-features = ["std"]
77+
78+
[[example]]
79+
name = "custom_source"
80+
required-features = ["std"]
81+
82+
[[example]]
83+
name = "etl"
84+
required-features = ["std"]

README.md

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
<a href="https://crates.io/crates/pipe-io"><img alt="crates.io" src="https://img.shields.io/crates/v/pipe-io.svg"></a>
1111
<a href="https://crates.io/crates/pipe-io"><img alt="downloads" src="https://img.shields.io/crates/d/pipe-io.svg"></a>
1212
<a href="https://docs.rs/pipe-io"><img alt="docs.rs" src="https://docs.rs/pipe-io/badge.svg"></a>
13+
<a href="https://github.com/rust-lang/rfcs/blob/master/text/2495-min-rust-version.md" title="MSRV"><img alt="MSRV" src="https://img.shields.io/badge/MSRV-1.75%2B-blue"></a>
1314
<a href="https://github.com/jamesgober/pipe-io/actions/workflows/ci.yml"><img alt="CI" src="https://github.com/jamesgober/pipe-io/actions/workflows/ci.yml/badge.svg"></a>
1415
</p>
1516

@@ -22,6 +23,41 @@
2223

2324
Typed source-transform-sink pipelines with backpressure, batching, windowing, and per-stage error isolation. A lightweight runtime-agnostic stream processor for in-process workloads. The missing middle ground between raw iterators and full distributed stream processing.
2425

26+
## Quick start
27+
28+
```rust
29+
use pipe_io::{Pipeline, sink::VecSink};
30+
31+
let sink = VecSink::<i64>::new();
32+
let handle = sink.handle();
33+
34+
Pipeline::from_iter(1..=5)
35+
.map(|n: i32| i64::from(n) * 10)
36+
.filter(|n: &i64| *n > 20)
37+
.sink(sink)
38+
.run()
39+
.expect("pipeline run");
40+
41+
assert_eq!(handle.take(), vec![30, 40, 50]);
42+
```
43+
44+
## Documentation
45+
46+
- [Quick reference (`docs/API.md`)](docs/API.md)
47+
- [User guide (`docs/GUIDE.md`)](docs/GUIDE.md) - patterns and how-tos
48+
- [Project specification (`REPS.md`)](REPS.md) - locked public surface
49+
- [Benchmarks (`docs/BENCH.md`)](docs/BENCH.md) - measured throughput
50+
- [Examples](examples/) - 8 runnable examples covering batching,
51+
windowing, dead-letter routing, threaded execution, and custom
52+
drivers/sources
53+
54+
Run any example with `cargo run --example <name>`, for instance:
55+
56+
```text
57+
cargo run --example basic
58+
cargo run --example etl
59+
```
60+
2561
## License
2662

2763
Licensed under the Apache License, Version 2.0. See [`LICENSE`](LICENSE)

0 commit comments

Comments
 (0)