|
1 | | -# Quacker |
| 1 | +<p align="center"> |
| 2 | + <img src="https://github.com/user-attachments/assets/7af9dc11-083c-4036-aae6-4f71331abe1d" width="400" alt="Quacker"> |
| 3 | +</p> |
2 | 4 |
|
3 | | -[](https://github.com/SangTran-127/quacker/actions) |
4 | | -[](https://pkg.go.dev/github.com/SangTran-127/quacker) |
5 | | -[](https://codecov.io/github/SangTran-127/quacker) |
| 5 | +<h1 align="center">Quacker</h1> |
6 | 6 |
|
| 7 | +<p align="center"> |
| 8 | + <strong>Type-safe, composable, and observable concurrency patterns for Go</strong> |
| 9 | +</p> |
7 | 10 |
|
8 | | -## License |
9 | | -MIT |
| 11 | +<p align="center"> |
| 12 | + <a href="https://github.com/SangTran-127/quacker/actions/workflows/ci.yml"><img src="https://github.com/SangTran-127/quacker/actions/workflows/ci.yml/badge.svg" alt="CI"></a> |
| 13 | + <a href="https://pkg.go.dev/github.com/SangTran-127/quacker"><img src="https://pkg.go.dev/badge/github.com/SangTran-127/quacker.svg" alt="Go Reference"></a> |
| 14 | + <a href="https://codecov.io/github/SangTran-127/quacker"><img src="https://codecov.io/github/SangTran-127/quacker/graph/badge.svg?token=3YSWJQTMB7" alt="Coverage"></a> |
| 15 | + <a href="https://goreportcard.com/report/github.com/SangTran-127/quacker"><img src="https://goreportcard.com/badge/github.com/SangTran-127/quacker" alt="Go Report Card"></a> |
| 16 | + <img src="https://img.shields.io/badge/Made%20with-Go-1f425f.svg" alt="Made with Go"> |
| 17 | + <a href="LICENSE"><img src="https://img.shields.io/badge/license-MIT-blue.svg" alt="License"></a> |
| 18 | +</p> |
| 19 | + |
| 20 | +**Quacker** provides a suite of generic, high-performance concurrency primitives designed for modern Go applications. It simplifies complex concurrent workflows while ensuring type safety and observability. |
| 21 | + |
| 22 | +## Installation |
| 23 | + |
| 24 | +```bash |
| 25 | +go get github.com/SangTran-127/quacker |
| 26 | +``` |
| 27 | + |
| 28 | +**Requirements:** Go 1.25+ |
| 29 | + |
| 30 | +## Quick Guide |
| 31 | + |
| 32 | +- Use [`fanout.FanOut`](https://pkg.go.dev/github.com/SangTran-127/quacker/fanout) to distribute work from a single stream to **multiple consumers**. Supports efficient `RoundRobin` load balancing or `Broadcast` messaging. |
| 33 | +- Use [`fanin.FanIn`](https://pkg.go.dev/github.com/SangTran-127/quacker/fanin) to **merge multiple channels** into a single cohesive stream. |
| 34 | +- Use [`workerpool.WorkerPool`](https://pkg.go.dev/github.com/SangTran-127/quacker/workerpool) for **bounded concurrency** when you need to process tasks with limited resources. Includes built-in task queuing, metrics tracking, and graceful shutdown. |
| 35 | + |
| 36 | +## Highlights |
| 37 | + |
| 38 | +- **Modern Go**: Leverages Go 1.25 features and strict type safety with generics. |
| 39 | +- **Observable**: First-class support for `Observer` interfaces (metrics, logging, tracing) and error/panic handlers. |
| 40 | +- **Robust**: Includes panic recovery, context cancellation propagation, and safe resource cleanup by default. |
| 41 | +- **Zero Dependencies**: Core logic depends only on the standard library (test deps excluded). |
| 42 | + |
| 43 | +## Benchmarks |
| 44 | + |
| 45 | +> **Coming Soon** |
| 46 | +> |
| 47 | +> Benchmarks against standard library implementations are currently being developed. Preliminary results show minimal overhead with significant usability gains. |
| 48 | +
|
| 49 | +--- |
| 50 | +<p align="center"> |
| 51 | + Built with ❤️ in <a href="https://go.dev/">Go</a> by <a href="https://github.com/SangTran-127">Sang Tran</a> |
| 52 | +</p> |
0 commit comments