Changes for version 0.50 - 2026-02-03
- MAJOR ARCHITECTURAL OVERHAUL
- Complete rewrite of the Storage and Persistence layer to use a decoupled "Bridge & Worker" architecture.
- Implementation of DBIx::Class::Async::Row lifecycle management:
- Introduced "Dirty" column tracking to minimize SQL UPDATE payloads.
- Added shadow-key optimization for high-speed attribute access.
- Robust AUTOLOAD mechanism for transparent ResultSet/Row interaction.
- Enhanced Race Condition Recovery:
- find_or_create() now handles unique constraint collisions automatically via a catch-and-retry strategy.
- Improved Memory & Process Management:
- Weakened schema references in Storage to prevent worker leaks.
- Refined worker pool lifecycle (connect/disconnect) for cleaner shutdowns in event-loop environments.
- Streaming Support:
- Introduced DBIx::Class::Async::Storage::DBI::Cursor for non-blocking, memory-efficient iteration over large result sets.
- Persistence Integrity:
- Added strict Primary Key validation in find(), update(), and delete() to prevent ambiguous database operations.
- Documentation:
- Full POD refresh for Row, ResultSet, and Storage classes reflecting the new async design patterns.
Modules
Non-blocking, multi-worker asynchronous wrapper for DBIx::Class
Non-blocking resultset proxy with Future-based execution
Asynchronous pagination handling for Async ResultSets
Asynchronous operations on a single ResultSource column
Asynchronous Row object representing a single database record.
Non-blocking, worker-pool based Proxy for DBIx::Class::Schema
Storage Layer for DBIx::Class::Async
DBI-based async storage backend for DBIx::Class::Async
Asynchronous cursor for DBIx::Class ResultSets using Futures