Skip to content

Releases: jigneshsatam/concur

v1.1.0 - Slice Processing & Examples Restructure

Choose a tag to compare

@jigneshsatam jigneshsatam released this 15 Sep 04:55
8414e1c

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:

  1. examples/01_basic/: Compares traditional input channels against the new ProcessSlice utility.
  2. examples/02_variations/: A master reference file detailing closure recipes for all 12 function signature variations.
  3. examples/03_advanced_pipeline/: Simulates an enterprise multi-stage pipeline utilizing FromSlice.

🛠️ Maintenance & Refactoring

  • Placed internal DRY architecture optimizations inside ProcessSlice to leverage the asynchronous safety features of FromSlice.
  • Integrated updated test coverage tracking in concur_slice_test.go to handle empty bounds or aggressive context terminations.
  • Appended BenchmarkConcurProcessSlice to 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

Choose a tag to compare

@jigneshsatam jigneshsatam released this 14 Sep 06:07
09e6f95

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.go covering 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/concur

Thank you to all who contributed to hardening and designing this pipeline for production ecosystems! 🚀