Skip to content

Release notes

Published GitHub release notes and upcoming drafts live on this permanent page, independently of the documentation version selected elsewhere on this site.

Releases marked In preparation are drafts. Their installation commands and release links become available when the release is published.

Async Batcher 0.3.0

Published 2026-11-08 · GitHub release

Async Batcher 0.3.0 adds bounded streaming, callable processors, compatible request groups, and new database and messaging adapters. It also fixes cancellation, shutdown, result routing, and resource ownership across the core and existing adapters. The core retains zero runtime dependencies; install backend clients only through the extras you need.

python -m pip install 'async-batcher==0.3.0'

Read the 0.3.0 documentation and migration guide before upgrading from 0.2.2.

Significant changes and upgrade notes

  • Python 3.11 or newer is required; Python 3.10 support is removed. Optional SDK requirements are refreshed, including SQLAlchemy 2.0.10+ and Keras 3.15.1+. Keras 2 is no longer supported; install and validate a compatible backend separately. #90, #91
  • Invalid configuration and processor results fail explicitly. Unknown constructor options, invalid numeric limits, and unordered, unsized, or incorrectly sized result collections are rejected. max_batch_size=1 is now supported. Process and interpreter pool executors are rejected because they cannot share the batcher's event-loop state. The existing limit defaults remain unchanged; replace the retained batch_size alias with max_batch_size. #103, #106
  • Shutdown waits for accepted work and cleanup. Keep clients and executors alive through shutdown. A timeout leaves graceful cleanup running; await it again or request forced shutdown. A fully stopped core batcher can restart on its original loop. Cancelling a caller does not guarantee that its accepted external write was prevented. #49, #78, #110
  • Review adapter assumptions. SQLAlchemy bulk updates require mapped ORM models and primary keys; Core Table updates and UPDATE RETURNING are rejected. DynamoDB enables TLS by default, enforces service batch-count limits, and retries unprocessed requests with bounded backoff. Recheck application retry policies and corrected per-item result behavior during migration. #54, #56, #58, #62, #72

Features

  • Wrap an existing async or synchronous bulk function with AsyncBatcher.from_callable and use async context managers for cleanup. #124
  • Process sync or async sources with bounded map and map_outcomes; choose input or completion order and retain indexed per-item outcomes. Admission can wait for queue capacity with its own timeout. #127, #136
  • Limit batch cost as well as item count, using application estimates such as bytes or tokens. #125
  • Group compatible requests with bounded child ownership and aggregate capacity; coalesce equivalent in-flight requests without caching completed results. #129, #137, #140, #144
  • Flush accepted work without closing intake, including child-accepted work in grouped batchers. Opt into discarding cancelled requests before dispatch when that fits the operation. #147, #149, #177
  • Inspect immutable statistics and payload-free batch events, configure processor context, and optionally omit exception details from library logs. Ship installed-package type information with py.typed. #128, #131, #134, #138, #143
  • Add native Kafka producer batches, ordered MongoDB writes, Pinecone vector operations, and Kinesis/Firehose record batches. DynamoDB reads gain strong consistency and validated projections. #97, #107, #112, #113, #114, #115

Fixes

  • Prevent duplicate or stranded dispatchers, preserve batch peers when one caller is cancelled, respect the oldest queued item's collection deadline, reject self-shutdown, and propagate StopIteration without hanging requests. Startup failures no longer leave requests queued for unintended later execution. #65, #73, #75, #95, #99, #167
  • Correct DynamoDB duplicate-key correlation, missing results, key validation, empty batches, and unsupported write operations. #59, #64, #67, #92
  • Release SQLAlchemy sessions, preserve INSERT RETURNING order and heterogeneous parameter dictionaries, and honor Scylla model connections and counter-batch rules. #55, #58, #93, #98, #105
  • Combine Keras samples into a dense batch, preserve structured prediction results, and keep scikit-learn sparse inputs and predictions sparse. Both prediction adapters expose bounded queues and forward core options. #69, #87, #109, #133
  • Remove raw request debug logging and correct example server/client shutdown ordering. #76, #81, #85

Documentation, examples, and maintenance

  • Publish searchable, versioned documentation with release-specific pages, an explicitly unreleased development channel, and signed documentation archives. #180
  • Add application recipes for FastAPI, bounded SQLite imports, atomic resumable checkpoints, rejected-record audits, acknowledged consumers, variable-length inference, durable embedding handoff, and shared provider pacing with bounded throttling retries. These recipes are repository examples, not extra runtime services or an exactly-once delivery guarantee. #130, #132, #152, #153, #155, #157, #168, #175, #178
  • Replace Poetry with uv and a committed lockfile. Expand cross-platform core checks, installed-wheel/sdist/type validation, live-service integration tests, locked-dependency auditing, and separate recipe coverage reports. Add reproducible benchmark tooling and documented measurements. #100, #116, #117, #119, #120, #122, #154, #174

Contributors

Thanks to @hussein-awala for this release's implementation and maintenance work.

Full changelog: 0.2.2...0.3.0

Async Batcher 0.2.2

Published 2025-02-17 · GitHub release

What's Changed

Full Changelog: https://github.com/hussein-awala/async-batcher/compare/0.2.1...0.2.2

Async Batcher 0.2.1

Published 2024-09-02 · GitHub release

What's Changed

Full Changelog: https://github.com/hussein-awala/async-batcher/compare/0.2.0...0.2.1

Async Batcher 0.2.0

Published 2024-02-29 · GitHub release

Significant changes

Bug fixes

New features

Improvements

New Contributors

Full Changelog: https://github.com/hussein-awala/async-batcher/compare/0.1.0...0.2.0