Repository navigation
Releases: jigneshsatam/concur
Release list
v1.1.0 - Slice Processing & Examples Restructure
What's New in v1.1.0 🚀
This release introduces direct slice processing utilities to significantly reduce boilerplate overhead when working with static collections, alongside a comprehensive restructuring of the example suite for better onboarding.
📦 New Slice Utilities (No Channel Boilerplate)
Instead of manually instantiating input channels, buffering capacities, and handling channel tracking/teardowns, you can now process slice datasets directly:
concur.ProcessSlice(⚡ Direct Processing): Pass an array straight into the generic pipeline pool. The engine handles the underlying channel lifecycles and deferred allocations under the hood.concur.FromSlice(🌊 Stream Conversion): Asynchronously transforms standard Go slices into context-aware, read-only streams (<-chan T) that cleanly short-circuit on context cancellations.
📂 Example Directory Restructuring
The example layout has been reorganized into a progressive, step-by-step learning roadmap:
examples/01_basic/: Compares traditional input channels against the newProcessSliceutility.examples/02_variations/: A master reference file detailing closure recipes for all 12 function signature variations.examples/03_advanced_pipeline/: Simulates an enterprise multi-stage pipeline utilizingFromSlice.
🛠️ Maintenance & Refactoring
- Placed internal DRY architecture optimizations inside
ProcessSliceto leverage the asynchronous safety features ofFromSlice. - Integrated updated test coverage tracking in
concur_slice_test.goto handle empty bounds or aggressive context terminations. - Appended
BenchmarkConcurProcessSliceto the benchmarking suite to evaluate sequential iterations against parallel slice workers.
Full Changelog: https://github.com
Full Changelog: v1.0.0...v1.1.0
v1.0.0 — Core Stable Production Release
Release Notes: v1.0.0 — Bounded Scaling, Panic Shielding & Zero-Friction Closure Adapters 🏎️
We are thrilled to announce the official production-ready stable release v1.0.0 of concur!
concur is a lightweight, type-safe Go library implementing an enterprise-grade Fan-Out / Fan-In concurrency pipeline using Go Generics. It distributes heavy workloads across a controlled pool of parallel workers and multiplexes their results back into a single fanned-in stream, completely preventing unbounded goroutine leaks, data races, and out-of-memory crashes.
🔥 Major Architectural Enhancements
1. Zero-Friction Closure Adapters (All 12 Signatures Supported)
We redesigned the core concur.Process API signature to utilize Go's implicit native type-inference engine. You never need to write messy bracketed types like concur.Process[int, string](...). By passing a standard Go anonymous closure at the call-site, you can wrap all 12 possible variations of worker signatures (with/without context, with/without errors, with/without item inputs) effortlessly.
2. Automated Panic Recovery Guardrails 🛡️
Unexpected runtime crashes inside your application workloads will no longer take down your entire system infrastructure. concur handles executions inside isolated anonymous functions wrapped with recovery blocks. If a worker panics, the payload is safely intercepted, converted into a standard Go error structure (worker panicked: <reason>), and streamed cleanly into your results queue.
3. Deadlock-Protected Core Channel Buffering
The internal engine has been hardened against race conditions and deadlocks by strategically matching the output channel size to the requested concurrency pool size (opts.Workers). When StopOnError: true is toggled, exiting workers drop their error payload and exit instantly without getting permanently blocked by unread down-stream consumers.
📂 Step-by-Step Educational Path
We have completely overhauled the project's layout to provide structured, numeric-ordered example directories for clean onboarding:
examples/01_basic/: Simple parallel operations (Squaring integers).examples/02_variations/: A syntax matrix and cheat-sheet showing how to wrap all 12 closure patterns.examples/03_advanced_pipeline/: An enterprise-grade, multi-stage, leak-proof streaming pipeline architecture where Stage 1 directly bridges its data feeds safely into Stage 2.
⚙️ Automation & Hardened Testing
- Built a Table-Driven Test Matrix inside
concur_test.gocovering edge cases, worker limits, fallback configurations, and panic catching. - Added Automated GitHub Actions CI verification (
.github/workflows/go.yml) running full unit tests with Go’s native data race detector (-race) on every commit.
📦 Installation
go get github.com/jigneshsatam/concurThank you to all who contributed to hardening and designing this pipeline for production ecosystems! 🚀